annotate src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java @ 7:ffd47645ca13

added the base version of the 'compareTo' method here, rather than in the subclasses
author stevenh
date Tue, 01 Jan 2013 21:16:49 +0000
parents 08675ab08e7f
children 335959103cf1
rev   line source
steve@0 1 package org.qmul.eecs.c4dm.sia.model;
steve@0 2
stevenh@7 3 import java.util.Iterator;
steve@0 4 import java.util.Vector;
steve@0 5
steve@0 6 import org.qmul.eecs.c4dm.sia.exceptions.DimensionException;
steve@0 7
stevenh@7 8 public class NDimensionalObject implements Comparable {
steve@0 9
steve@0 10 private Vector<DimensionValue> dimensionValues;
steve@0 11
steve@0 12 public NDimensionalObject() {
steve@0 13 super();
steve@0 14 }
steve@0 15
steve@0 16 /**
steve@0 17 * @return the dimensionValue
steve@0 18 */
steve@0 19 public Vector<DimensionValue> getDimensionValues() {
steve@0 20 return dimensionValues;
steve@0 21 }
steve@0 22
steve@0 23 /**
steve@0 24 * @param dimensionValue the dimensionValue to set
steve@0 25 */
steve@0 26 public void setDimensionValues(Vector<DimensionValue> dimensionValues) {
steve@0 27 this.dimensionValues = dimensionValues;
steve@0 28 }
steve@0 29
steve@0 30 public double getDimensionValue(int dimension) throws DimensionException {
steve@0 31 for (DimensionValue dv : this.getDimensionValues())
steve@0 32 {
steve@0 33 if (dv.getDimension() == dimension)
steve@0 34 return dv.getValue();
steve@0 35 }
steve@0 36 throw new DimensionException("No value for dimension " + dimension);
steve@0 37 }
steve@0 38
stevenh@7 39 /* (non-Javadoc)
stevenh@7 40 * @see java.lang.Comparable#compareTo(java.lang.Object)
stevenh@7 41 */
stevenh@7 42 @Override
stevenh@7 43 public int compareTo(Object o2) {
stevenh@7 44 NDimensionalObject ndim2 = (NDimensionalObject)o2;
stevenh@7 45
stevenh@7 46 Vector<DimensionValue> ndim2DimVals = ndim2.getDimensionValues();
stevenh@7 47
stevenh@7 48 int ndim2DimSize = ndim2DimVals.size();
stevenh@7 49
stevenh@7 50 if (ndim2DimSize != this.getDimensionValues().size())
stevenh@7 51 throw new ClassCastException("NDimensionalObject have an unequal number of dimensions");
stevenh@7 52
stevenh@7 53 for (int dimension = 1; dimension <= ndim2DimSize; dimension++)
stevenh@7 54 {
stevenh@7 55 double dimension1 = 0;
stevenh@7 56 try {
stevenh@7 57 dimension1 = this.getDimensionValue(dimension);
stevenh@7 58 } catch (DimensionException e) {
stevenh@7 59 System.out.println(e.getMessage());
stevenh@7 60 e.printStackTrace();
stevenh@7 61 System.exit(-1);
stevenh@7 62 }
stevenh@7 63 double dimension2 = 0;
stevenh@7 64 try {
stevenh@7 65 dimension2 = ndim2.getDimensionValue(dimension);
stevenh@7 66 } catch (DimensionException e) {
stevenh@7 67 System.out.println(e.getMessage());
stevenh@7 68 e.printStackTrace();
stevenh@7 69 System.exit(-1);
stevenh@7 70 }
stevenh@7 71
stevenh@7 72 if (dimension1 < dimension2)
stevenh@7 73 {
stevenh@7 74 return -1;
stevenh@7 75 }
stevenh@7 76 else if (dimension1 > dimension2)
stevenh@7 77 {
stevenh@7 78 return 1;
stevenh@7 79 }
stevenh@7 80 }
stevenh@7 81
stevenh@7 82 return 0;
stevenh@7 83 }
stevenh@7 84
steve@0 85 }