summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/common/geo/builders/MultiPolygonBuilder.java
diff options
context:
space:
mode:
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.java52
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;
- }
}