01 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
02 *
03 * Copyright 2000-2013, 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.LocationListVo;
19 import org.qedeq.kernel.se.dto.module.LocationVo;
20 import org.qedeq.kernel.se.dto.module.SpecificationVo;
21 import org.qedeq.kernel.xml.common.XmlSyntaxException;
22 import org.qedeq.kernel.xml.handler.common.AbstractSimpleHandler;
23 import org.qedeq.kernel.xml.handler.common.SimpleAttributes;
24
25
26 /**
27 * Parse specification informations.
28 *
29 * @version $Revision: 1.1 $
30 * @author Michael Meyling
31 */
32 public class SpecificationHandler extends AbstractSimpleHandler {
33
34 /** Specification value object. */
35 private SpecificationVo specification;
36
37 /** Module name. */
38 private String moduleName;
39
40 /** Rule version which is at least needed to verify this module. */
41 private String ruleVersion;
42
43 /** List of locations for module. */
44 private LocationListVo locations;
45
46
47 /**
48 * Constructor.
49 *
50 * @param handler Parent handler.
51 */
52 public SpecificationHandler(final AbstractSimpleHandler handler) {
53 super(handler, "SPECIFICATION");
54 }
55
56 public final void init() {
57 specification = null;
58 moduleName = null;
59 ruleVersion = null;
60 locations = null;
61 }
62
63 /**
64 * Get specification.
65 *
66 * @return Module specification.
67 */
68 public final SpecificationVo getSpecification() {
69 return specification;
70 }
71
72 public final void startElement(final String name, final SimpleAttributes attributes)
73 throws XmlSyntaxException {
74 if (getStartTag().equals(name)) {
75 locations = new LocationListVo();
76 moduleName = attributes.getString("name");
77 ruleVersion = attributes.getString("ruleVersion");
78 } else if ("LOCATIONS".equals(name)) {
79 // ignore
80 } else if ("LOCATION".equals(name)) {
81 locations.add(new LocationVo(attributes.getString("value")));
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 specification = new SpecificationVo(moduleName, ruleVersion, locations);
90 } else if ("LOCATIONS".equals(name)) {
91 // ignore
92 } else if ("LOCATION".equals(name)) {
93 // ignore
94 } else {
95 throw XmlSyntaxException.createUnexpectedTagException(name);
96 }
97 }
98
99 }
|