annotate src/org/qmul/eecs/c4dm/sia/model/NDimensionalObject.java @ 94:fedf516f6a78 tip

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