01 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
02 *
03 * Copyright 2000-2011, Michael Meyling <mime@qedeq.org>.
04 *
05 * "Hilbert II" is free software; you can redistribute
06 * it and/or modify it under the terms of the GNU General Public
07 * License as published by the Free Software Foundation; either
08 * version 2 of the License, or (at your option) any later version.
09 *
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.dto.module.SubsectionListVo;
19 import org.qedeq.kernel.xml.common.XmlSyntaxException;
20 import org.qedeq.kernel.xml.handler.common.AbstractSimpleHandler;
21 import org.qedeq.kernel.xml.handler.common.SimpleAttributes;
22
23 /**
24 * Parse subsection list.
25 *
26 * @version $Revision: 1.1 $
27 * @author Michael Meyling
28 */
29 public class SubsectionListHandler extends AbstractSimpleHandler {
30
31 /** List of subsections. */
32 private SubsectionListVo list;
33
34 /** Parses an subsection. */
35 private final SubsectionHandler subsectionHandler;
36
37 /** Handle single node of a section. */
38 private final NodeHandler nodeHandler;
39
40
41 /**
42 * Handles list of subsections.
43 *
44 * @param handler Parent handler.
45 */
46 public SubsectionListHandler(final AbstractSimpleHandler handler) {
47 super(handler, "SUBSECTIONS");
48 subsectionHandler = new SubsectionHandler(this);
49 nodeHandler = new NodeHandler(this);
50 }
51
52 public final void init() {
53 list = new SubsectionListVo();
54 }
55
56 /**
57 * Get list of subsections.
58 *
59 * @return Subsection list.
60 */
61 public final SubsectionListVo getSubsectionList() {
62 return list;
63 }
64
65 public final void startElement(final String name, final SimpleAttributes attributes)
66 throws XmlSyntaxException {
67 if (getStartTag().equals(name)) {
68 // nothing to do
69 } else if (subsectionHandler.getStartTag().equals(name)) {
70 changeHandler(subsectionHandler, name, attributes);
71 } else if (nodeHandler.getStartTag().equals(name)) {
72 changeHandler(nodeHandler, name, attributes);
73 } else {
74 throw XmlSyntaxException.createUnexpectedTagException(name);
75 }
76 }
77
78 public final void endElement(final String name) throws XmlSyntaxException {
79 if (getStartTag().equals(name)) {
80 // nothing to do
81 } else if (subsectionHandler.getStartTag().equals(name)) {
82 list.add(subsectionHandler.getSubsection());
83 } else if (nodeHandler.getStartTag().equals(name)) {
84 list.add(nodeHandler.getNode());
85 } else {
86 throw XmlSyntaxException.createUnexpectedTagException(name);
87 }
88 }
89 }
|