/** {@inheritDoc} */ public final CounterSample getCounterSample(String name) { Simon s = manager.getSimon(name); if (s != null && s instanceof Counter) { return new CounterSample((org.javasimon.CounterSample) s.sample()); } return null; }
/** {@inheritDoc} */ public final StopwatchSample getStopwatchSampleAndReset(String name) { Simon s = manager.getSimon(name); if (s != null && s instanceof Stopwatch) { return new StopwatchSample((org.javasimon.StopwatchSample) s.sampleAndReset()); } return null; }
/** * Generates Google bar chart URL for last values of all collected Simons. * * @param collector data collector * @param title chart title * @param divisor value divisor. For example: if values are in ns and ms are required, divisor * should be set to 1000000. * @param unit unit shown after values under every bar * @return URL generating the bar chart */ public static String barChart( AbstractDataCollector collector, String title, double divisor, String unit) { final StringBuilder result = new StringBuilder(URL_START).append(TYPE_BAR); result.append("&chtt=").append(encode(title)); final StringBuilder x0 = new StringBuilder("&chxl=0:"); final StringBuilder x1 = new StringBuilder("|1:"); final StringBuilder data = new StringBuilder("&chd=t:"); double max = 0; boolean first = true; for (final Simon simon : collector.getSimons()) { if (first) { first = false; } else { data.append(','); } final List<Double> values = collector.valuesFor(simon); double lastValue = values.get(values.size() - 1) / divisor; x0.append('|').append(encode(simon.getName())); String formattedValue = NUMBER_FORMAT.format(lastValue); x1.append('|').append(formattedValue).append("+").append(unit); if (lastValue > max) { max = lastValue; } data.append(formattedValue); } double division = Math.pow(TEN_BASE, Math.floor(Math.log10(max))); StringBuilder x2 = new StringBuilder("|2:"); double x = 0; for (; x < max + division; x += division) { x2.append('|').append(Double.valueOf(x).longValue()); } result.append("&chxr=2,0,").append(Double.valueOf(x - division).longValue()); result.append("&chds=0,").append(Double.valueOf(x - division).longValue()); result.append(x0).append(x1).append(x2).append(data); result.append("&.png"); return result.toString(); }
/** * Visit Simons recursively as a tree starting from the specified Simon. * * @param simon Parent simon * @param visitor Visitor * @throws IOException */ public static void visitTree(Simon simon, SimonVisitor visitor) throws IOException { visitor.visit(simon); for (Simon childSimon : simon.getChildren()) { visitTree(childSimon, visitor); } }