steve@0
|
1 package org.qmul.eecs.c4dm.sia.model;
|
steve@0
|
2
|
steve@0
|
3 import java.util.Iterator;
|
steve@0
|
4 import java.util.Vector;
|
steve@0
|
5
|
steve@0
|
6 import org.qmul.eecs.c4dm.sia.SiaMain;
|
steve@0
|
7 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException;
|
steve@0
|
8
|
steve@0
|
9 import com.hp.hpl.jena.rdf.model.Resource;
|
steve@0
|
10
|
steve@0
|
11 /**
|
steve@0
|
12 * @author stevenhargreaves
|
steve@0
|
13 *
|
steve@0
|
14 */
|
steve@0
|
15 public class VectorTableElement extends NDimensionalObject implements Comparable {
|
steve@0
|
16
|
steve@0
|
17 private Datapoint fromDatapoint;
|
steve@0
|
18 private Datapoint toDatapoint;
|
steve@0
|
19 private Resource resource;
|
steve@0
|
20
|
steve@0
|
21 public static final String RESOURCE_URI = SiaMain.SIA_NS_URI + "VectorTableElement";
|
steve@0
|
22
|
steve@0
|
23 /**
|
steve@0
|
24 * @return
|
steve@0
|
25 */
|
steve@0
|
26 public Resource getResource() {
|
steve@0
|
27 return resource;
|
steve@0
|
28 }
|
steve@0
|
29
|
steve@0
|
30 /**
|
steve@0
|
31 * @param resource
|
steve@0
|
32 */
|
steve@0
|
33 public void setResource(Resource resource) {
|
steve@0
|
34 this.resource = resource;
|
steve@0
|
35 }
|
steve@0
|
36
|
steve@0
|
37 /**
|
steve@0
|
38 * @return
|
steve@0
|
39 */
|
steve@0
|
40 public Datapoint getFromDatapoint() {
|
steve@0
|
41 return fromDatapoint;
|
steve@0
|
42 }
|
steve@0
|
43
|
steve@0
|
44 /**
|
steve@0
|
45 * @param fromDatapoint
|
steve@0
|
46 */
|
steve@0
|
47 public void setFromDatapoint(Datapoint fromDatapoint) {
|
steve@0
|
48 this.fromDatapoint = fromDatapoint;
|
steve@0
|
49 }
|
steve@0
|
50
|
steve@0
|
51 /**
|
steve@0
|
52 * @return
|
steve@0
|
53 */
|
steve@0
|
54 public Datapoint getToDatapoint() {
|
steve@0
|
55 return toDatapoint;
|
steve@0
|
56 }
|
steve@0
|
57
|
steve@0
|
58 /**
|
steve@0
|
59 * @param toDatapoint
|
steve@0
|
60 */
|
steve@0
|
61 public void setToDatapoint(Datapoint toDatapoint) {
|
steve@0
|
62 this.toDatapoint = toDatapoint;
|
steve@0
|
63 }
|
steve@0
|
64
|
steve@0
|
65 /* (non-Javadoc)
|
steve@0
|
66 * @see java.lang.Comparable#compareTo(java.lang.Object)
|
steve@0
|
67 */
|
steve@0
|
68 @Override
|
steve@0
|
69 public int compareTo(Object o2) {
|
steve@0
|
70 VectorTableElement vte2 = (VectorTableElement)o2;
|
steve@0
|
71
|
steve@0
|
72 Vector<DimensionValue> vte2DimVals = vte2.getDimensionValues();
|
steve@0
|
73
|
steve@0
|
74 int vte2DimSize = vte2DimVals.size();
|
steve@0
|
75
|
steve@0
|
76 if (vte2DimSize != this.getDimensionValues().size())
|
steve@0
|
77 throw new ClassCastException("VectorTableElements have an unequal number of dimensions");
|
steve@0
|
78
|
steve@0
|
79 Iterator<DimensionValue> vte1DimValsIter = this.getDimensionValues().iterator();
|
steve@0
|
80 Iterator<DimensionValue> vte2DimValsIter = vte2DimVals.iterator();
|
steve@0
|
81
|
steve@0
|
82 DimensionValue vte1DimVal;
|
steve@0
|
83 DimensionValue vte2DimVal;
|
steve@0
|
84
|
steve@0
|
85 for (int dimension = 1; dimension <= vte2DimSize; dimension++)
|
steve@0
|
86 {
|
steve@0
|
87 double dimension1 = 0;
|
steve@0
|
88 try {
|
steve@0
|
89 dimension1 = this.getDimensionValue(dimension);
|
steve@0
|
90 } catch (DimensionException e) {
|
steve@0
|
91 System.out.println(e.getMessage());
|
steve@0
|
92 e.printStackTrace();
|
steve@0
|
93 System.exit(-1);
|
steve@0
|
94 }
|
steve@0
|
95 double dimension2 = 0;
|
steve@0
|
96 try {
|
steve@0
|
97 dimension2 = vte2.getDimensionValue(dimension);
|
steve@0
|
98 } catch (DimensionException e) {
|
steve@0
|
99 System.out.println(e.getMessage());
|
steve@0
|
100 e.printStackTrace();
|
steve@0
|
101 System.exit(-1);
|
steve@0
|
102 }
|
steve@0
|
103
|
steve@0
|
104 if (dimension1 < dimension2)
|
steve@0
|
105 {
|
steve@0
|
106 return -1;
|
steve@0
|
107 }
|
steve@0
|
108 else if (dimension1 > dimension2)
|
steve@0
|
109 {
|
steve@0
|
110 return 1;
|
steve@0
|
111 }
|
steve@0
|
112 }
|
steve@0
|
113
|
steve@0
|
114 if (this.getFromDatapoint().getOrderedIndex() < vte2.getFromDatapoint().getOrderedIndex())
|
steve@0
|
115 {
|
steve@0
|
116 return -1;
|
steve@0
|
117 }
|
steve@0
|
118 else if (this.getFromDatapoint().getOrderedIndex() > vte2.getFromDatapoint().getOrderedIndex())
|
steve@0
|
119 {
|
steve@0
|
120 return 1;
|
steve@0
|
121 }
|
steve@0
|
122 return 0;
|
steve@0
|
123 }
|
steve@0
|
124
|
steve@0
|
125 }
|