String[] types = new String[]{"VARCHAR","DOUBLE","VARCHAR","VARCHAR","DOUBLE","VARCHAR","ANY"};
//queries
Query qryQueries=null;
try {
qryQueries = new QueryImpl(cols,types,queries.size(),"query");
} catch (DatabaseException e) {
qryQueries = new QueryImpl(cols,queries.size(),"query");
}
int row=0;
try {
while(qryIt.hasNext()) {
row++;
QueryEntryPro qe=(QueryEntryPro) qryIt.next();
qryQueries.setAt(KeyConstants._name,row,qe.getName()==null?"":qe.getName());
qryQueries.setAt(KeyConstants._time,row,Long.valueOf(qe.getExecutionTime()));
qryQueries.setAt(KeyConstants._sql,row,qe.getSQL().toString());
qryQueries.setAt(KeyConstants._src,row,qe.getSrc());
qryQueries.setAt(KeyConstants._count,row,Integer.valueOf(qe.getRecordcount()));
qryQueries.setAt(KeyConstants._datasource,row,qe.getDatasource());
Struct usage = getUsage(qe);
if(usage!=null) qryQueries.setAt(KeyConstants._usage,row,usage);
Object o=qryExe.get(KeyImpl.init(qe.getSrc()),null);
if(o==null) qryExe.setEL(KeyImpl.init(qe.getSrc()),Long.valueOf(qe.getExecutionTime()));
else qryExe.setEL(KeyImpl.init(qe.getSrc()),Long.valueOf(((Long)o).longValue()+qe.getExecutionTime()));
}
}
catch(PageException dbe) {}
// Pages
// src,load,app,query,total
Struct debugging=new StructImpl();
row=0;
ArrayList<DebugEntryTemplate> arrPages = toArray();
int len=arrPages.size();
Query qryPage=new QueryImpl(
new Collection.Key[]{
KeyConstants._id,
KeyConstants._count,
KeyConstants._min,
KeyConstants._max,
KeyConstants._avg
,KeyConstants._app,
KeyConstants._load,
KeyConstants._query,
KeyConstants._total,
KeyConstants._src},
len,"query");
try {
DebugEntryTemplate de;
//PageSource ps;
for(int i=0;i<len;i++) {
row++;
de=arrPages.get(i);
//ps = de.getPageSource();
qryPage.setAt(KeyConstants._id,row,de.getId());
qryPage.setAt(KeyConstants._count,row,_toString(de.getCount()));
qryPage.setAt(KeyConstants._min,row,_toString(de.getMin()));
qryPage.setAt(KeyConstants._max,row,_toString(de.getMax()));
qryPage.setAt(KeyConstants._avg,row,_toString(de.getExeTime()/de.getCount()));
qryPage.setAt(KeyConstants._app,row,_toString(de.getExeTime()-de.getQueryTime()));
qryPage.setAt(KeyConstants._load,row,_toString(de.getFileLoadTime()));
qryPage.setAt(KeyConstants._query,row,_toString(de.getQueryTime()));
qryPage.setAt(KeyConstants._total,row,_toString( de.getFileLoadTime() + de.getExeTime()));
qryPage.setAt(KeyConstants._src,row,de.getSrc());
}
}
catch(PageException dbe) {}
// Pages Parts
List<DebugEntryTemplatePart> filteredPartEntries = null;
boolean hasParts=partEntries!=null && !partEntries.isEmpty() && !arrPages.isEmpty();
int qrySize=0;
if(hasParts) {
String slowestTemplate = arrPages.get( 0 ).getPath();
filteredPartEntries = new ArrayList();
java.util.Collection<DebugEntryTemplatePartImpl> col = partEntries.values();
for ( DebugEntryTemplatePart detp : col ) {
if ( detp.getPath().equals( slowestTemplate ) )
filteredPartEntries.add( detp );
}
qrySize = Math.min( filteredPartEntries.size(), MAX_PARTS );
}
Query qryPart = new QueryImpl(
new Collection.Key[]{
KeyConstants._id
,KeyConstants._count
,KeyConstants._min
,KeyConstants._max
,KeyConstants._avg
,KeyConstants._total
,KeyConstants._path
,KeyConstants._start
,KeyConstants._end
,KeyConstants._startLine
,KeyConstants._endLine
,KeyConstants._snippet
}, qrySize, "query" );
if(hasParts) {
row=0;
Collections.sort( filteredPartEntries, DEBUG_ENTRY_TEMPLATE_PART_COMPARATOR );
DebugEntryTemplatePart[] parts = new DebugEntryTemplatePart[ qrySize ];
if ( filteredPartEntries.size() > MAX_PARTS )
parts = filteredPartEntries.subList(0, MAX_PARTS).toArray( parts );
else
parts = filteredPartEntries.toArray( parts );
try {
DebugEntryTemplatePart de;
//PageSource ps;
for(int i=0;i<parts.length;i++) {
row++;
de=parts[i];
qryPart.setAt(KeyConstants._id,row,de.getId());
qryPart.setAt(KeyConstants._count,row,_toString(de.getCount()));
qryPart.setAt(KeyConstants._min,row,_toString(de.getMin()));
qryPart.setAt(KeyConstants._max,row,_toString(de.getMax()));
qryPart.setAt(KeyConstants._avg,row,_toString(de.getExeTime()/de.getCount()));
qryPart.setAt(KeyConstants._start,row,_toString(de.getStartPosition()));
qryPart.setAt(KeyConstants._end,row,_toString(de.getEndPosition()));
qryPart.setAt(KeyConstants._total,row,_toString(de.getExeTime()));
qryPart.setAt(KeyConstants._path,row,de.getPath());
if ( de instanceof DebugEntryTemplatePartImpl ) {
qryPart.setAt( KeyConstants._startLine, row, _toString( ((DebugEntryTemplatePartImpl)de).getStartLine() ) );
qryPart.setAt( KeyConstants._endLine, row, _toString( ((DebugEntryTemplatePartImpl)de).getEndLine() ));
qryPart.setAt( KeyConstants._snippet, row, ((DebugEntryTemplatePartImpl)de).getSnippet() );
}
}
}
catch(PageException dbe) {}
}
// exceptions
len = exceptions==null?0:exceptions.size();
Array arrExceptions=new ArrayImpl();
if(len>0) {
Iterator<CatchBlock> it = exceptions.iterator();
row=0;
while(it.hasNext()) {
arrExceptions.appendEL(it.next());
}
}
// output log
//Query qryOutputLog=getOutputText();
// timers
len=timers==null?0:timers.size();
Query qryTimers=new QueryImpl(
new Collection.Key[]{KeyConstants._label,KeyConstants._time,KeyConstants._template},
len,"timers");
if(len>0) {
try {
Iterator<DebugTimerImpl> it = timers.iterator();
DebugTimer timer;
row=0;
while(it.hasNext()) {
timer=it.next();
row++;
qryTimers.setAt(KeyConstants._label,row,timer.getLabel());
qryTimers.setAt(KeyConstants._template,row,timer.getTemplate());
qryTimers.setAt(KeyConstants._time,row,Caster.toDouble(timer.getTime()));
}
}
catch(PageException dbe) {}
}
// traces
len=traces==null?0:traces.size();
if(!((ConfigImpl)pc.getConfig()).hasDebugOptions(ConfigImpl.DEBUG_TRACING))len=0;
Query qryTraces=new QueryImpl(
new Collection.Key[]{
KeyConstants._type,
KeyConstants._category,
KeyConstants._text,
KeyConstants._template,
KeyConstants._line,
KeyConstants._action,
KeyConstants._varname,
KeyConstants._varvalue,
KeyConstants._time},
len,"traces");
if(len>0) {
try {
Iterator<DebugTraceImpl> it = traces.iterator();
DebugTraceImpl trace;
row=0;
while(it.hasNext()) {
trace= it.next();
row++;
qryTraces.setAt(KeyConstants._type,row,LogUtil.toStringType(trace.getType(), "INFO"));
if(!StringUtil.isEmpty(trace.getCategory()))qryTraces.setAt(KeyConstants._category,row,trace.getCategory());
if(!StringUtil.isEmpty(trace.getText()))qryTraces.setAt(KeyConstants._text,row,trace.getText());
if(!StringUtil.isEmpty(trace.getTemplate()))qryTraces.setAt(KeyConstants._template,row,trace.getTemplate());
if(trace.getLine()>0)qryTraces.setAt(KeyConstants._line,row,new Double(trace.getLine()));
if(!StringUtil.isEmpty(trace.getAction()))qryTraces.setAt(KeyConstants._action,row,trace.getAction());
if(!StringUtil.isEmpty(trace.getVarName()))qryTraces.setAt(KeyImpl.init("varname"),row,trace.getVarName());
if(!StringUtil.isEmpty(trace.getVarValue()))qryTraces.setAt(KeyImpl.init("varvalue"),row,trace.getVarValue());
qryTraces.setAt(KeyConstants._time,row,new Double(trace.getTime()));
}
}
catch(PageException dbe) {}
}
// scope access
len=implicitAccesses==null?0:implicitAccesses.size();
Query qryImplicitAccesseses=new QueryImpl(
new Collection.Key[]{
KeyConstants._template,
KeyConstants._line,
KeyConstants._scope,
KeyConstants._count,
KeyConstants._name},
len,"implicitAccess");
if(len>0) {
try {
Iterator<ImplicitAccessImpl> it = implicitAccesses.values().iterator();
ImplicitAccessImpl das;
row=0;
while(it.hasNext()) {
das= it.next();
row++;
qryImplicitAccesseses.setAt(KeyConstants._template,row,das.getTemplate());
qryImplicitAccesseses.setAt(KeyConstants._line,row,new Double(das.getLine()));
qryImplicitAccesseses.setAt(KeyConstants._scope,row,das.getScope());
qryImplicitAccesseses.setAt(KeyConstants._count,row,new Double(das.getCount()));
qryImplicitAccesseses.setAt(KeyConstants._name,row,das.getName());
}
}
catch(PageException dbe) {}
}
Query history=new QueryImpl(new Collection.Key[]{},0,"history");
try {
history.addColumn(KeyConstants._id, historyId);
history.addColumn(KeyConstants._level, historyLevel);
} catch (PageException e) {
}
if(addAddionalInfo) {
debugging.setEL(KeyConstants._cgi,pc.cgiScope());