Package org.lightview.presentation.applications.ejbs

Source Code of org.lightview.presentation.applications.ejbs.EJBsPresenter

/*
*
*/
package org.lightview.presentation.applications.ejbs;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.control.ListView;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.SplitPane;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import org.lightview.business.pool.boundary.EJBPoolMonitoring;
import org.lightview.business.pool.entity.PoolStatistics;
import org.lightview.model.Application;
import org.lightview.presentation.applications.methods.MethodsPresenter;
import org.lightview.presentation.applications.methods.MethodsView;
import org.lightview.presentation.applications.pool.PoolPresenter;
import org.lightview.presentation.applications.pool.PoolView;

import javax.inject.Inject;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Set;

/**
*
* @author adam-bien.com
*/
public class EJBsPresenter implements Initializable {

    @FXML
    ListView<String> ejbsList;

    @FXML
    GridPane statisticsPane;

    @FXML
    AnchorPane methods;

    @FXML
    SplitPane splitPane;

    private ObservableList<String> ejbs;

    private String monitoredApplication;

    @Inject
    EJBPoolMonitoring poolMonitoring;



    @Override
    public void initialize(URL url, ResourceBundle rb) {
        prepareList();
    }

    private void prepareList() {
        this.ejbs = ejbsList.getItems();

        MultipleSelectionModel<String> selectionModel = this.ejbsList.getSelectionModel();
        selectionModel.setSelectionMode(SelectionMode.SINGLE);
        selectionModel.selectedItemProperty().addListener(new ChangeListener<String>() {

            @Override
            public void changed(ObservableValue<? extends String> ov, String oldValue, String newValue) {
                ejbSelected(newValue);
            }
        });
    }

    public void showComponentsForApp(Set<Application> applications, String newSelection) {
        this.monitoredApplication = newSelection;
        ejbs.clear();
        List<String> componentsForApplication = getComponentsForApplication(applications, newSelection);
        ejbs.addAll(componentsForApplication);
    }

    private List<String> getComponentsForApplication(Set<Application> applications, String newSelection) {
        for (Application application : applications) {
            if (application.getApplicationName().equalsIgnoreCase(newSelection)) {
                return application.getComponents();
            }
        }
        return Collections.EMPTY_LIST;
    }

    void ejbSelected(String selectedEjb) {
        activateStatistics(selectedEjb);

    }

    void activateStatistics(String ejb) {
        activatePoolStatistics(ejb);
        activateMethodStatistics(ejb);
    }

    private void activatePoolStatistics(String ejb) {
        PoolView beansCreatedView = new PoolView();
        PoolPresenter beansCreatedPresenter = (PoolPresenter) beansCreatedView.getPresenter();
        beansCreatedPresenter.monitor((PoolStatistics p) ->
                p.getTotalBeansCreated()
                , "Created beans", "Number of beans", this.monitoredApplication, ejb);

        PoolView beansDestroyedView = new PoolView();
        PoolPresenter beansDestroyedViewPresenter = (PoolPresenter) beansDestroyedView.getPresenter();
        beansDestroyedViewPresenter.monitor((PoolStatistics p) ->
                p.getTotalBeansDestroyed()
                , "Destroyed beans", "Number of beans", this.monitoredApplication, ejb);

        PoolView totalThreadsWaitingView = new PoolView();
        PoolPresenter totalThreadsWaitingViewPresenter = (PoolPresenter) totalThreadsWaitingView.getPresenter();
        totalThreadsWaitingViewPresenter.monitor((PoolStatistics p) ->
                p.getCurrentThreadsWaiting()
                , "Total Threads Waiting", "Number of beans", this.monitoredApplication, ejb);

        PoolView totalThreadsWaitingHighView = new PoolView();
        PoolPresenter totalThreadsWaitingViewPresenterHigh = (PoolPresenter) totalThreadsWaitingHighView.getPresenter();
        totalThreadsWaitingViewPresenterHigh.monitor((PoolStatistics p) ->
                p.getThreadsWaitingHighwatermark()
                , "Total Threads Waiting High", "Number of beans", this.monitoredApplication, ejb);

        this.statisticsPane.getChildren().clear();
        this.statisticsPane.add(beansCreatedView.getView(),0,0);
        this.statisticsPane.add(beansDestroyedView.getView(),0,1);
        this.statisticsPane.add(totalThreadsWaitingView.getView(),1,0);
        this.statisticsPane.add(totalThreadsWaitingHighView.getView(),1,1);
    }

    private void activateMethodStatistics(String ejb) {
        MethodsView methodsView
                = new MethodsView();
        MethodsPresenter methodsPresenter = (MethodsPresenter) methodsView.getPresenter();
        methodsPresenter.monitor(this.monitoredApplication, ejb);
        methods.getChildren().clear();
        final Parent view = methodsView.getView();
        AnchorPane.setRightAnchor(view, 0.0);
        AnchorPane.setLeftAnchor(view, 0.0);
        AnchorPane.setBottomAnchor(view, 0.0);
        AnchorPane.setTopAnchor(view, 0.0);
        methods.getChildren().add(view);
    }
}
TOP

Related Classes of org.lightview.presentation.applications.ejbs.EJBsPresenter

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.