package es.upm.fi.dia.oeg.map4rdf.share;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class WKTGeometryBean implements WKTGeometry,Serializable {
private static final long serialVersionUID = -3988048652540836855L;
private String uri;
private String wkt;
private String projection;
@SuppressWarnings("unused")
private WKTGeometryBean(){
//ONLY for serialization
}
public WKTGeometryBean(String uri,String wkt,String projection) {
this.uri=uri;
this.wkt=wkt;
this.projection=projection;
}
@Override
public Collection<Point> getPoints(){
List<Point> toReturn = new ArrayList<Point>();
int init = wkt.indexOf("(");
int end = wkt.lastIndexOf(")");
String parsed = removeWhiteSpaces(new String(wkt));
if(init > 0 && end > 0){
parsed = parsed.substring(init,end);
}
parsed.replaceAll("\\(", "");
parsed.replaceAll("\\)", "");
String [] points = parsed.split(",");
for(String point:points){
String []coordinates = point.trim().split(" ");
if(coordinates.length == 2){
int x=Integer.MIN_VALUE;
int y=Integer.MIN_VALUE;
try{
x = Integer.parseInt(coordinates[0]);
y = Integer.parseInt(coordinates[1]);
}catch(Exception e){
}
if(x != Integer.MIN_VALUE && y != Integer.MIN_VALUE){
toReturn.add(new PointBean(this.uri,x,y,this.projection));
}
}
}
return toReturn;
}
@Override
public String getProjection() {
return this.projection;
}
@Override
public String getUri() {
return this.uri;
}
@Override
public Type getType() {
return Type.WKTGEOMETRY;
}
@Override
public String getWKT() {
return this.wkt;
}
//Helper METHODS
private static String removeWhiteSpaces(String in) {
String toReturn = "";
toReturn = in.replaceAll("( )+", " ").trim();
toReturn = toReturn.replaceAll(" \\(", "(");
toReturn = toReturn.replaceAll("\\( ", "(");
toReturn = toReturn.replaceAll(" \\)", ")");
toReturn = toReturn.replaceAll("\\) ", ")");
toReturn = toReturn.replaceAll(" ,", ",");
toReturn = toReturn.replaceAll(", ", ",");
return toReturn;
}
}