001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.metrics; 005 006 import java.util.Collection; 007 import java.util.Iterator; 008 009 import org.w3c.dom.DOMException; 010 import org.w3c.dom.Document; 011 import org.w3c.dom.Element; 012 013 import biz.hammurapi.metrics.Metric.Measurement; 014 import biz.hammurapi.render.RenderRequest; 015 import biz.hammurapi.render.RenderingException; 016 import biz.hammurapi.render.dom.AbstractRenderer; 017 import biz.hammurapi.render.dom.DomRenderer; 018 019 020 /** 021 * @author Pavel Vlasov 022 * @version $Revision: 1.8 $ 023 */ 024 public class MetricRenderer extends AbstractRenderer implements DomRenderer { 025 026 public MetricRenderer(RenderRequest request) { 027 super(request); 028 } 029 030 public MetricRenderer(RenderRequest request, String profile) { 031 super(request, profile); 032 } 033 034 public Element render(Document document) throws RenderingException { 035 Element ret=document.createElement("metric"); 036 Metric m=(Metric) request.getRenderee(); 037 038 toDom(ret, m); 039 return ret; 040 } 041 042 /** 043 * @param document 044 * @param holder 045 * @param m 046 * @throws RenderingException 047 * @throws RenderingException 048 */ 049 private void toDom(Element holder, Metric m) throws RenderingException { 050 holder.setAttribute("name", m.getName()); 051 holder.setAttribute("avg", String.valueOf(m.getAvg())); 052 holder.setAttribute("min", String.valueOf(m.getMin())); 053 holder.setAttribute("max", String.valueOf(m.getMax())); 054 055 holder.setAttribute("total", String.valueOf(m.getTotal())); 056 holder.setAttribute("number", String.valueOf(m.getNumber())); 057 holder.setAttribute("deviation", String.valueOf(m.getDeviation())); 058 059 Collection measurements = m.getMeasurements(); 060 if (measurements!=null) { 061 Iterator it=measurements.iterator(); 062 while (it.hasNext()) { 063 Measurement ms=(Measurement) it.next(); 064 Element me = holder.getOwnerDocument().createElement("measurement"); 065 holder.appendChild(me); 066 renderMeasurement(ms, me); 067 } 068 } 069 } 070 071 /** 072 * @param ms 073 * @param me 074 * @throws RenderingException 075 * @throws 076 * @throws RenderingException 077 * @throws DOMException 078 */ 079 protected void renderMeasurement(Measurement ms, Element me) throws RenderingException { 080 me.setAttribute("value", String.valueOf(ms.getValue())); 081 me.setAttribute("time", String.valueOf(ms.getTime())); 082 } 083 084 }