package osm.surveyor.task.util;
import com.fasterxml.jackson.databind.JsonNode;
import lombok.Getter;
import lombok.Setter;
/**
* {
* "geometry":{
* "coordinates":[141.35625,42.90416666666667],
* "type":"Point"
* },
* "type":"Feature",
* "properties":{"id":"64412288"}
* },
* {
* "geometry":{
* "coordinates":[
* [141.35,42.9],
* [141.36249999999998,42.9],
* [141.36249999999998,42.90833333333333],
* [141.35,42.90833333333333],
* [141.35,42.9]
* ],
* "type":"LineString"
* },
* "type":"Feature",
* "properties":{"id":"64412288"}
* },
*/
@Getter
@Setter
public class JsonFeature extends JsonTemple {
public JsonGeometryPoint getGeometryPoint() {
return geometryPoint;
}
public void setGeometryPoint(JsonGeometryPoint geometryPoint) {
this.geometryPoint = geometryPoint;
}
public JsonGeometryLine getGeometryLine() {
return geometryLine;
}
public void setGeometryLine(JsonGeometryLine geometryLine) {
this.geometryLine = geometryLine;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public JsonProperties getProperties() {
return properties;
}
public void setProperties(JsonProperties properties) {
this.properties = properties;
}
private JsonGeometryPoint geometryPoint;
private JsonGeometryLine geometryLine;
private String type;
private JsonProperties properties;
public String toString() {
StringBuffer sb = new StringBuffer();
boolean c = false;
sb.append("{");
c = outStr(c, sb, "type", this.type);
c = out(c, sb, "properties", this.properties.toString());
c = out(c, sb, "geometry", this.geometryPoint);
c = out(c, sb, "geometry", this.geometryLine);
sb.append("}");
return sb.toString();
}
public void parse(JsonNode node) {
JsonNode node1 = node.get("type");
if (node1 != null) {
this.type = node1.textValue();
}
node1 = node.get("properties");
if (node1 != null) {
this.properties = new JsonProperties();
this.properties.parse(node1);
}
node1 = node.get("geometry");
if (node1 != null) {
JsonNode node2 = node1.get("type");
if (node2 != null) {
String type2 = node2.textValue();
if (type2.equals("Point")) {
this.geometryLine = null;
this.geometryPoint = new JsonGeometryPoint();
this.geometryPoint.parse(node1);
}
else if (type2.equals("LineString")) {
this.geometryPoint = null;
this.geometryLine = new JsonGeometryLine();
this.geometryLine.parse(node1);
}
}
}
}
}