package com.knowgate.dataobjs; import java.util.ArrayList; import java.util.Collections; import com.knowgate.storage.Record; import com.knowgate.storage.RecordSet; import com.knowgate.storage.RecordColumnValueComparatorAsc; import com.knowgate.storage.RecordColumnValueComparatorDesc; public class DBRecordSet extends ArrayList<Record> implements RecordSet { private static final long serialVersionUID = 70000l; public void sort(String sColumnName) throws ArrayIndexOutOfBoundsException { if (size()>0) { Collections.sort(this, new RecordColumnValueComparatorAsc(sColumnName)); } } public void sortDesc(String sColumnName) throws ArrayIndexOutOfBoundsException { if (size()>0) { Collections.sort(this, new RecordColumnValueComparatorDesc(sColumnName)); } } public int find (String sColumnName, Object oValue) { if (oValue==null) return -1; for (int r=0; r<size(); r++) { if (oValue.equals(((Record)get(r)).get(sColumnName))) return r; } return -1; } private static String rpl(String s) { return s.replace('"','`').replace('\n',' ').replace('\t',' '); } public String json(String sName, String sIdentifier, String sLabel) throws ArrayIndexOutOfBoundsException { boolean c = false; StringBuffer oBuff = new StringBuffer(200*size()); oBuff.append("{\"identifier\":\""+sIdentifier+"\",\"label\":\""+sLabel+"\",\"items\":[\n"); if (sLabel.equalsIgnoreCase("NmLegal (IdCountry)")) { for (Record r : this) { if (c) oBuff.append(','); oBuff.append("{\"name\":\""+rpl(r.getString(sName,""))+"\","); oBuff.append("\""+sIdentifier+"\":\""+rpl(r.getString(sIdentifier,""))+"\","); if (r.isEmpty("IdCountry")) oBuff.append("\""+sLabel+"\":\""+rpl(r.getString("NmLegal",""))+"\"}\n"); else oBuff.append("\""+sLabel+"\":\""+rpl(r.getString("NmLegal",""))+" ("+r.getString("IdCountry","").toUpperCase()+")\"}\n"); c = true; } // next } else { for (Record r : this) { if (c) oBuff.append(','); oBuff.append("{\"name\":\""+rpl(r.getString(sName,""))+"\","); oBuff.append("\""+sIdentifier+"\":\""+rpl(r.getString(sIdentifier,""))+"\","); oBuff.append("\""+sLabel+"\":\""+rpl(r.getString(sLabel,""))+"\"}\n"); c = true; } // next } // fi oBuff.append("]}"); return oBuff.toString(); } }