Per completezza questo è il metodo che si occupa dell'inserimento di una nuova asta:
codice:
public Integer aggiungiAsta(String categoria, String utente, String nomeOggetto, String descrizione,
Double prezzoBase, Date dataIns, Date scadenza) throws IllegalArgumentException {
//Inizializzo la chiave di asta e di offerte
int ultimoID = 0;
int ultimoIdOfferte = 0;
DB db = DBMaker.newFileDB(new File(FILE_NAME)).closeOnJvmShutdown().make();
ConcurrentNavigableMap<Integer, Asta> aste = db.getTreeMap("aste");
// Controllo se la tabella delle aste nel database e' vuota
if (aste.lastEntry() == null) {
ultimoID = 1;
}
// se non lo e' estraggo id da assegnare
else {
ultimoID = aste.lastKey();
}
//creo i valori di default dei dati che non vengono passati dal metodo
Boolean statoAsta = true; //true vuol dire asta aperta
//controllo che non vengano passati valori null nei campi fondamentali
if (categoria==null || categoria=="" || utente== null || utente=="" || scadenza==null || nomeOggetto==null || nomeOggetto=="") {
return 2;
//controllo che il prezzo non sia assente o 0
} else if (prezzoBase==null || prezzoBase==0.00) {
return 0;
//controllo che la data di scadenza non sia precedente a quella odierna
} else if (scadenza.before(new Date())) {
return 3;
} else {
//se tutto corretto incremento la chiave e creo l'asta aggiungendola al db
ultimoID++;
Asta asta = new Asta (ultimoID, utente, nomeOggetto, descrizione, categoria, prezzoBase, dataIns, scadenza, statoAsta);
aste.put(ultimoID, asta);
//all'inserimento di una nuova asta inserisco anche una nuova offerta pari al prezzo base
ConcurrentNavigableMap<Integer, Offerta> offerte = db.getTreeMap("offerte");
// Controllo se la tabella delle offerte nel database e' vuota
if (offerte.lastEntry() == null) {
ultimoIdOfferte = 1;
}
// Altrimenti estraggo ID da assegnare
else {
ultimoIdOfferte = offerte.lastKey();
}
//incremento anche la chiave per le offerte e creo una nuova offerta corrispondente al prezzoBase
ultimoIdOfferte++;
//creo la data di inserimento
Date today=new Date();
Offerta offerta = new Offerta(ultimoIdOfferte, utente, prezzoBase, ultimoID, today);
offerte.put(ultimoIdOfferte, offerta);
db.commit();
db.close();
return 1; //asta inserita correttamente
}
}