import java.io.Serializable;




public class EistiStudent extends Student implements Serializable,Comparable{

	private static final long serialVersionUID = -8199096568984092799L;
	private int ranking;
	
	
	public EistiStudent(String firstName, String lastName, int age) {
		super(firstName, lastName, age);
		this.ranking = 0;
	}

	public EistiStudent(String firstName, String lastName, int age, int ranking) {
		super(firstName, lastName, age);
		this.ranking = ranking;
	}

	
	
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		EistiStudent other = (EistiStudent) obj;
		if (ranking != other.ranking)
			return false;
		if (this.getAge() != other.getAge())
			return false;
		if (this.getFirstName() != other.getFirstName())
			return false;
		if (this.getLastName() != other.getLastName())
			return false;
		return true;
	}

	public int getRanking() {
		return ranking;
	}

	public void setRanking(int ranking) {
		this.ranking = ranking;
	}

	@Override
	public int compareTo(Object o) {
		if(this.getRanking() != ((EistiStudent) o).getRanking())
			return Integer.valueOf(this.getRanking()).compareTo(Integer.valueOf(((EistiStudent) o).getRanking()));
		if(!this.getLastName().equals(((EistiStudent) o).getLastName()))
			return this.getLastName().compareTo(((EistiStudent) o).getLastName());
		if(!this.getFirstName().equals(((EistiStudent) o).getFirstName()))
			return this.getFirstName().compareTo(((EistiStudent) o).getFirstName());
		return Integer.valueOf(this.getAge()).compareTo(Integer.valueOf(((EistiStudent) o).getAge()));
	}

	public String toString()
	{
		return this.getLastName()+" "+this.getFirstName()+"("+this.getAge()+") #"+this.getRanking();
	}
}
