UtenteProxy.java

package model.beans.proxies;


import model.DAO.SegnalazioneDAO;
import model.DAO.DonazioneDAO;
import model.DAO.CampagnaDAO;
import model.DAO.UtenteDAO;
import model.DAO.DAO;
import model.beans.Campagna;
import model.beans.Donazione;
import model.beans.Segnalazione;
import model.beans.Utente;
import model.beans.proxyInterfaces.UtenteInterface;

import java.util.List;

public final class UtenteProxy implements UtenteInterface {
   /**
    * Istanza di utente.
    */
   private Utente utente;

   /**
    * @param u istanza di Utente
    */
   public UtenteProxy(final Utente u) {
      this.utente = u;
   }

   @Override
   public List<Segnalazione> getSegnalazioni() {
      if (utente.getSegnalazioni() == null) {
         DAO<Segnalazione> dao = new SegnalazioneDAO();
         DAO<Utente> dao2 = new UtenteDAO();
         List<Segnalazione> segnalazioni = ((SegnalazioneDAO) dao)
                 .getByIdUtente(utente.getIdUtente());
         segnalazioni.forEach(it -> {
            it.setSegnalatore(utente);
            it.setSegnalato(dao2.getById(it.getSegnalato().getIdUtente()));
         });

         utente.setSegnalazioni(segnalazioni);
         return segnalazioni;
      } else {
         return utente.getSegnalazioni();
      }
   }

   @Override
   public List<Donazione> getDonazioni() {
      if (utente.getDonazioni() == null) {
         DAO<Donazione> dao = new DonazioneDAO();
         List<Donazione> donazioni = ((DonazioneDAO) dao)
                 .getAllByUtente(utente.getIdUtente());
         donazioni.forEach((it) -> it.setUtente(utente));
         utente.setDonazioni(donazioni);

         return donazioni;
      } else {
         return utente.getDonazioni();
      }
   }

   @Override
   public List<Campagna> getCampagne() {

      if (utente.getCampagne() == null) {
         DAO<Campagna> dao = new CampagnaDAO();
         List<Campagna> campagne = ((CampagnaDAO) dao)
                 .getByIdUtente(utente.getIdUtente());
         campagne.forEach((it) -> it.setUtente(utente));
         utente.setCampagne(campagne);
         return campagne;
      } else {
         return utente.getCampagne();
      }
   }
}