88 lines
2.2 KiB
Java
88 lines
2.2 KiB
Java
package totale.p240130;
|
|
|
|
import java.util.Iterator;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.TreeSet;
|
|
import java.util.Comparator;
|
|
|
|
public class Catologo {
|
|
|
|
private TreeSet<Articolo> catalogo = new TreeSet<Articolo>(new Comparator<Articolo>() {
|
|
@Override
|
|
public int compare(Articolo articolo1, Articolo articolo2) {
|
|
// Prezzo non decrescente
|
|
int cmp = Double.compare(articolo1.prezzo(), articolo2.prezzo());
|
|
if (cmp != 0) return cmp;
|
|
// Nome crescente
|
|
cmp = articolo1.nome().compareTo(articolo2.nome());
|
|
if (cmp != 0) return cmp;
|
|
// Ritorna in base al ID
|
|
return articolo1.id().compareTo(articolo2.id());
|
|
}
|
|
});
|
|
|
|
// Metodo 1
|
|
public boolean add(Articolo art) {
|
|
// Null check
|
|
if (art == null) throw new NullPointerException();
|
|
// Verifica la presenza
|
|
for (Articolo a : catalogo) {
|
|
if (a.equals(art)) return false;
|
|
}
|
|
// Aggiunta
|
|
return catalogo.add(art);
|
|
}
|
|
|
|
// Metodo 2
|
|
public Articolo cercaArticolo(String cod) {
|
|
// Null check
|
|
if (cod == null) throw new NullPointerException();
|
|
// Ricerca
|
|
for (Articolo a : catalogo) {
|
|
if (a.id().equals(cod)) return a;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// Metodo 3
|
|
public boolean cancellaArticolo(String cod) {
|
|
// Null check
|
|
if (cod == null) throw new NullPointerException();
|
|
// Iterator
|
|
Iterator<Articolo> it = catalogo.iterator();
|
|
while (it.hasNext()) {
|
|
Articolo cur = it.next();
|
|
if (!(cur.id().equals(cod))) continue;
|
|
it.remove();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Metodo 4
|
|
public List<Articolo> getArticoliSottoPrezzo(Double prezzo) {
|
|
// Null check
|
|
if (prezzo == null) throw new NullPointerException();
|
|
// Creazione dell'oggetto di tipo lista
|
|
List<Articolo> lista = new LinkedList<Articolo>();
|
|
// Controllo sulla size
|
|
if (catalogo.isEmpty()) return lista;
|
|
// Se il catalogo non è empty
|
|
for (Articolo art : catalogo) {
|
|
Double curPrezzo = art.prezzo();
|
|
if (curPrezzo >= prezzo) break;
|
|
lista.add(art);
|
|
}
|
|
return lista;
|
|
}
|
|
|
|
// Metodo 5
|
|
public Set<Articolo> ordinaByCodice() {
|
|
Set<Articolo> articoliByCodice = new TreeSet<Articolo>();
|
|
articoliByCodice.addAll(catalogo);
|
|
return articoliByCodice;
|
|
}
|
|
}
|