package Commande;

import java.util.Vector;
import java.io.*;

public class Livraison implements Serializable{

	private static final long serialVersionUID = -1840579441217145883L;
	private String destination;
    private String nomClient;
    private Vector<Produit> listeProduits;


    // ----------------------------------------- CONSTRUCTEURS ------------------------------------------------

    public Livraison(String uneDestination, String unClient){
        destination = uneDestination;
        nomClient = unClient;
        listeProduits = new Vector<Produit>();
    }
    
    // ------------------------------------------- OBSERVATEURS ----------------------------------------------

    public Vector<Produit> recProduits(){
        return (Vector<Produit>)listeProduits.clone();
    }

    // ------------------------------------------- TRANSFORMATEURS ----------------------------------------------
    //retourne vrai si le produit a bien ete ajoute
    public boolean ajouterProduit(Produit nouveauProduit){
        //si le nouveau produit est deja dans la liste, on ne l'ajoute pas
        for(Produit produitCourant : listeProduits){
            if(produitCourant.recLibelle().equals(nouveauProduit.recLibelle()))
                return false;
        }
        //on sait que le nouveau produit n'est pas encore dans la liste donc on l'ajoute
        listeProduits.add(nouveauProduit);
        return true;
    }
    

    public void ajouterIncompatibilite(Produit p1, Produit p2){
        p1.ajouterProduitIncompatible(p2);
        p2.ajouterProduitIncompatible(p1);
    }

    public void sauvegarderLivraison(String nomFichier){
        try{
            File monFichier = new File(nomFichier);
            FileOutputStream fs = new FileOutputStream(monFichier);
            ObjectOutputStream oos = new ObjectOutputStream(fs);
            oos.writeObject(this);
            oos.close();
            fs.close();
      }
      catch(Exception e){
          System.out.println("ERROR\nSauvegarder livraison : impossible d'Ã©crire dans le fichier "+nomFichier);
      }
    }

    public void afficher()
    {
    	System.out.println("Récapitulatif de la commande : ");
    	System.out.println("Client : "+this.nomClient);
    	System.out.println("Destination : "+this.destination);
    	
    	System.out.println("Liste des produits : ");
    	for(Produit currentProd : listeProduits)
    	{
    		System.out.print("  - ");
    		currentProd.afficher();
    	}
    }
    
}