100 lines
3.4 KiB
Plaintext
Executable File
100 lines
3.4 KiB
Plaintext
Executable File
package com.fp.general.security.rules;
|
||
|
||
import javax.persistence.NoResultException;
|
||
import javax.persistence.Query;
|
||
|
||
import com.fp.dto.rules.TransactionRule;
|
||
import com.fp.dto.save.SaveRequest;
|
||
import com.fp.general.exception.GeneralException;
|
||
import com.fp.persistence.commondb.PersistenceHelper;
|
||
import com.fp.persistence.pgeneral.safe.TsafeUser;
|
||
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
|
||
import com.fp.sessionbeans.helper.Sequence;
|
||
|
||
/**
|
||
* Clase que se encuentra del manejo
|
||
* @author scastillo
|
||
*/
|
||
public class CreateInternalCodeUser extends TransactionRule {
|
||
|
||
private static final long serialVersionUID = 1L;
|
||
|
||
/**
|
||
* Metodo que se encarga de completar el codigo interno eln la creacion de usuarios
|
||
* @param pSaveRequest
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception {
|
||
// Si la pantalla es diferente de tx 1 120 , se procede a validar creacion de usuarios
|
||
if(!pSaveRequest.get("PANTALLA").toString().equalsIgnoreCase("USUARIOSPERFIL_MOD1_TX120")){
|
||
if( !pSaveRequest.isJsf()){
|
||
TsafeUser tsafeUser = (TsafeUser) pSaveRequest.getSaveBeanModifiedObject("TSAFEUSER");
|
||
this.validateuser(tsafeUser.getPk().trim(), tsafeUser.getCompanycode());
|
||
tsafeUser.setInternalcode(getInternalCode());
|
||
}else{
|
||
this.proessjsf(pSaveRequest);
|
||
}
|
||
}
|
||
return pSaveRequest;
|
||
}
|
||
|
||
private void proessjsf(SaveRequest pSaveRequest) throws Exception {
|
||
TsafeUserDetail ud = (TsafeUserDetail) pSaveRequest.getSaveBeanModifiedObject("USERDETAIL");
|
||
if(ud == null){
|
||
return;
|
||
}
|
||
this.validateuser(ud.getPk().getUsercode(), ud.getCompanycode());
|
||
TsafeUser tsu = new TsafeUser(ud.getPk().getUsercode());
|
||
tsu.setPersoncode(ud.getPk().getPersoncode());
|
||
tsu.setCompanycode(ud.getCompanycode());
|
||
tsu.setInternalcode(getInternalCode());
|
||
pSaveRequest.putSaveBean("TSAFEUSER", tsu, 1);
|
||
}
|
||
|
||
private void validateuser(String usercode, Integer company) throws Exception {
|
||
String code = this.findUser(usercode, company);
|
||
if(code!=null){
|
||
throw new GeneralException("GENE-0042", "C<>DIGO DE USUARIO YA EXISTE: {0}", code);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Metodo que se ejecuta en modo reverso
|
||
* @param pSaveRequest
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception {
|
||
return pSaveRequest;
|
||
}
|
||
|
||
/**
|
||
* Metodo que obtiene el numero correspondiente para el codigo interno del usuario
|
||
* @return
|
||
* @throws Exception
|
||
*/
|
||
private Integer getInternalCode() throws Exception {
|
||
Sequence sequence = new Sequence();
|
||
return Integer.valueOf(sequence.getNextValue("INTERNALCODE").toString());
|
||
}
|
||
private static String JPQL_USER ="select t.pk from TsafeUser t where t.pk = :usercode " +
|
||
" and t.companycode = :company";
|
||
|
||
private String findUser(String usercode,Integer company) throws Exception{
|
||
String code;
|
||
Query qry = PersistenceHelper.getEntityManager().createQuery(JPQL_USER);
|
||
qry.setParameter("usercode", usercode);
|
||
qry.setParameter("company", company);
|
||
try {
|
||
code = (String)qry.getSingleResult();
|
||
} catch (NoResultException e) {
|
||
return code =null;
|
||
}
|
||
return code;
|
||
}
|
||
|
||
|
||
|
||
}
|