package org.geojson; import java.util.Arrays; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnore; public class Polygon extends Geometry> { public Polygon() { } public Polygon(List polygon) { add(polygon); } public Polygon(LngLatAlt... polygon) { add(Arrays.asList(polygon)); } public void setExteriorRing(List points) { if (coordinates.isEmpty()) { coordinates.add(0, points); } else { coordinates.set(0, points); } } @JsonIgnore public List getExteriorRing() { assertExteriorRing(); return coordinates.get(0); } @JsonIgnore public List> getInteriorRings() { assertExteriorRing(); return coordinates.subList(1, coordinates.size()); } public List getInteriorRing(int index) { assertExteriorRing(); return coordinates.get(1 + index); } public void addInteriorRing(List points) { assertExteriorRing(); coordinates.add(points); } public void addInteriorRing(LngLatAlt... points) { assertExteriorRing(); coordinates.add(Arrays.asList(points)); } private void assertExteriorRing() { if (coordinates.isEmpty()) throw new RuntimeException("No exterior ring definied"); } @Override public T accept(GeoJsonObjectVisitor geoJsonObjectVisitor) { return geoJsonObjectVisitor.visit(this); } @Override public String toString() { return "Polygon{} " + super.toString(); } }