package somiba.apps;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

import somiba.domain.Orderer;
import somiba.domain.Player;
import somiba.domain.Season;

public class Lookup extends AbstractDaoAccessor {

	public static void main(String args[]) {
		int argc = args.length;
		if (argc < 2) {
			// System.out.println("java Lookup Firstname Lastname") ;
			System.exit(1);
		}
		Lookup ps = new Lookup();
		ps.createReport(args[1], args[2]);
	}

	void createReport(String time, String stat) {
		TreeSet<Season> set = new TreeSet<Season>(new Orderer());
		Iterator<Season> itr = null;
		Player player = null;
		Season season = null;

		List<Season> seasonList = null;
		if (time.equals("career"))
			seasonList = getDaoRepository().getSeasonDao().getAllTotals();
		else if (time.equals("single"))
    		seasonList = getDaoRepository().getSeasonDao().getAll();
        itr = seasonList.iterator();
		while (itr.hasNext()) {
			season = itr.next();
    		player = getDaoRepository().getPlayerDao().getByName(season.getName());
			if (season.processStat(time, stat, player))
				set.add(season);
		}

		try {
			BufferedWriter contents = new BufferedWriter(new FileWriter(
					new File("report_" + time + "_" + stat + ".HTML")));
			contents.write("<table border=0 cellpadding=3>\n");
			contents.write("<tr>\n");
			contents.write("<td><b>&nbsp;</b></td>\n");
			contents.write("<td><b>Player</b></td>\n");
			if (time.equals("single"))
				contents.write("<td><b>Team</b></td>\n");
			contents.write("<td><b>" + stat.toUpperCase() + "</b></td>\n");
			if (time.equals("career"))
				contents.write("<td><b>Seasons</b></td>\n");
			if (time.equals("single"))
				contents.write("<td><b>Season</b></td>\n");
			contents.write("</tr>\n");
			java.util.Iterator<Season> treeItr = set.iterator();
			for (int i = 0; i < 20; i++) {
				season = treeItr.next();
	    		player = getDaoRepository().getPlayerDao().getByName(season.getName());
				player.setCompareValue(season.getCompareValue());
				player.format(season.getFormatValue());
				contents.write("<tr>\n");
				contents.write("<td>" + (i + 1) + "</td>\n");
				contents.write("<td>" + player.getName() + "</td>\n");
				if (time.equals("single"))
					contents.write("<td>"
							+ season.getTeam()//.substring(0, 3).toUpperCase()
							+ "</td>\n");
				contents.write("<td align=\"right\">" + player + "</td>\n");
				if (time.equals("career"))
					contents.write("<td align=\"right\">" + player.getSeasons()
							+ "</td>\n");
				if (time.equals("single"))
					contents.write("<td align=\"right\">" + season.getYear()
							+ "</td>\n");
				contents.write("</tr>\n");
			}
			contents.write("</table>\n");
			contents.close();
		} catch (IOException ie) {
			ie.printStackTrace();
		}
	}

}
