Clover coverage report - QedeqKernelSe Coverage Report
Coverage timestamp: So Feb 25 2007 22:22:30 CET
file stats: LOC: 583   Methods: 61
NCLOC: 460   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Qedeq2Xml.java 0% 0% 0% 0%
coverage
 1    /* $Id: Qedeq2Xml.java,v 1.2 2007/02/25 20:05:37 m31 Exp $
 2    *
 3    * This file is part of the project "Hilbert II" - http://www.qedeq.org
 4    *
 5    * Copyright 2000-2007, Michael Meyling <mime@qedeq.org>.
 6    *
 7    * "Hilbert II" is free software; you can redistribute
 8    * it and/or modify it under the terms of the GNU General Public
 9    * License as published by the Free Software Foundation; either
 10    * version 2 of the License, or (at your option) any later version.
 11    *
 12    * This program is distributed in the hope that it will be useful,
 13    * but WITHOUT ANY WARRANTY; without even the implied warranty of
 14    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 15    * GNU General Public License for more details.
 16    */
 17   
 18    package org.qedeq.kernel.latex;
 19   
 20    import java.io.IOException;
 21   
 22    import org.qedeq.kernel.base.list.ElementList;
 23    import org.qedeq.kernel.base.module.Author;
 24    import org.qedeq.kernel.base.module.AuthorList;
 25    import org.qedeq.kernel.base.module.Axiom;
 26    import org.qedeq.kernel.base.module.Chapter;
 27    import org.qedeq.kernel.base.module.Formula;
 28    import org.qedeq.kernel.base.module.FunctionDefinition;
 29    import org.qedeq.kernel.base.module.Header;
 30    import org.qedeq.kernel.base.module.Import;
 31    import org.qedeq.kernel.base.module.ImportList;
 32    import org.qedeq.kernel.base.module.Latex;
 33    import org.qedeq.kernel.base.module.LatexList;
 34    import org.qedeq.kernel.base.module.LinkList;
 35    import org.qedeq.kernel.base.module.LiteratureItem;
 36    import org.qedeq.kernel.base.module.LiteratureItemList;
 37    import org.qedeq.kernel.base.module.Location;
 38    import org.qedeq.kernel.base.module.LocationList;
 39    import org.qedeq.kernel.base.module.Node;
 40    import org.qedeq.kernel.base.module.PredicateDefinition;
 41    import org.qedeq.kernel.base.module.Proof;
 42    import org.qedeq.kernel.base.module.Proposition;
 43    import org.qedeq.kernel.base.module.Qedeq;
 44    import org.qedeq.kernel.base.module.Rule;
 45    import org.qedeq.kernel.base.module.Section;
 46    import org.qedeq.kernel.base.module.Specification;
 47    import org.qedeq.kernel.base.module.Subsection;
 48    import org.qedeq.kernel.base.module.SubsectionList;
 49    import org.qedeq.kernel.base.module.Term;
 50    import org.qedeq.kernel.base.module.UsedByList;
 51    import org.qedeq.kernel.base.module.VariableList;
 52    import org.qedeq.kernel.bo.control.QedeqBoFactory;
 53    import org.qedeq.kernel.bo.module.ModuleDataException;
 54    import org.qedeq.kernel.bo.module.QedeqBo;
 55    import org.qedeq.kernel.bo.visitor.AbstractModuleVisitor;
 56    import org.qedeq.kernel.bo.visitor.QedeqNotNullTransverser;
 57    import org.qedeq.kernel.context.KernelContext;
 58    import org.qedeq.kernel.utility.TextOutput;
 59   
 60   
 61    /**
 62    * This class prints a QEDEQ module in XML format in an output stream.
 63    *
 64    * @version $Revision: 1.2 $
 65    * @author Michael Meyling
 66    */
 67    public final class Qedeq2Xml extends AbstractModuleVisitor {
 68   
 69    /** Transverse QEDEQ module with this transverser. */
 70    private QedeqNotNullTransverser transverser;
 71   
 72    /** Output goes here. */
 73    private TextOutput printer;
 74   
 75    /** QEDEQ BO object to work on. */
 76    private QedeqBo qedeq;
 77   
 78    /**
 79    * Constructor.
 80    *
 81    * @param qedeq QEDEQ BO object.
 82    * @param globalContext Module location information.
 83    * @param printer Print herein.
 84    */
 85  0 private Qedeq2Xml(final QedeqBo qedeq, final String globalContext,
 86    final TextOutput printer) {
 87  0 this.qedeq = qedeq;
 88  0 transverser = new QedeqNotNullTransverser(globalContext, this);
 89  0 this.printer = printer;
 90    }
 91   
 92    /**
 93    * Prints a XML representation of given QEDEQ module into a given output stream.
 94    * Constructs a {@link org.qedeq.kernel.bo.module.QedeqBo} first.
 95    *
 96    * TODO mime 20070109: don't construct BO here
 97    *
 98    * @param globalContext Module location information.
 99    * @param qedeq Basic QEDEQ module object.
 100    * @param printer Print herein.
 101    * @throws ModuleDataException Major problem occurred.
 102    * @throws IOException
 103    */
 104  0 public static void print(final String globalContext, final Qedeq qedeq,
 105    final TextOutput printer) throws ModuleDataException, IOException {
 106  0 final Qedeq2Xml converter = new Qedeq2Xml(QedeqBoFactory.createQedeq(globalContext, qedeq),
 107    globalContext, printer);
 108  0 converter.printXml();
 109    }
 110   
 111    /**
 112    * Prints a XML file into a given output stream.
 113    * Constructs a {@link org.qedeq.kernel.bo.module.QedeqBo} first.
 114    *
 115    * @throws IOException Writing failed.
 116    * @throws ModuleDataException Exception during transversion.
 117    */
 118  0 private final void printXml() throws IOException, ModuleDataException {
 119  0 transverser.accept(qedeq);
 120  0 printer.flush();
 121  0 if (printer.checkError()) {
 122  0 throw printer.getError();
 123    }
 124    }
 125   
 126  0 public final void visitEnter(final Qedeq qedeq) {
 127  0 printer.levelPrintln("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
 128  0 printer.levelPrintln("<QEDEQ");
 129  0 printer.levelPrintln(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
 130  0 printer.levelPrintln(" xsi:noNamespaceSchemaLocation=\"http://www.qedeq.org/"
 131    + KernelContext.getKernelVersionDirectory() + "/xml/qedeq.xsd\">");
 132  0 printer.pushLevel();
 133    }
 134   
 135  0 public final void visitLeave(final Qedeq qedeq) {
 136  0 printer.popLevel();
 137  0 printer.levelPrintln("</QEDEQ>");
 138    }
 139   
 140  0 public void visitEnter(final Header header) {
 141  0 printer.levelPrint("<HEADER");
 142  0 if (header.getEmail() != null) {
 143  0 printer.print(" email=\"" + header.getEmail() + "\"");
 144    }
 145  0 printer.println(">");
 146  0 printer.pushLevel();
 147    }
 148   
 149  0 public void visitLeave(final Header header) {
 150  0 printer.popLevel();
 151  0 printer.levelPrintln("</HEADER>");
 152    }
 153   
 154  0 public void visitEnter(final Specification specification) {
 155  0 printer.levelPrint("<SPECIFICATION");
 156  0 if (specification.getName() != null) {
 157  0 printer.print(" name=\"" + specification.getName() + "\"");
 158    }
 159  0 if (specification.getName() != null) {
 160  0 printer.print(" ruleVersion=\"" + specification.getRuleVersion() + "\"");
 161    }
 162  0 printer.println(">");
 163  0 printer.pushLevel();
 164    }
 165   
 166  0 public void visitLeave(final Specification specification) {
 167  0 printer.popLevel();
 168  0 printer.levelPrintln("</SPECIFICATION>");
 169    }
 170   
 171  0 public void visitEnter(final LatexList latexList) {
 172  0 final String last = transverser.getCurrentContext().getLocationWithinModule();
 173  0 if (last.endsWith(".getTitle()")) {
 174  0 printer.levelPrintln("<TITLE>");
 175  0 } else if (last.endsWith(".getSummary()")) {
 176  0 printer.levelPrintln("<ABSTRACT>");
 177  0 } else if (last.endsWith(".getIntroduction()")) {
 178  0 printer.levelPrintln("<INTRODUCTION>");
 179  0 } else if (last.endsWith(".getName()")) {
 180  0 printer.levelPrintln("<NAME>");
 181  0 } else if (last.endsWith(".getPrecedingText()")) {
 182  0 printer.levelPrintln("<PRECEDING>");
 183  0 } else if (last.endsWith(".getSucceedingText()")) {
 184  0 printer.levelPrintln("<SUCCEEDING>");
 185  0 } else if (last.endsWith(".getLatex()")) {
 186  0 printer.levelPrintln("<TEXT>");
 187  0 } else if (last.endsWith(".getDescription()")) {
 188  0 printer.levelPrintln("<DESCRIPTION>");
 189    }
 190  0 printer.pushLevel();
 191    }
 192   
 193  0 public void visitLeave(final LatexList latexList) {
 194  0 printer.popLevel();
 195  0 final String last = transverser.getCurrentContext().getLocationWithinModule();
 196  0 if (last.endsWith(".getTitle()")) {
 197  0 printer.levelPrintln("</TITLE>");
 198  0 } else if (last.endsWith(".getSummary()")) {
 199  0 printer.levelPrintln("</ABSTRACT>");
 200  0 } else if (last.endsWith(".getIntroduction()")) {
 201  0 printer.levelPrintln("</INTRODUCTION>");
 202  0 } else if (last.endsWith(".getName()")) {
 203  0 printer.levelPrintln("</NAME>");
 204  0 } else if (last.endsWith(".getPrecedingText()")) {
 205  0 printer.levelPrintln("</PRECEDING>");
 206  0 } else if (last.endsWith(".getSucceedingText()")) {
 207  0 printer.levelPrintln("</SUCCEEDING>");
 208  0 } else if (last.endsWith(".getLatex()")) {
 209  0 printer.levelPrintln("</TEXT>");
 210  0 } else if (last.endsWith(".getDescription()")) {
 211  0 printer.levelPrintln("</DESCRIPTION>");
 212    }
 213    }
 214   
 215  0 public void visitEnter(final Latex latex) {
 216  0 printer.levelPrint("<LATEX");
 217  0 if (latex.getLanguage() != null) {
 218  0 printer.print(" language=\"" + latex.getLanguage() + "\"");
 219    }
 220  0 printer.println(">");
 221  0 if (latex.getLatex() != null) {
 222  0 printer.pushLevel();
 223  0 printer.levelPrintln("<![CDATA[");
 224  0 printer.pushLevel();
 225  0 printer.levelPrintln(latex.getLatex());
 226    }
 227    }
 228   
 229  0 public void visitLeave(final Latex latex) {
 230  0 if (latex.getLatex() != null) {
 231  0 printer.popLevel();
 232  0 printer.levelPrintln("]]>");
 233  0 printer.popLevel();
 234    }
 235  0 printer.levelPrintln("</LATEX>");
 236    }
 237   
 238  0 public void visitEnter(final LocationList locationList) {
 239  0 printer.levelPrintln("<LOCATIONS>");
 240  0 printer.pushLevel();
 241    }
 242   
 243  0 public void visitLeave(final LocationList locationList) {
 244  0 printer.popLevel();
 245  0 printer.levelPrintln("</LOCATIONS>");
 246    }
 247   
 248  0 public void visitEnter(final Location location) {
 249  0 printer.levelPrint("<LOCATION");
 250  0 if (location.getLocation() != null) {
 251  0 printer.print(" value=\"" + location.getLocation() + "\"");
 252    }
 253  0 printer.println(" />");
 254    }
 255   
 256  0 public void visitEnter(final AuthorList authorList) {
 257  0 printer.levelPrintln("<AUTHORS>");
 258  0 printer.pushLevel();
 259    }
 260   
 261  0 public void visitLeave(final AuthorList authorList) {
 262  0 printer.popLevel();
 263  0 printer.levelPrintln("</AUTHORS>");
 264    }
 265   
 266  0 public void visitEnter(final Author author) {
 267  0 printer.levelPrint("<AUTHOR");
 268  0 if (author.getEmail() != null) {
 269  0 printer.print(" email=\"" + author.getEmail() + "\"");
 270    }
 271  0 printer.println(">");
 272  0 printer.pushLevel();
 273  0 if (author.getName() != null) {
 274  0 printer.levelPrintln("<NAME>");
 275    }
 276  0 printer.pushLevel();
 277    }
 278   
 279  0 public void visitLeave(final Author author) {
 280  0 printer.popLevel();
 281  0 if (author.getName() != null) {
 282  0 printer.levelPrintln("</NAME>");
 283    }
 284  0 printer.popLevel();
 285  0 printer.levelPrintln("</AUTHOR>");
 286    }
 287   
 288  0 public void visitEnter(final ImportList importList) {
 289  0 printer.levelPrintln("<IMPORTS>");
 290  0 printer.pushLevel();
 291    }
 292   
 293  0 public void visitLeave(final ImportList importList) {
 294  0 printer.popLevel();
 295  0 printer.levelPrintln("</IMPORTS>");
 296    }
 297   
 298  0 public void visitEnter(final Import imp) {
 299  0 printer.levelPrint("<IMPORT");
 300  0 if (imp.getLabel() != null) {
 301  0 printer.print(" label=\"" + imp.getLabel() + "\"");
 302    }
 303  0 printer.println(">");
 304  0 printer.pushLevel();
 305    }
 306   
 307  0 public void visitLeave(final Import imp) {
 308  0 printer.popLevel();
 309  0 printer.levelPrintln("</IMPORT>");
 310    }
 311   
 312  0 public void visitEnter(final UsedByList usedByList) {
 313  0 printer.levelPrintln("<USEDBY>");
 314  0 printer.pushLevel();
 315    }
 316   
 317  0 public void visitLeave(final UsedByList usedByList) {
 318  0 printer.popLevel();
 319  0 printer.levelPrintln("</USEDBY>");
 320    }
 321   
 322  0 public void visitEnter(final Chapter chapter) {
 323  0 printer.levelPrint("<CHAPTER");
 324  0 if (chapter.getNoNumber() != null) {
 325  0 printer.print(" noNumber=\"" + chapter.getNoNumber().booleanValue() + "\"");
 326    }
 327  0 printer.println(">");
 328  0 printer.pushLevel();
 329    }
 330   
 331  0 public void visitLeave(final Chapter chapter) {
 332  0 printer.popLevel();
 333  0 printer.levelPrintln("</CHAPTER>");
 334    }
 335   
 336  0 public void visitEnter(final Section section) {
 337  0 printer.levelPrint("<SECTION");
 338  0 if (section.getNoNumber() != null) {
 339  0 printer.print(" noNumber=\"" + section.getNoNumber().booleanValue() + "\"");
 340    }
 341  0 printer.println(">");
 342  0 printer.pushLevel();
 343    }
 344   
 345  0 public void visitLeave(final Section section) {
 346  0 printer.popLevel();
 347  0 printer.levelPrintln("</SECTION>");
 348    }
 349   
 350  0 public void visitEnter(final SubsectionList subsectionList) {
 351  0 printer.levelPrintln("<SUBSECTIONS>");
 352  0 printer.pushLevel();
 353    }
 354   
 355  0 public void visitLeave(final SubsectionList subsectionList) {
 356  0 printer.popLevel();
 357  0 printer.levelPrintln("</SUBSECTIONS>");
 358    }
 359   
 360  0 public void visitEnter(final Subsection subsection) {
 361  0 printer.levelPrint("<SUBSECTION");
 362  0 if (subsection.getId() != null) {
 363  0 printer.print(" id=\"" + subsection.getId() + "\"");
 364    }
 365  0 if (subsection.getLevel() != null) {
 366  0 printer.print(" level=\"" + subsection.getLevel() + "\"");
 367    }
 368  0 printer.println(">");
 369  0 printer.pushLevel();
 370    }
 371   
 372  0 public void visitLeave(final Subsection subsection) {
 373  0 printer.popLevel();
 374  0 printer.levelPrintln("</SUBSECTION>");
 375    }
 376   
 377  0 public void visitEnter(final Node node) {
 378  0 printer.levelPrint("<NODE");
 379  0 if (node.getId() != null) {
 380  0 printer.print(" id=\"" + node.getId() + "\"");
 381    }
 382  0 if (node.getLevel() != null) {
 383  0 printer.print(" level=\"" + node.getLevel() + "\"");
 384    }
 385  0 printer.println(">");
 386  0 printer.pushLevel();
 387    }
 388   
 389  0 public void visitLeave(final Node node) {
 390  0 printer.popLevel();
 391  0 printer.levelPrintln("</NODE>");
 392    }
 393   
 394  0 public void visitEnter(final Axiom axiom) {
 395  0 printer.levelPrintln("<AXIOM>");
 396  0 printer.pushLevel();
 397    }
 398   
 399  0 public void visitLeave(final Axiom axiom) {
 400  0 printer.popLevel();
 401  0 printer.levelPrintln("</AXIOM>");
 402    }
 403   
 404  0 public void visitEnter(final Proposition proposition) {
 405  0 printer.levelPrintln("<THEOREM>");
 406  0 printer.pushLevel();
 407    }
 408   
 409  0 public void visitLeave(final Proposition proposition) {
 410  0 printer.popLevel();
 411  0 printer.levelPrintln("</THEOREM>");
 412    }
 413   
 414  0 public void visitEnter(final Proof proof) {
 415  0 printer.levelPrint("<PROOF");
 416  0 if (proof.getKind() != null) {
 417  0 printer.print(" kind=\"" + proof.getKind() + "\"");
 418    }
 419  0 if (proof.getLevel() != null) {
 420  0 printer.print(" level=\"" + proof.getLevel() + "\"");
 421    }
 422  0 printer.println(">");
 423    }
 424   
 425  0 public void visitLeave(final Proof proof) {
 426  0 printer.levelPrintln("</PROOF>");
 427    }
 428   
 429  0 public void visitEnter(final PredicateDefinition definition) {
 430  0 printer.levelPrint("<DEFINITION_PREDICATE");
 431  0 if (definition.getArgumentNumber() != null) {
 432  0 printer.print(" arguments=\"" + definition.getArgumentNumber() + "\"");
 433    }
 434  0 if (definition.getName() != null) {
 435  0 printer.print(" name=\"" + definition.getName() + "\"");
 436    }
 437  0 printer.println(">");
 438  0 printer.pushLevel();