Clover Coverage Report
Coverage timestamp: Fri May 24 2013 13:47:27 UTC
../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
76   400   36   2.38
8   189   0.47   32
32     1.12  
1    
 
  QedeqNumbers       Line # 9 76 36 100% 1.0
 
  (110)
 
1    package org.qedeq.kernel.se.visitor;
2   
3   
4    /**
5    * Contains various counter values for a {@link org.qedeq.kernel.se.base.module.Qedeq}.
6    *
7    * @author Michael Meyling
8    */
 
9    public class QedeqNumbers {
10   
11    /** Number of imports. */
12    private int imports;
13   
14    /** Number of chapters. */
15    private int chapters;
16   
17    /** Number of subsections (within current chapter). */
18    private int sections;
19   
20    /** Number of subsections (within current section). */
21    private int subsectionsAndNodes;
22   
23    /** Import we currently work on (or lastly visited). */
24    private int importNumber;
25   
26    /** Chapter numbering currently on? */
27    private boolean chapterNumbering;
28   
29    /** Chapter number the node is within. */
30    private int chapterNumber;
31   
32    /** Absolute chapter number the node is within. Includes chapters with no numbers. */
33    private int absoluteChapterNumber;
34   
35    /** Section numbering currently on? */
36    private boolean sectionNumbering;
37   
38    /** Section number the node is within. */
39    private int sectionNumber;
40   
41    /** Absolute section number the node is within. Includes sections with no numbers. */
42    private int absoluteSectionNumber;
43   
44    /** Sub section number for section. */
45    private int subsectionNumber;
46   
47    /** Node number the node for section. */
48    private int nodeNumber;
49   
50    /** Axioms before node (including this one). */
51    private int axiomNumber;
52   
53    /** Function definitions before node (including this one). */
54    private int functionDefinitionNumber;
55   
56    /** Predicate definitions before node (including this one). */
57    private int predicateDefinitionNumber;
58   
59    /** Propositions before node (including this one). */
60    private int propositionNumber;
61   
62    /** Rule definitions before node (including this one). */
63    private int ruleNumber;
64   
65    /** No further numbering will be done. */
66    private boolean finished;
67   
68    /**
69    * Constructor.
70    *
71    * @param imports Number of imported QEDEQ modules.
72    * @param chapters Number of chapters in QEDEQ module.
73    */
 
74  137415 toggle public QedeqNumbers(final int imports, final int chapters) {
75  137415 this.imports = imports;
76  137415 this.chapters = chapters;
77    }
78   
79    /**
80    * Copy constructor.
81    *
82    * @param original Original to copy values from.
83    */
 
84  91400 toggle public QedeqNumbers(final QedeqNumbers original) {
85  91400 imports = original.imports;
86  91400 chapters = original.chapters;
87  91400 sections = original.sections;
88  91400 subsectionsAndNodes = original.subsectionsAndNodes;
89  91400 importNumber = original.importNumber;
90  91400 chapterNumbering = original.chapterNumbering;
91  91400 chapterNumber = original.chapterNumber;
92  91400 absoluteChapterNumber = original.absoluteChapterNumber;
93  91400 sectionNumbering = original.sectionNumbering;
94  91400 nodeNumber = original.nodeNumber;
95  91400 sectionNumber = original.sectionNumber;
96  91400 absoluteSectionNumber = original.absoluteSectionNumber;
97  91400 subsectionNumber = original.subsectionNumber;
98  91400 axiomNumber = original.axiomNumber;
99  91400 functionDefinitionNumber = original.functionDefinitionNumber;
100  91400 predicateDefinitionNumber = original.predicateDefinitionNumber;
101  91400 propositionNumber = original.propositionNumber;
102  91400 ruleNumber = original.ruleNumber;
103  91400 finished = original.finished;
104    }
105   
106    /**
107    * Last import number.
108    *
109    * @return Import number.
110    */
 
111  1461 toggle public int getImportNumber() {
112  1461 return importNumber;
113    }
114   
115    /**
116    * Increase import number.
117    */
 
118  1528 toggle public void increaseImportNumber() {
119  1528 importNumber++;
120    }
121   
122    /**
123    * Chapter number the node is within.
124    *
125    * @return Chapter number.
126    */
 
127  357463 toggle public int getChapterNumber() {
128  357463 return chapterNumber;
129    }
130   
131    /**
132    * Increase chapter number.
133    *
134    * @param sections Number of subsections in new chapter.
135    * @param chapterNumbering Chapter numbering on?
136    */
 
137  241650 toggle public void increaseChapterNumber(final int sections, final boolean chapterNumbering) {
138  241650 this.chapterNumbering = chapterNumbering;
139  241650 absoluteChapterNumber++;
140  241650 if (chapterNumbering) {
141  149351 chapterNumber++;
142    }
143  241650 this.sections = sections;
144  241650 this.subsectionsAndNodes = 0;
145  241650 this.sectionNumber = 0;
146  241650 this.absoluteSectionNumber = 0;
147  241650 this.sectionNumbering = true;
148  241650 this.subsectionNumber = 0;
149  241650 this.nodeNumber = 0;
150    }
151   
152    /**
153    * Is chapter numbering currently on?
154    *
155    * @return Chapter numbering is on.
156    */
 
157  449815 toggle public boolean isChapterNumbering() {
158  449815 return chapterNumbering;
159    }
160   
161    /**
162    * Absolute chapter number the node is within. This includes chapters with no numbers.
163    *
164    * @return Chapter number.
165    */
 
166  555 toggle public int getAbsoluteChapterNumber() {
167  555 return absoluteChapterNumber;
168    }
169   
170    /**
171    * Section number the node is within.
172    *
173    * @return Section number.
174    */
 
175  208103 toggle public int getSectionNumber() {
176  208103 return sectionNumber;
177    }
178   
179    /**
180    * Increase chapter number.
181    *
182    * @param subsectionsAndNodes Number of subsections and nodes for current section.
183    * @param sectionNumbering Should this section be numbered?
184    */
 
185  200337 toggle public void increaseSectionNumber(final int subsectionsAndNodes,
186    final boolean sectionNumbering) {
187  200337 this.subsectionsAndNodes = subsectionsAndNodes;
188  200337 this.sectionNumbering = sectionNumbering;
189  200337 absoluteSectionNumber++;
190  200337 if (sectionNumbering) {
191  199892 sectionNumber++;
192    }
193  200337 subsectionNumber = 0;
194  200337 nodeNumber = 0;
195    }
196   
197    /**
198    * Absolute section number the node is within. This includes sections with no numbers.
199    *
200    * @return Section number.
201    */
 
202  2127 toggle public int getAbsoluteSectionNumber() {
203  2127 return absoluteSectionNumber;
204    }
205   
206    /**
207    * Is section numbering currently on?
208    *
209    * @return Section numbering is on.
210    */
 
211  209023 toggle public boolean isSectionNumbering() {
212  209023 return sectionNumbering;
213    }
214   
215    /**
216    * Sub section number within section.
217    *
218    * @return Sub section number.
219    */
 
220  22191 toggle public int getSubsectionNumber() {
221  22191 return subsectionNumber;
222    }
223   
224    /**
225    * Increase subsection number.
226    */
 
227  10761 toggle public void increaseSubsectionNumber() {
228  10761 subsectionNumber++;
229    }
230   
231    /**
232    * Node number within section.
233    *
234    * @return Node number.
235    */
 
236  13632 toggle public int getNodeNumber() {
237  13632 return nodeNumber;
238    }
239   
240    /**
241    * Increase node number.
242    */
 
243  335230 toggle public void increaseNodeNumber() {
244  335230 nodeNumber++;
245    }
246   
247    /**
248    * Get number of axioms before node (including this one).
249    *
250    * @return Number of axioms before node (including this one).
251    */
 
252  13156 toggle public int getAxiomNumber() {
253  13156 return axiomNumber;
254    }
255   
256    /**
257    * Increase number of axioms before node (including this one).
258    */
 
259  14701 toggle public void increaseAxiomNumber() {
260  14701 axiomNumber++;
261    }
262   
263    /**
264    * Get number of function definitions before node (including this one).
265    *
266    * @return Number function definitions before node (including this one).
267    */
 
268  11190 toggle public int getFunctionDefinitionNumber() {
269  11190 return functionDefinitionNumber;
270    }
271   
272    /**
273    * Increase number of function definitions before node (including this one).
274    */
 
275  8680 toggle public void increaseFunctionDefinitionNumber() {
276  8680 functionDefinitionNumber++;
277    }
278   
279    /**
280    * Get number of predicate definitions before node (including this one).
281    *
282    * @return Number of predicate definitions before node (including this one).
283    */
 
284  11190 toggle public int getPredicateDefinitionNumber() {
285  11190 return predicateDefinitionNumber;
286    }
287   
288    /**
289    * Increase number of predicate definitions before node (including this one).
290    */
 
291  6925 toggle public void increasePredicateDefinitionNumber() {
292  6925 predicateDefinitionNumber++;
293    }
294   
295    /**
296    * Get number of Propositions before node (including this one).
297    *
298    * @return Get number of Propositions before node (including this one).
299    */
 
300  66428 toggle public int getPropositionNumber() {
301  66428 return propositionNumber;
302    }
303   
304    /**
305    * Increase number of predicate definitions before node (including this one).
306    */
 
307  68028 toggle public void increasePropositionNumber() {
308  68028 propositionNumber++;
309    }
310   
311    /**
312    * Get number of rule definitions before node (including this one).
313    *
314    * @return Number of rule definitions before node (including this one).
315    */
 
316  7125 toggle public int getRuleNumber() {
317  7125 return ruleNumber;
318    }
319   
320    /**
321    * Increase number of rule definitions before node (including this one).
322    */
 
323  9180 toggle public void increaseRuleNumber() {
324  9180 ruleNumber++;
325    }
326   
327    /**
328    * Is there nothing more to be numbered?
329    *
330    * @return There will be no more number changes.
331    */
 
332  26050 toggle public boolean isFinished() {
333  26050 return finished;
334    }
335   
336    /**
337    * Set if numbering has ended.
338    *
339    * @param finished Will there be no more number changes?
340    */
 
341  1699 toggle public void setFinished(final boolean finished) {
342  1699 this.finished = finished;
343    }
344   
345    /**
346    * Get calculated visit percentage.
347    * This is a monotonically nondecreasing visit function.
348    *
349    * @return Value between 0 and 100.
350    */
 
351  78139 toggle public double getVisitPercentage() {
352  78139 if (finished) {
353  6 return 100;
354    }
355  78133 double result = (double) (importNumber) / (imports + 1) / (chapters + 3);
356  78133 result += (double) (absoluteChapterNumber) / (chapters + 3);
357  78133 result += (double) (absoluteSectionNumber) / (sections + 2) / (chapters + 3);
358  78133 result += (double) (subsectionNumber + nodeNumber)
359    / (subsectionsAndNodes + 2) / (sections + 2) / (chapters + 3);
360  78133 return 100 * result;
361    }
362   
 
363  52108 toggle public boolean equals(final Object compare) {
364  52108 if (!(compare instanceof QedeqNumbers)) {
365  6 return false;
366    }
367  52102 final QedeqNumbers other = (QedeqNumbers) compare;
368  52102 return imports == other.imports && importNumber == other.importNumber
369    && chapterNumbering == other.chapterNumbering
370    && absoluteChapterNumber == other.absoluteChapterNumber
371    && sectionNumbering == other.sectionNumbering
372    && sections == other.sections
373    && absoluteSectionNumber == other.absoluteSectionNumber
374    && subsectionNumber == other.subsectionNumber
375    && nodeNumber == other.nodeNumber
376    && axiomNumber == other.axiomNumber
377    && propositionNumber == other.propositionNumber
378    && predicateDefinitionNumber == other.predicateDefinitionNumber
379    && functionDefinitionNumber == other.functionDefinitionNumber
380    && ruleNumber == other.ruleNumber;
381    }
382   
 
383  104204 toggle public int hashCode() {
384  104204 return imports ^ (importNumber * 4)
385    ^ (chapters * 16) ^ (absoluteChapterNumber * 64)
386    ^ (sections * 256) ^ (absoluteSectionNumber * 1024)
387    ^ (subsectionsAndNodes * 4096) ^ (nodeNumber * 16384) ^ (subsectionNumber * 65536)
388    ^ (axiomNumber * 262144) ^ (propositionNumber * 1048576)
389    ^ (predicateDefinitionNumber * 4194304)
390    ^ (functionDefinitionNumber * 16777216) ^ (ruleNumber * 67108864);
391    }
392   
 
393  52088 toggle public String toString() {
394  52088 return "(" + importNumber + "/" + imports + " I) "
395    + "(" + absoluteChapterNumber + "/" + chapters + " C) "
396    + "(" + absoluteSectionNumber + "/" + sections + " S) "
397    + "(" + (subsectionNumber + nodeNumber) + "/" + subsectionsAndNodes + ")";
398    }
399   
400    }