package esercizio4;

public class Magazzino {

	private int[] product = new int[5];

	// invariante, per ogni prodotto ho sempre un numero di pezzi tra 0 e 100

	// COSTRUTTORE
	// devo assicurare che ogni prodotto sia inizializzato a 0
	public Magazzino() {
		for (int i = 0; i < 1; i++) {
			product[i] = 0;
		}
	}

	// pre: esiste un prodotto con meno di 100 unità
	// postcondizione: le quantita' diverse da product_index sono invariate
	public boolean insert(int productIndex, int addQuantity) {
		if ((productIndex < 0 || productIndex > 4) || (addQuantity < 0 || addQuantity > 10)
				|| (product[productIndex] + addQuantity) > 100) {
			return false;
		} else {
			product[productIndex] += addQuantity;
			return true;
		}
	}

	// precondizione: indice compreso tra 0 e 4 compresi
	// postcondizione:se il prodotto ha 100 elementi assicurati che è pieno
	public boolean isFull(int productIndex) {
		if (productIndex < 0 || productIndex > 4)
			return false;
		else
			return product[productIndex] == 100 ? true : false;
	}

	// postcondizione: se esiste un oggetto con quantità minore di 100 allora il
	// metodo ritorna false
	public boolean isFull() {
		int total = 0;
		for (int i = 0; i < 5; i++)
			total += product[i];
		return total == 500 ? true : false;
	}
}
