CampagnaProxy.java
package model.beans.proxies;
import model.DAO.DAO;
import model.DAO.DonazioneDAO;
import model.DAO.ImmagineDAO;
import model.DAO.SegnalazioneDAO;
import model.DAO.UtenteDAO;
import model.beans.Campagna;
import model.beans.Donazione;
import model.beans.Immagine;
import model.beans.Segnalazione;
import model.beans.Utente;
import model.beans.proxyInterfaces.CampagnaInterface;
import java.util.List;
public final class CampagnaProxy implements CampagnaInterface {
/**
* riferimento alla campagna.
*/
private final Campagna campagna;
/**
* costruttore.
*
* @param newCampagna campagna
*/
public CampagnaProxy(final Campagna newCampagna) {
this.campagna = newCampagna;
}
@Override
public List<Immagine> getImmagini() {
if (campagna.getImmagini() == null) {
ImmagineDAO immagineDAO = new ImmagineDAO();
List<Immagine> immagineList =
immagineDAO.getByIdCampagna(campagna.getIdCampagna());
immagineList.forEach(i -> i.setCampagna(campagna));
campagna.setImmagini(immagineList);
return immagineList;
} else {
return campagna.getImmagini();
}
}
@Override
public List<Donazione> getDonazioni() {
if (campagna.getDonazioni() == null) {
DonazioneDAO donazioneDAO = new DonazioneDAO();
List<Donazione> donazioneList =
donazioneDAO.getByIdCampagna(campagna.getIdCampagna());
donazioneList.forEach(d -> d.setCampagna(campagna));
double somma = donazioneList.stream().
mapToDouble(Donazione::getSommaDonata).
sum();
campagna.setSommaRaccolta(somma);
campagna.setDonazioni(donazioneList);
return donazioneList;
} else {
return campagna.getDonazioni();
}
}
/**
* @return istanza dell'utente creatore della campagna.
*/
@Override
public Utente getUtente() {
if (campagna.getUtente().getCf() == null) {
DAO<Utente> dao = new UtenteDAO();
Utente u =
dao.getById(campagna.getUtente().getIdUtente());
campagna.setUtente(u);
return u;
} else {
return campagna.getUtente();
}
}
@Override
public List<Segnalazione> getSegnalazioni() {
if (campagna.getSegnalazioni() == null) {
SegnalazioneDAO segnalazioneDAO = new SegnalazioneDAO();
List<Segnalazione> segnalazioneList =
segnalazioneDAO.getByIdCampagna(campagna.getIdCampagna());
segnalazioneList.forEach(s -> s.setCampagnaSegnalata(campagna));
campagna.setSegnalazioni(segnalazioneDAO.getAll());
return segnalazioneList;
} else {
return campagna.getSegnalazioni();
}
}
}