import java.util.*;

/** Cette classe gère une commande. Elle fournit des méthodes
    permettant d'ajouter, d'enlever, de consulter ou de lister des
    Lignes de commande. Une ligne est un couple article/quantite, ou
    un Article peut également être un Lot d'article en promotion. */

public class Commande {
  /* Liste des lignes de commande (couples article/quantite) */
  private Vector listeArticle = new Vector();
  /* le client qui a passé la commande */
  private String client;
  /* prix total de la commande */
  private float prixGlobal;

  // Constructeurs
  public Commande(String client) {
    this.client = client;
  }

  // méthodes publiques

  /** AJoute une ligne à la commande (un couple article/quantite) */
  public void addLigne(Article article_a_rajouter, int quantite) {
    listeArticle.addElement(new ArticleQuantite(article_a_rajouter, quantite));
  }

  /** Supprime une ligne de la commande */
  public void deleteLigne(int position) {
    if(listeArticle.size() >= position + 1) {
      listeArticle.removeElementAt(position);
    }
  }

  /** Permet de renvoyer une ligne de commande (un couple article/quantite) */
  public ArticleQuantite getLigne(int position) {
    if(listeArticle.size() >= position + 1) {
      return (ArticleQuantite)listeArticle.elementAt(position);
    }
    return null;
  }

  /** Affiche un ensemble de lignes décrivant chauque ligne de la
      commande (article, quantite, prix total) */

  public void decrisToi() {
    ArticleQuantite elem;
    Enumeration liste = listeArticle.elements();
    int i = 0;

    while(liste.hasMoreElements()) {
      elem = (ArticleQuantite)liste.nextElement();
      System.out.println("Commande ligne # " + i + " : " + 
			 elem.getQuantite() + " articles de type\n" + 
			 "\t- " + elem.getArticle().identifieToi() + "\n" + 
			 "\t-  Pour un prix total de : " + elem.getPrix() + 
			 "\n");
      i++;
    }
  }

  /** Renvoie le prix total de la commande, calculé à partir des lignes
     de la commande */

  public void getPrix() {
    float prixTotal = 0;
    Enumeration liste = listeArticle.elements();
    ArticleQuantite elem;

    while(liste.hasMoreElements()) {
      elem = (ArticleQuantite) liste.nextElement();
      prixTotal += elem.getPrix();
    }
    System.out.println("Prix total de la commande: " + prixTotal + " francs.\n");
  }

}
    
