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 }