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