comparison 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
comparison
equal deleted inserted replaced
6:7c2d7e0946b3 7:ffd47645ca13
1 package org.qmul.eecs.c4dm.sia.model; 1 package org.qmul.eecs.c4dm.sia.model;
2 2
3 import java.util.Iterator;
3 import java.util.Vector; 4 import java.util.Vector;
4 5
5 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; 6 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException;
6 7
7 public class NDimensionalObject { 8 public class NDimensionalObject implements Comparable {
8 9
9 private Vector<DimensionValue> dimensionValues; 10 private Vector<DimensionValue> dimensionValues;
10 11
11 public NDimensionalObject() { 12 public NDimensionalObject() {
12 super(); 13 super();
33 return dv.getValue(); 34 return dv.getValue();
34 } 35 }
35 throw new DimensionException("No value for dimension " + dimension); 36 throw new DimensionException("No value for dimension " + dimension);
36 } 37 }
37 38
39 /* (non-Javadoc)
40 * @see java.lang.Comparable#compareTo(java.lang.Object)
41 */
42 @Override
43 public int compareTo(Object o2) {
44 NDimensionalObject ndim2 = (NDimensionalObject)o2;
45
46 Vector<DimensionValue> ndim2DimVals = ndim2.getDimensionValues();
47
48 int ndim2DimSize = ndim2DimVals.size();
49
50 if (ndim2DimSize != this.getDimensionValues().size())
51 throw new ClassCastException("NDimensionalObject have an unequal number of dimensions");
52
53 for (int dimension = 1; dimension <= ndim2DimSize; dimension++)
54 {
55 double dimension1 = 0;
56 try {
57 dimension1 = this.getDimensionValue(dimension);
58 } catch (DimensionException e) {
59 System.out.println(e.getMessage());
60 e.printStackTrace();
61 System.exit(-1);
62 }
63 double dimension2 = 0;
64 try {
65 dimension2 = ndim2.getDimensionValue(dimension);
66 } catch (DimensionException e) {
67 System.out.println(e.getMessage());
68 e.printStackTrace();
69 System.exit(-1);
70 }
71
72 if (dimension1 < dimension2)
73 {
74 return -1;
75 }
76 else if (dimension1 > dimension2)
77 {
78 return 1;
79 }
80 }
81
82 return 0;
83 }
84
38 } 85 }