maia/.svn/pristine/da/da09026f7259977c1d8f0618652...

102 lines
4.0 KiB
Plaintext
Executable File

package com.fp.person.rules.query.code;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;
import com.fp.common.helper.Constant;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.general.exception.GeneralException;
import com.fp.persistence.commondb.PersistenceHelper;
/**
* Clase que verifica si las direcciones se encuentran referenciadas en las tablas de TcustPeopleJob y
* TcustCompanyBranch
*
* @author JARIAS
*
*/
public class ValidationAddress extends QueryRule {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Metodo que consulta los datos de manera normal segun el query enviado
*/
@Override
public QueryRequest process(QueryRequest qr) throws Exception {
// TODO Auto-generated method stub
List<Object> result = null;
List<Object> resultBranch = null;
Integer personcode = null;
Object objpersoncode = qr.get("personcode");
if (objpersoncode instanceof String) {
personcode = Integer.parseInt(objpersoncode.toString());
} else if (objpersoncode instanceof String) {
personcode = (Integer) objpersoncode;
}
Integer addressnumber = (Integer) qr.get("addressnumber");
result = this.ValidateAddressJob(personcode, addressnumber);
resultBranch = this.ValidateAddressBranch(personcode, addressnumber);
if (((result != null) && (!result.isEmpty())) || ((resultBranch != null) && (!resultBranch.isEmpty()))) {
throw new GeneralException("CUST-0010", "NO SE PUEDE ELIMINAR LA DIRECCIÓN PORQUE SE ENCUENTRA ASOCIADA");
}
return qr;
}
/**
* Metodo que consulta si la direccion esta refernciada en la tabla TcustPeopleJob
*
* @param personcode codigo de la persona dueña de la direccion
* @param addressnumber codigo de la direccion a consultar
* @return numberAddress retorna el codigo de la direccion si esta refenciado si es igual a 0 no existe referencia
*/
private List<Object> ValidateAddressJob(Integer personcode, Integer addressnumber) throws Exception {
List<Object> numberAddress = new ArrayList<Object>();
Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLJOB);
qry.setParameter("personcode", personcode);
qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp());
qry.setParameter("addressnumber", addressnumber);
return numberAddress = qry.getResultList();
}
/**
* Metodo que consulta si la direccion se encuentra referenciado en la tabla TcustCompanyBranch
*
* @param personcode codigo de la persona dueña de la direccion
* @param addressnumber codigo de la direccion a consultar
* @return numberAddress la lista es diferente de null si existe referencia
* @throws Exception
*/
private List<Object> ValidateAddressBranch(Integer personcode, Integer addressnumber) throws Exception {
List<Object> addressBranch = new ArrayList<Object>();
Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLBRANCH);
qry.setParameter("personcode", personcode);
qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp());
qry.setParameter("addressnumber", addressnumber);
return addressBranch = qry.getResultList();
}
/**
* Sentecia para consulta en la TcustPeopleJob
*/
private static final String JPQLJOB = "select t.address from TcustPeopleJob t where t.pk.personcode=:personcode"
+ " and t.pk.dateto=:dateto and t.address=:addressnumber";
/**
* Sentencia para consultar en la TcustCompanyBranch
*/
private static final String JPQLBRANCH = "select t.addressnumber from TcustCompanyBranch t where t.pk.personcode=:personcode "
+ " and t.pk.dateto=:dateto and t.addressnumber=:addressnumber";
}