Mercurial > hg > semantic-sia
view src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java @ 94:fedf516f6a78 tip
test file
author | stevenh |
---|---|
date | Mon, 29 Dec 2014 15:16:22 +0000 |
parents | 00ab451e2692 |
children |
line wrap: on
line source
package org.qmul.eecs.c4dm.sia.model; import java.util.Vector; import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; public class NDimensionalObject implements Comparable { private Vector<DimensionValue> dimensionValues; public NDimensionalObject() { super(); } /** * @return the dimensionValue */ public Vector<DimensionValue> getDimensionValues() { return dimensionValues; } /** * @param dimensionValue the dimensionValue to set */ public void setDimensionValues(Vector<DimensionValue> dimensionValues) { this.dimensionValues = dimensionValues; } public double getDimensionValue(int dimension) throws DimensionException { for (DimensionValue dv : this.getDimensionValues()) { if (dv.getDimension() == dimension) return dv.getValue(); } throw new DimensionException("No value for dimension " + dimension); } /* (non-Javadoc) * @see java.lang.Comparable#compareTo(java.lang.Object) */ @Override public int compareTo(Object o2) { NDimensionalObject ndim2 = (NDimensionalObject)o2; Vector<DimensionValue> ndim2DimVals = ndim2.getDimensionValues(); int ndim2DimSize = ndim2DimVals.size(); if (ndim2DimSize != this.getDimensionValues().size()) throw new ClassCastException("NDimensionalObjects have an unequal number of dimensions"); for (int dimension = 1; dimension <= ndim2DimSize; dimension++) { double dimension1 = 0; try { dimension1 = this.getDimensionValue(dimension); } catch (DimensionException e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(-1); } double dimension2 = 0; try { dimension2 = ndim2.getDimensionValue(dimension); } catch (DimensionException e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(-1); } if (dimension1 < dimension2) { return -1; } else if (dimension1 > dimension2) { return 1; } } return 0; } }