Worldwind public release 0.2
[worldwind-tracker.git] / gov / nasa / worldwind / formats / gpx / ElementParser.java
blob727fc4062f73f61d3b9241466f1b4aa5d03435f3
1 /*
2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
5 All Rights Reserved.
6 */
7 package gov.nasa.worldwind.formats.gpx;
9 import gov.nasa.worldwind.*;
11 /**
12 * @author tag
13 * @version $Id: ElementParser.java 513 2007-01-18 00:33:16Z ericdalgliesh $
15 public class ElementParser
17 protected final String elementName;
18 protected ElementParser currentElement = null;
19 protected String currentCharacters = null;
21 /**
22 * @param elementName the element's name, may not be null
23 * @throws IllegalArgumentException if <code>elementName</code> is null
25 protected ElementParser(String elementName)
27 if (elementName == null)
29 String msg = WorldWind.retrieveErrMsg("nullValue.ElementNameIsNull");
30 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
31 throw new IllegalArgumentException(msg);
34 this.elementName = elementName;
37 public String getElementName()
39 return this.elementName;
42 /**
43 * Starts an element. No parameters may be null.
45 * @param uri
46 * @param lname
47 * @param qname
48 * @param attributes
49 * @throws org.xml.sax.SAXException
50 * @throws IllegalArgumentException if any argument is null
52 public void startElement(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
53 throws org.xml.sax.SAXException
55 if (uri == null)
57 String msg = WorldWind.retrieveErrMsg("nullValue.URIIsNull");
58 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
59 throw new IllegalArgumentException(msg);
61 if (lname == null)
63 String msg = WorldWind.retrieveErrMsg("nullValue.LNameIsNull");
64 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
65 throw new IllegalArgumentException(msg);
67 if (qname == null)
69 String msg = WorldWind.retrieveErrMsg("nullValue.QNameIsNull");
70 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
71 throw new IllegalArgumentException(msg);
73 if (attributes == null)
75 String msg = WorldWind.retrieveErrMsg("nullValue.org.xml.sax.AttributesIsNull");
76 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
77 throw new IllegalArgumentException(msg);
80 if (this.currentElement != null)
81 this.currentElement.startElement(uri, lname, qname, attributes);
82 else
83 this.doStartElement(uri, lname, qname, attributes);
86 /**
87 * Finishes an element. No parameters may be null.
89 * @param uri
90 * @param lname
91 * @param qname
92 * @throws org.xml.sax.SAXException
93 * @throws IllegalArgumentException if any argument is null
95 public void endElement(String uri, String lname, String qname) throws org.xml.sax.SAXException
97 if (uri == null)
99 String msg = WorldWind.retrieveErrMsg("nullValue.URIIsNull");
100 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
101 throw new IllegalArgumentException(msg);
103 if (lname == null)
105 String msg = WorldWind.retrieveErrMsg("nullValue.LNameIsNull");
106 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
107 throw new IllegalArgumentException(msg);
109 if (qname == null)
111 String msg = WorldWind.retrieveErrMsg("nullValue.QNameIsNull");
112 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
113 throw new IllegalArgumentException(msg);
115 if (this.currentElement != null)
117 this.currentElement.endElement(uri, lname, qname);
118 if (lname.equalsIgnoreCase(this.currentElement.elementName))
119 this.currentElement = null;
122 this.doEndElement(uri, lname, qname);
124 this.currentCharacters = null;
127 protected void doStartElement(String uri, String lname, String qname, org.xml.sax.Attributes attributes)
128 throws org.xml.sax.SAXException
132 protected void doEndElement(String uri, String lname, String qname) throws org.xml.sax.SAXException
137 * @param data
138 * @param start
139 * @param length
140 * @throws IllegalArgumentException if <code>data</code> has length less than 1
142 public void characters(char[] data, int start, int length)
144 if (data == null)
146 String msg = WorldWind.retrieveErrMsg("nullValue.ArrayIsNull");
147 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
148 throw new IllegalArgumentException(msg);
150 if (data.length < 1)
152 String msg = WorldWind.retrieveErrMsg("generic.arrayInvalidLength") + WorldWind.retrieveErrMsg(
153 "punctuation.space") + data.length;
154 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
155 throw new IllegalArgumentException(msg);
157 if (start < 0 || length < 0)
159 String msg = WorldWind.retrieveErrMsg("generic.indexOutOfRange");
160 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
161 throw new IllegalArgumentException(msg);
163 if (start + length > data.length)
165 String msg = WorldWind.retrieveErrMsg("generic.indexOutOfRange") + WorldWind.retrieveErrMsg(
166 "punctuation.space") + String.valueOf(start + length);
167 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
168 throw new IllegalArgumentException(msg);
171 if (this.currentElement != null)
172 this.currentElement.characters(data, start, length);
173 else if (this.currentCharacters != null)
174 this.currentCharacters += new String(data, start, length);
175 else
176 this.currentCharacters = new String(data, start, length);