Clover Coverage Report
Coverage timestamp: Fri Feb 14 2014 01:47:57 UTC
../../../../../../img/srcFileCovDistChart9.png 31% of files have more coverage
28   154   16   2.55
4   82   0.57   11
11     1.45  
1    
 
  ModuleLabelsCreator       Line # 42 28 16 90.7% 0.90697676
 
  (105)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2014, Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10    * This program is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13    * GNU General Public License for more details.
14    */
15   
16    package org.qedeq.kernel.bo.service.basis;
17   
18    import org.qedeq.base.trace.Trace;
19    import org.qedeq.kernel.bo.module.InternalServiceJob;
20    import org.qedeq.kernel.bo.module.KernelQedeqBo;
21    import org.qedeq.kernel.bo.module.ModuleLabels;
22    import org.qedeq.kernel.se.base.module.Axiom;
23    import org.qedeq.kernel.se.base.module.ChangedRule;
24    import org.qedeq.kernel.se.base.module.ChangedRuleList;
25    import org.qedeq.kernel.se.base.module.FunctionDefinition;
26    import org.qedeq.kernel.se.base.module.Import;
27    import org.qedeq.kernel.se.base.module.Node;
28    import org.qedeq.kernel.se.base.module.PredicateDefinition;
29    import org.qedeq.kernel.se.base.module.Proposition;
30    import org.qedeq.kernel.se.base.module.Rule;
31    import org.qedeq.kernel.se.common.ModuleDataException;
32    import org.qedeq.kernel.se.common.Service;
33    import org.qedeq.kernel.se.common.SourceFileExceptionList;
34    import org.qedeq.kernel.se.dto.module.NodeVo;
35   
36   
37    /**
38    * Create mapping from labels to {@link org.qedeq.kernel.se.dto.module.NodeVo} for a QEDEQ module.
39    *
40    * @author Michael Meyling
41    */
 
42    public final class ModuleLabelsCreator extends ControlVisitor {
43   
44    /** This class. */
45    private static final Class CLASS = ModuleLabelsCreator.class;
46   
47    /** QEDEQ module labels, definitions, references, etc. */
48    private ModuleLabels labels;
49   
50    /** Current node id. */
51    private String nodeId = "";
52   
53    /**
54    * Constructor.
55    *
56    * @param service This service we work for.
57    * @param prop Internal QedeqBo.
58    */
 
59  513 toggle public ModuleLabelsCreator(final Service service, final KernelQedeqBo prop) {
60  513 super(service, prop);
61    }
62   
63    /**
64    * Visit import. Loads referenced QEDEQ module and saves reference.
65    *
66    * @param imp Begin visit of this element.
67    */
 
68  368 toggle public void visitEnter(final Import imp) {
69  368 try {
70  368 this.labels.addLabel(getCurrentContext(),
71    imp.getLabel());
72    } catch (ModuleDataException me) {
73  0 addError(me);
74  0 Trace.trace(CLASS, this, "visitEnter(Import)", me);
75    }
76    }
77   
 
78  3503 toggle public void visitEnter(final Axiom axiom) {
79  3503 setBlocked(true); // block further traverse
80    }
81   
 
82  9735 toggle public void visitEnter(final Proposition proposition) {
83  9735 setBlocked(true); // block further traverse
84    }
85   
86    /**
87    * Increase function definition counter.
88    *
89    * @param funcDef Begin visit of this element.
90    */
 
91  2597 toggle public void visitEnter(final FunctionDefinition funcDef) {
92  2597 setBlocked(true); // block further traverse
93    // we always save the definition, even if there already exists an entry
94  2597 labels.addFunction(funcDef, getCurrentContext());
95    }
96   
 
97  1267 toggle public void visitEnter(final PredicateDefinition predDef) {
98  1267 setBlocked(true); // block further traverse
99    // we always save the definition, even if there already exists an entry
100  1267 labels.addPredicate(predDef, getCurrentContext());
101    }
102   
 
103  1841 toggle public void visitEnter(final Rule rule) {
104  1841 setBlocked(true); // block further traverse
105    // we always save the definition, even if there already exists an entry
106  1841 labels.addRule(nodeId, rule, getCurrentContext());
107  1841 if (rule.getChangedRuleList() != null) {
108  10 final ChangedRuleList list = rule.getChangedRuleList();
109  90 for (int i = 0; i < list.size() && list.get(i) != null; i++) {
110  80 final ChangedRule r = list.get(i);
111  80 labels.addChangedRule(nodeId, rule, r, getCurrentContext());
112    }
113    }
114    }
115   
 
116  19275 toggle public void visitEnter(final Node node) {
117  19275 nodeId = node.getId();
118    }
119   
 
120  19275 toggle public void visitLeave(final Node node) {
121  19275 nodeId = "";
122  19275 try {
123  19275 labels.addNode(getCurrentContext(), (NodeVo) node, getKernelQedeqBo(),
124    getCurrentNumbers());
125    } catch (ModuleDataException me) {
126  3 addError(me);
127  3 Trace.trace(CLASS, this, "visitEnter(Node)", me);
128    }
129  19275 setBlocked(false); // allow further traverse
130    }
131   
132    /**
133    * Fill QEDEQ module labels.
134    *
135    * @param process We work for this process.
136    * @param labels Herein the labels are filled.
137    * @throws SourceFileExceptionList Traverse lead to errors.
138    */
 
139  513 toggle public void createLabels(final InternalServiceJob process, final ModuleLabels labels)
140    throws SourceFileExceptionList {
141  513 this.labels = labels;
142  513 traverse(process);
143    }
144   
145    /**
146    * Get QEDEQ module labels.
147    *
148    * @return QEDEQ module labels. */
 
149  0 toggle public ModuleLabels getLabels() {
150  0 return labels;
151    }
152   
153    }
154