package pex06;

public class Adult extends Person 
{
	public static final int MIN_AGE = 18;
	
	private String licenseNumber;
	
	public Adult() 
	{
		super();
		this.setAge(Adult.MIN_AGE);
		this.licenseNumber = null;
	}

	public Adult(String name, int age, String number) 
	{
		super(name, age);
		try 
		{
			this.setAge(age);
		}
		catch(IllegalArgumentException x) 
		{
		}
		this.licenseNumber = number;
	}
	
	public Adult(Adult adult)
	{
		this(adult.getName(), adult.getAge(), adult.getNumber());
	}
	
	public String getNumber()
	{
		return this.licenseNumber;
	}

	public boolean setAge(int age) throws IllegalArgumentException
	{
		if(age < Adult.MIN_AGE)
			throw new IllegalArgumentException("age less than MIN_AGE");
		super.setAge(age);
		return true;
	}
	
	@Override public boolean equals(Object obj)
	{
		boolean eq = super.equals(obj);
		if(eq)
		{
			Adult other = (Adult) obj;
			if(this.getNumber() == null && other.getNumber() == null)
			{
				eq = true;
			}
			else if(this.getNumber() != null)
			{
				eq = this.getNumber().equals(other.getNumber());
			}
		}
		return eq;
	}
	
	@Override public String toString()
	{
		String start = super.toString();
		String end = null;
		if(this.getNumber() == null)
		{
			end = "has not driver's licence";
		}
		else
		{
			end = "has a driver's licence with number " + this.getNumber();
		}
		return start + "\n" + end;
	}
}
