package org.djd.busntrain.bus;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.djd.busntrain.commons.XmlUtil;
import org.djd.busntrain.commons.XmlUtilException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
public class BusDirections {
/**
* @param directionXmlTxt <bustime-response><dir>North Bound</dir><dir>South Bound</dir></bustime-response>
* @return
* @throws XmlUtilException
*/
public static ArrayList<Direction> parseValue(String directionXmlTxt) throws XmlUtilException {
XPath xpath = XPathFactory.newInstance().newXPath();
InputSource inputSource = new InputSource(new StringReader(directionXmlTxt));
try {
Node response = (Node) xpath.evaluate("/bustime-response", inputSource, XPathConstants.NODE);
ArrayList<Direction> directions = new ArrayList<Direction>(2);
directions.add(new Direction(xpath.evaluate("dir[position()=1]", response)));
directions.add(new Direction(xpath.evaluate("dir[position()=2]", response)));
return directions;
} catch (XPathExpressionException e) {
throw new RuntimeException(e);
}
}
public static class Direction extends HashMap<String, String> {
public static final String[] COLUMNS = new String[]{NameKey.DIRECTION.text};
private static final long serialVersionUID = -544040097017251479L;
enum NameKey {
DIRECTION("dir");
private String text;
private NameKey(String text) {
this.text = text;
}
}
Direction (String value) {
put(NameKey.DIRECTION.text, value);
}
public String getByNameKey(NameKey nameKey) {
return get(nameKey.text);
}
}
}