maia/.svn/pristine/a7/a7d6a966711ae7b201b1aad84ec...

104 lines
3.8 KiB
Plaintext
Executable File

package com.fp.general.rules.query.code;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fp.bpm.query.Query;
import com.fp.core.exception.CoreException;
import com.fp.dto.Response;
import com.fp.dto.query.QueryBean;
import com.fp.dto.query.QueryRequest;
import com.fp.dto.rules.QueryRule;
import com.fp.persistence.pgeneral.acco.TgeneAccount;
/**
* Clase que se encarga de obtener una lista de cuentas, que se utiliza en el lov de cuentas en las paginas.
*
* @author Jorge Vaca
* @version 2.1
*/
public class LovAccount extends QueryRule {
/**
* Versión de la Clase
*/
private static final long serialVersionUID = 1L;
/** Tabla */
private static final String TGENEACCOUNT = "TGENEACCOUNT";
/*
* (non-Javadoc)
*
* @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest)
*/
@Override
public QueryRequest process(QueryRequest pQueryRequest) throws Exception {
Response response = pQueryRequest.getResponse();
Query query = new Query();
query.process(pQueryRequest);
this.fillResponse(response, pQueryRequest);
return pQueryRequest;
}
/**
* Metodo que construye la respuesta del lov de cuentas.
*
* @param pResponse Objeto que contiene los objetos de respuesta.
* @param pQueryRequest Peticion
* @throws Exception
*/
private void fillResponse(Response pResponse, QueryRequest pQueryRequest) throws Exception {
List<Map<String, Object>> lresp = new ArrayList<Map<String, Object>>();
@SuppressWarnings("unchecked")
List<Object> lQuota = (List<Object>) pResponse.get(LovAccount.TGENEACCOUNT);
for (Object object : lQuota) {
TgeneAccount obj = (TgeneAccount) object;
Map<String, Object> m = new HashMap<String, Object>();
if (obj.getPk().getAccount() == null) {
QueryBean qb = pQueryRequest.getBeans().get(LovAccount.TGENEACCOUNT);
if ((qb.getCriteriaValue("pk.account") != null) && (qb.getCriteriaValue("pk.company") != null) && !qb.isNotin("pk.account")) {
throw new CoreException("CORE-0007", "CUENTA NO EXISTE: {0} COMPANIA {1}", qb.getCriteriaValue("pk.account"),
qb.getCriteriaValue("pk.company"));
}
break;
}
m.put("pk_account", obj.getPk().getAccount());
m.put("accountname", obj.getAccountname());
m.put("currencycode", obj.getCurrencycode());
m.put("pk_company", obj.getPk().getCompany());
m.put("personcode", obj.getPersoncode());
m.put("modulecode", obj.getModulecode());
m.put("productcode", obj.getProductcode());
m.put("subproductcode", obj.getSubproductcode());
m.put("statuscode", obj.getAccountstatuscode());
lresp.add(m);
}
this.checkData(lresp);
pResponse.remove(LovAccount.TGENEACCOUNT);
pResponse.put(LovAccount.TGENEACCOUNT, lresp);
}
/**
* Verifica y completa la estructura en el caso que la tabla no tenga datos
*
* @param lresp
*/
private void checkData(List<Map<String, Object>> lresp) {
if (lresp.isEmpty()) {
Map<String, Object> m = new HashMap<String, Object>();
m.put("pk_account", null);
m.put("accountname", null);
m.put("currencycode", null);
m.put("pk_company", null);
m.put("personcode", null);
m.put("modulecode", null);
m.put("productcode", null);
m.put("subproductcode", null);
lresp.add(m);
}
}
}