import java.util.*;

//Take note that this class is NOT a subclass of Person. 
//But we want to implement the SecurityClearance interface so it can behave the same way.
public class Vehicle implements SecurityClearance { //.... Implement the interface here.
	private String licensePlateNumber;
	private String carModel;
	private Staff owner;
	private MyDate startDate;
	private MyDate endDate;
	private Boolean hasClearance = false;

	//Constructor. Note that an owner(Staff) is required to register a vehicle!
	public Vehicle(Staff owner, String carModel, String licensePlateNumber) {
		this.setOwner(owner);
		this.setModel(carModel);
		this.setLicensePlateNumber(licensePlateNumber);
	}

	public boolean clearanceNotExpired() {
		return hasClearance;
	}

	private void setLicensePlateNumber(String licensePlateNumber) {
		this.licensePlateNumber = licensePlateNumber;
	}

	public String getLicensePlateNumber() {
		return this.licensePlateNumber;
	}

	private void setOwner(Staff owner) {
		this.owner = owner;
	}

	public Staff getOwner() {
		return this.owner;
	}

	private void setModel(String model) {
		this.carModel = model;
	}

	public String getModel() {
		return this.carModel;
	}

	//The toString function is implicitly invoked whenever you try to print an object.
	public String toString() {
		if (clearanceNotExpired()) {
			return "The vehicle owned by " + owner.getName() + ", model " + carModel 
			        + " has clearance from " + startDate + " lasting till " + endDate;
		}
		else {
			return "The vehicle owned by " + owner.getName() + ", model " + carModel 
			        + " no longer has clearance.";
		}
	}

	//... Implement the abstract methods defined by the interface here.
}

