}
public String listPreparedTransactions(Long elapsedTime) throws Exception
{
if (elapsedTime == null) elapsedTime = 0l;
JBossStringBuilder buffer = new JBossStringBuilder();
buffer.append("<table width=\"100%\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\">");
buffer.append("<tr>");
buffer.append("<th>transaction_id</th>");
buffer.append("<th>branch_qual</th>");
buffer.append("<th>format_id</th>");
buffer.append("<th>global_txid</th>");
buffer.append("<th>elapsed_time</th>");
buffer.append("<th>queue_name (channel_id)</th>");
buffer.append("<th>message_id (state)</th>");
buffer.append("</tr>");
List txs = txRepository.listPreparedTransactions(elapsedTime);
Iterator ittx = txs.iterator();
while (ittx.hasNext())
{
Transaction tx = (Transaction)ittx.next();
Xid xid = tx.getXid();
long tid = tx.getId();
String stid = String.valueOf(tid);
String hexGlobalTxid = new String(xid.getGlobalTransactionId());
String hexBranchQual = new String(xid.getBranchQualifier());
String hexFormatId = String.valueOf(xid.getFormatId());
Map<String, List<String>> qInfo = new HashMap<String, List<String>>();
List msgList1 = persistenceManager.getMessageChannelPairRefsForTx(tid);
List msgList2 = persistenceManager.getMessageChannelPairAcksForTx(tid);
Iterator mIter1 = msgList1.iterator();
while (mIter1.hasNext())
{
MessageChannelPair pair = (MessageChannelPair)mIter1.next();
Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
String qname = binding.queue.getName();
Long chid = binding.queue.getChannelID();
String qkey = qname + " (" + chid + ")";
List<String> msgs = qInfo.get(qkey);
if (msgs == null)
{
msgs = new ArrayList<String>();
qInfo.put(qkey, msgs);
}
msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (+)");
}
Iterator mIter2 = msgList2.iterator();
while (mIter2.hasNext())
{
MessageChannelPair pair = (MessageChannelPair)mIter2.next();
Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
String qname = binding.queue.getName();
Long chid = binding.queue.getChannelID();
String qkey = qname + " (" + chid + ")";
List<String> msgs = qInfo.get(qkey);
if (msgs == null)
{
msgs = new ArrayList<String>();
qInfo.put(qkey, msgs);
}
msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (-)");
}
buffer.append("<tr>");
buffer.append("<td>" + stid + "</td>");
buffer.append("<td>" + hexBranchQual + "</td>");
buffer.append("<td>" + hexFormatId + "</td>");
buffer.append("<td>" + hexGlobalTxid + "</td>");
long age = tx.getAge();
if (age == Long.MIN_VALUE)
{
buffer.append("<td>N/A</td>");
}
else
{
buffer.append("<td>" + tx.getAge() + "</td>");
}
StringBuffer sbq = new StringBuffer();
StringBuffer sbm = new StringBuffer();
Iterator<String> itqs = qInfo.keySet().iterator();
while (itqs.hasNext())
{
String qname = itqs.next();
sbq.append(qname);
List<String> msgs = qInfo.get(qname);
for (String m : msgs)
{
sbq.append("<br/>");
sbm.append(m);
sbm.append("<br/>");
}
}
buffer.append("<td>");
buffer.append(sbq.toString());
buffer.append("</td>");
buffer.append("<td>");
buffer.append(sbm.toString());
buffer.append("</td>");
buffer.append("</tr>");
}
buffer.append("</table>");
return buffer.toString();
}