maia_modificado/.svn/pristine/33/3325ed7931a970d169b4925be5b...

97 lines
4.3 KiB
Plaintext
Executable File

package com.fp.general.security.rules;
import com.fp.dto.rules.TransactionRule;
import com.fp.dto.save.SaveRequest;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.pbpm.gene.TbpmGroupsUsers;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;
import com.fp.persistence.pgeneral.safe.TsafeUserDetailKey;
import com.fp.persistence.pgeneral.safe.TsafeUserSession;
import com.fp.persistence.pgeneral.safe.TsafeUserSessionKey;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
/**
* Clase que se va de encargar cuando se activa un usuario de eliminarlo de la tabla tsafeusersession para que se pueda loguear
* @author scastillo
*/
public class MaintenanceUser extends TransactionRule {
/**
* Metodo que busca si estael usuario logueado lo eliminará de la sesion
* @param sr
* @return
* @throws Exception
*/
@Override
public SaveRequest normalProcess(SaveRequest sr) throws Exception {
TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) sr.getSaveBeanModifiedObject("TSAFEUSERDETAIL");
if (tsafeUserDetail == null) {
tsafeUserDetail = (TsafeUserDetail) sr.getSaveBeanModifiedObject("USERDETAIL");
}
if (tsafeUserDetail == null) {
return sr;
}
String task = (String) tsafeUserDetail.get("task");
String isuserbpm = tsafeUserDetail.getIsuserbpm();
String usercode = tsafeUserDetail.getPk().getUsercode();
TsafeUserDetailKey tsafeUserDetailKey = new TsafeUserDetailKey();
tsafeUserDetailKey.setDateto(FormatDates.getDefaultExpiryTimestamp());
tsafeUserDetailKey.setPersoncode(tsafeUserDetail.getPk().getPersoncode());
tsafeUserDetailKey.setUsercode(tsafeUserDetail.getPk().getUsercode());
TsafeUserDetail tsafeUserDetailPreview = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), tsafeUserDetailKey);
if (tsafeUserDetailPreview != null && tsafeUserDetailPreview.getUserstatuscatalog().compareTo("BLQ") == 0
&& tsafeUserDetail.getUserstatuscatalog().compareTo("ACT") == 0) {
// TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey();
// tsafeUserSessionKey.setDateto(FormatDates.getDefaultExpiryTimestamp());
// tsafeUserSessionKey.setUsercode(tsafeUserDetail.getPk().getUsercode());
// TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey);
// if (tsafeUserSession != null) {
// Query qry = PersistenceHelper.getEntityManager().createQuery("update TsafeUserSession set pk.dateto=:expiration where pk.dateto = :dateto and pk.usercode = :usercode");
// qry.setParameter("expiration", FormatDates.getInstance().getDataBaseTimestamp());
// qry.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp());
// qry.setParameter("usercode", tsafeUserSession.getPk().getUsercode());
// qry.executeUpdate();
// }
}
this.verifyUserGroup(task, isuserbpm, usercode);
return sr;
}
/**
* Modo que se ejecuta en modo reverso
* @param sr
* @return
* @throws Exception
*/
@Override
public SaveRequest reverseProcess(SaveRequest sr) throws Exception {
return sr;
}
/**
* Verifica si el usuario del bpm a sido eliminado, lo elimina del grupo.
* @param task
* @param isuserbpm
* @param usercode
* @throws Exception
*/
private void verifyUserGroup(String task, String isuserbpm, String usercode) throws Exception {
EntityManager em = PersistenceHelper.getEntityManager();
if (task!=null && task.compareTo("NOTASK") == 0 && isuserbpm.compareTo("N") == 0) {
Query qry = em.createQuery("from TbpmGroupsUsers g where g.pk.usercode = :code");
qry.setParameter("code", usercode);
@SuppressWarnings("unchecked")
List<TbpmGroupsUsers> objs = (List<TbpmGroupsUsers>)qry.getResultList();
if(!objs.isEmpty()){
for(TbpmGroupsUsers tbpmGroupsUsers: objs){
PersistenceHelper.delete(tbpmGroupsUsers);
}
}
}
}
}