package lab6;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * exercise 5 from lab7
 * @author martin
 * sport management
 */
public class exercise5 {

	/**
	 * build sport obj from name
	 * @param name of the sport
	 * @return new sport
	 */
	public static Sport sportFromName(final String name){
		return new Sport(){
			public String getNom() {
				return name;
			}
		};
	}

	/**
	 * build Equipe obj
	 * @param name of the team
	 * @param sport as sport the team is playing
	 * @return new Equipe
	 */
	public static Equipe equipeFromNameAndSport(final String name, final Sport sport){
		return new Equipe(){
			public String getNom() {
				return name;
			}
			public Sport getSport() {
				return sport;
			}
		};
	}

	/**
	 * build joueur obj from info
	 * @param name as joueur lastname
	 * @param firstname as joueur first name
	 * @param birth as joueur birth data
	 * @param team as equipe obj
	 * @return new joueur obj
	 */
	public static Joueur joueurFromNameBirthAndTeam(final String name, final String firstname, final Date birth, final Equipe team){
		return new Joueur(){
			public String getNom() {
				return name;
			}
			public String getPrenom() {
				return firstname;
			}
			public Date getDateNaissance() {
				return birth;
			}
			public Equipe getEquipe() {
				return team;
			}
			public Sport getSport() {
				return team.getSport();
			}
		};
	}

	/**
	 * show on console all info about joueur
	 * @param j as joueur
	 */
	public static void show(final Joueur j){
		System.out.println(j.getNom() + ", " +
	                       j.getPrenom() + " " +
				           j.getDateNaissance().toString() + ". equipe: " +
	                       j.getEquipe().getNom() + ". sport: " +
				           j.getSport().getNom());
	}

	public static void main(String [] args) throws ParseException{
		Sport hockey = sportFromName("Hockey"),
		      baseball = sportFromName("Baseball"),
		      soccer = sportFromName("Soccer");

		Equipe couille = equipeFromNameAndSport("Couille",baseball),
			   chickeux = equipeFromNameAndSport("chickeux",baseball),
			   chaussette = equipeFromNameAndSport("Chaussette", soccer),
			   cassegueule = equipeFromNameAndSport("Cassegueule",hockey);


		SimpleDateFormat tmp = (new SimpleDateFormat("dd-MM-yyyy"));

		Joueur maurice = joueurFromNameBirthAndTeam("Maurice", "Richard", tmp.parse("04-08-1921"), cassegueule),
			   babe = joueurFromNameBirthAndTeam("Babe", "Ruth", tmp.parse("06-02-1895"), couille),
			   kekun = joueurFromNameBirthAndTeam("Kekun", "Kekpart", tmp.parse("01-01-2000"), chaussette);

		show(maurice);
		show(babe);
		show(kekun);
	}
}
