@Override public void close() throws IOException { try { if (xmlWriter != null) xmlWriter.close(); } catch (XMLStreamException ignore) { } finally { super.close(); } }
private void processAggregatedMessage(Message aggregatedMessage, Message currentMessage) { long avRunTime = aggregatedMessage.getRunTime() / aggregatedMessage.getRunNum(); long avStartTime = (aggregatedMessage.getStartTime() + (currentMessage.getStartTime() + currentMessage.getRunTime())) / 2; // first message start time + last message end time / 2 Message writenMessage = new Message( aggregatedMessage.getThreadName(), 200, aggregatedMessage.getRunNum(), avStartTime, avRunTime, currentMessage.getConcurrentConnections()); writer.writeStats(writenMessage); // we need to now actually write this averaged value out }
@Override public void close() throws WriterException { // flush all remaining aggregated messages List<Entry<String, Message>> entries = new ArrayList<Entry<String, Message>>(aggregatedMap.entrySet()); Collections.sort( entries, new Comparator<Entry<String, Message>>() { @Override public int compare(Entry<String, Message> o1, Entry<String, Message> o2) { return (int) (o1.getValue().getStartTime() - o2.getValue().getStartTime()); } }); for (Entry<String, Message> entry : entries) { processAggregatedMessage(entry.getValue(), entry.getValue()); } aggregatedMap.clear(); writer.close(); }