package org.activityinfo.geoadmin.locations; import java.util.Map; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryCollection; import com.vividsolutions.jts.geom.Point; import org.activityinfo.geoadmin.ImportFeature; import org.activityinfo.geoadmin.model.AdminEntity; import com.google.common.collect.Maps; public class LocationFeature { private ImportFeature feature; private Map<Integer, AdminEntity> entities; private int id; public LocationFeature(ImportFeature feature) { this.feature = feature; this.entities = Maps.newHashMap(); } public ImportFeature getFeature() { return feature; } public Map<Integer, AdminEntity> getEntities() { return entities; } public Point getPoint() { return toPoint(feature.getGeometry()); } private Point toPoint(Geometry geometry) { if(geometry instanceof Point) { return (Point) geometry; } else if(geometry instanceof GeometryCollection) { GeometryCollection gc = (GeometryCollection) geometry; if(gc.getNumGeometries() == 1) { return toPoint(gc.getGeometryN(0)); } } throw new IllegalArgumentException("Expected point geometry"); } public void setId(int id) { this.id = id; } public int getId() { return id; } }