package com.revolsys.geometry.model.vertex;
import java.util.NoSuchElementException;
import com.revolsys.geometry.model.Punctual;
public class MultiPointVertex extends AbstractVertex {
private static final long serialVersionUID = 1L;
private int partIndex;
public MultiPointVertex(final Punctual geometry, final int... vertexId) {
super(geometry);
setVertexId(vertexId);
}
@Override
public double getCoordinate(final int axisIndex) {
final Punctual punctual = getPunctual();
return punctual.getCoordinate(this.partIndex, axisIndex);
}
@Override
public double getOrientaton() {
return 0;
}
@Override
public int getPartIndex() {
return this.partIndex;
}
public Punctual getPunctual() {
return (Punctual)getGeometry();
}
@Override
public int[] getVertexId() {
return new int[] {
this.partIndex, 0
};
}
@Override
public int getVertexIndex() {
return 0;
}
@Override
public double getX() {
final Punctual punctual = getPunctual();
return punctual.getX(this.partIndex);
}
@Override
public double getY() {
final Punctual punctual = getPunctual();
return punctual.getY(this.partIndex);
}
@Override
public boolean hasNext() {
final Punctual punctual = getPunctual();
if (punctual.isEmpty()) {
return false;
} else {
if (this.partIndex + 1 < punctual.getGeometryCount()) {
return true;
} else {
return false;
}
}
}
@Override
public boolean isFrom() {
return true;
}
@Override
public Vertex next() {
final Punctual punctual = getPunctual();
this.partIndex++;
if (this.partIndex < punctual.getGeometryCount()) {
return this;
} else {
throw new NoSuchElementException();
}
}
@Override
public void remove() {
throw new UnsupportedOperationException("Removing vertices not supported");
}
public void setPartIndex(final int partIndex) {
this.partIndex = partIndex;
}
public void setVertexId(final int... vertexId) {
this.partIndex = vertexId[0];
}
}