Package org.damour.base.client.ui.admin

Source Code of org.damour.base.client.ui.admin.HibernateAdminPanel

package org.damour.base.client.ui.admin;

import java.util.List;

import org.damour.base.client.objects.HibernateStat;
import org.damour.base.client.service.BaseServiceCache;
import org.damour.base.client.ui.buttons.Button;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.FlexTable;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;

public class HibernateAdminPanel extends VerticalPanel {

  FlexTable statsTable = new FlexTable();
  NumberFormat nf = NumberFormat.getDecimalFormat();
  NumberFormat pf = NumberFormat.getPercentFormat();

  public HibernateAdminPanel() {
    initUI();
    fetchHibernateStats();
  }

  private void initUI() {
    statsTable.setText(0, 0, "Loading...");
    statsTable.setBorderWidth(1);
    statsTable.setCellSpacing(5);
    add(statsTable);
    Button refreshButton = new Button("Refresh");
    refreshButton.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        fetchHibernateStats();
      }
    });
    Button resetButton = new Button("Reset");
    resetButton.setTitle("Reset Hibernate");
    resetButton.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        resetHibernate();
      }
    });

    HorizontalPanel buttonPanel = new HorizontalPanel();
    buttonPanel.add(refreshButton);
    buttonPanel.add(resetButton);
    add(buttonPanel);
  }

  public void populateUI(List<HibernateStat> stats) {
    statsTable.clear();
    int row = 0;

    statsTable.setWidget(row, 0, new Label("Region Name"));
    statsTable.setWidget(row, 1, new Label("Cache Puts"));
    statsTable.setWidget(row, 2, new Label("Cache Hits"));
    statsTable.setWidget(row, 3, new Label("Cache Misses"));
    statsTable.setWidget(row, 4, new Label("Cache Hit %"));
    statsTable.setWidget(row, 5, new Label("Objects in Memory"));
    statsTable.setWidget(row, 6, new Label("Memory Used"));
    statsTable.setWidget(row, 7, new Label("Objects on Disk"));
    statsTable.setWidget(row, 8, new Label("Evict Cache"));
    statsTable.getCellFormatter().setHorizontalAlignment(row, 0, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 1, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 2, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 3, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 4, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 5, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 6, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 7, HasHorizontalAlignment.ALIGN_RIGHT);
    statsTable.getCellFormatter().setHorizontalAlignment(row, 8, HasHorizontalAlignment.ALIGN_RIGHT);

    row++;
    for (final HibernateStat stat : stats) {
      Button evictButton = new Button("X");
      evictButton.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
          evictClassFromCache(stat.getRegionName());
        }
      });

      statsTable.setWidget(row, 0, new Label(stat.getRegionName()));
      statsTable.setWidget(row, 1, new Label(nf.format(stat.getCachePuts())));
      statsTable.setWidget(row, 2, new Label(nf.format(stat.getCacheHits())));
      statsTable.setWidget(row, 3, new Label(nf.format(stat.getCacheMisses())));
      if (stat.getCacheHits() == 0 || stat.getCachePuts() == 0) {
        statsTable.setWidget(row, 4, new Label(pf.format(0)));
      } else {
        statsTable.setWidget(row, 4, new Label(pf.format(((float) stat.getCacheHits()) / ((float) (stat.getCacheHits() + stat.getCachePuts())))));
      }
      statsTable.setWidget(row, 5, new Label(nf.format(stat.getNumObjectsInMemory())));
      statsTable.setWidget(row, 6, new Label(nf.format(stat.getMemoryUsed())));
      statsTable.setWidget(row, 7, new Label(nf.format(stat.getNumObjectsOnDisk())));
      statsTable.setWidget(row, 8, evictButton);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 0, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 1, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 2, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 3, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 4, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 5, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 6, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 7, HasHorizontalAlignment.ALIGN_RIGHT);
      statsTable.getCellFormatter().setHorizontalAlignment(row, 8, HasHorizontalAlignment.ALIGN_CENTER);
      row++;
    }
  }

  private void evictClassFromCache(String className) {
    final AsyncCallback<List<HibernateStat>> callback = new AsyncCallback<List<HibernateStat>>() {
      public void onFailure(Throwable caught) {
        Window.alert(caught.getMessage());
      }

      public void onSuccess(List<HibernateStat> stats) {
        fetchHibernateStats();
      };
    };
    BaseServiceCache.getService().evictClassFromCache(className, callback);
  }

  private void fetchHibernateStats() {
    for (int row = 1; row < statsTable.getRowCount(); row++) {
      statsTable.setWidget(row, 1, new Label("."));
      statsTable.setWidget(row, 2, new Label("."));
      statsTable.setWidget(row, 3, new Label("."));
      statsTable.setWidget(row, 4, new Label("."));
      statsTable.setWidget(row, 5, new Label("."));
      statsTable.setWidget(row, 6, new Label("."));
      statsTable.setWidget(row, 7, new Label("."));
    }
    final AsyncCallback<List<HibernateStat>> callback = new AsyncCallback<List<HibernateStat>>() {
      public void onFailure(Throwable caught) {
        Window.alert(caught.getMessage());
      }

      public void onSuccess(List<HibernateStat> stats) {
        populateUI(stats);
      };
    };
    BaseServiceCache.getService().getHibernateStats(callback);
  }

  private void resetHibernate() {
    final AsyncCallback<List<HibernateStat>> callback = new AsyncCallback<List<HibernateStat>>() {
      public void onFailure(Throwable caught) {
        Window.alert(caught.getMessage());
      }

      public void onSuccess(List<HibernateStat> stats) {
        fetchHibernateStats();
      };
    };
    BaseServiceCache.getService().resetHibernate(callback);
  }

}
TOP

Related Classes of org.damour.base.client.ui.admin.HibernateAdminPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.