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: /** steve@0: * @author stevenhargreaves steve@0: * steve@0: */ steve@0: public class VectorTableElement extends NDimensionalObject implements Comparable { steve@0: steve@0: private Datapoint fromDatapoint; steve@0: private Datapoint toDatapoint; steve@0: private Resource resource; steve@0: steve@0: public static final String RESOURCE_URI = SiaMain.SIA_NS_URI + "VectorTableElement"; steve@0: steve@0: /** steve@0: * @return steve@0: */ steve@0: public Resource getResource() { steve@0: return resource; steve@0: } steve@0: steve@0: /** steve@0: * @param resource steve@0: */ steve@0: public void setResource(Resource resource) { steve@0: this.resource = resource; steve@0: } steve@0: steve@0: /** steve@0: * @return steve@0: */ steve@0: public Datapoint getFromDatapoint() { steve@0: return fromDatapoint; steve@0: } steve@0: steve@0: /** steve@0: * @param fromDatapoint steve@0: */ steve@0: public void setFromDatapoint(Datapoint fromDatapoint) { steve@0: this.fromDatapoint = fromDatapoint; steve@0: } steve@0: steve@0: /** steve@0: * @return steve@0: */ steve@0: public Datapoint getToDatapoint() { steve@0: return toDatapoint; steve@0: } steve@0: steve@0: /** steve@0: * @param toDatapoint steve@0: */ steve@0: public void setToDatapoint(Datapoint toDatapoint) { steve@0: this.toDatapoint = toDatapoint; steve@0: } steve@0: steve@0: /* (non-Javadoc) steve@0: * @see java.lang.Comparable#compareTo(java.lang.Object) steve@0: */ steve@0: @Override steve@0: public int compareTo(Object o2) { steve@0: VectorTableElement vte2 = (VectorTableElement)o2; steve@0: steve@0: Vector vte2DimVals = vte2.getDimensionValues(); steve@0: steve@0: int vte2DimSize = vte2DimVals.size(); steve@0: steve@0: if (vte2DimSize != this.getDimensionValues().size()) steve@0: throw new ClassCastException("VectorTableElements have an unequal number of dimensions"); steve@0: steve@0: Iterator vte1DimValsIter = this.getDimensionValues().iterator(); steve@0: Iterator vte2DimValsIter = vte2DimVals.iterator(); steve@0: steve@0: DimensionValue vte1DimVal; steve@0: DimensionValue vte2DimVal; steve@0: steve@0: for (int dimension = 1; dimension <= vte2DimSize; dimension++) steve@0: { steve@0: double dimension1 = 0; steve@0: try { steve@0: dimension1 = this.getDimensionValue(dimension); steve@0: } catch (DimensionException e) { steve@0: System.out.println(e.getMessage()); steve@0: e.printStackTrace(); steve@0: System.exit(-1); steve@0: } steve@0: double dimension2 = 0; steve@0: try { steve@0: dimension2 = vte2.getDimensionValue(dimension); steve@0: } catch (DimensionException e) { steve@0: System.out.println(e.getMessage()); steve@0: e.printStackTrace(); steve@0: System.exit(-1); 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: if (this.getFromDatapoint().getOrderedIndex() < vte2.getFromDatapoint().getOrderedIndex()) steve@0: { steve@0: return -1; steve@0: } steve@0: else if (this.getFromDatapoint().getOrderedIndex() > vte2.getFromDatapoint().getOrderedIndex()) steve@0: { steve@0: return 1; steve@0: } steve@0: return 0; steve@0: } steve@0: steve@0: }