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

COVERAGE SUMMARY FOR SOURCE FILE [ModuleLabelsCreator.java]

nameclass, %method, %block, %line, %
ModuleLabelsCreator.java100% (1/1)92%  (11/12)91%  (137/150)90%  (37.9/42)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ModuleLabelsCreator100% (1/1)92%  (11/12)91%  (137/150)90%  (37.9/42)
getLabels (): ModuleLabels 0%   (0/1)0%   (0/3)0%   (0/1)
visitEnter (Import): void 100% (1/1)50%  (9/18)50%  (3/6)
<static initializer> 100% (1/1)90%  (9/10)90%  (0.9/1)
ModuleLabelsCreator (Service, KernelQedeqBo): void 100% (1/1)100% (8/8)100% (3/3)
createLabels (InternalServiceJob, ModuleLabels): void 100% (1/1)100% (7/7)100% (3/3)
visitEnter (Axiom): void 100% (1/1)100% (4/4)100% (2/2)
visitEnter (FunctionDefinition): void 100% (1/1)100% (10/10)100% (3/3)
visitEnter (Node): void 100% (1/1)100% (5/5)100% (2/2)
visitEnter (PredicateDefinition): void 100% (1/1)100% (10/10)100% (3/3)
visitEnter (Proposition): void 100% (1/1)100% (4/4)100% (2/2)
visitEnter (Rule): void 100% (1/1)100% (43/43)100% (8/8)
visitLeave (Node): void 100% (1/1)100% (28/28)100% (8/8)

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 
16package org.qedeq.kernel.bo.service.basis;
17 
18import org.qedeq.base.trace.Trace;
19import org.qedeq.kernel.bo.module.InternalServiceJob;
20import org.qedeq.kernel.bo.module.KernelQedeqBo;
21import org.qedeq.kernel.bo.module.ModuleLabels;
22import org.qedeq.kernel.se.base.module.Axiom;
23import org.qedeq.kernel.se.base.module.ChangedRule;
24import org.qedeq.kernel.se.base.module.ChangedRuleList;
25import org.qedeq.kernel.se.base.module.FunctionDefinition;
26import org.qedeq.kernel.se.base.module.Import;
27import org.qedeq.kernel.se.base.module.Node;
28import org.qedeq.kernel.se.base.module.PredicateDefinition;
29import org.qedeq.kernel.se.base.module.Proposition;
30import org.qedeq.kernel.se.base.module.Rule;
31import org.qedeq.kernel.se.common.ModuleDataException;
32import org.qedeq.kernel.se.common.Service;
33import org.qedeq.kernel.se.common.SourceFileExceptionList;
34import 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 */
42public 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    public ModuleLabelsCreator(final Service service, final KernelQedeqBo prop) {
60        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    public void visitEnter(final Import imp) {
69        try {
70            this.labels.addLabel(getCurrentContext(),
71                imp.getLabel());
72        } catch (ModuleDataException me) {
73            addError(me);
74            Trace.trace(CLASS, this, "visitEnter(Import)", me);
75        }
76    }
77 
78    public void visitEnter(final Axiom axiom) {
79        setBlocked(true);   // block further traverse
80    }
81 
82    public void visitEnter(final Proposition proposition) {
83        setBlocked(true);   // block further traverse
84    }
85 
86    /**
87     * Increase function definition counter.
88     *
89     * @param   funcDef             Begin visit of this element.
90     */
91    public void visitEnter(final FunctionDefinition funcDef) {
92        setBlocked(true);   // block further traverse
93        // we always save the definition, even if there already exists an entry
94        labels.addFunction(funcDef, getCurrentContext());
95    }
96 
97    public void visitEnter(final PredicateDefinition predDef) {
98        setBlocked(true);   // block further traverse
99        // we always save the definition, even if there already exists an entry
100        labels.addPredicate(predDef, getCurrentContext());
101    }
102 
103    public void visitEnter(final Rule rule) {
104        setBlocked(true);   // block further traverse
105        // we always save the definition, even if there already exists an entry
106        labels.addRule(nodeId, rule, getCurrentContext());
107        if (rule.getChangedRuleList() != null) {
108            final ChangedRuleList list = rule.getChangedRuleList();
109            for (int i = 0; i < list.size() && list.get(i) != null; i++) {
110                final ChangedRule r = list.get(i);
111                labels.addChangedRule(nodeId, rule, r, getCurrentContext());
112            }
113        }
114    }
115 
116    public void visitEnter(final Node node) {
117        nodeId = node.getId();
118    }
119 
120    public void visitLeave(final Node node) {
121        nodeId = "";
122        try {
123            labels.addNode(getCurrentContext(), (NodeVo) node, getKernelQedeqBo(),
124                getCurrentNumbers());
125        } catch (ModuleDataException me) {
126            addError(me);
127            Trace.trace(CLASS, this, "visitEnter(Node)", me);
128        }
129        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    public void createLabels(final InternalServiceJob process, final ModuleLabels labels)
140            throws SourceFileExceptionList {
141             this.labels = labels;
142        traverse(process);
143    }
144 
145    /**
146     * Get QEDEQ module labels.
147     *
148     * @return  QEDEQ module labels. */
149    public ModuleLabels getLabels() {
150        return labels;
151    }
152 
153}
154 

[all classes][org.qedeq.kernel.bo.service.basis]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov