maia_modificado/.svn/pristine/02/02f6a5e776b860f97adda9973a4...

140 lines
4.6 KiB
Plaintext
Executable File
Raw Permalink Blame History

package com.fp.viaticos.rules.query.informe;
import java.util.ArrayList;
import java.util.List;
import com.fp.bpm.query.QueryJsf;
import com.fp.dto.Response;
import com.fp.dto.query.DtoQuery;
import com.fp.dto.query.Filter;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.commondb.PersistenceHelper;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitud;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey;
import com.fp.persistence.pviaticos.solicitud.ViaSolicitudTransporte;
import com.fp.viaticos.rules.consulta.solicitud.ConsultaSolicitud;
import com.fp.viaticos.rules.enums.EnumCodigos;
public class Informe extends QueryRule{
/**
* Clase que clona los objetos de la solicitud para el informe
*/
private static final long serialVersionUID = 1L;
/**
* Metodo sobreescrito para gestionar la respuesta de la consulta
*/
@SuppressWarnings("unchecked")
@Override
public QueryRequest process(QueryRequest pQueryRequest) throws Exception {
String codSolicitud = (String)pQueryRequest.get("csolicitud");
ViaSolicitud informe = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(codSolicitud, EnumCodigos.INFORME.getCodigo()));
if(informe!=null){
return pQueryRequest;
}
this.fijaFiltrosSolicitud(pQueryRequest);
Response response = pQueryRequest.getResponse();
QueryJsf query = new QueryJsf();
query.execute(pQueryRequest);
Object object=response.get("SOLICITUD");
List<Object> objectIntegrantes=(List<Object>)response.get("SOLICITUDINTEGRANTES");
List<Object> objectTransporte=(List<Object>)response.get("SOLICITUDTRANSPORTE");
if(object == null){
return pQueryRequest;
}
ViaSolicitud solicitud = (ViaSolicitud) object;
solicitud = (ViaSolicitud)solicitud.cloneMe();
solicitud.setIsnew(true);
ConsultaSolicitud data = new ConsultaSolicitud();
solicitud.setFec_creacion(FormatDates.getInstance().getDataBaseDate());
data.completeInfoSolicitud(solicitud);
response.put("SOLICITUD", solicitud);
response.put("SOLICITUDINTEGRANTES", this.cloneIntegrantes(objectIntegrantes));
response.put("SOLICITUDTRANSPORTE", this.cloneTransporte(objectTransporte));
response.put("CLONE", "Y");
return pQueryRequest;
}
/**
* M&eacute;todo para cambio de filtros
*/
public void fijaFiltrosSolicitud(QueryRequest pQueryRequest) throws Exception{
DtoQuery dtoQuery = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUD");
DtoQuery dtoQueryInt = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDINTEGRANTES");
DtoQuery dtoQueryTra = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDTRANSPORTE");
List<Filter> filtros = dtoQuery.getLfilter();
List<Filter> filtrosInt = dtoQueryInt.getLfilter();
List<Filter> filtrosTra = dtoQueryTra.getLfilter();
for(Filter filtro: filtros){
if(filtro.getField().equals("pk.cod_tipo")){
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
break;
}
}
for(Filter filtro: filtrosInt){
if(filtro.getField().equals("pk.cod_tipo")){
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
break;
}
}
for(Filter filtro: filtrosTra){
if(filtro.getField().equals("pk.cod_tipo")){
filtro.setValue(EnumCodigos.SOLICITUD.getCodigo());
break;
}
}
}
/**
* M<>todo para clonar la lista de objetos ViaSolicitudIntegrantes
* @param object
*/
private List<ViaSolicitudIntegrantes> cloneIntegrantes(List<Object> objects) throws Exception {
List<ViaSolicitudIntegrantes> listIntegrantes = new ArrayList<ViaSolicitudIntegrantes>();
ViaSolicitudIntegrantes integrante;
for(Object objeto:objects)
{
integrante = (ViaSolicitudIntegrantes)objeto;
ViaSolicitudIntegrantes inte = (ViaSolicitudIntegrantes)integrante.cloneMe();
listIntegrantes.add(inte);
}
ConsultaSolicitud data = new ConsultaSolicitud();
data.completeInfoIntegrantes(objects);
return listIntegrantes;
}
/**
* M<>todo para clonar la lista de objetos ViaSolicitudTransporte
* @param object
*/
private List<ViaSolicitudTransporte> cloneTransporte(List<Object> objects) throws Exception {
List<ViaSolicitudTransporte> listTransporte = new ArrayList<ViaSolicitudTransporte>();
ViaSolicitudTransporte transporte;
for(Object objeto:objects)
{
transporte = (ViaSolicitudTransporte)objeto;
ViaSolicitudTransporte trans = (ViaSolicitudTransporte)transporte.cloneMe();
trans.getPk().setCod_secuencia(null);
listTransporte.add(trans);
}
return listTransporte;
}
}