package com.fp.bpm.report; import java.util.List; import com.fp.common.exception.CommonException; import com.fp.dto.query.QueryRequest; import com.fp.dto.rules.ReportRule; import com.fp.dto.rules.TransactionRule; import com.fp.persistence.commondb.db.DataHelper; import com.fp.persistence.commondb.exception.CommondbException; import com.fp.persistence.pgeneral.trans.report.TgeneTransactionReports; public class ReportProcessor { /**Objeto con beans utilizados en el proceso de consulta.*/ private QueryRequest queryRequest; /** * Metodo que se encarga de llenar tablas utilizadas en la generacion de reportes. * @param pQueryRequest Datos utilizados en la generacion de reportes. * @return boolean * @throws CommondbException * @throws Exception */ public boolean process(QueryRequest pQueryRequest) throws CommondbException, Exception { Thread.currentThread().setName(pQueryRequest.getJournalId()); queryRequest = pQueryRequest; //Ejecuta consultas especiales para una transaccion. this.processByTransaction(); return true; } /** * Metodo que ejecuta procesos especiales de consulta por transaccion. * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. * @throws Exception */ private void processByTransaction() throws Exception { if (queryRequest.getTransactionModule() == null || queryRequest.getTransactionCode() == null) { return; } List lquery = DataHelper.getInstance().getTgeneTransactionReports( queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion()); if (lquery == null) { return; } for (TgeneTransactionReports obj : lquery) { this.processByTransactionRule(obj); } } /** * Metodo encargado de ejecutar cada una de las reglas definidas en la transaccion. * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. * @param pProcess Objeto que contiene la regla a ejecutar. * @throws Exception */ private void processByTransactionRule(TgeneTransactionReports pObj) throws Exception { ReportRule rule = null; try { rule = (ReportRule) Class.forName(pObj.getProcesscode()).newInstance(); } catch (ClassNotFoundException e) { throw new CommonException("COMMON-0014", "CLASE {0} A EJECUTAR NO EXISTE MODULE: {1} TRANS: {2} VERSION {3}", e, pObj.getProcesscode(), queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion()); } catch (ClassCastException e) { throw new CommonException("COMMON-0015", "PROCESO {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4}", e, pObj.getProcesscode(), queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion(), TransactionRule.class.getName()); } rule.process(queryRequest); } }