diff options
Diffstat (limited to 'core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java b/core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java index 6ee679b730..f5e5bca505 100644 --- a/core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java +++ b/core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java @@ -36,20 +36,45 @@ import java.util.Objects; public class MultiPolygonBuilder extends ShapeBuilder { public static final GeoShapeType TYPE = GeoShapeType.MULTIPOLYGON; - public static final MultiPolygonBuilder PROTOTYPE = new MultiPolygonBuilder(); - private final ArrayList<PolygonBuilder> polygons = new ArrayList<>(); + private final List<PolygonBuilder> polygons = new ArrayList<>(); - private Orientation orientation = Orientation.RIGHT; + private final Orientation orientation; + /** + * Build a MultiPolygonBuilder with RIGHT orientation. + */ public MultiPolygonBuilder() { this(Orientation.RIGHT); } + /** + * Build a MultiPolygonBuilder with an arbitrary orientation. + */ public MultiPolygonBuilder(Orientation orientation) { this.orientation = orientation; } + /** + * Read from a stream. + */ + public MultiPolygonBuilder(StreamInput in) throws IOException { + orientation = Orientation.readFrom(in); + int holes = in.readVInt(); + for (int i = 0; i < holes; i++) { + polygon(new PolygonBuilder(in)); + } + } + + @Override + public void writeTo(StreamOutput out) throws IOException { + orientation.writeTo(out); + out.writeVInt(polygons.size()); + for (PolygonBuilder polygon : polygons) { + polygon.writeTo(out); + } + } + public Orientation orientation() { return this.orientation; } @@ -70,7 +95,7 @@ public class MultiPolygonBuilder extends ShapeBuilder { /** * get the list of polygons */ - public ArrayList<PolygonBuilder> polygons() { + public List<PolygonBuilder> polygons() { return polygons; } @@ -134,23 +159,4 @@ public class MultiPolygonBuilder extends ShapeBuilder { return Objects.equals(polygons, other.polygons) && Objects.equals(orientation, other.orientation); } - - @Override - public void writeTo(StreamOutput out) throws IOException { - orientation.writeTo(out); - out.writeVInt(polygons.size()); - for (PolygonBuilder polygon : polygons) { - polygon.writeTo(out); - } - } - - @Override - public MultiPolygonBuilder readFrom(StreamInput in) throws IOException { - MultiPolygonBuilder polyBuilder = new MultiPolygonBuilder(Orientation.readFrom(in)); - int holes = in.readVInt(); - for (int i = 0; i < holes; i++) { - polyBuilder.polygon(PolygonBuilder.PROTOTYPE.readFrom(in)); - } - return polyBuilder; - } } |