Sei sulla pagina 1di 4

package it.sapienza.pwd.

ejb;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.mail.Session;
import javax.sql.DataSource;
import javax.validation.executable.ValidateOnExecution;

import org.apache.log4j.Logger;

import it.sapienza.common.dto.AutenticazioneDTO;
import it.sapienza.common.dto.DomandaSicurezzaDTO;
import it.sapienza.common.dto.PwdDTO;
import it.sapienza.common.dto.RecupwdDTO;
import it.sapienza.common.dto.SimpleElementDTO;
import it.sapienza.common.util.CryptoUtil;
import it.sapienza.common.util.EsitoEJB;
import it.sapienza.common.util.RisultatoLista;
import it.sapienza.common.util.TipoErrore;
import it.sapienza.comunicazione.ejb.ComunicazioneEJBRemote;
import it.sapienza.comunicazione.ejb.util.MailEnum;
import it.sapienza.pwd.ejb.dao.PwdServiceDao;
import it.sapienza.pwd.util.PasswordUtil;

@Stateless
@ValidateOnExecution
public class PwdEJB implements PwdEJBRemote, PwdEJBLocal {

@Override
public EsitoEJB<Boolean> aggiornaEmailAccesso(String codiSogg, String email)
throws Exception {
_logger.debug("[PwdEJB] - Inizio aggiornaEmailAccesso");
_logger.debug("Parametro codiSogg: " + codiSogg);
_logger.debug("Parametro email: " + email);
EsitoEJB<Boolean> esito = new EsitoEJB<Boolean>();
PwdServiceDao dDao = new PwdServiceDao(dataSource);
Boolean reset = false;
_logger.debug("reset: " + reset);
boolean mailHasChanged = false;
_logger.debug("mailHasChanged: " + mailHasChanged);
String oldMail = "";
boolean emailSpidCie = false;//issue2424
boolean doppiaIscrizione = dDao.checkDoppiaIscrizione(codiSogg);
//Issue4599
_logger.debug("Doppia iscrizione: " + doppiaIscrizione);

int numeroMatricoleAssociate =
dDao.numeroMatricoleAssociateEmail(email);
_logger.debug("numeroMatricoleAssociate: " + numeroMatricoleAssociate);
Long codiSoggLong = Long.valueOf(codiSogg);
_logger.debug("codiSoggLong: " + codiSoggLong);

if(numeroMatricoleAssociate > 1) {
ArrayList<Long>listaMatricole = dDao.recuCodiSoggArray(email);
Long matricola1 = listaMatricole.get(0);
_logger.debug("Matricola1: " + matricola1);
Long matricola2 = listaMatricole.get(1);
_logger.debug("Matricola2: " + matricola2);
}

try {
// _logger.debug("Cerco email in SEST_RECU_PSWD");
// Long idSogg = dDao.recuCodiSogg(email);
// _logger.debug("Matricola recuperata da SEST_RECU_PSWD - idSogg: "
+ idSogg );
//
// _logger.debug("cerco email in SEST_INDI_SOGG");
// Long idSoggIndiSogg = dDao.recuCodiSoggIndiSogg(email);
// _logger.debug("Matricola recuperata da SEST_INDI_SOGG -
idSoggIndiSogg: " + idSoggIndiSogg );

if(!doppiaIscrizione) {
_logger.debug("Matricola unica");
_logger.debug("Cerco la matricola in SEST_RECU_PSWD
dall'email");
Long idSogg = dDao.recuCodiSogg(email);
_logger.debug("Matricola recuperata da SEST_RECU_PSWD -
idSogg: " + idSogg );

_logger.debug("cerco email in SEST_INDI_SOGG");


Long idSoggIndiSogg = dDao.recuCodiSoggIndiSogg(email);
_logger.debug("Matricola recuperata da SEST_INDI_SOGG -
idSoggIndiSogg: " + idSoggIndiSogg );

if(idSogg.longValue()>0 && (!
codiSogg.equals(idSogg.toString()))) {
esito.setDescrizioneErrore("Email non valida");

esito.setLivelloErrore(TipoErrore.ERRORE_GENERICO.getLivelloErrore());

esito.setCodiceErrore(TipoErrore.ERRORE_GENERICO.getCodiceErrore());
_logger.debug("Esito: " + esito);
return esito;
}else {
_logger.debug("Matricola valida");
}

if(idSoggIndiSogg.longValue()>0 && !
codiSogg.equals(idSogg.toString())) {
esito.setDescrizioneErrore("Email non valida");

esito.setLivelloErrore(TipoErrore.ERRORE_GENERICO.getLivelloErrore());

esito.setCodiceErrore(TipoErrore.ERRORE_GENERICO.getCodiceErrore());
_logger.debug("Esito: " + esito);
return esito;
}else {
_logger.debug("Matricola valida");
}
}

else {
int numeroMatricole = dDao.recuCodiSoggArray(email).size();
_logger.debug("Numero matricole :" + numeroMatricole);

_logger.debug("Matricola doppia");
String matricolaPadre = dDao.getMatricolaPadre(codiSogg);
_logger.debug("Matricola padre: " + matricolaPadre);
String matricolaFiglia = dDao.getMatricolaFiglia(codiSogg);
_logger.debug("Matricola figlia: "+ matricolaFiglia);

if(matricolaPadre.equals(idSogg.toString()) ||
matricolaFiglia.equals(idSogg.toString() )) {
_logger.debug("Matricola Padre o Matricola figlia
uguale a isSogg ");
}else {
_logger.debug("Id non corretto ");
esito.setDescrizioneErrore("Email non valida");

esito.setLivelloErrore(TipoErrore.ERRORE_GENERICO.getLivelloErrore());

esito.setCodiceErrore(TipoErrore.ERRORE_GENERICO.getCodiceErrore());
_logger.debug("Esito: " + esito);
return esito;
}

if(matricolaPadre.equals(idSoggIndiSogg.toString()) ||
matricolaFiglia.equals(idSoggIndiSogg.toString()) ) {
_logger.debug("Matricola Padre o Matricola figlia
uguale a idSoggIndiSogg ");
}else {
_logger.debug("idSoggIndiSogg no good");
esito.setDescrizioneErrore("Email non valida");

esito.setLivelloErrore(TipoErrore.ERRORE_GENERICO.getLivelloErrore());

esito.setCodiceErrore(TipoErrore.ERRORE_GENERICO.getCodiceErrore());
_logger.debug("Esito: " + esito);
return esito;
}
}

oldMail = dDao.recuIndiMail(codiSogg);
_logger.debug("Vecchia email: " + oldMail);

if(!oldMail.equalsIgnoreCase(email))
mailHasChanged = true;
_logger.debug("email cambiata: "+ mailHasChanged );

reset = true;
if (reset == false) {
context.setRollbackOnly();
} else {
if(mailHasChanged)
reset = dDao.aggiornaIndiMailRecapiti(codiSogg,
email);
}
if (reset == false)
context.setRollbackOnly();
else {
if(mailHasChanged) {
if(dDao.existMailForUser(codiSogg)) {
_logger.debug(" se già esiste una mail,
effettua l'aggiornamento");
reset =
dDao.updateMailPerRecuPswdAdeguamento(Long.parseLong(codiSogg), email, "");
//reset =
dDao.aggiornaIndiMailRecuPswd(codiSogg, email);
} else {
_logger.debug(" se non esiste una mail,
effettua l'inserimento");
reset =
dDao.insertMailPerRecuPswdAdeguamento(Long.parseLong(codiSogg), email, "",
emailSpidCie);
}
}
}
if (reset == false)
context.setRollbackOnly();
} catch (Exception e) {
context.setRollbackOnly();
throw e;
}
esito.setRisultato(reset);
_logger.debug("[PwdEJB] - Fine aggiornaEmailAccesso");
return esito;
}

Potrebbero piacerti anche