Mercurial > hg > semantic-sia
annotate src/org/qmul/eecs/c4dm/sia/model/SiatecX.java @ 94:fedf516f6a78 tip
test file
author | stevenh |
---|---|
date | Mon, 29 Dec 2014 15:16:22 +0000 |
parents | bddecf79dd3b |
children |
rev | line source |
---|---|
stevenh@25 | 1 package org.qmul.eecs.c4dm.sia.model; |
stevenh@25 | 2 |
stevenh@25 | 3 import java.util.ArrayList; |
stevenh@25 | 4 import java.util.Iterator; |
stevenh@25 | 5 |
stevenh@25 | 6 public class SiatecX implements Comparable { |
stevenh@25 | 7 |
stevenh@25 | 8 private ArrayList<NDimensionalObject> q; |
stevenh@25 | 9 private int i; |
stevenh@25 | 10 |
stevenh@25 | 11 /** |
stevenh@25 | 12 * @return |
stevenh@25 | 13 */ |
stevenh@25 | 14 public ArrayList<NDimensionalObject> getQ() { |
stevenh@25 | 15 return q; |
stevenh@25 | 16 } |
stevenh@25 | 17 |
stevenh@25 | 18 /** |
stevenh@25 | 19 * @param q |
stevenh@25 | 20 */ |
stevenh@25 | 21 public void setQ(ArrayList<NDimensionalObject> q) { |
stevenh@25 | 22 this.q = q; |
stevenh@25 | 23 } |
stevenh@25 | 24 |
stevenh@25 | 25 /** |
stevenh@25 | 26 * @return |
stevenh@25 | 27 */ |
stevenh@25 | 28 public int getI() { |
stevenh@25 | 29 return i; |
stevenh@25 | 30 } |
stevenh@25 | 31 |
stevenh@25 | 32 /** |
stevenh@25 | 33 * @param i |
stevenh@25 | 34 */ |
stevenh@25 | 35 public void setI(int i) { |
stevenh@25 | 36 this.i = i; |
stevenh@25 | 37 } |
stevenh@25 | 38 |
stevenh@25 | 39 @Override |
stevenh@25 | 40 public int compareTo(Object o2) { |
stevenh@25 | 41 |
stevenh@25 | 42 SiatecX siatecX2 = (SiatecX)o2; |
stevenh@25 | 43 int compareQResult = compareToIgnoreI(siatecX2); |
stevenh@25 | 44 |
stevenh@25 | 45 if (compareQResult != 0) |
stevenh@25 | 46 { |
stevenh@25 | 47 return compareQResult; |
stevenh@25 | 48 } |
stevenh@25 | 49 |
stevenh@25 | 50 // q1 and q2 are exactly equal, so compare i1 and i2 |
stevenh@25 | 51 int i1 = this.getI(); |
stevenh@25 | 52 int i2 = siatecX2.getI(); |
stevenh@25 | 53 |
stevenh@25 | 54 if (i1 < i2) |
stevenh@25 | 55 { |
stevenh@25 | 56 return -1; |
stevenh@25 | 57 } |
stevenh@25 | 58 else if (i1 > i2) |
stevenh@25 | 59 { |
stevenh@25 | 60 return 1; |
stevenh@25 | 61 } |
stevenh@25 | 62 |
stevenh@25 | 63 // i1 and i2 are equal too, so return 0 |
stevenh@25 | 64 return 0; |
stevenh@25 | 65 } |
stevenh@25 | 66 |
stevenh@25 | 67 public int compareToIgnoreI(SiatecX siatecX2) { |
stevenh@25 | 68 |
stevenh@25 | 69 ArrayList<NDimensionalObject> q1 = this.getQ(); |
stevenh@25 | 70 ArrayList<NDimensionalObject> q2 = siatecX2.getQ(); |
stevenh@25 | 71 |
stevenh@25 | 72 int q1Size = q1.size(); |
stevenh@25 | 73 int q2Size = q2.size(); |
stevenh@25 | 74 |
stevenh@25 | 75 // Check whether q1 < q2 |
stevenh@25 | 76 |
stevenh@25 | 77 // First check for differing vector lengths |
stevenh@25 | 78 if (q1Size < q2Size) |
stevenh@25 | 79 { |
stevenh@25 | 80 return -1; |
stevenh@25 | 81 } |
stevenh@25 | 82 else if (q1Size > q2Size) |
stevenh@25 | 83 { |
stevenh@25 | 84 return 1; |
stevenh@25 | 85 } |
stevenh@25 | 86 |
stevenh@25 | 87 // q1 and q2 are of equal length, so compare contents of both |
stevenh@25 | 88 Iterator<NDimensionalObject> q2Iter = q2.iterator(); |
stevenh@25 | 89 for (NDimensionalObject nDimObj1: q1) |
stevenh@25 | 90 { |
stevenh@25 | 91 NDimensionalObject nDimObj2 = q2Iter.next(); |
stevenh@25 | 92 int compareResult = nDimObj1.compareTo(nDimObj2); |
stevenh@25 | 93 if (compareResult != 0) |
stevenh@25 | 94 { |
stevenh@25 | 95 return compareResult; |
stevenh@25 | 96 } |
stevenh@25 | 97 } |
stevenh@25 | 98 |
stevenh@25 | 99 return 0; |
stevenh@25 | 100 } |
stevenh@25 | 101 |
stevenh@25 | 102 |
stevenh@25 | 103 } |