//Carrello.java

import java.lang.String;
import java.lang.Integer;
import java.lang.Float;
import java.util.Hashtable;
import java.util.Enumeration;


public class Carrello{

//variabile di tipo Hashtable utilizzata per emorizzare gli elementi
presenti nel carrello protected Hashtable cd = new Hashtable();

//varibile intera utilizzata per la memorizzazione del numero di CD
attualmente nel carrello private int numCd;

//costruttore
public Carrello() {
numCd=0;
}//Carrello

//metodo per ottenere il numero di CD attualmente nel carrello
public int totCD(){
return numCd;
}//numCD

// Inserimento di cd nel carrello
// I: id: indice chiave di identificazione del CD
// art: nome dell'artista
// tit: titolo dell'album
// prezzo: prezzo del CD

public void aggiungiCd (String id, String art, String tit, float prezzo){

//inserimento in un vettore di stringhe degli attributi del CD appena
inserito nel carrello //è inserito inoltre il numero di CD di quel tipo ordinati
String[] dati_cd= {art, tit, Float.toString(prezzo) , "1", id};
numCd++;
//se il CD è non già stato ordinato
if (!cd.containsKey(id)){
//inserisci il CD nel carrello
cd.put(id, dati_cd);
}//if
//altrimenti
else {
//incrementa il numero di CD di quel tipo ordinati
int tmp;
String[] datiTemp = (String[])cd.get(id);
tmp = Integer.parseInt(datiTemp[3]);
tmp++;
datiTemp[3]=Integer.toString(tmp);
cd.put(id, datiTemp);
}//else
}//aggiungiCd

//Metodo di rimozione dal carrello di un CD
//I: id: indice del CD da rimuovere
public void rimuoviCd (String id){
//se il CD è presente nel carrello
if (cd.containsKey(id)) {
//decrementa il numero di CD
numCd--;
String[] temp = (String[])cd.get(id);
//se il CD è presente in copia singola
if (Integer.parseInt(temp[3]) == 1)
//elimina il CD dal carrello
cd.remove(id);
//altrimenti
else {
//decrementa il numero di copie di quel CD ordinate
int tmp = 0;
String[] datiTemp = (String[])cd.get(id);
tmp = Integer.parseInt(datiTemp[3]);
tmp--;
datiTemp[3]=Integer.toString(tmp);
cd.put(id, datiTemp);
}//else
}//if
}//rimuoviCd

//Metodo per la creazione di un oggetto Enumeration utilizzato per scorrere
velocemente //gli elementi nel carrello
public Enumeration enum() {
return cd.elements();
}//enum


//Metodo che restituisce il prezzo totale dei CD inseriti nel carrello fino
adesso public float spesaTot(){
float tot = 0.00f;
String[] temp;
//crea l'oggetto Enumeration
Enumeration i = this.enum();
//finchè ci sono elementi nel carrello
while (i.hasMoreElements()){
temp = (String[])i.nextElement();
//incrementa la spesa totale del prezzo del CD corrente
tot += (Float.parseFloat(temp[2]) * Integer.parseInt(temp[3]));
}//while
return tot;
}//spesaTot

//Metodo che restituisce il prezzo di un CD moltiplicato per il numero delle
copie ordinate //I: id:indice del CD
public float prezzo(String id){
String[] temp;
float tmp=0.0f;
temp = (String[])cd.get(id);
tmp = Float.parseFloat(temp[2]) * Integer.parseInt(temp[3]);
return tmp;
}//prezzo

}//Carrello