package net.i2p.router.web; import java.io.IOException; import java.io.Writer; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.TreeSet; import net.i2p.data.DataHelper; import net.i2p.router.RouterContext; import net.i2p.stat.Rate; public class GraphHelper extends HelperBase { private int _periodCount; private boolean _showEvents; private int _width; private int _height; private int _refreshDelaySeconds; public GraphHelper() { _periodCount = 60; // SummaryListener.PERIODS; _showEvents = false; _width = 250; _height = 100; _refreshDelaySeconds = 60; } public void setPeriodCount(String str) { try { _periodCount = Integer.parseInt(str); } catch (NumberFormatException nfe) {} } public void setShowEvents(boolean b) { _showEvents = b; } public void setHeight(String str) { try { _height = Integer.parseInt(str); } catch (NumberFormatException nfe) {} } public void setWidth(String str) { try { _width = Integer.parseInt(str); } catch (NumberFormatException nfe) {} } public void setRefreshDelay(String str) { try { _refreshDelaySeconds = Integer.parseInt(str); } catch (NumberFormatException nfe) {} } public String getImages() { try { List listeners = StatSummarizer.instance().getListeners(); TreeSet ordered = new TreeSet(new AlphaComparator()); ordered.addAll(listeners); // go to some trouble to see if we have the data for the combined bw graph boolean hasTx = false; boolean hasRx = false; for (Iterator iter = ordered.iterator(); iter.hasNext(); ) { SummaryListener lsnr = (SummaryListener)iter.next(); String title = lsnr.getRate().getRateStat().getName(); if (title.equals("bw.sendRate")) hasTx = true; else if (title.equals("bw.recvRate")) hasRx = true; } if (hasTx && hasRx && !_showEvents) { _out.write("