package com.revolsys.geometry.model.vertex;
import com.revolsys.geometry.model.BoundingBox;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.geometry.model.impl.AbstractPoint;
public abstract class AbstractVertex extends AbstractPoint implements Vertex {
private static final long serialVersionUID = 1L;
protected final Geometry geometry;
public AbstractVertex(final Geometry geometry) {
this.geometry = geometry;
}
@Override
public AbstractVertex clone() {
return (AbstractVertex)super.clone();
}
@Override
public BoundingBox getBoundingBox() {
final GeometryFactory geometryFactory = getGeometryFactory();
final double x = getX();
final double y = getY();
return geometryFactory.newBoundingBox(x, y);
}
@SuppressWarnings("unchecked")
@Override
public <V extends Geometry> V getGeometry() {
return (V)this.geometry;
}
@Override
public GeometryFactory getGeometryFactory() {
return this.geometry.getGeometryFactory();
}
}