
// Entity class

class Player {

	// field
	private String name = null;
	private int level = 1; 

	// constructor
	Player(String name) {
		//this.name = name;

		// use setName so we don't have to rewrite the 
		// validation logic 
		setName(name);
	}

	// setter method with input validation
	void setName(String n) {
		if (n == null || n.equals("")) {
			name = "undefined";
		}
		else {
			name = n;
		}
	}

	void setLevel(int level) {
		if (level > 0) {
			this.level = level;
		}
	}	
	
	// getter method
	String getName() {
		return name;
	}

	int getLevel() {
		return level;
	}

	boolean hasSameLevel(Player that) {
		return (this.level == that.level);
	}

	@Override
	public String toString() {
		return name + "," + level;
	}

	@Override
	public boolean equals(Object obj) {
		if(!(obj instanceof Player)) {
			return false;
		}

		Player that = (Player) obj;

		return ((this.level == that.level) &&
			(this.name.equals(that.name)));
	}	
}
