Mercurial > hg > semantic-sia
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 } |