Mercurial > hg > semantic-sia
diff src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java @ 7:ffd47645ca13
added the base version of the 'compareTo' method here, rather than in the subclasses
author | stevenh |
---|---|
date | Tue, 01 Jan 2013 21:16:49 +0000 |
parents | 08675ab08e7f |
children | 335959103cf1 |
line wrap: on
line diff
--- a/src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java Tue Jan 01 21:15:38 2013 +0000 +++ b/src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java Tue Jan 01 21:16:49 2013 +0000 @@ -1,10 +1,11 @@ package org.qmul.eecs.c4dm.sia.model; +import java.util.Iterator; import java.util.Vector; import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; -public class NDimensionalObject { +public class NDimensionalObject implements Comparable { private Vector<DimensionValue> dimensionValues; @@ -35,4 +36,50 @@ 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("NDimensionalObject 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; + } + } \ No newline at end of file