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 }