AbstractGeometryCollection.java
package org.cugos.wkg;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* An abstract base class for GeometryCollections
* @param <T> The type of Geometry
*/
public abstract class AbstractGeometryCollection<T extends Geometry> extends Geometry {
/**
* The List of Geometries
*/
protected final List<T> geometries;
/**
* Create a new AbstractGeometryCollection
* @param geometries A List of Geometries
* @param dimension The Dimension
* @param srid The SRID
*/
public AbstractGeometryCollection(List<T> geometries, Dimension dimension, String srid) {
super(dimension, srid);
this.geometries = Collections.unmodifiableList(geometries);
}
@Override
public boolean isEmpty() {
return this.geometries.isEmpty();
}
@Override
public String toString() {
return new WKTWriter().write(this);
}
@Override
public int getNumberOfCoordinates() {
int numberOfCoordinates = 0;
for(Geometry geometry : this.geometries) {
numberOfCoordinates += geometry.getNumberOfCoordinates();
}
return numberOfCoordinates;
}
@Override
public List<Coordinate> getCoordinates() {
List<Coordinate> coordinates = new ArrayList<Coordinate>();
for(Geometry geometry : geometries) {
coordinates.addAll(geometry.getCoordinates());
}
return Collections.unmodifiableList(coordinates);
}
}