steve@0: package org.qmul.eecs.c4dm.sia.model; steve@0: steve@0: import java.util.Vector; steve@0: steve@0: import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; steve@0: stevenh@7: public class NDimensionalObject implements Comparable { steve@0: steve@0: private Vector dimensionValues; steve@0: steve@0: public NDimensionalObject() { steve@0: super(); steve@0: } steve@0: steve@0: /** steve@0: * @return the dimensionValue steve@0: */ steve@0: public Vector getDimensionValues() { steve@0: return dimensionValues; steve@0: } steve@0: steve@0: /** steve@0: * @param dimensionValue the dimensionValue to set steve@0: */ steve@0: public void setDimensionValues(Vector dimensionValues) { steve@0: this.dimensionValues = dimensionValues; steve@0: } steve@0: steve@0: public double getDimensionValue(int dimension) throws DimensionException { steve@0: for (DimensionValue dv : this.getDimensionValues()) steve@0: { steve@0: if (dv.getDimension() == dimension) steve@0: return dv.getValue(); steve@0: } steve@0: throw new DimensionException("No value for dimension " + dimension); steve@0: } steve@0: stevenh@7: /* (non-Javadoc) stevenh@7: * @see java.lang.Comparable#compareTo(java.lang.Object) stevenh@7: */ stevenh@7: @Override stevenh@7: public int compareTo(Object o2) { stevenh@7: NDimensionalObject ndim2 = (NDimensionalObject)o2; stevenh@7: stevenh@7: Vector ndim2DimVals = ndim2.getDimensionValues(); stevenh@7: stevenh@7: int ndim2DimSize = ndim2DimVals.size(); stevenh@7: stevenh@7: if (ndim2DimSize != this.getDimensionValues().size()) stevenh@47: throw new ClassCastException("NDimensionalObjects have an unequal number of dimensions"); stevenh@7: stevenh@7: for (int dimension = 1; dimension <= ndim2DimSize; dimension++) stevenh@7: { stevenh@7: double dimension1 = 0; stevenh@7: try { stevenh@7: dimension1 = this.getDimensionValue(dimension); stevenh@7: } catch (DimensionException e) { stevenh@7: System.out.println(e.getMessage()); stevenh@7: e.printStackTrace(); stevenh@7: System.exit(-1); stevenh@7: } stevenh@7: double dimension2 = 0; stevenh@7: try { stevenh@7: dimension2 = ndim2.getDimensionValue(dimension); stevenh@7: } catch (DimensionException e) { stevenh@7: System.out.println(e.getMessage()); stevenh@7: e.printStackTrace(); stevenh@7: System.exit(-1); stevenh@7: } stevenh@7: stevenh@7: if (dimension1 < dimension2) stevenh@7: { stevenh@7: return -1; stevenh@7: } stevenh@7: else if (dimension1 > dimension2) stevenh@7: { stevenh@7: return 1; stevenh@7: } stevenh@7: } stevenh@7: stevenh@7: return 0; stevenh@7: } stevenh@7: steve@0: }