package ui;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import dao.RankDao;

public class SelectRankUi extends AbstractUi {

	private RankDao rankDao;

	private InsertReservationUi insertReservationUi;

	public void setRankDao(RankDao rankDao) {
		this.rankDao = rankDao;
	}

	public void setInsertReservationUi(InsertReservationUi insertReservationUi) {
		this.insertReservationUi = insertReservationUi;
	}

	public void show() {
		// Çì´õ Ç¥½Ã
		showHeader();
		// ÄÜ¼Ö¿¡ ÀÔ·ÂµÈ °ªÀ» Ãëµæ
		Integer eventId = getEventId();
		if (eventId == null) {
			return;
		}
		// ·©Å© ¸ñ·ÏÀ» Ç¥½Ã
		showRanks(this.rankDao.getRank(eventId));

		this.insertReservationUi.show();
	}

	protected void showRanks(List<Object[]> rankList) {

		System.out.println("--------------------");
		System.out.println("¡ºÆ¼ÄÏ ¿¹¾à¡»¡¸Æ¼ÄÏ ¸ñ·Ï¡¹");
		System.out.println("ID   ÀÌ¸§   °¡°Ý   ³²Àº¸Å¼ö");

		for (Object[] objects : rankList) {
			// ·©Å©ID¿Í ·©Å©¸í, °¡°Ý, ³²Àº ¸Å¼ö¸¦ Ç¥½Ã
			System.out.printf("%s  %s  %s  %s%n", objects[0], objects[1], objects[2], objects[3]);
		}
	}

	protected Integer getEventId() {
		// ÄÜ¼Ö¿¡ ÀÔ·ÂµÈ °ªÀ» Ãëµæ
		String eventId = getInputedString();
		// ¹®ÀÚ¿­ÀÌ ÀÔ·ÂµÇ¾ú´ÂÁö?
		if (StringUtils.isBlank(eventId)) {
			return null;
		}
		// ¼ýÀÚÀÎÁö?
		if (UiUtils.isNumeric(eventId, "ID")) {
			return Integer.valueOf(eventId);
		}
		return getEventId();
	}

	protected void showHeader() {
		System.out.println("--------------------");
		System.out.println("¡ºÆ¼ÄÏ ¿¹¾à¡»¡¸Æ¼ÄÏ °Ë»ö¡¹");
		System.out.println("");
		System.out.println("¿¹¾àÇÏ°í ½ÍÀº ÀÌº¥Æ®ÀÇ ID¸¦ ÀÔ·ÂÇÑ ÈÄ Enter¸¦ ´­·¯ÁÖ¼¼¿ä.");
		System.out.println("¾Æ¹«°Íµµ ÀÔ·ÂÇÏÁö ¾Ê°í Enter¸¦ ´©¸£¸é ¸Þ´º·Î µ¹¾Æ°©´Ï´Ù.");
	}

}
