Clover Coverage Report
Coverage timestamp: Fri May 24 2013 13:47:27 UTC
../../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
33   183   19   2.54
6   96   0.58   13
13     1.46  
1    
 
  ModuleLabelsCreator       Line # 45 33 19 94.2% 0.9423077
 
  (93)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2013, 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.control;
17   
18    import org.qedeq.base.trace.Trace;
19    import org.qedeq.kernel.bo.common.Element2Latex;
20    import org.qedeq.kernel.bo.common.Element2Utf8;
21    import org.qedeq.kernel.bo.module.ControlVisitor;
22    import org.qedeq.kernel.bo.module.InternalServiceProcess;
23    import org.qedeq.kernel.bo.module.KernelQedeqBo;
24    import org.qedeq.kernel.bo.module.ModuleLabels;
25    import org.qedeq.kernel.se.base.module.Axiom;
26    import org.qedeq.kernel.se.base.module.ChangedRule;
27    import org.qedeq.kernel.se.base.module.ChangedRuleList;
28    import org.qedeq.kernel.se.base.module.FunctionDefinition;
29    import org.qedeq.kernel.se.base.module.Import;
30    import org.qedeq.kernel.se.base.module.Node;
31    import org.qedeq.kernel.se.base.module.PredicateDefinition;
32    import org.qedeq.kernel.se.base.module.Proposition;
33    import org.qedeq.kernel.se.base.module.Rule;
34    import org.qedeq.kernel.se.common.ModuleDataException;
35    import org.qedeq.kernel.se.common.Service;
36    import org.qedeq.kernel.se.common.SourceFileExceptionList;
37    import org.qedeq.kernel.se.dto.module.NodeVo;
38   
39   
40    /**
41    * Create mapping from labels to {@link org.qedeq.kernel.se.dto.module.NodeVo} for a QEDEQ module.
42    *
43    * @author Michael Meyling
44    */
 
45    public final class ModuleLabelsCreator extends ControlVisitor {
46   
47    /** This class. */
48    private static final Class CLASS = ModuleLabelsCreator.class;
49   
50    /** QEDEQ module labels, definitions, references, etc. */
51    private ModuleLabels labels;
52   
53    /** Converter to LaTeX. */
54    private Element2LatexImpl converter;
55   
56    /** Converter to UTF-8 text. */
57    private Element2Utf8Impl textConverter;
58   
59    /** Current node id. */
60    private String nodeId = "";
61   
62    /**
63    * Constructor.
64    *
65    * @param service This service we work for.
66    * @param prop Internal QedeqBo.
67    */
 
68  582 toggle public ModuleLabelsCreator(final Service service, final KernelQedeqBo prop) {
69  582 super(service, prop);
70    }
71   
72    /**
73    * Visit import. Loads referenced QEDEQ module and saves reference.
74    *
75    * @param imp Begin visit of this element.
76    */
 
77  473 toggle public void visitEnter(final Import imp) {
78  473 try {
79  473 this.labels.addLabel(getCurrentContext(),
80    imp.getLabel());
81    } catch (ModuleDataException me) {
82  0 addError(me);
83  0 Trace.trace(CLASS, this, "visitEnter(Import)", me);
84    }
85    }
86   
 
87  3441 toggle public void visitEnter(final Axiom axiom) {
88  3441 setBlocked(true); // block further traverse
89    }
90   
 
91  9601 toggle public void visitEnter(final Proposition proposition) {
92  9601 setBlocked(true); // block further traverse
93    }
94   
95    /**
96    * Increase function definition counter.
97    *
98    * @param funcDef Begin visit of this element.
99    */
 
100  2570 toggle public void visitEnter(final FunctionDefinition funcDef) {
101  2570 setBlocked(true); // block further traverse
102    // we always save the definition, even if there already exists an entry
103  2570 labels.addFunction(funcDef, getCurrentContext());
104    }
105   
 
106  1266 toggle public void visitEnter(final PredicateDefinition predDef) {
107  1266 setBlocked(true); // block further traverse
108    // we always save the definition, even if there already exists an entry
109  1266 labels.addPredicate(predDef, getCurrentContext());
110    }
111   
 
112  1727 toggle public void visitEnter(final Rule rule) {
113  1727 setBlocked(true); // block further traverse
114    // we always save the definition, even if there already exists an entry
115  1727 labels.addRule(nodeId, rule, getCurrentContext());
116  1727 if (rule.getChangedRuleList() != null) {
117  9 final ChangedRuleList list = rule.getChangedRuleList();
118  81 for (int i = 0; i < list.size() && list.get(i) != null; i++) {
119  72 final ChangedRule r = list.get(i);
120  72 labels.addChangedRule(nodeId, rule, r, getCurrentContext());
121    }
122    }
123    }
124   
 
125  18962 toggle public void visitEnter(final Node node) {
126  18962 nodeId = node.getId();
127    }
128   
 
129  18962 toggle public void visitLeave(final Node node) {
130  18962 nodeId = "";
131  18962 try {
132  18962 labels.addNode(getCurrentContext(), (NodeVo) node, getQedeqBo(),
133    getCurrentNumbers());
134    } catch (ModuleDataException me) {
135  4 addError(me);
136  4 Trace.trace(CLASS, this, "visitEnter(Node)", me);
137    }
138  18962 setBlocked(false); // allow further traverse
139    }
140   
141    /**
142    * Create QEDEQ module labels and Element2Latex converter.
143    *
144    * @param process We work for this process.
145    * @throws SourceFileExceptionList Traverse lead to errors.
146    */
 
147  582 toggle public void createLabels(final InternalServiceProcess process) throws SourceFileExceptionList {
148  582 if (this.labels == null) {
149  582 this.labels = new ModuleLabels();
150  582 this.converter = new Element2LatexImpl(this.labels);
151  582 this.textConverter = new Element2Utf8Impl(this.converter);
152  582 traverse(process);
153    }
154    }
155   
156    /**
157    * Get QEDEQ module labels.
158    *
159    * @return QEDEQ module labels. */
 
160  578 toggle public ModuleLabels getLabels() {
161  578 return labels;
162    }
163   
164    /**
165    * Get converter for module elements.
166    *
167    * @return Element to LaTeX converter.
168    */
 
169  578 toggle public Element2Latex getConverter() {
170  578 return converter;
171    }
172   
173    /**
174    * Get converter for module elements.
175    *
176    * @return Element to UTF-8 converter.
177    */
 
178  578 toggle public Element2Utf8 getTextConverter() {
179  578 return textConverter;
180    }
181   
182    }
183