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 result = null; List 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 ValidateAddressJob(Integer personcode, Integer addressnumber) throws Exception { List numberAddress = new ArrayList(); 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 ValidateAddressBranch(Integer personcode, Integer addressnumber) throws Exception { List addressBranch = new ArrayList(); 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"; }