package chain_project;

public abstract class Unit {
	

	private Unit successor;
	
	protected String specialty;
	protected String rank;
	
	public Unit(String rank, String specialty){
		this.rank = rank;
		this.specialty = specialty;
	}
	private void passOnMessage(Message m){
		if (successor != null){
			this.successor.handleRequest(m);
			}
			else{
				System.out.println("Nobody can fulfull your order to:");
				System.out.println(m.getOrder());
			}
		
	}	
	public void handleRequest(Message m){
		if(m.getNeededSpecialty() == this.specialty){
			System.out.println("I am a " + rank);
			System.out.println("I've specialized in " + specialty + " and can execute your order to:");
			System.out.println(m.getOrder() + "\n");			
		}
		else{
			passOnMessage(m);
		}
	}
	
	public void setSuccesor(Unit u){
		this.successor = u;
	}
}
	