1 package org.geojson; 2 3 import java.util.Arrays; 4 import java.util.List; 5 6 import com.fasterxml.jackson.annotation.JsonIgnore; 7 8 public class Polygon extends Geometry<List<LngLatAlt>> { 9 Polygon()10 public Polygon() { 11 } 12 Polygon(List<LngLatAlt> polygon)13 public Polygon(List<LngLatAlt> polygon) { 14 add(polygon); 15 } 16 Polygon(LngLatAlt... polygon)17 public Polygon(LngLatAlt... polygon) { 18 add(Arrays.asList(polygon)); 19 } 20 setExteriorRing(List<LngLatAlt> points)21 public void setExteriorRing(List<LngLatAlt> points) { 22 if (coordinates.isEmpty()) { 23 coordinates.add(0, points); 24 } else { 25 coordinates.set(0, points); 26 } 27 } 28 29 @JsonIgnore getExteriorRing()30 public List<LngLatAlt> getExteriorRing() { 31 assertExteriorRing(); 32 return coordinates.get(0); 33 } 34 35 @JsonIgnore getInteriorRings()36 public List<List<LngLatAlt>> getInteriorRings() { 37 assertExteriorRing(); 38 return coordinates.subList(1, coordinates.size()); 39 } 40 getInteriorRing(int index)41 public List<LngLatAlt> getInteriorRing(int index) { 42 assertExteriorRing(); 43 return coordinates.get(1 + index); 44 } 45 addInteriorRing(List<LngLatAlt> points)46 public void addInteriorRing(List<LngLatAlt> points) { 47 assertExteriorRing(); 48 coordinates.add(points); 49 } 50 addInteriorRing(LngLatAlt... points)51 public void addInteriorRing(LngLatAlt... points) { 52 assertExteriorRing(); 53 coordinates.add(Arrays.asList(points)); 54 } 55 assertExteriorRing()56 private void assertExteriorRing() { 57 if (coordinates.isEmpty()) 58 throw new RuntimeException("No exterior ring definied"); 59 } 60 61 @Override accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor)62 public <T> T accept(GeoJsonObjectVisitor<T> geoJsonObjectVisitor) { 63 return geoJsonObjectVisitor.visit(this); 64 } 65 66 @Override toString()67 public String toString() { 68 return "Polygon{} " + super.toString(); 69 } 70 } 71