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;
+	}
+
+}