X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Ffunction%2Fgpsies%2FGpsiesXmlHandler.java;h=c549c59c1a7a59d2f57a05e46067af0e1af6d19d;hb=92dad5df664287acb51728e9ea599f150765d34a;hp=e63916029450a4ae0f5c3159cc65e26405e127a5;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/function/gpsies/GpsiesXmlHandler.java b/tim/prune/function/gpsies/GpsiesXmlHandler.java index e639160..c549c59 100644 --- a/tim/prune/function/gpsies/GpsiesXmlHandler.java +++ b/tim/prune/function/gpsies/GpsiesXmlHandler.java @@ -6,21 +6,16 @@ import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; +import tim.prune.function.search.SearchResult; + /** * XML handler for dealing with XML returned from gpsies.com */ public class GpsiesXmlHandler extends DefaultHandler { - private boolean _inTracks = false; - private boolean _inTrack = false; - private boolean _inTrackName = false; - private boolean _inDescription = false; - private boolean _inFileId = false; - private boolean _inTrackLength = false; - private boolean _inLink = false; private String _value = null; - private ArrayList _trackList = null; - private GpsiesTrack _track = null; + private ArrayList _trackList = null; + private SearchResult _track = null; /** @@ -30,18 +25,12 @@ public class GpsiesXmlHandler extends DefaultHandler Attributes inAttributes) throws SAXException { if (inTagName.equals("tracks")) { - _inTracks = true; - _trackList = new ArrayList(); + _trackList = new ArrayList(); } - else if (_inTracks && inTagName.equals("track")) { - _inTrack = true; - _track = new GpsiesTrack(); + else if (inTagName.equals("track")) { + _track = new SearchResult(); } - else if (_inTrack && inTagName.equals("title")) {_inTrackName = true;} - else if (_inTrack && inTagName.equals("description")) {_inDescription = true;} - else if (_inTrack && inTagName.equals("fileId")) {_inFileId = true;} - else if (_inTrack && inTagName.equals("trackLengthM")) {_inTrackLength = true;} - else if (_inTrack && inTagName.equals("downloadLink")) {_inLink = true;} + _value = null; super.startElement(inUri, inLocalName, inTagName, inAttributes); } @@ -51,33 +40,26 @@ public class GpsiesXmlHandler extends DefaultHandler public void endElement(String inUri, String inLocalName, String inTagName) throws SAXException { - if (inTagName.equals("tracks")) {_inTracks = false;} - else if (_inTrack && inTagName.equals("track")) { + if (inTagName.equals("track")) { _trackList.add(_track); - _inTrack = false; } - else if (_inTrackName && inTagName.equals("title")) { + else if (inTagName.equals("title")) { _track.setTrackName(_value); - _inTrackName = false; } - else if (_inDescription && inTagName.equals("description")) { + else if (inTagName.equals("description")) { _track.setDescription(_value); - _inDescription = false; } - else if (_inFileId && inTagName.equals("fileId")) { - _track.setFileId(_value); - _inFileId = false; + else if (inTagName.equals("fileId")) { + _track.setWebUrl("https://gpsies.com/map.do?fileId=" + _value); } - else if (_inTrackLength && inTagName.equals("trackLengthM")) { + else if (inTagName.equals("trackLengthM")) { try { _track.setLength(Double.parseDouble(_value)); } catch (NumberFormatException nfe) {} - _inTrackLength = false; } - else if (_inLink && inTagName.equals("downloadLink")) { + else if (inTagName.equals("downloadLink")) { _track.setDownloadLink(_value); - _inLink = false; } super.endElement(inUri, inLocalName, inTagName); } @@ -88,16 +70,15 @@ public class GpsiesXmlHandler extends DefaultHandler public void characters(char[] inCh, int inStart, int inLength) throws SAXException { - _value = new String(inCh, inStart, inLength); - // System.out.println("Value: '" + value + "'"); - // TODO: Note, this doesn't cope well with split characters for really long descriptions etc + String value = new String(inCh, inStart, inLength); + _value = (_value==null?value:_value+value); super.characters(inCh, inStart, inLength); } /** * @return the list of tracks */ - public ArrayList getTrackList() + public ArrayList getTrackList() { return _trackList; }