Skip to content

Commit

Permalink
begin work on transaction metrics (POC)
Browse files Browse the repository at this point in the history
  • Loading branch information
heiko-braun committed Nov 4, 2011
1 parent db9d25e commit bb07792
Show file tree
Hide file tree
Showing 11 changed files with 187 additions and 14 deletions.
Expand Up @@ -59,6 +59,8 @@ public class NameTokens {
public static final String StandaloneRuntimePresenter = "standalone-runtime";
public static final String DomainRuntimePresenter = "domain-runtime";

public static final String TXMetrics = "tx-metrics";

public static String getMainLayout() {
return mainLayout;
}
Expand Down
Expand Up @@ -98,6 +98,7 @@
import org.jboss.as.console.client.standalone.deployment.DeploymentListPresenter;
import org.jboss.as.console.client.standalone.path.PathToolPresenter;
import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimePresenter;
import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter;
import org.jboss.as.console.client.system.SystemApplicationPresenter;

/**
Expand Down Expand Up @@ -233,4 +234,5 @@ public interface CoreUI extends Ginjector {

AsyncProvider<StandaloneRuntimePresenter> getRuntimePresenter();
AsyncProvider<DomainRuntimePresenter> getDomainRuntimePresenter();
AsyncProvider<TXMetricPresenter> getTXMetricPresenter();
}
Expand Up @@ -103,6 +103,7 @@
import org.jboss.as.console.client.shared.model.DeploymentStoreImpl;
import org.jboss.as.console.client.shared.model.SubsystemStore;
import org.jboss.as.console.client.shared.model.SubsystemStoreImpl;
import org.jboss.as.console.client.shared.runtime.TXMetricView;
import org.jboss.as.console.client.shared.subsys.Baseadress;
import org.jboss.as.console.client.shared.subsys.deploymentscanner.ScannerPresenter;
import org.jboss.as.console.client.shared.subsys.deploymentscanner.ScannerView;
Expand Down Expand Up @@ -151,6 +152,7 @@
import org.jboss.as.console.client.standalone.path.PathToolViewImpl;
import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimePresenter;
import org.jboss.as.console.client.standalone.runtime.StandaloneRuntimeView;
import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter;
import org.jboss.as.console.client.system.SystemApplicationPresenter;
import org.jboss.as.console.client.system.SystemApplicationViewImpl;

Expand Down Expand Up @@ -445,6 +447,11 @@ protected void configure() {
DomainRuntimePresenter.MyView.class,
DomainRuntimeView.class,
DomainRuntimePresenter.MyProxy.class);

bindPresenter(TXMetricPresenter.class,
TXMetricPresenter.MyView.class,
TXMetricView.class,
TXMetricPresenter.MyProxy.class);
}

}
@@ -0,0 +1,86 @@
package org.jboss.as.console.client.shared.runtime;

import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import org.jboss.as.console.client.Console;
import org.jboss.as.console.client.core.SuspendableViewImpl;
import org.jboss.as.console.client.shared.subsys.tx.TXExecutionView;
import org.jboss.as.console.client.shared.subsys.tx.TXRollbackView;
import org.jboss.as.console.client.shared.subsys.tx.model.RollbackMetric;
import org.jboss.as.console.client.shared.subsys.tx.model.TXMetric;
import org.jboss.as.console.client.standalone.runtime.TXMetricPresenter;
import org.jboss.ballroom.client.widgets.tabs.FakeTabPanel;
import org.jboss.ballroom.client.widgets.tools.ToolButton;
import org.jboss.ballroom.client.widgets.tools.ToolStrip;

/**
* @author Heiko Braun
* @date 11/3/11
*/
public class TXMetricView extends SuspendableViewImpl implements TXMetricPresenter.MyView{

private TXMetricPresenter presenter;
private TXExecutionView executionMetric;
private TXRollbackView rollbackMetric;


@Override
public void setPresenter(TXMetricPresenter presenter) {
this.presenter = presenter;
}

@Override
public Widget createWidget() {

LayoutPanel layout = new LayoutPanel();

FakeTabPanel titleBar = new FakeTabPanel("Transaction Metrics");
layout.add(titleBar);

// ----

final ToolStrip toolStrip = new ToolStrip();

toolStrip.addToolButtonRight(new ToolButton(Console.CONSTANTS.common_label_refresh(), new ClickHandler(){
@Override
public void onClick(ClickEvent event) {

}
}));


layout.add(toolStrip);

// ---

VerticalPanel panel = new VerticalPanel();
panel.setStyleName("rhs-content-panel");

ScrollPanel scrollPanel = new ScrollPanel(panel);
layout.add(scrollPanel);

layout.setWidgetTopHeight(titleBar, 0, Style.Unit.PX, 28, Style.Unit.PX);
layout.setWidgetTopHeight(toolStrip, 28, Style.Unit.PX, 30, Style.Unit.PX);
layout.setWidgetTopHeight(scrollPanel, 58, Style.Unit.PX, 100, Style.Unit.PCT);

// --------------

this.executionMetric = new TXExecutionView();
panel.add(executionMetric.asWidget());

this.rollbackMetric = new TXRollbackView();
panel.add(rollbackMetric.asWidget());


// sample data
executionMetric.addSample(new TXMetric(55, 12, 33, 5));
rollbackMetric.addSample(new RollbackMetric(77, 12));

return layout;
}
}
Expand Up @@ -15,18 +15,23 @@ public class TXExecutionView implements TXExecutionSampler {
private TransactionPresenter presenter;
private TXExecutionSampler sampler = null;

@Deprecated
public TXExecutionView(TransactionPresenter presenter) {
this.presenter = presenter;
}

public TXExecutionView() {
this.presenter = presenter;
}

public Widget asWidget() {
return displayStrategy();
}

private Widget displayStrategy() {

if(Console.visAPILoaded()) {
sampler = new TXChartView("");
sampler = new TXChartView("Transaction Outcome");
}
else
{
Expand Down
Expand Up @@ -15,18 +15,23 @@ public class TXRollbackView implements TXRollbackSampler {
private TransactionPresenter presenter;
private TXRollbackSampler sampler = null;

@Deprecated
public TXRollbackView(TransactionPresenter presenter) {
this.presenter = presenter;
}

public TXRollbackView() {
this.presenter = presenter;
}

public Widget asWidget() {
return displayStrategy();
}

private Widget displayStrategy() {

if(Console.visAPILoaded()) {
sampler = new RollbackChartView("");
sampler = new RollbackChartView("Rollback Origin");
}
else
{
Expand Down
Expand Up @@ -7,6 +7,7 @@
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.visualizations.corechart.AxisOptions;
import com.google.gwt.visualization.client.visualizations.corechart.BarChart;
import com.google.gwt.visualization.client.visualizations.corechart.CoreChart;
import com.google.gwt.visualization.client.visualizations.corechart.LineChart;
import com.google.gwt.visualization.client.visualizations.corechart.Options;
Expand All @@ -23,7 +24,7 @@
public class RollbackChartView extends AbstractChartView implements TXRollbackSampler {

private DataTable data;
private LineChart chart;
private BarChart chart;

private HTML appLabel;
private HTML resourceLabel;
Expand All @@ -41,7 +42,7 @@ public Widget asWidget() {
layout = new VerticalPanel();

// chart
chart = new LineChart(createTable(), createOptions()) ;
chart = new BarChart(createTable(), createOptions()) ;
layout.add(chart);

// labels
Expand Down Expand Up @@ -81,7 +82,8 @@ public void addSample(RollbackMetric metric) {
appLabel.setHTML("Applications: " + metric.getAppRollback());
resourceLabel.setHTML("Resources: "+metric.getResourceRollback());

data.addRow();
if(data.getNumberOfRows()==0)
data.addRow();
int nextRow = data.getNumberOfRows()-1;

data.setValue(nextRow, 0, new Date(System.currentTimeMillis()));
Expand Down Expand Up @@ -113,7 +115,7 @@ public void recycle() {
if(chart!=null)
{
layout.remove(chart);
chart = new LineChart(createTable(), createOptions()) ;
chart = new BarChart(createTable(), createOptions()) ;
layout.add(chart);

}
Expand Down
Expand Up @@ -6,9 +6,10 @@
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.LegendPosition;
import com.google.gwt.visualization.client.visualizations.corechart.AxisOptions;
import com.google.gwt.visualization.client.visualizations.corechart.BarChart;
import com.google.gwt.visualization.client.visualizations.corechart.CoreChart;
import com.google.gwt.visualization.client.visualizations.corechart.LineChart;
import com.google.gwt.visualization.client.visualizations.corechart.Options;
import org.jboss.as.console.client.shared.jvm.charts.AbstractChartView;
import org.jboss.as.console.client.shared.subsys.tx.TXExecutionSampler;
Expand All @@ -23,7 +24,7 @@
public class TXChartView extends AbstractChartView implements TXExecutionSampler {

private DataTable data;
private LineChart chart;
private BarChart chart;

private HTML totalLabel;
private HTML commitedLabel;
Expand All @@ -44,7 +45,7 @@ public Widget asWidget() {
layout = new VerticalPanel();

// chart
chart = new LineChart(createTable(), createOptions()) ;
chart = new BarChart(createTable(), createOptions()) ;
layout.add(chart);

// labels
Expand Down Expand Up @@ -82,7 +83,9 @@ private Options createOptions() {
options.setWidth(width);
options.setHeight(height);
options.setTitle(title);
options.setType(CoreChart.Type.LINE);
options.setType(CoreChart.Type.BARS);
options.setLegend(LegendPosition.BOTTOM);

return options;
}

Expand All @@ -91,7 +94,9 @@ public void addSample(TXMetric metric) {
totalLabel.setHTML("Total: " + metric.getTotal());
commitedLabel.setHTML("Committed: "+metric.getCommitted());

data.addRow();
if(data.getNumberOfRows()==0)
data.addRow();
//data.addRow(); only supports a single sample
int nextRow = data.getNumberOfRows()-1;

data.setValue(nextRow, 0, new Date(System.currentTimeMillis()));
Expand All @@ -105,6 +110,7 @@ public void addSample(TXMetric metric) {
AxisOptions haxis = AxisOptions.create();
haxis.set("showTextEvery", "10.00");
haxis.set("maxAlternation", "1");
//haxis.set("titleTextStyle", "display:none");
options.setHAxisOptions(haxis);

chart.draw(data, options);
Expand All @@ -125,7 +131,8 @@ public void recycle() {
if(chart!=null)
{
layout.remove(chart);
chart = new LineChart(createTable(), createOptions()) ;
chart = new BarChart(createTable(), createOptions()) ;
chart.setTitle(title);
layout.add(chart);
}

Expand Down
Expand Up @@ -46,7 +46,7 @@ public Widget asWidget()
LHSNavTreeItem datasources = new LHSNavTreeItem("Datasources", "ds-metrics");
LHSNavTreeItem jmsQueues = new LHSNavTreeItem("JMS Destinations", "jms-metrics");
LHSNavTreeItem web = new LHSNavTreeItem("Web", "web-metrics");
LHSNavTreeItem tx = new LHSNavTreeItem("Transactions", "tx-metrics");
LHSNavTreeItem tx = new LHSNavTreeItem("Transactions", NameTokens.TXMetrics);

statusTree.addItem(datasources);
statusTree.addItem(jmsQueues);
Expand Down
@@ -0,0 +1,57 @@
package org.jboss.as.console.client.standalone.runtime;

import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.NameToken;
import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
import com.gwtplatform.mvp.client.proxy.Place;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.gwtplatform.mvp.client.proxy.Proxy;
import com.gwtplatform.mvp.client.proxy.RevealContentEvent;
import org.jboss.as.console.client.core.NameTokens;
import org.jboss.as.console.client.standalone.ServerMgmtApplicationPresenter;

/**
* @author Heiko Braun
* @date 11/3/11
*/
public class TXMetricPresenter extends Presenter<TXMetricPresenter.MyView, TXMetricPresenter.MyProxy> {

private final PlaceManager placeManager;

@ProxyCodeSplit
@NameToken(NameTokens.TXMetrics)
public interface MyProxy extends Proxy<TXMetricPresenter>, Place {
}

public interface MyView extends View {
void setPresenter(TXMetricPresenter presenter);
}

@Inject
public TXMetricPresenter(EventBus eventBus, MyView view, MyProxy proxy,
PlaceManager placeManager) {
super(eventBus, view, proxy);

this.placeManager = placeManager;
}

@Override
protected void onBind() {
super.onBind();
getView().setPresenter(this);
}


@Override
protected void onReset() {
super.onReset();
}

@Override
protected void revealInParent() {
RevealContentEvent.fire(getEventBus(), StandaloneRuntimePresenter.TYPE_MainContent, this);
}
}
2 changes: 1 addition & 1 deletion gui/src/main/java/org/jboss/as/console/public/lab.css
Expand Up @@ -55,4 +55,4 @@
padding-left: 0;
padding-right: 0;
width: 100%;
}
}

0 comments on commit bb07792

Please sign in to comment.