package com.qianwen.core.tool.metadata.types;
|
|
import com.alibaba.fastjson.JSON;
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Collection;
|
import java.util.List;
|
import java.util.Map;
|
import com.qianwen.core.tool.utils.StringPool;
|
|
/* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/metadata/types/GeoShape.class */
|
public class GeoShape implements Serializable {
|
private Type type;
|
private List<Object> coordinates;
|
|
public void setType(final Type type) {
|
this.type = type;
|
}
|
|
public void setCoordinates(final List<Object> coordinates) {
|
this.coordinates = coordinates;
|
}
|
|
public Type getType() {
|
return this.type;
|
}
|
|
public List<Object> getCoordinates() {
|
return this.coordinates;
|
}
|
|
/* loaded from: blade-core-tool-9.3.0.0-SNAPSHOT.jar:org/springblade/core/tool/metadata/types/GeoShape$Type.class */
|
public enum Type {
|
Point,
|
MultiPoint,
|
LineString,
|
MultiLineString,
|
Polygon,
|
MultiPolygon,
|
GeometryCollection;
|
|
public static Type of(Object val) {
|
Type[] values;
|
for (Type value : values()) {
|
if (value.name().equalsIgnoreCase(String.valueOf(val))) {
|
return value;
|
}
|
}
|
throw new IllegalArgumentException("unsupported GeoShape type:" + val);
|
}
|
|
public List<Object> parseCoordinates(Object coordinates) {
|
if (coordinates instanceof Collection) {
|
return new ArrayList((Collection) coordinates);
|
}
|
if (coordinates instanceof String) {
|
if (((String) coordinates).startsWith(StringPool.LEFT_SQ_BRACKET)) {
|
return JSON.parseArray(String.valueOf(coordinates));
|
}
|
return new ArrayList(Arrays.asList(((String) coordinates).split(StringPool.COMMA)));
|
}
|
throw new IllegalArgumentException("unsupported coordinates type :" + coordinates);
|
}
|
}
|
|
public static GeoShape of(Object value) {
|
if (value instanceof GeoShape) {
|
return (GeoShape) value;
|
}
|
if (value instanceof GeoPoint) {
|
return fromPoint((GeoPoint) value);
|
}
|
if ((value instanceof String) && ((String) value).startsWith(StringPool.LEFT_BRACE)) {
|
value = JSON.parseObject(String.valueOf(value));
|
}
|
if (value instanceof Map) {
|
return of((Map<String, Object>) value);
|
}
|
throw new IllegalArgumentException("unsupported GeoShape:" + value);
|
}
|
|
public static GeoShape of(Map<String, Object> map) {
|
GeoShape shape = new GeoShape();
|
shape.type = Type.of(map.get("type"));
|
shape.coordinates = shape.type.parseCoordinates(map.get("coordinates"));
|
return shape;
|
}
|
|
public static GeoShape fromPoint(GeoPoint point) {
|
GeoShape shape = new GeoShape();
|
shape.type = Type.Point;
|
shape.coordinates = new ArrayList(Arrays.asList(Double.valueOf(point.getLon()), Double.valueOf(point.getLat())));
|
return shape;
|
}
|
}
|