steve@0: package org.qmul.eecs.c4dm.sia.model; steve@0: stevenh@28: import java.util.Vector; stevenh@28: stevenh@28: import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; stevenh@28: import org.qmul.eecs.c4dm.sia.rdf.Namespaces; steve@0: steve@0: import com.hp.hpl.jena.rdf.model.Resource; steve@0: steve@0: /** steve@0: * @author stevenhargreaves steve@0: * steve@0: */ stevenh@8: public class VectorTableElement extends NDimensionalObject { steve@0: steve@0: private Datapoint fromDatapoint; steve@0: private Datapoint toDatapoint; stevenh@28: private NDimensionalObject vector; steve@0: private Resource resource; steve@0: stevenh@28: public static final String RESOURCE_URI = Namespaces.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 stevenh@28: * @throws DimensionException steve@0: */ stevenh@28: public void setFromDatapoint(Datapoint fromDatapoint) throws DimensionException { steve@0: this.fromDatapoint = fromDatapoint; stevenh@28: setVector(); 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 stevenh@28: * @throws DimensionException steve@0: */ stevenh@28: public void setToDatapoint(Datapoint toDatapoint) throws DimensionException { steve@0: this.toDatapoint = toDatapoint; stevenh@28: setVector(); stevenh@28: } stevenh@28: stevenh@28: /** stevenh@28: * @throws DimensionException stevenh@28: */ stevenh@28: private void setVector() throws DimensionException { stevenh@28: NDimensionalObject vector = new NDimensionalObject(); stevenh@28: Vector dimVals = new Vector(); stevenh@28: stevenh@28: if (this.getFromDatapoint() != null && this.getToDatapoint() != null) stevenh@28: { stevenh@28: int fromDimValsSize = this.getFromDatapoint().getDimensionValues().size(); stevenh@28: int toDimValsSize = this.getToDatapoint().getDimensionValues().size(); stevenh@28: stevenh@28: if (fromDimValsSize != toDimValsSize) stevenh@28: throw new DimensionException("'from' and 'to' Datapoints have an unequal number of dimensions"); stevenh@28: stevenh@28: DimensionValue dimVal; stevenh@28: stevenh@28: for (int dim = 1; dim <= fromDimValsSize; dim++) stevenh@28: { stevenh@28: dimVal = new DimensionValue(); stevenh@28: double fromDimVal = this.getFromDatapoint().getDimensionValue(dim); stevenh@28: double toDimVal = this.getToDatapoint().getDimensionValue(dim); stevenh@28: dimVal.setDimension(dim); stevenh@28: dimVal.setValue(toDimVal - fromDimVal); stevenh@28: dimVals.add(dimVal); stevenh@28: } stevenh@28: vector.setDimensionValues(dimVals); stevenh@28: this.vector = vector; stevenh@28: } stevenh@28: } stevenh@28: stevenh@28: public NDimensionalObject getVector() { stevenh@28: stevenh@28: return this.vector; 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: stevenh@8: int compareResult = super.compareTo(o2); steve@0: stevenh@8: if (compareResult == 0) stevenh@8: { stevenh@8: VectorTableElement vte2 = (VectorTableElement)o2; steve@0: stevenh@8: if (this.getFromDatapoint().getOrderedIndex() < vte2.getFromDatapoint().getOrderedIndex()) steve@0: { steve@0: return -1; steve@0: } stevenh@8: else if (this.getFromDatapoint().getOrderedIndex() > vte2.getFromDatapoint().getOrderedIndex()) steve@0: { steve@0: return 1; steve@0: } stevenh@8: else stevenh@8: { stevenh@8: return 0; stevenh@8: } steve@0: } stevenh@8: return compareResult; steve@0: } steve@0: stevenh@8: public int compareToIgnoreDatapoints(Object o2) { stevenh@8: stevenh@8: int compareResult = super.compareTo(o2); stevenh@8: return compareResult; stevenh@8: } steve@0: }