package models.algebra;

import java.util.ArrayList;
import java.util.List;

public class Position implements Cloneable {
	private ArrayList<Integer> orders = new ArrayList<Integer>();
	
	public Position() {
	}
	
	public Position(ArrayList<Integer> orders) {
		this.orders = orders;
	}
	
	public void addHeadOrder(int order) {
		orders.add(0, order);
	}
	
	public int removeHeadOrder() {
		return orders.remove(0);
	}

	public List<Integer> getOrders() {
		return orders;
	}
	
	public boolean isEmpty() {
		return (orders == null || orders.size() == 0);
	}

	public boolean isAncestorOf(Position another) {
		if (another.orders.size() < this.orders.size()) return false;
		for (int i = 0; i < orders.size(); i++) {
			if (this.orders.get(i) != another.orders.get(i)) return false;
		}
		return true;
	}
	
	public Object clone() {
		return new Position((ArrayList<Integer>) orders.clone());
	}
	
	public boolean equals(Object another) {
		if (!(another instanceof Position)) return false;
		return orders.equals(((Position) another).orders);
	}
	
	public int hashCode() {
		return orders.hashCode();
	}
}
