use of com.mongodb.client.model.geojson.LineString in project mongo-java-driver by mongodb.
the class GeometryDecoderHelper method decodeGeometry.
private static Geometry decodeGeometry(final BsonReader reader) {
String type = null;
BsonReaderMark mark = reader.getMark();
validateIsDocument(reader);
reader.readStartDocument();
while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
String key = reader.readName();
if (key.equals("type")) {
type = reader.readString();
break;
} else {
reader.skipValue();
}
}
mark.reset();
if (type == null) {
throw new CodecConfigurationException("Invalid Geometry item, document contained no type information.");
}
Geometry geometry = null;
if (type.equals("Point")) {
geometry = decodePoint(reader);
} else if (type.equals("MultiPoint")) {
geometry = decodeMultiPoint(reader);
} else if (type.equals("Polygon")) {
geometry = decodePolygon(reader);
} else if (type.equals("MultiPolygon")) {
geometry = decodeMultiPolygon(reader);
} else if (type.equals("LineString")) {
geometry = decodeLineString(reader);
} else if (type.equals("MultiLineString")) {
geometry = decodeMultiLineString(reader);
} else if (type.equals("GeometryCollection")) {
geometry = decodeGeometryCollection(reader);
} else {
throw new CodecConfigurationException(format("Invalid Geometry item, found type '%s'.", type));
}
return geometry;
}
use of com.mongodb.client.model.geojson.LineString in project mongo-java-driver by mongodb.
the class GeometryDecoderHelper method decodeLineString.
private static LineString decodeLineString(final BsonReader reader) {
String type = null;
List<Position> coordinates = null;
CoordinateReferenceSystem crs = null;
reader.readStartDocument();
while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
String key = reader.readName();
if (key.equals("type")) {
type = reader.readString();
} else if (key.equals("coordinates")) {
coordinates = decodeCoordinates(reader);
} else if (key.equals("crs")) {
crs = decodeCoordinateReferenceSystem(reader);
} else {
throw new CodecConfigurationException(format("Unexpected key '%s' found when decoding a GeoJSON Polygon", key));
}
}
reader.readEndDocument();
if (type == null) {
throw new CodecConfigurationException("Invalid LineString, document contained no type information.");
} else if (!type.equals("LineString")) {
throw new CodecConfigurationException(format("Invalid LineString, found type '%s'.", type));
} else if (coordinates == null) {
throw new CodecConfigurationException("Invalid LineString, missing coordinates.");
}
return crs != null ? new LineString(crs, coordinates) : new LineString(coordinates);
}
use of com.mongodb.client.model.geojson.LineString in project mongo-java-driver by mongodb.
the class GeometryEncoderHelper method encodeGeometry.
@SuppressWarnings("unchecked")
static void encodeGeometry(final BsonWriter writer, final Geometry value, final EncoderContext encoderContext, final CodecRegistry registry) {
writer.writeStartDocument();
writer.writeString("type", value.getType().getTypeName());
if (value instanceof GeometryCollection) {
writer.writeName("geometries");
encodeGeometryCollection(writer, (GeometryCollection) value, encoderContext, registry);
} else {
writer.writeName("coordinates");
if (value instanceof Point) {
encodePoint(writer, (Point) value);
} else if (value instanceof MultiPoint) {
encodeMultiPoint(writer, (MultiPoint) value);
} else if (value instanceof Polygon) {
encodePolygon(writer, (Polygon) value);
} else if (value instanceof MultiPolygon) {
encodeMultiPolygon(writer, (MultiPolygon) value);
} else if (value instanceof LineString) {
encodeLineString(writer, (LineString) value);
} else if (value instanceof MultiLineString) {
encodeMultiLineString(writer, (MultiLineString) value);
} else {
throw new CodecConfigurationException(format("Unsupported Geometry: %s", value));
}
}
encodeCoordinateReferenceSystem(writer, value, encoderContext, registry);
writer.writeEndDocument();
}
Aggregations