import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

//les untite sont en grammes

public class MainCourse {

	public static void main(String[] args) {
		Liste liste=new Liste();
		
		HashMap<Ingredient,Integer> listeIngredient1=new HashMap<Ingredient,Integer>();
		listeIngredient1.put(Ingredient.Salade, 500);
		recette r1=new recette(listeIngredient1,"salade","une petite salade pour la demo","des etape basique");
		
		HashMap<Ingredient,Integer> listeIngredient2=new HashMap<Ingredient,Integer>();
		listeIngredient2.put(Ingredient.Salade, 500);
		listeIngredient2.put(Ingredient.Tomate, 500);
		recette r2=new recette(listeIngredient2,"salade avec de la tomate genial","une petite salade pour la demo","des etape basique");
		
		
		liste.ajouterRecetteEtIngredient(r1);
		liste.ajouterRecetteEtIngredient(r2);
		
		System.out.println(liste);

	}

}

class recette {
	
	@Override
	public String toString() {
		return "recette [titre=" + titre + "]";
	}


	private Map<Ingredient,Integer> listeIngredient;
	private String titre;
	private String description;
	private String Instruction;
	

	public recette(Map<Ingredient,Integer> listeIngredient,String titre,String description,String instrction) {
		this.description=description;
		this.Instruction=instrction;
		this.listeIngredient=listeIngredient;
		this.titre=titre;
	}


	public Map<Ingredient, Integer> getListeIngredient() {
		return listeIngredient;
	}


	public String getTitre() {
		return titre;
	}


	public String getDescription() {
		return description;
	}


	public String getInstruction() {
		return Instruction;
	}
}


 enum Ingredient {
	
	Tomate,Farine,Beurre,Salade;

}
 class Liste {

	private ArrayList<recette> listeRecette;
	private Map<Ingredient, Integer> listeIngredient;

	
	public Liste() {
		this.listeIngredient=new HashMap<Ingredient,Integer>();
		this.listeRecette=new ArrayList<recette>();
	}
	
	public void ajouterRecetteEtIngredient(recette r) {
		this.listeRecette.add(r);
		r.getListeIngredient().forEach((k, v) -> listeIngredient.merge(k, v, Integer::sum));

	}

	@Override
	public String toString() {
		return "Liste [listeRecette=" + listeRecette + ", listeIngredient=" + listeIngredient + "]";
	}
	
}
