package project.client.gadgets;
import java.util.Iterator;
import java.util.Map;
import project.client.ServletRpc;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.VerticalPanel;
public class GadgetStatisticsPage extends Composite {
private static final NumberFormat FORMAT_FLOATS = NumberFormat.getFormat("#.00");
private static final String STYLE_MAIN = "StatisticsPage";
private static final String STYLE_PANEL = "panel";
private static final String STYLE_HTML = "html";
private static final String STYLE_LABEL = "label";
private static final String STYLE_INFO ="label-info";
private static final String GENERAL_INFO = "These are general statistics, related to all boards";
private Panel mainPanel = null;
private Panel generalContentPanel = null;
private Panel generalContentPanelInfo = null;
public GadgetStatisticsPage () {
mainPanel = new VerticalPanel ();
mainPanel.setStyleName(STYLE_MAIN);
initWidget(mainPanel);
Panel hPanel = new VerticalPanel ();
hPanel.addStyleName(STYLE_PANEL);
HTML html = new HTML (GENERAL_INFO);
html.addStyleName(STYLE_HTML);
hPanel.add (html);
generalContentPanel = new VerticalPanel ();
generalContentPanel.addStyleName(STYLE_PANEL);
generalContentPanel.add(html);
mainPanel.add(generalContentPanel);
generalContentPanelInfo = new VerticalPanel ();
generalContentPanel.add(generalContentPanelInfo);
displayGeneralStatistics();
}
public void displayGeneralStatistics () {
generalContentPanelInfo.clear();
ServletRpc.getRpcInterface().getStatistics(null, new AsyncCallback<Map<String,String>> () {
public void onFailure (Throwable t) {
Window.alert("Exception : " + t.getMessage());
}
public void onSuccess (Map<String,String> result) {
Panel panel = null;
Label lbl = null;
generalContentPanelInfo.clear();
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Total number of words");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-words"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Distinct words");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-distinct-words"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Total number of boards");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-boards"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Total number of discussions");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-threads"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Total number of messages");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-messages"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Invalid messages");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
int numInvalid = Integer.parseInt(result.get("num-invalid-messages"));
int numMessages = Integer.parseInt(result.get("num-messages"));
float proc = (float) numInvalid * 100.0f / numMessages;
lbl = new Label ("" + numInvalid + "(" + FORMAT_FLOATS.format(proc) + " %)");
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
panel = new HorizontalPanel ();
panel.addStyleName(STYLE_PANEL);
lbl = new Label ("Total number of users");
lbl.addStyleName(STYLE_LABEL);
panel.add(lbl);
lbl = new Label (result.get("num-users"));
lbl.addStyleName(STYLE_INFO);
panel.add(lbl);
generalContentPanelInfo.add(panel);
}
});
}
}