steve@0
|
1 package org.qmul.eecs.c4dm.sia.model;
|
steve@0
|
2
|
stevenh@28
|
3 import java.util.Vector;
|
stevenh@28
|
4
|
stevenh@28
|
5 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException;
|
stevenh@28
|
6 import org.qmul.eecs.c4dm.sia.rdf.Namespaces;
|
steve@0
|
7
|
steve@0
|
8 import com.hp.hpl.jena.rdf.model.Resource;
|
steve@0
|
9
|
steve@0
|
10 /**
|
steve@0
|
11 * @author stevenhargreaves
|
steve@0
|
12 *
|
steve@0
|
13 */
|
stevenh@8
|
14 public class VectorTableElement extends NDimensionalObject {
|
steve@0
|
15
|
steve@0
|
16 private Datapoint fromDatapoint;
|
steve@0
|
17 private Datapoint toDatapoint;
|
stevenh@28
|
18 private NDimensionalObject vector;
|
steve@0
|
19 private Resource resource;
|
steve@0
|
20
|
stevenh@28
|
21 public static final String RESOURCE_URI = Namespaces.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
|
stevenh@28
|
46 * @throws DimensionException
|
steve@0
|
47 */
|
stevenh@28
|
48 public void setFromDatapoint(Datapoint fromDatapoint) throws DimensionException {
|
steve@0
|
49 this.fromDatapoint = fromDatapoint;
|
stevenh@28
|
50 setVector();
|
steve@0
|
51 }
|
steve@0
|
52
|
steve@0
|
53 /**
|
steve@0
|
54 * @return
|
steve@0
|
55 */
|
steve@0
|
56 public Datapoint getToDatapoint() {
|
steve@0
|
57 return toDatapoint;
|
steve@0
|
58 }
|
steve@0
|
59
|
steve@0
|
60 /**
|
steve@0
|
61 * @param toDatapoint
|
stevenh@28
|
62 * @throws DimensionException
|
steve@0
|
63 */
|
stevenh@28
|
64 public void setToDatapoint(Datapoint toDatapoint) throws DimensionException {
|
steve@0
|
65 this.toDatapoint = toDatapoint;
|
stevenh@28
|
66 setVector();
|
stevenh@28
|
67 }
|
stevenh@28
|
68
|
stevenh@28
|
69 /**
|
stevenh@28
|
70 * @throws DimensionException
|
stevenh@28
|
71 */
|
stevenh@28
|
72 private void setVector() throws DimensionException {
|
stevenh@28
|
73 NDimensionalObject vector = new NDimensionalObject();
|
stevenh@28
|
74 Vector<DimensionValue> dimVals = new Vector<DimensionValue>();
|
stevenh@28
|
75
|
stevenh@28
|
76 if (this.getFromDatapoint() != null && this.getToDatapoint() != null)
|
stevenh@28
|
77 {
|
stevenh@28
|
78 int fromDimValsSize = this.getFromDatapoint().getDimensionValues().size();
|
stevenh@28
|
79 int toDimValsSize = this.getToDatapoint().getDimensionValues().size();
|
stevenh@28
|
80
|
stevenh@28
|
81 if (fromDimValsSize != toDimValsSize)
|
stevenh@28
|
82 throw new DimensionException("'from' and 'to' Datapoints have an unequal number of dimensions");
|
stevenh@28
|
83
|
stevenh@28
|
84 DimensionValue dimVal;
|
stevenh@28
|
85
|
stevenh@28
|
86 for (int dim = 1; dim <= fromDimValsSize; dim++)
|
stevenh@28
|
87 {
|
stevenh@28
|
88 dimVal = new DimensionValue();
|
stevenh@28
|
89 double fromDimVal = this.getFromDatapoint().getDimensionValue(dim);
|
stevenh@28
|
90 double toDimVal = this.getToDatapoint().getDimensionValue(dim);
|
stevenh@28
|
91 dimVal.setDimension(dim);
|
stevenh@28
|
92 dimVal.setValue(toDimVal - fromDimVal);
|
stevenh@28
|
93 dimVals.add(dimVal);
|
stevenh@28
|
94 }
|
stevenh@28
|
95 vector.setDimensionValues(dimVals);
|
stevenh@28
|
96 this.vector = vector;
|
stevenh@28
|
97 }
|
stevenh@28
|
98 }
|
stevenh@28
|
99
|
stevenh@28
|
100 public NDimensionalObject getVector() {
|
stevenh@28
|
101
|
stevenh@28
|
102 return this.vector;
|
steve@0
|
103 }
|
steve@0
|
104
|
steve@0
|
105 /* (non-Javadoc)
|
steve@0
|
106 * @see java.lang.Comparable#compareTo(java.lang.Object)
|
steve@0
|
107 */
|
steve@0
|
108 @Override
|
steve@0
|
109 public int compareTo(Object o2) {
|
steve@0
|
110
|
stevenh@8
|
111 int compareResult = super.compareTo(o2);
|
steve@0
|
112
|
stevenh@8
|
113 if (compareResult == 0)
|
stevenh@8
|
114 {
|
stevenh@8
|
115 VectorTableElement vte2 = (VectorTableElement)o2;
|
steve@0
|
116
|
stevenh@8
|
117 if (this.getFromDatapoint().getOrderedIndex() < vte2.getFromDatapoint().getOrderedIndex())
|
steve@0
|
118 {
|
steve@0
|
119 return -1;
|
steve@0
|
120 }
|
stevenh@8
|
121 else if (this.getFromDatapoint().getOrderedIndex() > vte2.getFromDatapoint().getOrderedIndex())
|
steve@0
|
122 {
|
steve@0
|
123 return 1;
|
steve@0
|
124 }
|
stevenh@8
|
125 else
|
stevenh@8
|
126 {
|
stevenh@8
|
127 return 0;
|
stevenh@8
|
128 }
|
steve@0
|
129 }
|
stevenh@8
|
130 return compareResult;
|
steve@0
|
131 }
|
steve@0
|
132
|
stevenh@8
|
133 public int compareToIgnoreDatapoints(Object o2) {
|
stevenh@8
|
134
|
stevenh@8
|
135 int compareResult = super.compareTo(o2);
|
stevenh@8
|
136 return compareResult;
|
stevenh@8
|
137 }
|
steve@0
|
138 }
|