steve@0: package org.qmul.eecs.c4dm.sia.model; steve@0: steve@0: import java.util.Iterator; steve@0: import java.util.Vector; steve@0: steve@0: import org.qmul.eecs.c4dm.sia.SiaMain; steve@0: import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; steve@0: steve@0: import com.hp.hpl.jena.rdf.model.Resource; steve@0: steve@0: public class Datapoint extends NDimensionalObject implements Comparable { steve@0: steve@0: private Resource resource; steve@0: private int orderedIndex; steve@0: steve@0: public static final String RESOURCE_URI = SiaMain.SIA_NS_URI + "Datapoint"; steve@0: steve@0: /** steve@0: * @return the resource steve@0: */ steve@0: public Resource getResource() { steve@0: return resource; steve@0: } steve@0: steve@0: /** steve@0: * @param resource the node to set steve@0: */ steve@0: public void setResource(Resource resource) { steve@0: this.resource = resource; steve@0: } steve@0: steve@0: /** steve@0: * @return the orderedIndex steve@0: */ steve@0: public int getOrderedIndex() { steve@0: return orderedIndex; steve@0: } steve@0: steve@0: /** steve@0: * @param orderedIndex the orderedIndex to set steve@0: */ steve@0: public void setOrderedIndex(int orderedIndex) { steve@0: this.orderedIndex = orderedIndex; steve@0: } steve@0: steve@0: @Override steve@0: public int compareTo(Object o2) { steve@0: Datapoint datapoint2 = (Datapoint)o2; steve@0: steve@0: Vector datapoint2DimVals = datapoint2.getDimensionValues(); steve@0: steve@0: int datapoint2DimSize = datapoint2DimVals.size(); steve@0: steve@0: if (datapoint2DimSize != this.getDimensionValues().size()) steve@0: throw new ClassCastException("Datapoints have an unequal number of dimensions"); steve@0: steve@0: Iterator datapoint1DimValsIter = this.getDimensionValues().iterator(); steve@0: Iterator datapoint2DimValsIter = datapoint2DimVals.iterator(); steve@0: steve@0: DimensionValue datapoint1DimVal; steve@0: DimensionValue datapoint2DimVal; steve@0: steve@0: for (int dimension = 1; dimension <= datapoint2DimSize; dimension++) steve@0: { steve@0: double dimension1 = 0; steve@0: try { steve@0: dimension1 = this.getDimensionValue(dimension); steve@0: } catch (DimensionException e) { steve@0: // TODO Auto-generated catch block steve@0: System.out.println(e.getMessage()); steve@0: e.printStackTrace(); steve@0: } steve@0: double dimension2 = 0; steve@0: try { steve@0: dimension2 = datapoint2.getDimensionValue(dimension); steve@0: } catch (DimensionException e) { steve@0: // TODO Auto-generated catch block steve@0: System.out.println(e.getMessage()); steve@0: e.printStackTrace(); steve@0: } steve@0: steve@0: if (dimension1 < dimension2) steve@0: { steve@0: return -1; steve@0: } steve@0: else if (dimension1 > dimension2) steve@0: { steve@0: return 1; steve@0: } steve@0: } steve@0: steve@0: return 0; steve@0: } steve@0: steve@0: }