steve@0
|
1 package org.qmul.eecs.c4dm.sia.model;
|
steve@0
|
2
|
stevenh@7
|
3 import java.util.Iterator;
|
steve@0
|
4 import java.util.Vector;
|
steve@0
|
5
|
steve@0
|
6 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException;
|
steve@0
|
7
|
stevenh@7
|
8 public class NDimensionalObject implements Comparable {
|
steve@0
|
9
|
steve@0
|
10 private Vector<DimensionValue> dimensionValues;
|
steve@0
|
11
|
steve@0
|
12 public NDimensionalObject() {
|
steve@0
|
13 super();
|
steve@0
|
14 }
|
steve@0
|
15
|
steve@0
|
16 /**
|
steve@0
|
17 * @return the dimensionValue
|
steve@0
|
18 */
|
steve@0
|
19 public Vector<DimensionValue> getDimensionValues() {
|
steve@0
|
20 return dimensionValues;
|
steve@0
|
21 }
|
steve@0
|
22
|
steve@0
|
23 /**
|
steve@0
|
24 * @param dimensionValue the dimensionValue to set
|
steve@0
|
25 */
|
steve@0
|
26 public void setDimensionValues(Vector<DimensionValue> dimensionValues) {
|
steve@0
|
27 this.dimensionValues = dimensionValues;
|
steve@0
|
28 }
|
steve@0
|
29
|
steve@0
|
30 public double getDimensionValue(int dimension) throws DimensionException {
|
steve@0
|
31 for (DimensionValue dv : this.getDimensionValues())
|
steve@0
|
32 {
|
steve@0
|
33 if (dv.getDimension() == dimension)
|
steve@0
|
34 return dv.getValue();
|
steve@0
|
35 }
|
steve@0
|
36 throw new DimensionException("No value for dimension " + dimension);
|
steve@0
|
37 }
|
steve@0
|
38
|
stevenh@7
|
39 /* (non-Javadoc)
|
stevenh@7
|
40 * @see java.lang.Comparable#compareTo(java.lang.Object)
|
stevenh@7
|
41 */
|
stevenh@7
|
42 @Override
|
stevenh@7
|
43 public int compareTo(Object o2) {
|
stevenh@7
|
44 NDimensionalObject ndim2 = (NDimensionalObject)o2;
|
stevenh@7
|
45
|
stevenh@7
|
46 Vector<DimensionValue> ndim2DimVals = ndim2.getDimensionValues();
|
stevenh@7
|
47
|
stevenh@7
|
48 int ndim2DimSize = ndim2DimVals.size();
|
stevenh@7
|
49
|
stevenh@7
|
50 if (ndim2DimSize != this.getDimensionValues().size())
|
stevenh@7
|
51 throw new ClassCastException("NDimensionalObject have an unequal number of dimensions");
|
stevenh@7
|
52
|
stevenh@7
|
53 for (int dimension = 1; dimension <= ndim2DimSize; dimension++)
|
stevenh@7
|
54 {
|
stevenh@7
|
55 double dimension1 = 0;
|
stevenh@7
|
56 try {
|
stevenh@7
|
57 dimension1 = this.getDimensionValue(dimension);
|
stevenh@7
|
58 } catch (DimensionException e) {
|
stevenh@7
|
59 System.out.println(e.getMessage());
|
stevenh@7
|
60 e.printStackTrace();
|
stevenh@7
|
61 System.exit(-1);
|
stevenh@7
|
62 }
|
stevenh@7
|
63 double dimension2 = 0;
|
stevenh@7
|
64 try {
|
stevenh@7
|
65 dimension2 = ndim2.getDimensionValue(dimension);
|
stevenh@7
|
66 } catch (DimensionException e) {
|
stevenh@7
|
67 System.out.println(e.getMessage());
|
stevenh@7
|
68 e.printStackTrace();
|
stevenh@7
|
69 System.exit(-1);
|
stevenh@7
|
70 }
|
stevenh@7
|
71
|
stevenh@7
|
72 if (dimension1 < dimension2)
|
stevenh@7
|
73 {
|
stevenh@7
|
74 return -1;
|
stevenh@7
|
75 }
|
stevenh@7
|
76 else if (dimension1 > dimension2)
|
stevenh@7
|
77 {
|
stevenh@7
|
78 return 1;
|
stevenh@7
|
79 }
|
stevenh@7
|
80 }
|
stevenh@7
|
81
|
stevenh@7
|
82 return 0;
|
stevenh@7
|
83 }
|
stevenh@7
|
84
|
steve@0
|
85 } |