package lab3;

import java.io.IOException;

import librairyMR.ConsoleIO;

public class exercise4 {
	private static final int fahrenheigth = 2,
			                 celcius = 1,
			                 rien = 0;
	private exercise4(){}

	/*functor
	 * function object*/
	private interface tempConverter{
		/**
		 * @param temp as temperature unit to convert
		 * @return converted temperature
		 */
		double convert(double temp);
	}

	private static tempConverter FahrenheightToCelcius = new tempConverter(){
		public double convert(double temp){
			return (temp-32)*5/9;
		}
	};

	private static tempConverter CelciusToFahrenheight = new tempConverter(){
		public double convert(double temp){
			return temp*9/5+32;
		}
	};

	/**/
	public static void main(String [ ] args) throws IOException{
		//declaration
		tempConverter unite = null;
		int choix = 0;
		double temperature = 0;
		String continuer = "o";

		//boucle principale
		while(continuer.equals("O") ||
			  continuer.equals("o")){
			//choix du convertisseur
			while(choix > 2 || choix < 1)
			{
				System.out.println("Choissir le type de convertion");
				System.out.println(celcius + ". de celcius a fahrenheigth");
				System.out.println(fahrenheigth + ". de fahrenheigth a celcius");

				try {
					choix = ConsoleIO.getInt();
				} catch (IOException e) {
					choix = rien;
				}
			}

			if(choix==celcius)
				unite = CelciusToFahrenheight;
			else
				unite = FahrenheightToCelcius;

			//entrer le nombre a convertire
			while(choix != rien){
				System.out.println("entrez la temperature à convertire");
				choix = 0;
				try{
					temperature = ConsoleIO.getInt();
				} catch(IOException e){
					System.out.println("entré invalide");
					choix = 0;
				}
			}

			System.out.println(temperature + " est convertie comme " + unite.convert(temperature) );

			//dernier choix
			System.out.println("voulez-vous continuer ? o/n");
			do{
				continuer = ConsoleIO.getStr2();
			}while(!continuer.equals("O") &&
			       !continuer.equals("o") &&
				   !continuer.equals("N") &&
				   !continuer.equals("n"));
				continuer = ConsoleIO.getStr2();
		}
	}
}
