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