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

COVERAGE SUMMARY FOR SOURCE FILE [Qedeq2Xml.java]

nameclass, %method, %block, %line, %
Qedeq2Xml.java100% (1/1)97%  (92/95)97%  (2021/2080)98%  (458.5/466)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class Qedeq2Xml100% (1/1)97%  (92/95)97%  (2021/2080)98%  (458.5/466)
getServiceAction (): String 0%   (0/1)0%   (0/2)0%   (0/1)
getServiceDescription (): String 0%   (0/1)0%   (0/2)0%   (0/1)
getServiceId (): String 0%   (0/1)0%   (0/4)0%   (0/1)
visitEnter (Section): void 100% (1/1)50%  (15/30)83%  (5/6)
visitEnter (Subsection): void 100% (1/1)69%  (33/48)88%  (7/8)
print (InternalServiceJob, ModuleService, KernelQedeqBo, TextOutput): void 100% (1/1)74%  (20/27)81%  (6.5/8)
visitEnter (ElementList): void 100% (1/1)89%  (110/124)94%  (15/16)
Qedeq2Xml (ModuleService, KernelQedeqBo, TextOutput): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Add): void 100% (1/1)100% (23/23)100% (4/4)
visitEnter (Author): void 100% (1/1)100% (40/40)100% (9/9)
visitEnter (AuthorList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Axiom): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (ChangedRule): void 100% (1/1)100% (45/45)100% (7/7)
visitEnter (Chapter): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (Conclusion): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (ConditionalProof): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Existential): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (FormalProof): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (FormalProofLine): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (FormalProofLineList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Formula): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (FunctionDefinition): void 100% (1/1)100% (65/65)100% (10/10)
visitEnter (Header): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (Hypothesis): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (Import): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (ImportList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (InitialFunctionDefinition): void 100% (1/1)100% (65/65)100% (10/10)
visitEnter (InitialPredicateDefinition): void 100% (1/1)100% (66/66)100% (10/10)
visitEnter (Latex): void 100% (1/1)100% (63/63)100% (14/14)
visitEnter (LatexList): void 100% (1/1)100% (83/83)100% (20/20)
visitEnter (LinkList): void 100% (1/1)100% (37/37)100% (6/6)
visitEnter (LiteratureItem): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (LiteratureItemList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Location): void 100% (1/1)100% (26/26)100% (5/5)
visitEnter (LocationList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (ModusPonens): void 100% (1/1)100% (41/41)100% (6/6)
visitEnter (Node): void 100% (1/1)100% (48/48)100% (8/8)
visitEnter (PredicateDefinition): void 100% (1/1)100% (66/66)100% (10/10)
visitEnter (Proof): void 100% (1/1)100% (45/45)100% (7/7)
visitEnter (Proposition): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Qedeq): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (Rename): void 100% (1/1)100% (55/55)100% (8/8)
visitEnter (Rule): void 100% (1/1)100% (48/48)100% (8/8)
visitEnter (Specification): void 100% (1/1)100% (48/48)100% (8/8)
visitEnter (SubsectionList): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (SubstFree): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (SubstFunc): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (SubstPred): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (Term): void 100% (1/1)100% (8/8)100% (3/3)
visitEnter (Universal): void 100% (1/1)100% (30/30)100% (6/6)
visitEnter (UsedByList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Add): void 100% (1/1)100% (5/5)100% (2/2)
visitLeave (Author): void 100% (1/1)100% (18/18)100% (6/6)
visitLeave (AuthorList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Axiom): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (ChangedRule): void 100% (1/1)100% (5/5)100% (2/2)
visitLeave (Chapter): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Conclusion): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (ConditionalProof): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (ElementList): void 100% (1/1)100% (31/31)100% (5/5)
visitLeave (Existential): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (FormalProof): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (FormalProofLine): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (FormalProofLineList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Formula): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (FunctionDefinition): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Header): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Hypothesis): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Import): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (ImportList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (InitialFunctionDefinition): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (InitialPredicateDefinition): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Latex): void 100% (1/1)100% (15/15)100% (5/5)
visitLeave (LatexList): void 100% (1/1)100% (83/83)100% (20/20)
visitLeave (LiteratureItem): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (LiteratureItemList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (LocationList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (ModusPonens): void 100% (1/1)100% (5/5)100% (2/2)
visitLeave (Node): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (PredicateDefinition): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Proof): void 100% (1/1)100% (5/5)100% (2/2)
visitLeave (Proposition): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Qedeq): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Rename): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Rule): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Section): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Specification): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Subsection): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (SubsectionList): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (SubstFree): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (SubstFunc): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (SubstPred): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Term): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (Universal): void 100% (1/1)100% (8/8)100% (3/3)
visitLeave (UsedByList): void 100% (1/1)100% (8/8)100% (3/3)

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.xml.dao;
17 
18import java.io.IOException;
19 
20import org.qedeq.base.io.TextOutput;
21import org.qedeq.base.utility.StringUtility;
22import org.qedeq.kernel.bo.KernelContext;
23import org.qedeq.kernel.bo.module.InternalServiceJob;
24import org.qedeq.kernel.bo.module.KernelQedeqBo;
25import org.qedeq.kernel.bo.service.basis.ControlVisitor;
26import org.qedeq.kernel.se.base.list.ElementList;
27import org.qedeq.kernel.se.base.module.Add;
28import org.qedeq.kernel.se.base.module.Author;
29import org.qedeq.kernel.se.base.module.AuthorList;
30import org.qedeq.kernel.se.base.module.Axiom;
31import org.qedeq.kernel.se.base.module.ChangedRule;
32import org.qedeq.kernel.se.base.module.Chapter;
33import org.qedeq.kernel.se.base.module.Conclusion;
34import org.qedeq.kernel.se.base.module.ConditionalProof;
35import org.qedeq.kernel.se.base.module.Existential;
36import org.qedeq.kernel.se.base.module.FormalProof;
37import org.qedeq.kernel.se.base.module.FormalProofLine;
38import org.qedeq.kernel.se.base.module.FormalProofLineList;
39import org.qedeq.kernel.se.base.module.Formula;
40import org.qedeq.kernel.se.base.module.FunctionDefinition;
41import org.qedeq.kernel.se.base.module.Header;
42import org.qedeq.kernel.se.base.module.Hypothesis;
43import org.qedeq.kernel.se.base.module.Import;
44import org.qedeq.kernel.se.base.module.ImportList;
45import org.qedeq.kernel.se.base.module.InitialFunctionDefinition;
46import org.qedeq.kernel.se.base.module.InitialPredicateDefinition;
47import org.qedeq.kernel.se.base.module.Latex;
48import org.qedeq.kernel.se.base.module.LatexList;
49import org.qedeq.kernel.se.base.module.LinkList;
50import org.qedeq.kernel.se.base.module.LiteratureItem;
51import org.qedeq.kernel.se.base.module.LiteratureItemList;
52import org.qedeq.kernel.se.base.module.Location;
53import org.qedeq.kernel.se.base.module.LocationList;
54import org.qedeq.kernel.se.base.module.ModusPonens;
55import org.qedeq.kernel.se.base.module.Node;
56import org.qedeq.kernel.se.base.module.PredicateDefinition;
57import org.qedeq.kernel.se.base.module.Proof;
58import org.qedeq.kernel.se.base.module.Proposition;
59import org.qedeq.kernel.se.base.module.Qedeq;
60import org.qedeq.kernel.se.base.module.Rename;
61import org.qedeq.kernel.se.base.module.Rule;
62import org.qedeq.kernel.se.base.module.Section;
63import org.qedeq.kernel.se.base.module.Specification;
64import org.qedeq.kernel.se.base.module.Subsection;
65import org.qedeq.kernel.se.base.module.SubsectionList;
66import org.qedeq.kernel.se.base.module.SubstFree;
67import org.qedeq.kernel.se.base.module.SubstFunc;
68import org.qedeq.kernel.se.base.module.SubstPred;
69import org.qedeq.kernel.se.base.module.Term;
70import org.qedeq.kernel.se.base.module.Universal;
71import org.qedeq.kernel.se.base.module.UsedByList;
72import org.qedeq.kernel.se.common.ModuleService;
73import org.qedeq.kernel.se.common.SourceFileExceptionList;
74 
75 
76/**
77 * This class prints a QEDEQ module in XML format in an output stream.
78 *
79 * @author  Michael Meyling
80 */
81public final class Qedeq2Xml extends ControlVisitor implements ModuleService {
82 
83    /** Output goes here. */
84    private TextOutput printer;
85 
86    /**
87     * Constructor.
88     *
89     * @param   plugin  This plugin we work for.
90     * @param   bo      QEDEQ BO.
91     * @param   printer Print herein.
92     */
93    public Qedeq2Xml(final ModuleService plugin, final KernelQedeqBo bo, final TextOutput printer) {
94        super(plugin, bo);
95        this.printer = printer;
96    }
97 
98    /**
99     * Prints a XML representation of given QEDEQ module into a given output stream.
100     *
101     * @param   process             Service process we work for.
102     * @param   plugin              Plugin we work for.
103     * @param   bo                  BO QEDEQ module object.
104     * @param   printer             Print herein.
105     * @throws  SourceFileExceptionList Major problem occurred.
106     * @throws  IOException         Writing failed.
107     */
108    public static void print(final InternalServiceJob process,
109            final ModuleService plugin, final KernelQedeqBo bo, final TextOutput printer) throws
110            SourceFileExceptionList, IOException {
111        final Qedeq2Xml converter = new Qedeq2Xml(plugin, bo, printer);
112        try {
113            converter.traverse(process);
114        } finally {
115            printer.flush();
116        }
117        if (printer.checkError()) {
118            throw printer.getError();
119        }
120    }
121 
122    public final void visitEnter(final Qedeq qedeq) {
123        printer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
124        printer.println("<QEDEQ");
125        printer.println("    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
126        printer.println("    xsi:noNamespaceSchemaLocation=\"http://www.qedeq.org/"
127            + KernelContext.getInstance().getKernelVersionDirectory() + "/xml/qedeq.xsd\">");
128        printer.pushLevel();
129    }
130 
131    public final void visitLeave(final Qedeq qedeq) {
132        printer.popLevel();
133        printer.println("</QEDEQ>");
134    }
135 
136    public void visitEnter(final Header header) {
137        printer.print("<HEADER");
138        if (header.getEmail() != null) {
139            printer.print(" email=\"" + StringUtility.escapeXml(header.getEmail()) + "\"");
140        }
141        printer.println(">");
142        printer.pushLevel();
143    }
144 
145    public void visitLeave(final Header header) {
146        printer.popLevel();
147        printer.println("</HEADER>");
148    }
149 
150    public void visitEnter(final Specification specification) {
151        printer.print("<SPECIFICATION");
152        if (specification.getName() != null) {
153            printer.print(" name=\"" + StringUtility.escapeXml(specification.getName()) + "\"");
154        }
155        if (specification.getName() != null) {
156            printer.print(" ruleVersion=\"" + StringUtility.escapeXml(specification.getRuleVersion()) + "\"");
157        }
158        printer.println(">");
159        printer.pushLevel();
160    }
161 
162    public void visitLeave(final Specification specification) {
163        printer.popLevel();
164        printer.println("</SPECIFICATION>");
165    }
166 
167    public void visitEnter(final LatexList latexList) {
168        final String last = getCurrentContext().getLocationWithinModule();
169        if (last.endsWith(".getTitle()")) {
170            printer.println("<TITLE>");
171        } else if (last.endsWith(".getSummary()")) {
172            printer.println("<ABSTRACT>");
173        } else if (last.endsWith(".getIntroduction()")) {
174            printer.println("<INTRODUCTION>");
175        } else if (last.endsWith(".getName()")) {
176            printer.println("<NAME>");
177        } else if (last.endsWith(".getPrecedingText()")) {
178            printer.println("<PRECEDING>");
179        } else if (last.endsWith(".getSucceedingText()")) {
180            printer.println("<SUCCEEDING>");
181        } else if (last.endsWith(".getLatex()")) {
182            printer.println("<TEXT>");
183        } else if (last.endsWith(".getDescription()")) {
184            if (last.indexOf(".getChangedRuleList().get(") < 0) {
185                printer.println("<DESCRIPTION>");
186            }
187        }
188        printer.pushLevel();
189    }
190 
191    public void visitLeave(final LatexList latexList) {
192        printer.popLevel();
193        final String last = getCurrentContext().getLocationWithinModule();
194        if (last.endsWith(".getTitle()")) {
195            printer.println("</TITLE>");
196        } else if (last.endsWith(".getSummary()")) {
197            printer.println("</ABSTRACT>");
198        } else if (last.endsWith(".getIntroduction()")) {
199            printer.println("</INTRODUCTION>");
200        } else if (last.endsWith(".getName()")) {
201            printer.println("</NAME>");
202        } else if (last.endsWith(".getPrecedingText()")) {
203            printer.println("</PRECEDING>");
204        } else if (last.endsWith(".getSucceedingText()")) {
205            printer.println("</SUCCEEDING>");
206        } else if (last.endsWith(".getLatex()")) {
207            printer.println("</TEXT>");
208        } else if (last.endsWith(".getDescription()")) {
209            if (last.indexOf(".getChangedRuleList().get(") < 0) {
210                printer.println("</DESCRIPTION>");
211            }
212        }
213    }
214 
215    public void visitEnter(final Latex latex) {
216        printer.print("<LATEX");
217        if (latex.getLanguage() != null) {
218            printer.print(" language=\"" + latex.getLanguage() + "\"");
219        }
220        printer.println(">");
221        if (latex.getLatex() != null) {
222            printer.pushLevel();
223            printer.println("<![CDATA[");
224            printer.addToken("  "); // we must fool the printer, this is token not whitespace!
225            final String tabs = printer.getLevel();
226            printer.clearLevel();
227            // escape ]]>
228            final String data = StringUtility.replace(latex.getLatex(),
229                "]]>", "]]]]><![CDATA[>");
230            printer.println(StringUtility.useSystemLineSeparator(data).trim());
231            printer.pushLevel(tabs);
232        }
233    }
234 
235    public void visitLeave(final Latex latex) {
236        if (latex.getLatex() != null) {
237            printer.println("]]>");
238            printer.popLevel();
239        }
240        printer.println("</LATEX>");
241    }
242 
243    public void visitEnter(final LocationList locationList) {
244        printer.println("<LOCATIONS>");
245        printer.pushLevel();
246    }
247 
248    public void visitLeave(final LocationList locationList) {
249        printer.popLevel();
250        printer.println("</LOCATIONS>");
251    }
252 
253    public void visitEnter(final Location location) {
254        printer.print("<LOCATION");
255        if (location.getLocation() != null) {
256            printer.print(" value=\"" + location.getLocation() + "\"");
257        }
258        printer.println(" />");
259    }
260 
261    public void visitEnter(final AuthorList authorList) {
262        printer.println("<AUTHORS>");
263        printer.pushLevel();
264    }
265 
266    public void visitLeave(final AuthorList authorList) {
267        printer.popLevel();
268        printer.println("</AUTHORS>");
269    }
270 
271    public void visitEnter(final Author author) {
272        printer.print("<AUTHOR");
273        if (author.getEmail() != null) {
274            printer.print(" email=\"" + StringUtility.escapeXml(author.getEmail()) + "\"");
275        }
276        printer.println(">");
277        printer.pushLevel();
278        if (author.getName() != null) {
279            printer.println("<NAME>");
280        }
281        printer.pushLevel();
282    }
283 
284    public void visitLeave(final Author author) {
285        printer.popLevel();
286        if (author.getName() != null) {
287            printer.println("</NAME>");
288        }
289        printer.popLevel();
290        printer.println("</AUTHOR>");
291    }
292 
293    public void visitEnter(final ImportList importList) {
294        printer.println("<IMPORTS>");
295        printer.pushLevel();
296    }
297 
298    public void visitLeave(final ImportList importList) {
299        printer.popLevel();
300        printer.println("</IMPORTS>");
301    }
302 
303    public void visitEnter(final Import imp) {
304        printer.print("<IMPORT");
305        if (imp.getLabel() != null) {
306            printer.print(" label=\"" + StringUtility.escapeXml(imp.getLabel()) + "\"");
307        }
308        printer.println(">");
309        printer.pushLevel();
310    }
311 
312    public void visitLeave(final Import imp) {
313        printer.popLevel();
314        printer.println("</IMPORT>");
315    }
316 
317    public void visitEnter(final UsedByList usedByList) {
318        printer.println("<USEDBY>");
319        printer.pushLevel();
320    }
321 
322    public void visitLeave(final UsedByList usedByList) {
323        printer.popLevel();
324        printer.println("</USEDBY>");
325    }
326 
327    public void visitEnter(final Chapter chapter) {
328        printer.print("<CHAPTER");
329        if (chapter.getNoNumber() != null) {
330            printer.print(" noNumber=\"" + chapter.getNoNumber().booleanValue() + "\"");
331        }
332        printer.println(">");
333        printer.pushLevel();
334    }
335 
336    public void visitLeave(final Chapter chapter) {
337        printer.popLevel();
338        printer.println("</CHAPTER>");
339    }
340 
341    public void visitEnter(final Section section) {
342        printer.print("<SECTION");
343        if (section.getNoNumber() != null) {
344            printer.print(" noNumber=\"" + section.getNoNumber().booleanValue() + "\"");
345        }
346        printer.println(">");
347        printer.pushLevel();
348    }
349 
350    public void visitLeave(final Section section) {
351        printer.popLevel();
352        printer.println("</SECTION>");
353    }
354 
355    public void visitEnter(final SubsectionList subsectionList) {
356        printer.println("<SUBSECTIONS>");
357        printer.pushLevel();
358    }
359 
360    public void visitLeave(final SubsectionList subsectionList) {
361        printer.popLevel();
362        printer.println("</SUBSECTIONS>");
363    }
364 
365    public void visitEnter(final Subsection subsection) {
366        printer.print("<SUBSECTION");
367        if (subsection.getId() != null) {
368            printer.print(" id=\"" + StringUtility.escapeXml(subsection.getId()) + "\"");
369        }
370        if (subsection.getLevel() != null) {
371            printer.print(" level=\"" + StringUtility.escapeXml(subsection.getLevel()) + "\"");
372        }
373        printer.println(">");
374        printer.pushLevel();
375    }
376 
377    public void visitLeave(final Subsection subsection) {
378        printer.popLevel();
379        printer.println("</SUBSECTION>");
380    }
381 
382    public void visitEnter(final Node node) {
383        printer.print("<NODE");
384        if (node.getId() != null) {
385            printer.print(" id=\"" + StringUtility.escapeXml(node.getId()) + "\"");
386        }
387        if (node.getLevel() != null) {
388            printer.print(" level=\"" + StringUtility.escapeXml(node.getLevel()) + "\"");
389        }
390        printer.println(">");
391        printer.pushLevel();
392    }
393 
394    public void visitLeave(final Node node) {
395        printer.popLevel();
396        printer.println("</NODE>");
397    }
398 
399    public void visitEnter(final Axiom axiom) {
400        printer.print("<AXIOM");
401        if (axiom.getDefinedOperator() != null) {
402            printer.print(" definedOperator=\"" + StringUtility.escapeXml(axiom.getDefinedOperator()) + "\"");
403        }
404        printer.println(">");
405        printer.pushLevel();
406    }
407 
408    public void visitLeave(final Axiom axiom) {
409        printer.popLevel();
410        printer.println("</AXIOM>");
411    }
412 
413    public void visitEnter(final Proposition proposition) {
414        printer.println("<THEOREM>");
415        printer.pushLevel();
416    }
417 
418    public void visitLeave(final Proposition proposition) {
419        printer.popLevel();
420        printer.println("</THEOREM>");
421    }
422 
423    public void visitEnter(final Proof proof) {
424        printer.print("<PROOF");
425        if (proof.getKind() != null) {
426            printer.print(" kind=\"" + StringUtility.escapeXml(proof.getKind()) + "\"");
427        }
428        if (proof.getLevel() != null) {
429            printer.print(" level=\"" + StringUtility.escapeXml(proof.getLevel()) + "\"");
430        }
431        printer.println(">");
432    }
433 
434    public void visitLeave(final Proof proof) {
435        printer.println("</PROOF>");
436    }
437 
438    public void visitEnter(final FormalProof proof) {
439        printer.println("<FORMAL_PROOF>");
440        printer.pushLevel();
441    }
442 
443    public void visitLeave(final FormalProof proof) {
444        printer.popLevel();
445        printer.println("</FORMAL_PROOF>");
446    }
447 
448    public void visitEnter(final FormalProofLineList proof) {
449        printer.println("<LINES>");
450        printer.pushLevel();
451    }
452 
453    public void visitLeave(final FormalProofLineList proof) {
454        printer.popLevel();
455        printer.println("</LINES>");
456    }
457 
458    public void visitEnter(final FormalProofLine line) {
459        printer.print("<L");
460        if (line.getLabel() != null) {
461            printer.print(" label=\"" + StringUtility.escapeXml(line.getLabel()) + "\"");
462        }
463        printer.println(">");
464        printer.pushLevel();
465    }
466 
467    public void visitLeave(final FormalProofLine line) {
468        printer.popLevel();
469        printer.println("</L>");
470    }
471 
472    public void visitEnter(final ModusPonens reason) {
473        printer.print("<MP");
474        if (reason.getReference1() != null) {
475            printer.print(" ref1=\"" + StringUtility.escapeXml(reason.getReference1()) + "\"");
476        }
477        if (reason.getReference2() != null) {
478            printer.print(" ref2=\"" + StringUtility.escapeXml(reason.getReference2()) + "\"");
479        }
480    }
481 
482    public void visitLeave(final ModusPonens reason) {
483        printer.println("/>");
484    }
485 
486    public void visitEnter(final Add reason) {
487        printer.print("<ADD");
488        if (reason.getReference() != null) {
489            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
490        }
491    }
492 
493    public void visitLeave(final Add reason) {
494        printer.println("/>");
495    }
496 
497    public void visitEnter(final Rename reason) {
498        printer.print("<RENAME");
499        if (reason.getReference() != null) {
500            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
501        }
502        if (reason.getOccurrence() != 0) {
503            printer.print(" occurrence=\"" + StringUtility.escapeXml("" + reason.getOccurrence()) + "\"");
504        }
505        printer.println(">");
506        printer.pushLevel();
507    }
508 
509    public void visitLeave(final Rename reason) {
510        printer.popLevel();
511        printer.println("</RENAME>");
512    }
513 
514    public void visitEnter(final SubstFree reason) {
515        printer.print("<SUBST_FREE");
516        if (reason.getReference() != null) {
517            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
518        }
519        printer.println(">");
520        printer.pushLevel();
521    }
522 
523    public void visitLeave(final SubstFree reason) {
524        printer.popLevel();
525        printer.println("</SUBST_FREE>");
526    }
527 
528    public void visitEnter(final SubstFunc reason) {
529        printer.print("<SUBST_FUNVAR");
530        if (reason.getReference() != null) {
531            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
532        }
533        printer.println(">");
534        printer.pushLevel();
535    }
536 
537    public void visitLeave(final SubstFunc reason) {
538        printer.popLevel();
539        printer.println("</SUBST_FUNVAR>");
540    }
541 
542    public void visitEnter(final SubstPred reason) {
543        printer.print("<SUBST_PREDVAR");
544        if (reason.getReference() != null) {
545            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
546        }
547        printer.println(">");
548        printer.pushLevel();
549    }
550 
551    public void visitLeave(final SubstPred reason) {
552        printer.popLevel();
553        printer.println("</SUBST_PREDVAR>");
554    }
555 
556    public void visitEnter(final Existential reason) {
557        printer.print("<EXISTENTIAL");
558        if (reason.getReference() != null) {
559            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
560        }
561        printer.println(">");
562        printer.pushLevel();
563    }
564 
565    public void visitLeave(final Existential reason) {
566        printer.popLevel();
567        printer.println("</EXISTENTIAL>");
568    }
569 
570    public void visitEnter(final Universal reason) {
571        printer.print("<UNIVERSAL");
572        if (reason.getReference() != null) {
573            printer.print(" ref=\"" + StringUtility.escapeXml(reason.getReference()) + "\"");
574        }
575        printer.println(">");
576        printer.pushLevel();
577    }
578 
579    public void visitLeave(final Universal reason) {
580        printer.popLevel();
581        printer.println("</UNIVERSAL>");
582    }
583 
584    public void visitEnter(final ConditionalProof reason) {
585        printer.println("<CP>");
586        printer.pushLevel();
587    }
588 
589    public void visitLeave(final ConditionalProof reason) {
590        printer.popLevel();
591        printer.println("</CP>");
592    }
593 
594    public void visitEnter(final Hypothesis hypothesis) {
595        printer.print("<HYPOTHESIS");
596        if (hypothesis.getLabel() != null) {
597            printer.print(" label=\"" + StringUtility.escapeXml(hypothesis.getLabel()) + "\"");
598        }
599        printer.println(">");
600        printer.pushLevel();
601    }
602 
603    public void visitLeave(final Hypothesis hypothesis) {
604        printer.popLevel();
605        printer.println("</HYPOTHESIS>");
606    }
607 
608    public void visitEnter(final Conclusion conclusion) {
609        printer.print("<CONCLUSION");
610        if (conclusion.getLabel() != null) {
611            printer.print(" label=\"" + StringUtility.escapeXml(conclusion.getLabel()) + "\"");
612        }
613        printer.println(">");
614        printer.pushLevel();
615    }
616 
617    public void visitLeave(final Conclusion conclusion) {
618        printer.popLevel();
619        printer.println("</CONCLUSION>");
620    }
621 
622    public void visitEnter(final InitialPredicateDefinition definition) {
623        printer.print("<DEFINITION_PREDICATE_INITIAL");
624        if (definition.getArgumentNumber() != null) {
625            printer.print(" arguments=\"" + StringUtility.escapeXml(definition.getArgumentNumber()) + "\"");
626        }
627        if (definition.getName() != null) {
628            printer.print(" name=\"" + StringUtility.escapeXml(definition.getName()) + "\"");
629        }
630        printer.println(">");
631        printer.pushLevel();
632        if (definition.getLatexPattern() != null) {
633            printer.println("<LATEXPATTERN>" + StringUtility.escapeXml(definition.getLatexPattern())
634                + "</LATEXPATTERN>");
635        }
636    }
637 
638    public void visitLeave(final InitialPredicateDefinition definition) {
639        printer.popLevel();
640        printer.println("</DEFINITION_PREDICATE_INITIAL>");
641    }
642 
643    public void visitEnter(final PredicateDefinition definition) {
644        printer.print("<DEFINITION_PREDICATE");
645        if (definition.getArgumentNumber() != null) {
646            printer.print(" arguments=\"" + StringUtility.escapeXml(definition.getArgumentNumber()) + "\"");
647        }
648        if (definition.getName() != null) {
649            printer.print(" name=\"" + StringUtility.escapeXml(definition.getName()) + "\"");
650        }
651        printer.println(">");
652        printer.pushLevel();
653        if (definition.getLatexPattern() != null) {
654            printer.println("<LATEXPATTERN>" + StringUtility.escapeXml(definition.getLatexPattern())
655                + "</LATEXPATTERN>");
656        }
657    }
658 
659    public void visitLeave(final PredicateDefinition definition) {
660        printer.popLevel();
661        printer.println("</DEFINITION_PREDICATE>");
662    }
663 
664    public void visitEnter(final InitialFunctionDefinition definition) {
665        printer.print("<DEFINITION_FUNCTION_INITIAL");
666        if (definition.getArgumentNumber() != null) {
667            printer.print(" arguments=\"" + StringUtility.escapeXml(definition.getArgumentNumber()) + "\"");
668        }
669        if (definition.getName() != null) {
670            printer.print(" name=\"" + StringUtility.escapeXml(definition.getName()) + "\"");
671        }
672        printer.println(">");
673        printer.pushLevel();
674        if (definition.getLatexPattern() != null) {
675            printer.println("<LATEXPATTERN>" + definition.getLatexPattern()
676                + "</LATEXPATTERN>");
677        }
678    }
679 
680    public void visitLeave(final InitialFunctionDefinition definition) {
681        printer.popLevel();
682        printer.println("</DEFINITION_FUNCTION_INITIAL>");
683    }
684 
685    public void visitEnter(final FunctionDefinition definition) {
686        printer.print("<DEFINITION_FUNCTION");
687        if (definition.getArgumentNumber() != null) {
688            printer.print(" arguments=\"" + StringUtility.escapeXml(definition.getArgumentNumber()) + "\"");
689        }
690        if (definition.getName() != null) {
691            printer.print(" name=\"" + StringUtility.escapeXml(definition.getName()) + "\"");
692        }
693        printer.println(">");
694        printer.pushLevel();
695        if (definition.getLatexPattern() != null) {
696            printer.println("<LATEXPATTERN>" + definition.getLatexPattern()
697                + "</LATEXPATTERN>");
698        }
699    }
700 
701    public void visitLeave(final FunctionDefinition definition) {
702        printer.popLevel();
703        printer.println("</DEFINITION_FUNCTION>");
704    }
705 
706    public void visitEnter(final Rule rule) {
707        printer.print("<RULE");
708        if (rule.getName() != null) {
709            printer.print(" name=\"" + StringUtility.escapeXml(rule.getName()) + "\"");
710        }
711        if (rule.getVersion() != null) {
712            printer.print(" version=\"" + StringUtility.escapeXml(rule.getVersion()) + "\"");
713        }
714        printer.println(">");
715        printer.pushLevel();
716    }
717 
718    public void visitLeave(final Rule rule) {
719        printer.popLevel();
720        printer.println("</RULE>");
721    }
722 
723    public void visitEnter(final LinkList linkList) {
724        for (int i = 0; i < linkList.size(); i++) {
725            printer.print("<LINK");
726            if (linkList.get(i) != null) {
727                printer.print(" id=\"" + StringUtility.escapeXml(linkList.get(i)) + "\"");
728            }
729            printer.println("/>");
730        };
731    }
732 
733    public void visitEnter(final ChangedRule rule) {
734        printer.print("<CHANGED_RULE");
735        if (rule.getName() != null) {
736            printer.print(" name=\"" + StringUtility.escapeXml(rule.getName()) + "\"");
737        }
738        if (rule.getVersion() != null) {
739            printer.print(" version=\"" + StringUtility.escapeXml(rule.getVersion()) + "\"");
740        }
741        printer.println(">");
742    }
743 
744    public void visitLeave(final ChangedRule rule) {
745        printer.println("</CHANGED_RULE>");
746    }
747 
748    public void visitEnter(final Formula formula) {
749        printer.println("<FORMULA>");
750        printer.pushLevel();
751    }
752 
753    public void visitLeave(final Formula formula) {
754        printer.popLevel();
755        printer.println("</FORMULA>");
756    }
757 
758    public void visitEnter(final Term term) {
759        printer.println("<TERM>");
760        printer.pushLevel();
761    }
762 
763    public void visitLeave(final Term term) {
764        printer.popLevel();
765        printer.println("</TERM>");
766    }
767 
768    // TODO mime 20070217: what do we do if an atom is not first element of a list?
769    // we wouldn't get it here!!! But can we think of an output syntax anyway????
770    public void visitEnter(final ElementList list) {
771        final String operator = list.getOperator();
772        printer.print("<" + operator);
773        final boolean firstIsAtom = list.size() > 0 && list.getElement(0).isAtom();
774        if (firstIsAtom) {
775            final String atom = list.getElement(0).getAtom().getString();
776            if (atom != null) {
777                if ("VAR".equals(operator) || "PREDVAR".equals(operator)
778                        || "FUNVAR".equals(operator)) {
779                    printer.print(" id=\"" + StringUtility.escapeXml(atom) + "\"");
780                } else if ("PREDCON".equals(operator) || "FUNCON".equals(operator)) {
781                    printer.print(" ref=\"" + StringUtility.escapeXml(atom) + "\"");
782                } else {
783                    printer.print(" unknown=\"" + StringUtility.escapeXml(atom) + "\"");
784                }
785            }
786        }
787        if (list.size() == 0 || list.size() == 1 && list.getElement(0).isAtom()) {
788            printer.print("/");
789        }
790        printer.println(">");
791        printer.pushLevel();
792    }
793 
794    public void visitLeave(final ElementList list) {
795        printer.popLevel();
796        if (list.size() == 0 || list.size() == 1 && list.getElement(0).isAtom()) {
797            return;
798        }
799        printer.println("</" + list.getOperator() + ">");
800    }
801 
802    public void visitEnter(final LiteratureItemList list) {
803        printer.println("<BIBLIOGRAPHY>");
804        printer.pushLevel();
805    }
806 
807    public void visitLeave(final LiteratureItemList list) {
808        printer.popLevel();
809        printer.println("</BIBLIOGRAPHY>");
810    }
811 
812    public void visitEnter(final LiteratureItem item) {
813        printer.print("<ITEM");
814        if (item.getLabel() != null) {
815            printer.print(" label=\"" + StringUtility.escapeXml(item.getLabel()) + "\"");
816        }
817        printer.println(">");
818        printer.pushLevel();
819    }
820 
821    public void visitLeave(final LiteratureItem item) {
822        printer.popLevel();
823        printer.println("</ITEM>");
824    }
825 
826    public String getServiceId() {
827        return this.getClass().getName();
828    }
829 
830    public String getServiceAction() {
831        return "generate XML";
832    }
833 
834    public String getServiceDescription() {
835        return "Transformes QEDEQ module into XML data";
836    }
837 
838}

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