public static DumpData toDumpData(Query query,PageContext pageContext, int maxlevel, DumpProperties dp) {
maxlevel--;
Collection.Key[] keys=CollectionUtil.keys(query);
DumpData[] heads=new DumpData[keys.length+1];
//int tmp=1;
heads[0]=new SimpleDumpData("");
for(int i=0;i<keys.length;i++) {
heads[i+1]=new SimpleDumpData(keys[i].getString());
}
StringBuilder comment=new StringBuilder();
//table.appendRow(1, new SimpleDumpData("SQL"), new SimpleDumpData(sql.toString()));
String template=query.getTemplate();
if(!StringUtil.isEmpty(template))
comment.append("Template: ").append(template).append("\n");
//table.appendRow(1, new SimpleDumpData("Template"), new SimpleDumpData(template));
int top = dp.getMaxlevel(); // in Query dump maxlevel is used as Top
comment.append("Execution Time: ").append(Caster.toString(FormatUtil.formatNSAsMSDouble(query.getExecutionTime()))).append(" ms \n");
comment.append("Record Count: ").append(Caster.toString(query.getRecordcount()));
if ( query.getRecordcount() > top )
comment.append( " (showing top " ).append( Caster.toString( top ) ).append( ")" );
comment.append("\n");
comment.append("Cached: ").append(query.isCached()?"Yes\n":"No\n");
comment.append("Lazy: ").append(query instanceof SimpleQuery?"Yes\n":"No\n");
SQL sql=query.getSql();
if(sql!=null)
comment.append("SQL: ").append("\n").append(StringUtil.suppressWhiteSpace(sql.toString().trim())).append("\n");
//table.appendRow(1, new SimpleDumpData("Execution Time (ms)"), new SimpleDumpData(exeTime));
//table.appendRow(1, new SimpleDumpData("recordcount"), new SimpleDumpData(getRecordcount()));
//table.appendRow(1, new SimpleDumpData("cached"), new SimpleDumpData(isCached()?"Yes":"No"));
DumpTable recs=new DumpTable("query","#cc99cc","#ffccff","#000000");
recs.setTitle("Query");
if(dp.getMetainfo())recs.setComment(comment.toString());
recs.appendRow(new DumpRow(-1,heads));
// body
DumpData[] items;
int recordcount=query.getRecordcount();
int columncount=query.getColumnNames().length;
for(int i=0;i<recordcount;i++) {
items=new DumpData[columncount+1];
items[0]=new SimpleDumpData(i+1);
for(int y=0;y<keys.length;y++) {
try {
Object o=query.getAt(keys[y],i+1);
if(o instanceof String)items[y+1]=new SimpleDumpData(o.toString());
else if(o instanceof Number) items[y+1]=new SimpleDumpData(Caster.toString(((Number)o)));
else if(o instanceof Boolean) items[y+1]=new SimpleDumpData(((Boolean)o).booleanValue());
else if(o instanceof Date) items[y+1]=new SimpleDumpData(Caster.toString(o));
else if(o instanceof Clob) items[y+1]=new SimpleDumpData(Caster.toString(o));
else items[y+1]=DumpUtil.toDumpData(o, pageContext,maxlevel,dp);
} catch (PageException e) {
items[y+1]=new SimpleDumpData("[empty]");
}
}
recs.appendRow(new DumpRow(1,items));
if ( i == top - 1 )