ImportListHandler.java
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.ImportListVo;
19 import org.qedeq.kernel.se.dto.module.ImportVo;
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.SimpleAttributes;
23 
24 
25 /**
26  * Parse author list.
27  *
28  @version $Revision: 1.1 $
29  @author  Michael Meyling
30  */
31 public class ImportListHandler extends AbstractSimpleHandler {
32 
33     /** Value object with list of all module imports. */
34     private ImportListVo list;
35 
36     /** Handler for a single module specification. */
37     private final SpecificationHandler specificationHandler;
38 
39     /** Label for a single module. */
40     private String label;
41 
42 
43     /**
44      * Handles list of imports.
45      *
46      @param   handler Parent handler.
47      */
48     public ImportListHandler(final AbstractSimpleHandler handler) {
49         super(handler, "IMPORTS");
50         specificationHandler = new SpecificationHandler(this);
51     }
52 
53     public final void init() {
54         list = null;
55     }
56 
57     /**
58      * Get parsed result.
59      *
60      @return  Location list.
61      */
62     public final ImportListVo getImportList() {
63         return list;
64     }
65 
66     public final void startElement(final String name, final SimpleAttributes attributes)
67             throws XmlSyntaxException {
68         if (getStartTag().equals(name)) {
69             list = new ImportListVo();
70         else if ("IMPORT".equals(name)) {
71             label = attributes.getString("label");
72         else if (specificationHandler.getStartTag().equals(name)) {
73             changeHandler(specificationHandler, name, attributes);
74         else {
75             throw XmlSyntaxException.createUnexpectedTagException(name);
76         }
77     }
78 
79     public final void endElement(final String namethrows XmlSyntaxException {
80         if (getStartTag().equals(name)) {
81             // nothing to do
82         else if (specificationHandler.getStartTag().equals(name)) {
83             // nothing to do
84         else if ("IMPORT".equals(name)) {
85             list.add(new ImportVo(label, specificationHandler.getSpecification()));
86         else {
87             throw XmlSyntaxException.createUnexpectedTagException(name);
88         }
89     }
90 }