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 public class Datapoint extends NDimensionalObject implements Comparable {
|
steve@0
|
12
|
steve@0
|
13 private Resource resource;
|
steve@0
|
14 private int orderedIndex;
|
steve@0
|
15
|
steve@0
|
16 public static final String RESOURCE_URI = SiaMain.SIA_NS_URI + "Datapoint";
|
steve@0
|
17
|
steve@0
|
18 /**
|
steve@0
|
19 * @return the resource
|
steve@0
|
20 */
|
steve@0
|
21 public Resource getResource() {
|
steve@0
|
22 return resource;
|
steve@0
|
23 }
|
steve@0
|
24
|
steve@0
|
25 /**
|
steve@0
|
26 * @param resource the node to set
|
steve@0
|
27 */
|
steve@0
|
28 public void setResource(Resource resource) {
|
steve@0
|
29 this.resource = resource;
|
steve@0
|
30 }
|
steve@0
|
31
|
steve@0
|
32 /**
|
steve@0
|
33 * @return the orderedIndex
|
steve@0
|
34 */
|
steve@0
|
35 public int getOrderedIndex() {
|
steve@0
|
36 return orderedIndex;
|
steve@0
|
37 }
|
steve@0
|
38
|
steve@0
|
39 /**
|
steve@0
|
40 * @param orderedIndex the orderedIndex to set
|
steve@0
|
41 */
|
steve@0
|
42 public void setOrderedIndex(int orderedIndex) {
|
steve@0
|
43 this.orderedIndex = orderedIndex;
|
steve@0
|
44 }
|
steve@0
|
45
|
steve@0
|
46 @Override
|
steve@0
|
47 public int compareTo(Object o2) {
|
steve@0
|
48 Datapoint datapoint2 = (Datapoint)o2;
|
steve@0
|
49
|
steve@0
|
50 Vector<DimensionValue> datapoint2DimVals = datapoint2.getDimensionValues();
|
steve@0
|
51
|
steve@0
|
52 int datapoint2DimSize = datapoint2DimVals.size();
|
steve@0
|
53
|
steve@0
|
54 if (datapoint2DimSize != this.getDimensionValues().size())
|
steve@0
|
55 throw new ClassCastException("Datapoints have an unequal number of dimensions");
|
steve@0
|
56
|
steve@0
|
57 Iterator<DimensionValue> datapoint1DimValsIter = this.getDimensionValues().iterator();
|
steve@0
|
58 Iterator<DimensionValue> datapoint2DimValsIter = datapoint2DimVals.iterator();
|
steve@0
|
59
|
steve@0
|
60 DimensionValue datapoint1DimVal;
|
steve@0
|
61 DimensionValue datapoint2DimVal;
|
steve@0
|
62
|
steve@0
|
63 for (int dimension = 1; dimension <= datapoint2DimSize; dimension++)
|
steve@0
|
64 {
|
steve@0
|
65 double dimension1 = 0;
|
steve@0
|
66 try {
|
steve@0
|
67 dimension1 = this.getDimensionValue(dimension);
|
steve@0
|
68 } catch (DimensionException e) {
|
steve@0
|
69 // TODO Auto-generated catch block
|
steve@0
|
70 System.out.println(e.getMessage());
|
steve@0
|
71 e.printStackTrace();
|
steve@0
|
72 }
|
steve@0
|
73 double dimension2 = 0;
|
steve@0
|
74 try {
|
steve@0
|
75 dimension2 = datapoint2.getDimensionValue(dimension);
|
steve@0
|
76 } catch (DimensionException e) {
|
steve@0
|
77 // TODO Auto-generated catch block
|
steve@0
|
78 System.out.println(e.getMessage());
|
steve@0
|
79 e.printStackTrace();
|
steve@0
|
80 }
|
steve@0
|
81
|
steve@0
|
82 if (dimension1 < dimension2)
|
steve@0
|
83 {
|
steve@0
|
84 return -1;
|
steve@0
|
85 }
|
steve@0
|
86 else if (dimension1 > dimension2)
|
steve@0
|
87 {
|
steve@0
|
88 return 1;
|
steve@0
|
89 }
|
steve@0
|
90 }
|
steve@0
|
91
|
steve@0
|
92 return 0;
|
steve@0
|
93 }
|
steve@0
|
94
|
steve@0
|
95 }
|