View Javadoc

1   /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">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  
16  package org.qedeq.kernel.xml.handler.module;
17  
18  import org.qedeq.kernel.se.base.module.Qedeq;
19  import org.qedeq.kernel.se.dto.module.QedeqVo;
20  import org.qedeq.kernel.xml.common.XmlSyntaxException;
21  import org.qedeq.kernel.xml.handler.common.AbstractSimpleHandler;
22  import org.qedeq.kernel.xml.handler.common.SaxDefaultHandler;
23  import org.qedeq.kernel.xml.handler.common.SimpleAttributes;
24  
25  
26  /**
27   * Parses complete qedeq modules.
28   *
29   * @version $Revision: 1.1 $
30   * @author  Michael Meyling
31   */
32  public class QedeqHandler extends AbstractSimpleHandler {
33  
34      /** Module header handler. */
35      private final HeaderHandler headerHandler;
36  
37      /** Handles a single chapter. */
38      private final ChapterHandler chapterHandler;
39  
40      /** Handles a bibliography. */
41      private final LiteratureItemListHandler bibliographyHandler;
42  
43      /** Root value object for a module. */
44      private QedeqVo qedeq;
45  
46  
47      /**
48       * Handle a qedeq module.
49       *
50       * @param   defaultHandler  Startup handler.
51       */
52      public QedeqHandler(final SaxDefaultHandler defaultHandler) {
53          super(defaultHandler, "QEDEQ");
54          headerHandler = new HeaderHandler(this);
55          chapterHandler = new ChapterHandler(this);
56          bibliographyHandler = new LiteratureItemListHandler(this);
57      }
58  
59      public final void init() {
60          qedeq = null;
61      }
62  
63      /**
64       * Get qedeq value object.
65       *
66       * @return  Qedeq object.
67       */
68      public final Qedeq getQedeq() {
69          return qedeq;
70      }
71  
72      public final void startElement(final String name, final SimpleAttributes attributes)
73              throws XmlSyntaxException {
74          if (getStartTag().equals(name)) {
75              qedeq = new QedeqVo();
76          } else if (headerHandler.getStartTag().equals(name)) {
77              changeHandler(headerHandler, name, attributes);
78          } else if (chapterHandler.getStartTag().equals(name)) {
79              changeHandler(chapterHandler, name, attributes);
80          } else if (bibliographyHandler.getStartTag().equals(name)) {
81              changeHandler(bibliographyHandler, name, attributes);
82          } else {
83              throw XmlSyntaxException.createUnexpectedTagException(name);
84          }
85      }
86  
87      public final void endElement(final String name) throws XmlSyntaxException {
88          if (getStartTag().equals(name)) {
89              // nothing to do
90          } else if (headerHandler.getStartTag().equals(name)) {
91              qedeq.setHeader(headerHandler.getHeader());
92          } else if (chapterHandler.getStartTag().equals(name)) {
93              qedeq.addChapter(chapterHandler.getChapter());
94          } else if (bibliographyHandler.getStartTag().equals(name)) {
95              qedeq.setLiteratureItemList(bibliographyHandler.getLiteratureItemList());
96          } else {
97              throw XmlSyntaxException.createUnexpectedTagException(name);
98          }
99      }
100 
101 }