Mercurial > hg > semantic-sia
diff src/org/qmul/eecs/c4dm/sia/model/VectorTableElement.java @ 0:08675ab08e7f
New
author | Steven Hargreaves <steve.harg@gmail.com> |
---|---|
date | Sat, 29 Dec 2012 17:41:06 +0000 |
parents | |
children | 842ce6ca6e29 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/qmul/eecs/c4dm/sia/model/VectorTableElement.java Sat Dec 29 17:41:06 2012 +0000 @@ -0,0 +1,125 @@ +package org.qmul.eecs.c4dm.sia.model; + +import java.util.Iterator; +import java.util.Vector; + +import org.qmul.eecs.c4dm.sia.SiaMain; +import org.qmul.eecs.c4dm.sia.exceptions.DimensionException; + +import com.hp.hpl.jena.rdf.model.Resource; + +/** + * @author stevenhargreaves + * + */ +public class VectorTableElement extends NDimensionalObject implements Comparable { + + private Datapoint fromDatapoint; + private Datapoint toDatapoint; + private Resource resource; + + public static final String RESOURCE_URI = SiaMain.SIA_NS_URI + "VectorTableElement"; + + /** + * @return + */ + public Resource getResource() { + return resource; + } + + /** + * @param resource + */ + public void setResource(Resource resource) { + this.resource = resource; + } + + /** + * @return + */ + public Datapoint getFromDatapoint() { + return fromDatapoint; + } + + /** + * @param fromDatapoint + */ + public void setFromDatapoint(Datapoint fromDatapoint) { + this.fromDatapoint = fromDatapoint; + } + + /** + * @return + */ + public Datapoint getToDatapoint() { + return toDatapoint; + } + + /** + * @param toDatapoint + */ + public void setToDatapoint(Datapoint toDatapoint) { + this.toDatapoint = toDatapoint; + } + + /* (non-Javadoc) + * @see java.lang.Comparable#compareTo(java.lang.Object) + */ + @Override + public int compareTo(Object o2) { + VectorTableElement vte2 = (VectorTableElement)o2; + + Vector<DimensionValue> vte2DimVals = vte2.getDimensionValues(); + + int vte2DimSize = vte2DimVals.size(); + + if (vte2DimSize != this.getDimensionValues().size()) + throw new ClassCastException("VectorTableElements have an unequal number of dimensions"); + + Iterator<DimensionValue> vte1DimValsIter = this.getDimensionValues().iterator(); + Iterator<DimensionValue> vte2DimValsIter = vte2DimVals.iterator(); + + DimensionValue vte1DimVal; + DimensionValue vte2DimVal; + + for (int dimension = 1; dimension <= vte2DimSize; dimension++) + { + double dimension1 = 0; + try { + dimension1 = this.getDimensionValue(dimension); + } catch (DimensionException e) { + System.out.println(e.getMessage()); + e.printStackTrace(); + System.exit(-1); + } + double dimension2 = 0; + try { + dimension2 = vte2.getDimensionValue(dimension); + } catch (DimensionException e) { + System.out.println(e.getMessage()); + e.printStackTrace(); + System.exit(-1); + } + + if (dimension1 < dimension2) + { + return -1; + } + else if (dimension1 > dimension2) + { + return 1; + } + } + + if (this.getFromDatapoint().getOrderedIndex() < vte2.getFromDatapoint().getOrderedIndex()) + { + return -1; + } + else if (this.getFromDatapoint().getOrderedIndex() > vte2.getFromDatapoint().getOrderedIndex()) + { + return 1; + } + return 0; + } + +}