GestioneSpedizioni.java
Created with JBuilder |
class GestioneSpedizioni {
private Spedizione[] elencoSpedizioni;
private int numeroSpedizioni;
private int posizioneCorrente;
public GestioneSpedizioni(int numeroMaxSpedizioni) {
elencoSpedizioni = new Spedizione[numeroMaxSpedizioni];
numeroSpedizioni = 0;
}
public boolean presaInCarico(Spedizione s) {
if (numeroSpedizioni < elencoSpedizioni.length) {
elencoSpedizioni[numeroSpedizioni] = s;
++numeroSpedizioni;
return true;
} else {
return false;
}
}
public Spedizione consegnaEffettuata(long codice) {
Spedizione risultato = null;
int posizione = cercaPerCodiceInterno(codice);
if (posizione > 0) {
risultato = elencoSpedizioni[posizione];
elencoSpedizioni[posizione] = elencoSpedizioni[numeroSpedizioni - 1];
elencoSpedizioni[numeroSpedizioni - 1] = null;
--numeroSpedizioni;
}
return risultato;
}
public Spedizione cercaPerCodice(long codice) {
int posizione = cercaPerCodiceInterno(codice);
if (posizione < 0) {
return null;
} else {
return elencoSpedizioni[posizione];
}
}
public GestioneSpedizioni cercaSpedizioniPerCittą(String cittą) {
GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
for (int i = 0; i < numeroSpedizioni; i++) {
String cittąTrovata =
elencoSpedizioni[i].restituisciDestinatario().restituisciCittą();
if (cittąTrovata.equals(cittą)) {
estratto.presaInCarico(elencoSpedizioni[i]);
}
}
return estratto;
}
public GestioneSpedizioni cercaSpedizioniStessaData(int giorno, int mese) {
GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
for (int i = 0; i < numeroSpedizioni; i++) {
Spedizione s = elencoSpedizioni[i];
if ((s.restituisciGiorno() == giorno) &&
(s.restituisciMese() == mese)) {
estratto.presaInCarico(elencoSpedizioni[i]);
}
}
return estratto;
}
public GestioneSpedizioni cercaSpedizioniScadute(int giorno, int mese) {
GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
int giorni = mese * 30 + giorno;
for (int i = 0; i < numeroSpedizioni; i++) {
Spedizione s = elencoSpedizioni[i];
int giorniSpedizione = s.restituisciMese() * 30 + s.restituisciGiorno();
if ((giorniSpedizione + 10) < giorni) {
estratto.presaInCarico(elencoSpedizioni[i]);
}
}
return estratto;
}
public Spedizione inizio() {
posizioneCorrente = 0;
if (posizioneCorrente < numeroSpedizioni) {
return elencoSpedizioni[posizioneCorrente];
} else {
return null;
}
}
public Spedizione fine() {
return null;
}
public Spedizione prossima() {
++posizioneCorrente;
if (posizioneCorrente < numeroSpedizioni) {
return elencoSpedizioni[posizioneCorrente];
} else {
return null;
}
}
private int cercaPerCodiceInterno(long codice) {
for(int i = 0; i < numeroSpedizioni; i++) {
if (elencoSpedizioni[i].restituisciCodice() == codice) {
return i;
}
}
return -1;
}
}
GestioneSpedizioni.java
Created with JBuilder |