Mercurial > hg > semantic-sia
diff src/org/qmul/eecs/c4dm/sia/model/SiatecX.java @ 25:bddecf79dd3b
new
author | stevenh |
---|---|
date | Tue, 08 Jan 2013 18:41:41 +0000 |
parents | |
children |
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; + } + + +}