Clover Coverage Report
Coverage timestamp: Fri Feb 14 2014 07:28:57 UTC
../../../../../../img/srcFileCovDistChart9.png 45% 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
 
  (19)
 
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  648 toggle public ModuleLabelsCreator(final Service service, final KernelQedeqBo prop) {
60  648 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  514 toggle public void visitEnter(final Import imp) {
69  514 try {
70  514 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  3647 toggle public void visitEnter(final Axiom axiom) {
79  3647 setBlocked(true); // block further traverse
80    }
81   
 
82  9939 toggle public void visitEnter(final Proposition proposition) {
83  9939 setBlocked(true); // block further traverse
84    }
85   
86    /**
87    * Increase function definition counter.
88    *
89    * @param funcDef Begin visit of this element.
90    */
 
91  2634 toggle public void visitEnter(final FunctionDefinition funcDef) {
92  2634 setBlocked(true); // block further traverse
93    // we always save the definition, even if there already exists an entry
94  2634 labels.addFunction(funcDef, getCurrentContext());
95    }
96   
 
97  1316 toggle public void visitEnter(final PredicateDefinition predDef) {
98  1316 setBlocked(true); // block further traverse
99    // we always save the definition, even if there already exists an entry
100  1316 labels.addPredicate(predDef, getCurrentContext());
101    }
102   
 
103  1909 toggle public void visitEnter(final Rule rule) {
104  1909 setBlocked(true); // block further traverse
105    // we always save the definition, even if there already exists an entry
106  1909 labels.addRule(nodeId, rule, getCurrentContext());
107  1909 if (rule.getChangedRuleList() != null) {
108  11 final ChangedRuleList list = rule.getChangedRuleList();
109  99 for (int i = 0; i < list.size() && list.get(i) != null; i++) {
110  88 final ChangedRule r = list.get(i);
111  88 labels.addChangedRule(nodeId, rule, r, getCurrentContext());
112    }
113    }
114    }
115   
 
116  19834 toggle public void visitEnter(final Node node) {
117  19834 nodeId = node.getId();
118    }
119   
 
120  19834 toggle public void visitLeave(final Node node) {
121  19834 nodeId = "";
122  19834 try {
123  19834 labels.addNode(getCurrentContext(), (NodeVo) node, getKernelQedeqBo(),
124    getCurrentNumbers());
125    } catch (ModuleDataException me) {
126  4 addError(me);
127  4 Trace.trace(CLASS, this, "visitEnter(Node)", me);
128    }
129  19834 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  648 toggle public void createLabels(final InternalServiceJob process, final ModuleLabels labels)
140    throws SourceFileExceptionList {
141  648 this.labels = labels;
142  648 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