EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.kernel.se.visitor]

COVERAGE SUMMARY FOR SOURCE FILE [QedeqNumbers.java]

nameclass, %method, %block, %line, %
QedeqNumbers.java100% (1/1)100% (32/32)100% (547/547)100% (91/91)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class QedeqNumbers100% (1/1)100% (32/32)100% (547/547)100% (91/91)
QedeqNumbers (QedeqNumbers): void 100% (1/1)100% (79/79)100% (21/21)
QedeqNumbers (int, int): void 100% (1/1)100% (9/9)100% (4/4)
equals (Object): boolean 100% (1/1)100% (82/82)100% (4/4)
getAbsoluteChapterNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getAbsoluteSectionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getAxiomNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getChapterNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getFunctionDefinitionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getImportNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getNodeNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getPredicateDefinitionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getPropositionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getRuleNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getSectionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getSubsectionNumber (): int 100% (1/1)100% (3/3)100% (1/1)
getVisitPercentage (): double 100% (1/1)100% (82/82)100% (7/7)
hashCode (): int 100% (1/1)100% (68/68)100% (1/1)
increaseAxiomNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increaseChapterNumber (int, boolean): void 100% (1/1)100% (39/39)100% (12/12)
increaseFunctionDefinitionNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increaseImportNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increaseNodeNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increasePredicateDefinitionNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increasePropositionNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increaseRuleNumber (): void 100% (1/1)100% (7/7)100% (2/2)
increaseSectionNumber (int, boolean): void 100% (1/1)100% (27/27)100% (8/8)
increaseSubsectionNumber (): void 100% (1/1)100% (7/7)100% (2/2)
isChapterNumbering (): boolean 100% (1/1)100% (3/3)100% (1/1)
isFinished (): boolean 100% (1/1)100% (3/3)100% (1/1)
isSectionNumbering (): boolean 100% (1/1)100% (3/3)100% (1/1)
setFinished (boolean): void 100% (1/1)100% (4/4)100% (2/2)
toString (): String 100% (1/1)100% (56/56)100% (1/1)

