/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.oregonstate.cartography.simplefeatures;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
/**
*
* @author marstonb
*/
public class GeometryCollection extends Geometry {
//Stores Geometry objects in an ArrayList called geometryList
ArrayList<Geometry> geometryList = new ArrayList<Geometry>();
private Graphics2D g2g;
//Returns the number of Geometry objects currently in GeometryCollection
public int getNumGeometries() {
return geometryList.size();
}
//Returns the Geometry object at a specified index
public Geometry getGeometryN(int index) {
return geometryList.get(index);
}
//Append a passed Geometry object to list of existing Geometry objects
public void addGeometry(Geometry addedGeometry) {
geometryList.add(addedGeometry);
}
//Calls the toString method of each of its Geometry objects and
//concatenate the returned strings.
@Override
public String toString() {
String geometryDesc = "";
//Iterates over all objects in the geometryList ArrayList
for (Geometry geometry : geometryList) {
// the variable point is a reference to a point in the variable arrayList
String desc = geometry.toString();
// append desc to a String object that is created outside of this for loop
geometryDesc += desc + "\n";
}
return geometryDesc;
}
@Override
public void paint(Graphics2D g2d) {
//Calls the paint() method for each feature
for (Geometry geometry : geometryList) {
//Paints feature
geometry.paint(g2d);
}
}
@Override
public Rectangle2D getBoundingBox() {
if (geometryList.size() < 1) {
return null;
}
Geometry firstGeom = getGeometryN(0);
Rectangle2D bb = firstGeom.getBoundingBox();
for (Geometry geometry : geometryList) {
bb = bb.createUnion(geometry.getBoundingBox());
}
return bb;
}
public Geometry[] toArray() {
ArrayList<Geometry> geometries = new ArrayList<>();
for (int i = 0; i < getNumGeometries(); i++) {
Geometry geometry = getGeometryN(i);
geometries.add(geometry);
}
return geometries.toArray(new Geometry[getNumGeometries()]);
}
}