// Created by plusminus on 18:33:37 - 15.12.2008
package org.androad.sys.osb.api;
import java.util.ArrayList;
import java.util.Scanner;
import org.androad.sys.osb.adt.OpenStreetBug;
import org.androad.sys.osb.exc.OSBException;
import org.androad.util.HTMLUtil;
public class OSBAjaxResponseParser {
// ===========================================================
// Constants
// ===========================================================
// ===========================================================
// Fields
// ===========================================================
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods from SuperClass/Interfaces
// ===========================================================
// ===========================================================
// Methods
// ===========================================================
/**
* <pre>putAJAXMarker(31824,-1.654381,48.116183,"manque une ruelle ici [Xav]",0);
* putAJAXMarker(31823,-1.654124,48.114908,"manque deux ruelles dans ce coin [Xav]",0);
* putAJAXMarker(15396,-1.664939,48.112645,"Dans le sens E->O, portion de la rue de Paris reservee au bus (de Rue Armand Barbes a de Rue de Chateaudun) [Xav]<hr />et autorisee aux velos [Xav]",0);
* putAJAXMarker(8525,-1.662450,48.113433,"Lycee ??? [gwenn]<hr />"Ensemble scolaire Saint-Vincent Providence" [NoName]",0);
* putAJAXMarker(8008,-1.658083,48.120044,"Terrains de tennis [gwenn]",0);</pre>
*/
public static final ArrayList<OpenStreetBug> parseResponse(final String pResponse) throws OSBException {
final ArrayList<OpenStreetBug> out = new ArrayList<OpenStreetBug>();
final Scanner sc = new Scanner(pResponse);
while(sc.hasNextLine()){
final String line = sc.nextLine();
if(!line.startsWith("putAJAXMarker(") || !line.endsWith(");")) {
continue;
// throw new OSBException("Each line should start with \"putAJAXMarker(\" and end with \");\"");
}
/* Trim "putAJAXMarker(" and ");" */
final String trimmedLine = line.substring("putAJAXMarker(".length(), line.length() - 2);
/* String is now:
* "8525,-1.662450,48.113433,"Lycee ??? [gwenn]<hr />"Ensemble scolaire Saint-Vincent Providence" [NoName]""*/
final String[] segments = trimmedLine.split(",", 4);
/* Parts are:
* [0] = "8525"
* [1] = "-1.662450"
* [2] = "48.113433"
* [3] = ""Lycee ??? [gwenn]<hr />"Ensemble scolaire Saint-Vincent Providence" [NoName]",1"*/
final int id = Integer.parseInt(segments[0]);
final double lon = Double.parseDouble(segments[1]);
final int lonE6 = (int)(lon * 1E6);
final double lat = Double.parseDouble(segments[2]);
final int latE6 = (int)(lat * 1E6);
/* Cut Open-Status from the end.*/
final char openStatusChar = segments[3].charAt(segments[3].length() - 1);
final boolean isOpen = openStatusChar == '0';
/* Prepare comment: ""Lycee ??? [gwenn]<hr />"Ensemble scolaire Saint-Vincent Providence" [NoName]",1"*/
String comment = segments[3].substring(1, segments[3].length() - 3);
/* Comment is now: "Lycee ??? [gwenn]<hr />"Ensemble scolaire Saint-Vincent Providence" [NoName]"*/
comment = comment.replace("<hr />", "\n");
comment = HTMLUtil.htmlDecode(comment);
out.add(new OpenStreetBug(latE6, lonE6, id, comment, isOpen));
}
return out;
}
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}