package com.fitbank.homebanking; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.fitbank.dto.management.Criterion; import com.fitbank.dto.management.Detail; import com.fitbank.dto.management.Field; import com.fitbank.dto.management.Record; import com.fitbank.dto.management.Table; public class JSONData { private static final String QUERY_CTL="__QUERY"; private static final String TABLE_CTL="__TABLE"; private static final String ID_CTL="__ID"; @SuppressWarnings("unused") private HttpServletRequest request; private Map param; private String identifier="code"; private Detail detail; private String query; private String table; private int page=1; @SuppressWarnings("unchecked") public JSONData(HttpServletRequest pRequest) throws Exception { request = pRequest; param=new HashMap(); for(Object key:request.getParameterMap().keySet()){ param.put(key.toString(),request.getParameter(key.toString())); } detail=new Detail(); detail.setType(MessageTypes.CON.name()); query=(String)param.get(QUERY_CTL); table=(String)param.get(TABLE_CTL); identifier=(String)param.get(ID_CTL); Object obj=this.request.getSession().getAttribute(this.query); if(!(obj instanceof Transaction)){ throw new Exception("El detail asociado a la lista de valores no definido"); } DataManage dm=(DataManage)request.getSession().getAttribute(DataManage.KEY); dm.prepareDetail(detail,(Transaction)obj); Table lov= detail.findTableByAlias(table); lov.setPageNumber(this.page); List lCriteria= lov.getCriteria(); for (Criterion criterion : lCriteria) { if(this.param.containsKey(criterion.getName())){ criterion.setValue(this.param.get(criterion.getName())); } } for (Criterion criterion : lCriteria) { if(criterion.getCondition().compareTo("like")==0&&(criterion.getValue()==null||criterion.getValue().toString().trim().compareTo("")==0)){ criterion.setValue("%"); } } BussinessDelegate bd=new BussinessDelegate(); this.detail=bd.process(detail); } public JSONData(MappParam){ this.param=pParam; } @SuppressWarnings("unchecked") public String getJsonData() throws Exception { Table lov= detail.findTableByAlias(table); return this.formatData(lov.getRecords()); } private String formatData(Iterable pData){ String data="{identifier:\""+identifier+"\","; data+="items: ["; boolean first=true; for (Record record : pData) { if(first){ first=false; }else{ data+=","; } data+="{"; data+=this.record2Jason(record); data+="}"; } return data+"]}"; } private String record2Jason(Record pRecord){ String data=""; boolean first=true; for(String key:pRecord.keySet()){ if(first){ first=false; }else{ data+=","; } data+=key+":\""+((Field)pRecord.get(key)).getValue()+"\""; } return data; } }