changeset 25:bddecf79dd3b

new
author stevenh
date Tue, 08 Jan 2013 18:41:41 +0000
parents 565a4fb40d0e
children 2681a72cc8c9
files src/org/qmul/eecs/c4dm/sia/model/SiatecX.java
diffstat 1 files changed, 103 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/qmul/eecs/c4dm/sia/model/SiatecX.java	Tue Jan 08 18:41:41 2013 +0000
@@ -0,0 +1,103 @@
+package org.qmul.eecs.c4dm.sia.model;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class SiatecX implements Comparable {
+	
+	private ArrayList<NDimensionalObject> q;
+	private int i;
+	
+	/**
+	 * @return
+	 */
+	public ArrayList<NDimensionalObject> getQ() {
+		return q;
+	}
+	
+	/**
+	 * @param q
+	 */
+	public void setQ(ArrayList<NDimensionalObject> q) {
+		this.q = q;
+	}
+	
+	/**
+	 * @return
+	 */
+	public int getI() {
+		return i;
+	}
+	
+	/**
+	 * @param i
+	 */
+	public void setI(int i) {
+		this.i = i;
+	}
+
+	@Override
+	public int compareTo(Object o2) {
+		
+		SiatecX siatecX2 = (SiatecX)o2;
+		int compareQResult = compareToIgnoreI(siatecX2);
+		
+		if (compareQResult != 0)
+		{
+			return compareQResult;
+		}
+		
+		// q1 and q2 are exactly equal, so compare i1 and i2
+		int i1 = this.getI();
+		int i2 = siatecX2.getI();
+
+		if (i1 < i2)
+		{
+			return -1;
+		}
+		else if (i1 > i2)
+		{
+			return 1;
+		}
+		
+		// i1 and i2 are equal too, so return 0
+		return 0;
+	}
+	
+	public int compareToIgnoreI(SiatecX siatecX2) {
+		
+		ArrayList<NDimensionalObject> q1 = this.getQ();
+		ArrayList<NDimensionalObject> q2 = siatecX2.getQ();
+		
+		int q1Size = q1.size();
+		int q2Size = q2.size();
+
+		// Check whether q1 < q2
+
+		// First check for differing vector lengths
+		if (q1Size < q2Size)
+		{
+			return -1;
+		}
+		else if (q1Size > q2Size)
+		{
+			return 1;
+		}
+
+		// q1 and q2 are of equal length, so compare contents of both
+		Iterator<NDimensionalObject> q2Iter = q2.iterator();
+		for (NDimensionalObject nDimObj1: q1)
+		{
+			NDimensionalObject nDimObj2 = q2Iter.next();
+			int compareResult = nDimObj1.compareTo(nDimObj2);
+			if (compareResult != 0)
+			{
+				return compareResult;
+			}
+		}
+		
+		return 0;
+	}
+
+
+}