1package 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 */
9public 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    public QedeqNumbers(final int imports, final int chapters) {
75        this.imports = imports;
76        this.chapters = chapters;
77    }
78 
79    /**
80     * Copy constructor.
81     *
82     * @param   original    Original to copy values from.
83     */
84    public QedeqNumbers(final QedeqNumbers original) {
85        imports = original.imports;
86        chapters = original.chapters;
87        sections = original.sections;
88        subsectionsAndNodes = original.subsectionsAndNodes;
89        importNumber = original.importNumber;
90        chapterNumbering = original.chapterNumbering;
91        chapterNumber = original.chapterNumber;
92        absoluteChapterNumber = original.absoluteChapterNumber;
93        sectionNumbering = original.sectionNumbering;
94        nodeNumber = original.nodeNumber;
95        sectionNumber = original.sectionNumber;
96        absoluteSectionNumber = original.absoluteSectionNumber;
97        subsectionNumber = original.subsectionNumber;
98        axiomNumber = original.axiomNumber;
99        functionDefinitionNumber = original.functionDefinitionNumber;
100        predicateDefinitionNumber = original.predicateDefinitionNumber;
101        propositionNumber = original.propositionNumber;
102        ruleNumber = original.ruleNumber;
103        finished = original.finished;
104    }
105 
106    /**
107     * Last import number.
108     *
109     * @return  Import number.
110     */
111    public int getImportNumber() {
112        return importNumber;
113    }
114 
115    /**
116     * Increase import number.
117     */
118    public void increaseImportNumber() {
119        importNumber++;
120    }
121 
122    /**
123     * Chapter number the node is within.
124     *
125     * @return  Chapter number.
126     */
127    public int getChapterNumber() {
128        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    public void increaseChapterNumber(final int sections, final boolean chapterNumbering) {
138        this.chapterNumbering = chapterNumbering;
139        absoluteChapterNumber++;
140        if (chapterNumbering) {
141            chapterNumber++;
142        }
143        this.sections = sections;
144        this.subsectionsAndNodes = 0;
145        this.sectionNumber = 0;
146        this.absoluteSectionNumber = 0;
147        this.sectionNumbering = true;
148        this.subsectionNumber = 0;
149        this.nodeNumber = 0;
150    }
151 
152    /**
153     * Is chapter numbering currently on?
154     *
155     * @return  Chapter numbering is on.
156     */
157    public boolean isChapterNumbering() {
158        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    public int getAbsoluteChapterNumber() {
167        return absoluteChapterNumber;
168    }
169 
170    /**
171     * Section number the node is within.
172     *
173     * @return  Section number.
174     */
175    public int getSectionNumber() {
176        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    public void increaseSectionNumber(final int subsectionsAndNodes,
186            final boolean sectionNumbering) {
187        this.subsectionsAndNodes = subsectionsAndNodes;
188        this.sectionNumbering = sectionNumbering;
189        absoluteSectionNumber++;
190        if (sectionNumbering) {
191            sectionNumber++;
192        }
193        subsectionNumber = 0;
194        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    public int getAbsoluteSectionNumber() {
203        return absoluteSectionNumber;
204    }
205 
206    /**
207     * Is section numbering currently on?
208     *
209     * @return  Section numbering is on.
210     */
211    public boolean isSectionNumbering() {
212        return sectionNumbering;
213    }
214 
215    /**
216     * Sub section number within section.
217     *
218     * @return  Sub section number.
219     */
220    public int getSubsectionNumber() {
221        return subsectionNumber;
222    }
223 
224    /**
225     * Increase subsection number.
226     */
227    public void increaseSubsectionNumber() {
228        subsectionNumber++;
229    }
230 
231    /**
232     * Node number within section.
233     *
234     * @return  Node number.
235     */
236    public int getNodeNumber() {
237        return nodeNumber;
238    }
239 
240    /**
241     * Increase node number.
242     */
243    public void increaseNodeNumber() {
244        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    public int getAxiomNumber() {
253        return axiomNumber;
254    }
255 
256    /**
257     * Increase number of axioms before node (including this one).
258     */
259    public void increaseAxiomNumber() {
260        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    public int getFunctionDefinitionNumber() {
269        return functionDefinitionNumber;
270    }
271 
272    /**
273     * Increase number of function definitions before node (including this one).
274     */
275    public void increaseFunctionDefinitionNumber() {
276        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    public int getPredicateDefinitionNumber() {
285        return predicateDefinitionNumber;
286    }
287 
288    /**
289     * Increase number of predicate definitions before node (including this one).
290     */
291    public void increasePredicateDefinitionNumber() {
292        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    public int getPropositionNumber() {
301        return propositionNumber;
302    }
303 
304    /**
305     * Increase number of predicate definitions before node (including this one).
306     */
307    public void increasePropositionNumber() {
308        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    public int getRuleNumber() {
317        return ruleNumber;
318    }
319 
320    /**
321     * Increase number of rule definitions before node (including this one).
322     */
323    public void increaseRuleNumber() {
324        ruleNumber++;
325    }
326 
327    /**
328     * Is there nothing more to be numbered?
329     *
330     * @return  There will be no more number changes.
331     */
332    public boolean isFinished() {
333        return finished;
334    }
335 
336    /**
337     * Set if numbering has ended.
338     *
339     * @param   finished    Will there be no more number changes?
340     */
341    public void setFinished(final boolean finished) {
342        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    public double getVisitPercentage() {
352        if (finished) {
353            return 100;
354        }
355        double result = (double) (importNumber) / (imports + 1) / (chapters + 3);
356        result += (double) (absoluteChapterNumber) / (chapters + 3);
357        result += (double) (absoluteSectionNumber) / (sections + 2) / (chapters + 3);
358        result += (double) (subsectionNumber + nodeNumber)
359            / (subsectionsAndNodes + 2) / (sections + 2) / (chapters + 3);
360        return 100 * result;
361    }
362 
363    public boolean equals(final Object compare) {
364        if (!(compare instanceof QedeqNumbers)) {
365            return false;
366        }
367        final QedeqNumbers other = (QedeqNumbers) compare;
368        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    public int hashCode() {
384        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    public String toString() {
394        return "(" + importNumber + "/" + imports + " I) "
395            + "(" + absoluteChapterNumber + "/" + chapters + " C) "
396            + "(" + absoluteSectionNumber + "/" + sections + " S) "
397            + "(" + (subsectionNumber + nodeNumber) + "/" + subsectionsAndNodes + ")";
398    }
399 
400}

[all classes][org.qedeq.kernel.se.visitor]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov