package org.djd.busntrain.bus; import java.io.Serializable; import java.util.ArrayList; import org.djd.busntrain.commons.XmlUtil; import org.djd.busntrain.commons.XmlUtilException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.content.ContentValues; import android.provider.BaseColumns; import android.util.Log; public class BusRouteEntity implements Serializable { /** * */ private static final long serialVersionUID = -1403007970562748140L; private static final String TAG = BusRouteEntity.class.getSimpleName(); public long id; public String rt; public String rtnm; public ContentValues getContentValues() { ContentValues contentValues = new ContentValues(); contentValues.put(BusRouteEntity.Columns._ID, id); contentValues.put(BusRouteEntity.Columns.ROUTE_ID, rt); contentValues.put(BusRouteEntity.Columns.ROUTE_NAME, rtnm); return contentValues; } public ContentValues getContentValuesForInsert() { ContentValues contentValues = new ContentValues(); contentValues.put(BusRouteEntity.Columns.ROUTE_ID, rt); contentValues.put(BusRouteEntity.Columns.ROUTE_NAME, rtnm); return contentValues; } @Override public String toString() { return String.format("BusRouteEntity [id=%s, rt=%s, rtnm=%s]", id, rt, rtnm); } public static final class Columns implements BaseColumns { public static final String ROUTE_ID = "ROUTE_ID"; public static final String ROUTE_NAME = "ROUTE_NAME"; public static final String[] FULL_PROJECTION = {_ID, ROUTE_ID, ROUTE_NAME}; public static final String[] LIST_VIEW_PROJECTION = {ROUTE_ID, ROUTE_NAME}; private Columns() { } } public static final class Helper { private static final String ROUTE_ELEMENT = "route"; enum NameKey { ROUTE("rt"), ROUTE_NAME("rtnm"); private String text; private NameKey(String text) { this.text = text; } } /** * @param routesNodeList contain <route> elements * @return * @throws XmlUtilException */ public static ArrayList<BusRouteEntity> parseValue(String routesXmlTxt) throws XmlUtilException { Document document = XmlUtil.unmarshall(routesXmlTxt); NodeList routesNodeList = document.getElementsByTagName(ROUTE_ELEMENT); final int ROUTE_COUNT = routesNodeList.getLength(); Log.i(TAG, String.format("ROUTE_COUNT=%d", ROUTE_COUNT)); ArrayList<BusRouteEntity> routes = new ArrayList<BusRouteEntity>(ROUTE_COUNT); for (int i = 0; i < ROUTE_COUNT; i++) { Node routeNode = routesNodeList.item(i); Element element = (Element) routeNode; String rtValue = XmlUtil.getValue(element, NameKey.ROUTE.text); String rtnmValue = XmlUtil.getValue(element, NameKey.ROUTE_NAME.text); routes.add(createBusRouteEntity(rtValue, rtnmValue)); } return routes; } /** * @param routeId * @param routeName * @return new {@link BusRouteEntity} instance. */ private static final BusRouteEntity createBusRouteEntity(String routeId, String routeName) { Log.i(TAG, String.format("routeId=%s, routeName=%s", routeId, routeName)); BusRouteEntity busRouteEntity = new BusRouteEntity(); busRouteEntity.rt = routeId; busRouteEntity.rtnm = routeName; return busRouteEntity; } } }