view src/org/qmul/eecs/c4dm/sia/model/SiatecX.java @ 94:fedf516f6a78 tip

test file
author stevenh
date Mon, 29 Dec 2014 15:16:22 +0000
parents bddecf79dd3b
children
line wrap: on
line source
package org.qmul.eecs.c4dm.sia.model;

import java.util.ArrayList;
import java.util.Iterator;

public class SiatecX implements Comparable {
	
	private ArrayList<NDimensionalObject> q;
	private int i;
	
	/**
	 * @return
	 */
	public ArrayList<NDimensionalObject> getQ() {
		return q;
	}
	
	/**
	 * @param q
	 */
	public void setQ(ArrayList<NDimensionalObject> q) {
		this.q = q;
	}
	
	/**
	 * @return
	 */
	public int getI() {
		return i;
	}
	
	/**
	 * @param i
	 */
	public void setI(int i) {
		this.i = i;
	}

	@Override
	public int compareTo(Object o2) {
		
		SiatecX siatecX2 = (SiatecX)o2;
		int compareQResult = compareToIgnoreI(siatecX2);
		
		if (compareQResult != 0)
		{
			return compareQResult;
		}
		
		// q1 and q2 are exactly equal, so compare i1 and i2
		int i1 = this.getI();
		int i2 = siatecX2.getI();

		if (i1 < i2)
		{
			return -1;
		}
		else if (i1 > i2)
		{
			return 1;
		}
		
		// i1 and i2 are equal too, so return 0
		return 0;
	}
	
	public int compareToIgnoreI(SiatecX siatecX2) {
		
		ArrayList<NDimensionalObject> q1 = this.getQ();
		ArrayList<NDimensionalObject> q2 = siatecX2.getQ();
		
		int q1Size = q1.size();
		int q2Size = q2.size();

		// Check whether q1 < q2

		// First check for differing vector lengths
		if (q1Size < q2Size)
		{
			return -1;
		}
		else if (q1Size > q2Size)
		{
			return 1;
		}

		// q1 and q2 are of equal length, so compare contents of both
		Iterator<NDimensionalObject> q2Iter = q2.iterator();
		for (NDimensionalObject nDimObj1: q1)
		{
			NDimensionalObject nDimObj2 = q2Iter.next();
			int compareResult = nDimObj1.compareTo(nDimObj2);
			if (compareResult != 0)
			{
				return compareResult;
			}
		}
		
		return 0;
	}


}