StationlistXMLHandler.java
- /**
- * This class is not currently in use, but kept for posterity and the ability
- * to add this support back in if it is deemed necessary.
- */
- package gov.usgs.earthquake.shakemap;
- import gov.usgs.util.StringUtils;
- import gov.usgs.util.XmlUtils;
- import java.math.BigDecimal;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.TimeZone;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- /**
- * Parser for Shakemap "stationlist.xml" metadata.
- */
- public class StationlistXMLHandler extends DefaultHandler {
- /** Element for Shakemap data */
- public static final String SHAKEMAPDATA_ELEMENT = "shakemap-data";
- /** Shakemap data version */
- public static final String SHAKEMAPDATA_VERSION = "map_version";
- /** Element for earthquake */
- public static final String EARTHQUAKE_ELEMENT = "earthquake";
- /** String for earthquake id */
- public static final String EARTHQUAKE_ID = "id";
- /** String for earthquake latitiude */
- public static final String EARTHQUAKE_LAT = "lat";
- /** String for earthquake longitude */
- public static final String EARTHQUAKE_LON = "lon";
- /** String for earthquake magnitude */
- public static final String EARTHQUAKE_MAG = "mag";
- /** String for earthquake year */
- public static final String EARTHQUAKE_YEAR = "year";
- /** String for earthquake month */
- public static final String EARTHQUAKE_MONTH = "month";
- /** String for earthquake day */
- public static final String EARTHQUAKE_DAY = "day";
- /** String for earthquake hour */
- public static final String EARTHQUAKE_HOUR = "hour";
- /** String for earthquake minute */
- public static final String EARTHQUAKE_MINUTE = "minute";
- /** String for earthquake second */
- public static final String EARTHQUAKE_SECOND = "second";
- /** String for earthquake timezone */
- public static final String EARTHQUAKE_TIMEZONE = "timezone";
- /** String for earthquake depth */
- public static final String EARTHQUAKE_DEPTH = "depth";
- /** String for earthquake locstring */
- public static final String EARTHQUAKE_LOCSTRING = "locstring";
- /** String for earthquake created */
- public static final String EARTHQUAKE_CREATED = "created";
- /** The ShakeMap object parsed by this handler. */
- private ShakeMap shakemap;
- /**
- * Constructor
- * @param shakemap a shakemap object parsed by handler
- */
- public StationlistXMLHandler(ShakeMap shakemap) {
- this.shakemap = shakemap;
- }
- /** @return shakemap */
- public ShakeMap getShakemap() {
- return shakemap;
- }
- /** @param shakemap to set */
- public void setShakemap(ShakeMap shakemap) {
- this.shakemap = shakemap;
- }
- /**
- * Takes in an XML object and parses it
- * @param in an object
- * @return A shakemap
- * @throws Exception if error occurs
- */
- public ShakeMap parse(final Object in) throws Exception {
- XmlUtils.parse(in, this);
- return getShakemap();
- }
- /**
- * Parse element attributes.
- *
- * @param uri element namespace.
- * @param localName element name.
- * @param qName qualified element name.
- * @param attributes element attributes.
- * @throws SAXException if error occurs
- */
- public final void startElement(final String uri, final String localName,
- final String qName, final Attributes attributes)
- throws SAXException {
- try {
- if (localName.equals(SHAKEMAPDATA_ELEMENT)) {
- shakemap.setVersion(attributes
- .getValue(SHAKEMAPDATA_VERSION));
- } else if (localName.equals(EARTHQUAKE_ELEMENT)) {
- shakemap.setLatitude(new BigDecimal(attributes
- .getValue(EARTHQUAKE_LAT)));
- shakemap.setLongitude(new BigDecimal(attributes
- .getValue(EARTHQUAKE_LON)));
- shakemap.setMagnitude(new BigDecimal(attributes
- .getValue(EARTHQUAKE_MAG)));
- shakemap.setDepth(new BigDecimal(attributes
- .getValue(EARTHQUAKE_DEPTH)));
- Calendar cal = Calendar.getInstance(TimeZone
- .getTimeZone(attributes.getValue(EARTHQUAKE_TIMEZONE)));
- cal.set(Integer.parseInt(attributes.getValue(EARTHQUAKE_YEAR)),
- Integer.parseInt(attributes.getValue(EARTHQUAKE_MONTH)),
- Integer.parseInt(attributes.getValue(EARTHQUAKE_DAY)),
- Integer.parseInt(attributes.getValue(EARTHQUAKE_HOUR)),
- Integer.parseInt(attributes.getValue(EARTHQUAKE_MINUTE)),
- Integer.parseInt(attributes.getValue(EARTHQUAKE_SECOND)));
- shakemap.setEventTime(cal.getTime());
- shakemap.setEventDescription(attributes
- .getValue(EARTHQUAKE_LOCSTRING));
- shakemap.setProcessTimestamp(new Date(StringUtils
- .getLong(attributes.getValue(EARTHQUAKE_CREATED))));
- }
- } catch (Exception e) {
- throw new SAXException(e);
- }
- }
- }