Clover coverage report - QedeqKernelSe Coverage Report
Coverage timestamp: Do Jan 11 2007 09:03:50 CET
file stats: LOC: 577   Methods: 61
NCLOC: 458   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Qedeq2Xml.java 0% 0% 0% 0%
coverage
 1    /* $Id: QedeqBoFactory.java,v 1.25 2006/10/20 20:23:05 m31 Exp $
 2    *
 3    * This file is part of the project "Hilbert II" - http://www.qedeq.org
 4    *
 5    * Copyright 2000-2006, 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    import java.io.OutputStream;
 22    import java.io.PrintStream;
 23   
 24    import org.qedeq.kernel.base.list.ElementList;
 25    import org.qedeq.kernel.base.module.Author;
 26    import org.qedeq.kernel.base.module.AuthorList;
 27    import org.qedeq.kernel.base.module.Axiom;
 28    import org.qedeq.kernel.base.module.Chapter;
 29    import org.qedeq.kernel.base.module.Formula;
 30    import org.qedeq.kernel.base.module.FunctionDefinition;
 31    import org.qedeq.kernel.base.module.Header;
 32    import org.qedeq.kernel.base.module.Import;
 33    import org.qedeq.kernel.base.module.ImportList;
 34    import org.qedeq.kernel.base.module.Latex;
 35    import org.qedeq.kernel.base.module.LatexList;
 36    import org.qedeq.kernel.base.module.LinkList;
 37    import org.qedeq.kernel.base.module.LiteratureItem;
 38    import org.qedeq.kernel.base.module.LiteratureItemList;
 39    import org.qedeq.kernel.base.module.Location;
 40    import org.qedeq.kernel.base.module.LocationList;
 41    import org.qedeq.kernel.base.module.Node;
 42    import org.qedeq.kernel.base.module.PredicateDefinition;
 43    import org.qedeq.kernel.base.module.Proof;
 44    import org.qedeq.kernel.base.module.Proposition;
 45    import org.qedeq.kernel.base.module.Qedeq;
 46    import org.qedeq.kernel.base.module.Rule;
 47    import org.qedeq.kernel.base.module.Section;
 48    import org.qedeq.kernel.base.module.Specification;
 49    import org.qedeq.kernel.base.module.Subsection;
 50    import org.qedeq.kernel.base.module.SubsectionList;
 51    import org.qedeq.kernel.base.module.Term;
 52    import org.qedeq.kernel.base.module.UsedByList;
 53    import org.qedeq.kernel.base.module.VariableList;
 54    import org.qedeq.kernel.bo.control.QedeqBoFactory;
 55    import org.qedeq.kernel.bo.module.ModuleDataException;
 56    import org.qedeq.kernel.bo.visitor.AbstractModuleVisitor;
 57    import org.qedeq.kernel.bo.visitor.QedeqNotNullTransverser;
 58    import org.qedeq.kernel.context.KernelContext;
 59    import org.qedeq.kernel.utility.TextOutput;
 60   
 61   
 62    /**
 63    * FIXME mime 20061230: just a test class.
 64    *
 65    * @version $Revision: 1.25 $
 66    * @author Michael Meyling
 67    */
 68    public final class Qedeq2Xml extends AbstractModuleVisitor {
 69   
 70    /** Current context during creation. */
 71    private QedeqNotNullTransverser transverser;
 72   
 73    /** Output goes here. */
 74    private TextOutput printer;
 75   
 76    /**
 77    * Constructor.
 78    *
 79    * @param globalContext Module location information.
 80    */
 81  0 private Qedeq2Xml(final String globalContext) {
 82  0 transverser = new QedeqNotNullTransverser(globalContext, this);
 83    }
 84   
 85    /**
 86    * TODO.
 87    *
 88    * @param globalContext Module location information.
 89    * @param qedeq Basic qedeq module object.
 90    * @param outputStream Print herein.
 91    * @throws ModuleDataException Major problem occurred.
 92    * @throws IOException
 93    */
 94  0 public static void print(final String globalContext, final Qedeq qedeq,
 95    final OutputStream outputStream) throws ModuleDataException, IOException {
 96  0 final Qedeq2Xml printer = new Qedeq2Xml(globalContext);
 97  0 printer.printXml(globalContext, qedeq, outputStream);
 98    }
 99   
 100    /**
 101    * Prints a XML file into a given output stream.
 102    * Constructs a {@link org.qedeq.kernel.bo.module.QedeqBo} first.
 103    *
 104    * TODO mime 20070109: don't construct BO here
 105    *
 106    * @param globalContext Module location information.
 107    * @param qedeq Print this Module.
 108    * @param outputStream Write output herein.
 109    * @throws IOException
 110    * @throws ModuleDataException
 111    */
 112  0 public final synchronized void printXml(final String globalContext, final Qedeq qedeq,
 113    final OutputStream outputStream)
 114    throws IOException, ModuleDataException {
 115  0 this.printer = new TextOutput(new PrintStream(outputStream));
 116  0 transverser.accept(QedeqBoFactory.createQedeq(globalContext, qedeq));
 117  0 if (printer.checkError()) {
 118  0 throw new IOException("TODO mime: better use another OutputStream");
 119    }
 120    }
 121   
 122  0 public final void visitEnter(final Qedeq qedeq) {
 123  0 printer.levelPrintln("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
 124  0 printer.levelPrintln("<QEDEQ");
 125  0 printer.levelPrintln(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"");
 126  0 printer.levelPrintln(" xsi:noNamespaceSchemaLocation=\"http://www.qedeq.org/"
 127    + KernelContext.getKernelVersionDirectory() + "/xml/qedeq.xsd\">");
 128  0 printer.pushLevel();
 129    }
 130   
 131  0 public final void visitLeave(final Qedeq qedeq) {
 132  0 printer.popLevel();
 133  0 printer.levelPrintln("</QEDEQ>");
 134    }
 135   
 136  0 public void visitEnter(final Header header) {
 137  0 printer.levelPrint("<HEADER");
 138  0 if (header.getEmail() != null) {
 139  0 printer.print(" email=\"" + header.getEmail() + "\"");
 140    }
 141  0 printer.println(">");
 142  0 printer.pushLevel();
 143    }
 144   
 145  0 public void visitLeave(final Header header) {
 146  0 printer.popLevel();
 147  0 printer.levelPrintln("</HEADER>");
 148    }
 149   
 150  0 public void visitEnter(final Specification specification) {
 151  0 printer.levelPrint("<SPECIFICATION");
 152  0 if (specification.getName() != null) {
 153  0 printer.print(" name=\"" + specification.getName() + "\"");
 154    }
 155  0 if (specification.getName() != null) {
 156  0 printer.print(" ruleVersion=\"" + specification.getRuleVersion() + "\"");
 157    }
 158  0 printer.println(">");
 159  0 printer.pushLevel();
 160    }
 161   
 162  0 public void visitLeave(final Specification specification) {
 163  0 printer.popLevel();
 164  0 printer.levelPrintln("</SPECIFICATION>");
 165    }
 166   
 167  0 public void visitEnter(final LatexList latexList) {
 168  0 final String last = transverser.getCurrentContext().getLocationWithinModule();
 169  0 if (last.endsWith(".getTitle()")) {
 170  0 printer.levelPrintln("<TITLE>");
 171  0 } else if (last.endsWith(".getSummary()")) {
 172  0 printer.levelPrintln("<ABSTRACT>");
 173  0 } else if (last.endsWith(".getIntroduction()")) {
 174  0 printer.levelPrintln("<INTRODUCTION>");
 175  0 } else if (last.endsWith(".getName()")) {
 176  0 printer.levelPrintln("<NAME>");
 177  0 } else if (last.endsWith(".getPrecedingText()")) {
 178  0 printer.levelPrintln("<PRECEDING>");
 179  0 } else if (last.endsWith(".getSucceedingText()")) {
 180  0 printer.levelPrintln("<SUCCEEDING>");
 181  0 } else if (last.endsWith(".getLatex()")) {
 182  0 printer.levelPrintln("<TEXT>");
 183  0 } else if (last.endsWith(".getDescription()")) {
 184  0 printer.levelPrintln("<DESCRIPTION>");
 185    }
 186  0 printer.pushLevel();
 187    }
 188   
 189  0 public void visitLeave(final LatexList latexList) {
 190  0 printer.popLevel();
 191  0 final String last = transverser.getCurrentContext().getLocationWithinModule();
 192  0 if (last.endsWith(".getTitle()")) {
 193  0 printer.levelPrintln("</TITLE>");
 194  0 } else if (last.endsWith(".getSummary()")) {
 195  0 printer.levelPrintln("</ABSTRACT>");
 196  0 } else if (last.endsWith(".getIntroduction()")) {
 197  0 printer.levelPrintln("</INTRODUCTION>");
 198  0 } else if (last.endsWith(".getName()")) {
 199  0 printer.levelPrintln("</NAME>");
 200  0 } else if (last.endsWith(".getPrecedingText()")) {
 201  0 printer.levelPrintln("</PRECEDING>");
 202  0 } else if (last.endsWith(".getSucceedingText()")) {
 203  0 printer.levelPrintln("</SUCCEEDING>");
 204  0 } else if (last.endsWith(".getLatex()")) {
 205  0 printer.levelPrintln("</TEXT>");
 206  0 } else if (last.endsWith(".getDescription()")) {
 207  0 printer.levelPrintln("</DESCRIPTION>");
 208    }
 209    }
 210   
 211  0 public void visitEnter(final Latex latex) {
 212  0 printer.levelPrint("<LATEX");
 213  0 if (latex.getLanguage() != null) {
 214  0 printer.print(" language=\"" + latex.getLanguage() + "\"");
 215    }
 216  0 printer.println(">");
 217  0 if (latex.getLatex() != null) {
 218  0 printer.pushLevel();
 219  0 printer.levelPrintln("<![CDATA[");
 220  0 printer.pushLevel();
 221  0 printer.levelPrintln(latex.getLatex());
 222    }
 223    }
 224   
 225  0 public void visitLeave(final Latex latex) {
 226  0 if (latex.getLatex() != null) {
 227  0 printer.popLevel();
 228  0 printer.levelPrintln("]]>");
 229  0 printer.popLevel();
 230    }
 231  0 printer.levelPrintln("</LATEX>");
 232    }
 233   
 234  0 public void visitEnter(final LocationList locationList) {
 235  0 printer.levelPrintln("<LOCATIONS>");
 236  0 printer.pushLevel();
 237    }
 238   
 239  0 public void visitLeave(final LocationList locationList) {
 240  0 printer.popLevel();
 241  0 printer.levelPrintln("</LOCATIONS>");
 242    }
 243   
 244  0 public void visitEnter(final Location location) {
 245  0 printer.levelPrint("<LOCATION");
 246  0 if (location.getLocation() != null) {
 247  0 printer.print(" value=\"" + location.getLocation() + "\"");
 248    }
 249  0 printer.println(" />");
 250    }
 251   
 252  0 public void visitEnter(final AuthorList authorList) {
 253  0 printer.levelPrintln("<AUTHORS>");
 254  0 printer.pushLevel();
 255    }
 256   
 257  0 public void visitLeave(final AuthorList authorList) {
 258  0 printer.popLevel();
 259  0 printer.levelPrintln("</AUTHORS>");
 260    }
 261   
 262  0 public void visitEnter(final Author author) {
 263  0 printer.levelPrint("<AUTHOR");
 264  0 if (author.getEmail() != null) {
 265  0 printer.print(" email=\"" + author.getEmail() + "\"");
 266    }
 267  0 printer.println(">");
 268  0 printer.pushLevel();
 269  0 if (author.getName() != null) {
 270  0 printer.levelPrintln("<NAME>");
 271    }
 272  0 printer.pushLevel();
 273    }
 274   
 275  0 public void visitLeave(final Author author) {
 276  0 printer.popLevel();
 277  0 if (author.getName() != null) {
 278  0 printer.levelPrintln("</NAME>");
 279    }
 280  0 printer.popLevel();
 281  0 printer.levelPrintln("</AUTHOR>");
 282    }
 283   
 284  0 public void visitEnter(final ImportList importList) {
 285  0 printer.levelPrintln("<IMPORTS>");
 286  0 printer.pushLevel();
 287    }
 288   
 289  0 public void visitLeave(final ImportList importList) {
 290  0 printer.popLevel();
 291  0 printer.levelPrintln("</IMPORTS>");
 292    }
 293   
 294  0 public void visitEnter(final Import imp) {
 295  0 printer.levelPrint("<IMPORT");
 296  0 if (imp.getLabel() != null) {
 297  0 printer.print(" label=\"" + imp.getLabel() + "\"");
 298    }
 299  0 printer.println(">");
 300  0 printer.pushLevel();
 301    }
 302   
 303  0 public void visitLeave(final Import imp) {
 304  0 printer.popLevel();
 305  0 printer.levelPrintln("</IMPORT>");
 306    }
 307   
 308  0 public void visitEnter(final UsedByList usedByList) {
 309  0 printer.levelPrintln("<USEDBY>");
 310  0 printer.pushLevel();
 311    }
 312   
 313  0 public void visitLeave(final UsedByList usedByList) {
 314  0 printer.popLevel();
 315  0 printer.levelPrintln("</USEDBY>");
 316    }
 317   
 318  0 public void visitEnter(final Chapter chapter) {
 319  0 printer.levelPrint("<CHAPTER");
 320  0 if (chapter.getNoNumber() != null) {
 321  0 printer.print(" noNumber=\"" + chapter.getNoNumber().booleanValue() + "\"");
 322    }
 323  0 printer.println(">");
 324  0 printer.pushLevel();
 325    }
 326   
 327  0 public void visitLeave(final Chapter chapter) {
 328  0 printer.popLevel();
 329  0 printer.levelPrintln("</CHAPTER>");
 330    }
 331   
 332  0 public void visitEnter(final Section section) {
 333  0 printer.levelPrint("<SECTION");
 334  0 if (section.getNoNumber() != null) {
 335  0 printer.print(" noNumber=\"" + section.getNoNumber().booleanValue() + "\"");
 336    }
 337  0 printer.println(">");
 338  0 printer.pushLevel();
 339    }
 340   
 341  0 public void visitLeave(final Section section) {
 342  0 printer.popLevel();
 343  0 printer.levelPrintln("</SECTION>");
 344    }
 345   
 346  0 public void visitEnter(final SubsectionList subsectionList) {
 347  0 printer.levelPrintln("<SUBSECTIONS>");
 348  0 printer.pushLevel();
 349    }
 350   
 351  0 public void visitLeave(final SubsectionList subsectionList) {
 352  0 printer.popLevel();
 353  0 printer.levelPrintln("</SUBSECTIONS>");
 354    }
 355   
 356  0 public void visitEnter(final Subsection subsection) {
 357  0 printer.levelPrint("<SUBSECTION");
 358  0 if (subsection.getId() != null) {
 359  0 printer.print(" id=\"" + subsection.getId() + "\"");
 360    }
 361  0 if (subsection.getLevel() != null) {
 362  0 printer.print(" level=\"" + subsection.getLevel() + "\"");
 363    }
 364  0 printer.println(">");
 365  0 printer.pushLevel();
 366    }
 367   
 368  0 public void visitLeave(final Subsection subsection) {
 369  0 printer.popLevel();
 370  0 printer.levelPrintln("</SUBSECTION>");
 371    }
 372   
 373  0 public void visitEnter(final Node node) {
 374  0 printer.levelPrint("<NODE");
 375  0 if (node.getId() != null) {
 376  0 printer.print(" id=\"" + node.getId() + "\"");
 377    }
 378  0 if (node.getLevel() != null) {
 379  0 printer.print(" level=\"" + node.getLevel() + "\"");
 380    }
 381  0 printer.println(">");
 382  0 printer.pushLevel();
 383    }
 384   
 385  0 public void visitLeave(final Node node) {
 386  0 printer.popLevel();
 387  0 printer.levelPrintln("</NODE>");
 388    }
 389   
 390  0 public void visitEnter(final Axiom axiom) {
 391  0 printer.levelPrintln("<AXIOM>");
 392  0 printer.pushLevel();
 393    }
 394   
 395  0 public void visitLeave(final Axiom axiom) {
 396  0 printer.popLevel();
 397  0 printer.levelPrintln("</AXIOM>");
 398    }
 399   
 400  0 public void visitEnter(final Proposition proposition) {
 401  0 printer.levelPrintln("<THEOREM>");
 402  0 printer.pushLevel();
 403    }
 404   
 405  0 public void visitLeave(final Proposition proposition) {
 406  0 printer.popLevel();
 407  0 printer.levelPrintln("</THEOREM>");
 408    }
 409   
 410  0 public void visitEnter(final Proof proof) {
 411  0 printer.levelPrint("<PROOF");
 412  0 if (proof.getKind() != null) {
 413  0 printer.print(" kind=\"" + proof.getKind() + "\"");
 414    }
 415  0 if (proof.getLevel() != null) {
 416  0 printer.print(" level=\"" + proof.getLevel() + "\"");
 417    }
 418  0 printer.println(">");
 419    }
 420   
 421  0 public void visitLeave(final Proof proof) {
 422  0 printer.levelPrintln("</PROOF>");
 423    }
 424   
 425  0 public void visitEnter(final PredicateDefinition definition) {
 426  0 printer.levelPrint("<DEFINITION_PREDICATE");
 427  0 if (definition.getArgumentNumber() != null) {
 428  0 printer.print(" arguments=\"" + definition.getArgumentNumber() + "\"");
 429    }
 430  0 if (definition.getName() != null) {
 431  0 printer.print(" name=\"" + definition.getName() + "\"");
 432    }
 433  0 printer.println(">");
 434  0 printer.pushLevel();
 435  0 if (definition.getLatexPattern() != null) {
 436  0 printer.levelPrintln("<LATEXPATTERN>" + definition.getLatexPattern()
 437    + "</LATEXPATTERN>");
 438    }
 439    }
 440   
 441  0 public void visitLeave(final PredicateDefinition definition) {
 442  0 printer.popLevel();
 443  0 printer.levelPrintln("</DEFINITION_PREDICATE>");
 444    }
 445   
 446  0 public void visitEnter(final FunctionDefinition definition) {
 447  0 printer.levelPrint("<DEFINITION_FUNCTION");
 448  0 if (definition.getArgumentNumber() != null) {
 449  0 printer.print(" arguments=\"" + definition.getArgumentNumber() + "\"");
 450    }
 451  0 if (definition.getName() != null) {
 452  0 printer.print(" name=\"" + definition.getName() + "\"");
 453    }
 454  0 printer.println(">");
 455  0 printer.pushLevel();
 456  0 if (definition.getLatexPattern() != null) {
 457  0 printer.levelPrintln("<LATEXPATTERN>" + definition.getLatexPattern()
 458    + "</LATEXPATTERN>");
 459    }
 460    }
 461   
 462  0 public void visitLeave(final FunctionDefinition definition) {
 463  0 printer.popLevel();
 464  0 printer.levelPrintln("</DEFINITION_FUNCTION>");
 465    }
 466   
 467  0 public void visitEnter(final Rule rule) {
 468  0 printer.levelPrint("<RULE");
 469  0 if (rule.getName() != null) {
 470  0 printer.print(" name=\"" + rule.getName() + "\"");
 471    }
 472  0 printer.println(">");
 473  0 printer.pushLevel();
 474    }
 475   
 476  0 public void visitLeave(final Rule rule) {
 477  0 printer.popLevel();
 478  0 printer.levelPrintln("</RULE>");
 479    }
 480   
 481  0 public void visitEnter(final LinkList linkList) {
 482  0 for (int i = 0; i < linkList.size(); i++) {
 483  0 printer.levelPrint("<LINK");
 484  0 if (linkList.get(i) != null) {
 485  0 printer.print(" id=\"" + linkList.get(i) + "\"");
 486    }
 487  0 printer.println("/>");
 488    };
 489    }
 490   
 491  0 public void visitEnter(final Formula formula) {
 492  0 printer.levelPrintln("<FORMULA>");
 493  0 printer.pushLevel();
 494    }
 495   
 496  0 public void visitLeave(final Formula formula) {
 497  0 printer.popLevel();
 498  0 printer.levelPrintln("</FORMULA>");
 499    }
 500   
 501  0 public void visitEnter(final Term term) {
 502  0 printer.levelPrintln("<TERM>");
 503  0 printer.pushLevel();
 504    }
 505   
 506  0 public void visitLeave(final Term term) {
 507  0 printer.popLevel();
 508  0 printer.levelPrintln("</TERM>");
 509    }
 510   
 511  0 public void visitEnter(final VariableList variableList) {
 512  0 printer.levelPrintln("<VARLIST>");
 513  0 printer.pushLevel();
 514    }
 515   
 516  0 public void visitLeave(final VariableList variableList) {
 517  0 printer.popLevel();
 518  0 printer.levelPrintln("</VARLIST>");
 519    }
 520   
 521  0 public void visitEnter(final ElementList list) {
 522  0 final String operator = list.getOperator();
 523  0 printer.levelPrint("<" + operator);
 524  0 final boolean firstIsAtom = list.size() > 0 && list.getElement(0).isAtom();
 525  0 if (firstIsAtom) {
 526  0 final String atom = list.getElement(0).getAtom().getString();
 527  0 if (atom != null) {
 528  0 if ("VAR".equals(operator) || "PREDVAR".equals(operator)
 529    || "FUNVAR".equals(operator)) {
 530  0 printer.print(" id=\"" + atom + "\"");
 531  0 } else if ("PREDCON".equals(operator) || "FUNCON".equals(operator)) {
 532  0 printer.print(" ref=\"" + atom + "\"");
 533    } else {
 534  0 printer.print(" unknown=\"" + atom + "\"");
 535    }
 536    }
 537    }
 538  0 if (list.size() == 0 || list.size() == 1 && list.getElement(0).isAtom()) {
 539  0 printer.print("/");
 540    }
 541  0 printer.println(">");
 542  0 printer.pushLevel();
 543    }
 544   
 545  0 public void visitLeave(final ElementList list) {
 546  0 printer.popLevel();
 547  0 if (list.size() == 0 || list.size() == 1 && list.getElement(0).isAtom()) {
 548  0 return;
 549    }
 550  0 printer.levelPrintln("</" + list.getOperator() + ">");
 551    }
 552   
 553  0 public void visitEnter(final LiteratureItemList list) {
 554  0 printer.levelPrintln("<BIBLIOGRAPHY>");
 555  0 printer.pushLevel();
 556    }
 557   
 558  0 public void visitLeave(final LiteratureItemList list) {
 559  0 printer.popLevel();
 560  0 printer.levelPrintln("</BIBLIOGRAPHY>");
 561    }
 562   
 563  0 public void visitEnter(final LiteratureItem item) {
 564  0 printer.levelPrint("<ITEM");
 565  0 if (item.getLabel() != null) {
 566  0 printer.print(" label=\"" + item.getLabel() + "\"");
 567    }
 568  0 printer.println(">");
 569  0 printer.pushLevel();
 570    }
 571   
 572  0 public void visitLeave(final LiteratureItem item) {
 573  0 printer.popLevel();
 574  0 printer.levelPrintln("</ITEM>");
 575    }
 576   
 577    }