package ui;

import java.util.List;

import model.Player;

import org.apache.commons.lang.StringUtils;

import dao.PlayerDao;

public class SelectPlayerUi extends AbstractUiTemplate {

	private PlayerDao playerDao;

	private UpdatePlayerUi updatePlayerUi;

	private DeletePlayerUi deletePlayerUi;

	public void setPlayerDao(PlayerDao dao) {
		this.playerDao = dao;
	}

	public void setDeletePlayerUi(DeletePlayerUi ui) {
		this.deletePlayerUi = ui;
	}

	public void setUpdatePlayerUi(UpdatePlayerUi ui) {
		this.updatePlayerUi = ui;
	}

	public void show() {
		//Çì´õ Ç¥½Ã
		showHeader();
		// ÄÜ¼Ö¿¡ ÀÔ·ÂµÈ °ªÀ» Ãëµæ
		Integer teamId = getTeamId();
		// ¼±¼ö ¸ñ·ÏÀ» Ç¥½Ã
		showPlayerList(this.playerDao.getPlayerList(teamId));
		System.out.println("Enter Å°¸¦ ´­·¯ ÁÖ¼¼¿ä.");
		getInputedString();
		super.show();
	}

	protected Integer getTeamId() {
		System.out.println("¸ñ·ÏÀ» Ç¥½ÃÇÏ°í ½ÍÀº ÆÀÀÇ ID¸¦ ÀÔ·ÂÇÑ ÈÄ Enter Å°À» ´­·¯ÁÖ¼¼¿ä.");
		//ÄÜ¼Ö¿¡ ÀÔ·ÂµÈ °ªÀ» Ãëµæ
		String teamId = getInputedString();
		//¼ýÀÚÀÎÁö?
		if (StringUtils.isNotEmpty(teamId) && StringUtils.isNumeric(teamId)) {
			return Integer.valueOf(teamId);
		}
		return getTeamId();
	}

	protected void showHeader() {
		System.out.println("--------------------");
		System.out.println("¡º¼±¼ö ¸í´Ü¡»¡¸¼±¼ö ¸ñ·Ï¡¹");
		System.out.println("");
	}

	protected void showMenu() {
		showHeader();
		System.out.println("1.¼±¼ö °»½Å");
		System.out.println("2.¼±¼ö »èÁ¦");
		System.out.println("3.¸Þ´º·Î µ¹¾Æ°¡±â ");
		System.out.println("");
		System.out.println("¹øÈ£¸¦ ÀÔ·ÂÇÑ ÈÄ Enter Å°¸¦ ´­·¯ ÁÖ¼¼¿ä .");
	}

	protected void showPlayerList(List<Player> playerList) {
		System.out.println("--------------------");
		System.out.println("¡º ¼±¼ö ¸í´Ü ¡»¡¸¼±¼ö ¸ñ·Ï¡¹");
		// ¼±¼ö°¡ ÇÑ¸íÀÌ¶óµµ ÀÖ´ÂÁö?
		if (!playerList.isEmpty()) {
			Player player = playerList.get(0);
			System.out.printf("ÆÀ¸í : %s%n", player.getTeam().getName());
		}
		System.out.println("ID    ÀÌ¸§");
		for (Player player : playerList) {
			// ¼±¼öID¿Í ¼±¼ö¸í Ç¥½Ã
			System.out.printf("%d  %s%n", player.getId(), player.getName());
		}
	}

	protected int getMaxMenuNumber() {
		return 3;
	}

	protected int getMinMenuNumber() {
		return 1;
	}

	protected void execute(int number) {
		switch (number) {
		case 1:
			// 1.¼±¼ö °»½Å
			updatePlayerUi.show();
			break;
		case 2:
			// 2.¼±¼ö »èÁ¦
			deletePlayerUi.show();
			break;
		default:
			return;
		}
	}

}
