Skip to content
Snippets Groups Projects

add support for feature-collection indexing

Merged Neelesh Thakur requested to merge feature-collection into master
All threads resolved!
20 files
+ 1039
526
Compare changes
  • Side-by-side
  • Inline
Files
20
package org.opengroup.osdu.indexer.model.geojson.jackson;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import lombok.Data;
import org.opengroup.osdu.indexer.model.geojson.*;
import java.io.IOException;
@Data
public class FeatureCollectionSerializer extends JsonSerializer<FeatureCollection> {
@Override
public void serialize(FeatureCollection value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("type", "geometrycollection");
jsonGenerator.writeArrayFieldStart("geometries");
for (Feature feature : value.getFeatures()) {
jsonGenerator.writeStartObject();
if (feature.getGeometry() instanceof GeometryCollection) {
GeometryCollection geometryCollection = (GeometryCollection) feature.getGeometry();
for (GeoJsonObject shape : geometryCollection.getGeometries()) {
serializeGeoShape(shape, jsonGenerator);
}
} else {
serializeGeoShape(feature.getGeometry(), jsonGenerator);
}
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
}
@Override
public void serializeWithType(FeatureCollection value, JsonGenerator jsonGenerator, SerializerProvider provider, TypeSerializer typeSerializer)
throws IOException, JsonProcessingException {
serialize(value, jsonGenerator, provider);
}
private void serializeGeoShape(GeoJsonObject geoJsonObject, JsonGenerator jsonGenerator) throws IOException {
if (geoJsonObject instanceof Point) {
jsonGenerator.writeStringField("type", "point");
jsonGenerator.writeObjectField("coordinates", ((Point) geoJsonObject).getCoordinates());
} else if (geoJsonObject instanceof LineString) {
jsonGenerator.writeStringField("type", "linestring");
jsonGenerator.writeObjectField("coordinates", ((LineString) geoJsonObject).getCoordinates());
} else if (geoJsonObject instanceof Polygon) {
jsonGenerator.writeStringField("type", "polygon");
jsonGenerator.writeObjectField("coordinates", ((Polygon) geoJsonObject).getCoordinates());
} else if (geoJsonObject instanceof MultiPoint) {
jsonGenerator.writeStringField("type", "multipoint");
jsonGenerator.writeObjectField("coordinates", ((MultiPoint) geoJsonObject).getCoordinates());
} else if (geoJsonObject instanceof MultiLineString) {
jsonGenerator.writeStringField("type", "multilinestring");
jsonGenerator.writeObjectField("coordinates", ((MultiLineString) geoJsonObject).getCoordinates());
} else if (geoJsonObject instanceof MultiPolygon) {
jsonGenerator.writeStringField("type", "multipolygon");
jsonGenerator.writeObjectField("coordinates", ((MultiPolygon) geoJsonObject).getCoordinates());
}
}
}
Loading