org.pentaho.support.di.client.DISupportUtility.java Source code

Java tutorial

Introduction

Here is the source code for org.pentaho.support.di.client.DISupportUtility.java

Source

/*
 * Copyright 2007 Pentaho Corporation. All rights reserved.
 * 
 * This software was developed by Pentaho Corporation and is provided under the terms
 * of the Mozilla Public License, Version 1.1, or any later version. You may not use
 * this file except in compliance with the license. If you need a copy of the license,
 * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
 * BI Platform. The Initial Developer is Pentaho Corporation.
 *
 * Software distributed under the Mozilla Public License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
 * the license for the specific language governing your rights and limitations.
 *
 * Created
 * @author
 * 
 */
package org.pentaho.support.di.client;

import java.util.ArrayList;
import java.util.List;

import org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox;
import org.pentaho.support.di.shared.DIConstant;
import org.pentaho.support.di.shared.DISelectedItem;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.widgetideas.client.ProgressBar;

public class DISupportUtility implements EntryPoint {

    public List<String> selectedItem = null;

    DISelectedItem selectObj = new DISelectedItem();

    private final DISupportUtilityServiceAsync disupportService = GWT.create(DISupportUtilityService.class);

    AbsolutePanel mainPanel;
    Image bck_img;
    Image logo_img;

    RadioButton rdbtnInstaller;
    RadioButton rdbtnArchive;
    RadioButton rdbtnManual;

    CheckBox selectDselect;

    CheckBox license;
    CheckBox secure;
    CheckBox md5;
    CheckBox running;
    CheckBox environment;
    CheckBox datasource;

    CheckBox logs;
    CheckBox structure;
    CheckBox serverXml;
    CheckBox tomcatXml;
    CheckBox serverbat;
    CheckBox serverProp;

    TextBox browserText;

    Button button;

    MessageDialogBox message = null;

    /**
     * loads the module on UI call
     */
    @Override
    public void onModuleLoad() {
        selectObj.setInstallType("Installer");
        ((ServiceDefTarget) disupportService).setServiceEntryPoint(getBaseUrl());
        RootPanel panel = RootPanel.get("maincontainer");
        mainPanel = new AbsolutePanel();
        mainPanel.setStyleName("mainPanel");
        panel.add(mainPanel, 0, 0);
        mainPanel.setSize("809px", "565px");

        bck_img = new Image("Images/login-crystal-bg.jpg");
        mainPanel.add(bck_img, 0, 0);
        bck_img.setSize("809px", "565px");

        logo_img = new Image("Images/puc-login-logo.png");
        mainPanel.add(logo_img, 10, 33);
        logo_img.setSize("360px", "93px");

        Label pentahoCustomerSupport = new Label("Pentaho Customer Support Wizard");
        mainPanel.add(pentahoCustomerSupport, 255, 132);
        pentahoCustomerSupport.setStyleName("pentaho-label");

        Label lblSelectInstallationType = new Label("Select Installation Type :");
        lblSelectInstallationType.setStyleName("gwt-Label-header");
        mainPanel.add(lblSelectInstallationType, 47, 184);

        rdbtnInstaller = new RadioButton("type", "Installer");
        rdbtnInstaller.setValue(true);
        rdbtnInstaller.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                selectObj.setInstallType("Installer");
            }
        });
        mainPanel.add(rdbtnInstaller, 196, 225);

        rdbtnArchive = new RadioButton("type", "Archive");
        rdbtnArchive.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                selectObj.setInstallType("Archive");
            }
        });
        mainPanel.add(rdbtnArchive, 353, 225);

        rdbtnManual = new RadioButton("type", "Manual");
        rdbtnManual.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                selectObj.setInstallType("Manual");
            }
        });
        mainPanel.add(rdbtnManual, 504, 225);

        AbsolutePanel absolutePanel = new AbsolutePanel();
        mainPanel.add(absolutePanel, 102, 254);
        absolutePanel.setSize("611px", "201px");

        selectDselect = new CheckBox("Select/De-Select");
        selectDselect.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                onSelectDselect();
            }
        });
        absolutePanel.add(selectDselect, 10, 10);

        VerticalPanel absolutePanel_left = new VerticalPanel();
        absolutePanel.add(absolutePanel_left, 68, 36);
        absolutePanel_left.setSize("200px", "160px");

        license = new CheckBox("License File");
        license.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        secure = new CheckBox("Secure Files");
        secure.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        md5 = new CheckBox("MD5 Hash Value");
        md5.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });
        running = new CheckBox("Running Process");
        running.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        environment = new CheckBox("Environment");
        environment.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        datasource = new CheckBox("Datasource Details");
        datasource.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        absolutePanel_left.add(license);
        absolutePanel_left.add(secure);
        absolutePanel_left.add(md5);
        absolutePanel_left.add(running);
        absolutePanel_left.add(environment);
        absolutePanel_left.add(datasource);

        VerticalPanel absolutePanel_right = new VerticalPanel();
        absolutePanel.add(absolutePanel_right, 362, 36);
        absolutePanel_right.setSize("200px", "160px");

        logs = new CheckBox("Logs");
        logs.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        structure = new CheckBox("Structure Details");
        structure.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        serverXml = new CheckBox("XML files from Server");
        serverXml.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        tomcatXml = new CheckBox("XML files from Tomcat");
        tomcatXml.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        serverbat = new CheckBox("Start up files from server");
        serverbat.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        serverProp = new CheckBox("Properites files from server");
        serverProp.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                checkList();
            }
        });

        absolutePanel_right.add(logs);
        absolutePanel_right.add(structure);
        absolutePanel_right.add(serverXml);
        absolutePanel_right.add(tomcatXml);
        absolutePanel_right.add(serverbat);
        absolutePanel_right.add(serverProp);

        Label information = new Label("Browser Information :");
        mainPanel.add(information, 74, 461);
        information.setSize("179px", "20px");
        information.setStyleName("label-browser");

        browserText = new TextBox();
        mainPanel.add(browserText, 255, 464);
        browserText.setSize("417px", "27px");

        button = new Button("Package");
        button.addClickHandler(new ClickHandler() {
            // sets the server name and checks for selected options
            public void onClick(ClickEvent event) {

                boolean result = false;
                selectObj.setServerName("diserver");

                if (selectDselect.getValue()) {

                    selectObj.setBidiXml(true);
                    selectObj.setBidiBatFile(true);
                    selectObj.setBidiProrperties(true);
                    selectObj.setTomcatXml(true);

                    selectedItem = new ArrayList<String>();
                    for (String item : DIConstant.SELECTEDITEM) {

                        selectedItem.add(item);
                    }
                    if (!browserText.getText().isEmpty()) {
                        selectObj.setBrowserInfo(browserText.getText());
                        selectedItem.add(DIConstant.BROWSER_INFO);
                    }

                    result = true;
                } else if (checkSelected()) {
                    result = true;
                } else {
                    message = null;
                    message = new MessageDialogBox("Message", "Please select options to proceed", false, true,
                            true);
                    showDialog();
                }

                if (result) {

                    disableAll();

                    final ProgressBar progressBar = new ProgressBar(0);
                    DOM.setElementAttribute(progressBar.getElement(), "id", "progressBar");
                    mainPanel.add(progressBar, 58, 508);

                    Timer timer = new Timer() {
                        public void run() {
                            double progress = progressBar.getProgress() + 1;
                            if (progress > 100) {
                                cancel();
                            }
                            progressBar.setProgress(progress);
                        }
                    };
                    timer.scheduleRepeating(1500);

                    disupportService.readandsaveSelectedConfiguration(selectedItem, selectObj,
                            new AsyncCallback<Boolean>() {

                                @Override
                                public void onFailure(Throwable caught) {
                                    message = new MessageDialogBox("Error", caught.getMessage(), false, true, true);
                                    showDialog();
                                }

                                @Override
                                public void onSuccess(Boolean result) {
                                    progressBar.removeFromParent();
                                    button.setVisible(true);
                                    selectedItem.clear();
                                    enableAll();
                                }

                            });

                }
            }
        });
        mainPanel.add(button, 58, 508);
        button.setSize("661px", "30px");

    }

    /**
     * disables all fields while processing the request
     */
    private void disableAll() {

        selectDselect.setEnabled(false);
        license.setEnabled(false);
        secure.setEnabled(false);
        md5.setEnabled(false);
        running.setEnabled(false);
        environment.setEnabled(false);
        datasource.setEnabled(false);
        logs.setEnabled(false);
        structure.setEnabled(false);
        serverXml.setEnabled(false);
        tomcatXml.setEnabled(false);
        serverbat.setEnabled(false);
        serverProp.setEnabled(false);
        rdbtnInstaller.setEnabled(false);
        rdbtnArchive.setEnabled(false);
        rdbtnManual.setEnabled(false);
        button.setEnabled(false);
        browserText.setEnabled(false);
    }

    /**
     * enables all fields once process completes
     * 
     * @return
     */
    private void enableAll() {

        selectDselect.setEnabled(true);
        license.setEnabled(true);
        secure.setEnabled(true);
        md5.setEnabled(true);
        running.setEnabled(true);
        environment.setEnabled(true);
        datasource.setEnabled(true);
        logs.setEnabled(true);
        structure.setEnabled(true);
        serverXml.setEnabled(true);
        tomcatXml.setEnabled(true);
        serverbat.setEnabled(true);
        serverProp.setEnabled(true);
        button.setEnabled(true);
        browserText.setEnabled(true);
        rdbtnInstaller.setEnabled(true);
        rdbtnArchive.setEnabled(true);
        rdbtnManual.setEnabled(true);
    }

    /**
     * adds selected retriever name to the list
     * 
     * @return
     */
    private boolean checkSelected() {

        Boolean result = false;

        selectedItem = new ArrayList<String>();

        if (license.getValue()) {
            selectedItem.add(DIConstant.LICENSE);
            result = true;
        }

        if (secure.getValue()) {
            selectedItem.add(DIConstant.SECURITY);
            result = true;
        }

        if (md5.getValue()) {
            selectedItem.add(DIConstant.MD5);
            result = true;
        }

        if (running.getValue()) {
            selectedItem.add(DIConstant.RUNNING_TASK);
            result = true;
        }

        if (environment.getValue()) {
            selectedItem.add(DIConstant.ENVIRONMENT);
            result = true;
        }

        if (datasource.getValue()) {
            selectedItem.add(DIConstant.DATASOURCE);
            result = true;
        }

        if (logs.getValue()) {
            selectedItem.add(DIConstant.LOGS);
            result = true;
        }

        if (structure.getValue()) {
            selectedItem.add(DIConstant.STRUCT);
            result = true;
        }

        if (serverXml.getValue()) {
            selectObj.setBidiXml(true);
            selectedItem.add(DIConstant.FILE);
            result = true;
        }

        if (tomcatXml.getValue()) {
            selectObj.setTomcatXml(true);

            if (!selectedItem.contains(DIConstant.FILE)) {
                selectedItem.add(DIConstant.FILE);
            }
            result = true;
        }

        if (serverbat.getValue()) {
            selectObj.setBidiBatFile(true);

            if (!selectedItem.contains(DIConstant.FILE)) {
                selectedItem.add(DIConstant.FILE);
            }
            result = true;
        }

        if (serverProp.getValue()) {
            selectObj.setBidiProrperties(true);

            if (!selectedItem.contains(DIConstant.FILE)) {
                selectedItem.add(DIConstant.FILE);
            }
            result = true;
        }

        if (!browserText.getText().isEmpty()) {
            selectObj.setBrowserInfo(browserText.getText());
            selectedItem.add(DIConstant.BROWSER_INFO);

            result = true;
        }

        return result;

    }

    /**
     * checks and un-checks select-all box based on selection
     */
    private void checkList() {
        if (selectDselect.getValue()) {
            selectDselect.setValue(false);
        } else if (checkall()) {
            selectDselect.setValue(true);
        }
    }

    /**
     * checks whether all options selected or not
     * 
     * @return
     */
    private boolean checkall() {
        Boolean result = true;
        if (!license.getValue()) {
            result = false;
        }
        if (!secure.getValue()) {
            result = false;
        }
        if (!md5.getValue()) {
            result = false;
        }
        if (!running.getValue()) {
            result = false;
        }
        if (!environment.getValue()) {
            result = false;
        }
        if (!datasource.getValue()) {
            result = false;
        }
        if (!logs.getValue()) {
            result = false;
        }
        if (!structure.getValue()) {
            result = false;
        }
        if (!serverXml.getValue()) {
            result = false;
        }
        if (!tomcatXml.getValue()) {
            result = false;
        }
        if (!serverbat.getValue()) {
            result = false;
        }
        if (!serverProp.getValue()) {
            result = false;
        }
        return result;
    }

    /**
     * selects all if checked
     */
    private void onSelectDselect() {

        if (selectDselect.getValue()) {

            license.setValue(true);
            secure.setValue(true);
            md5.setValue(true);
            running.setValue(true);
            environment.setValue(true);
            datasource.setValue(true);
            logs.setValue(true);
            structure.setValue(true);
            serverXml.setValue(true);
            tomcatXml.setValue(true);
            serverbat.setValue(true);
            serverProp.setValue(true);
        } else {
            /**
             * de-selects all if checked
             */
            license.setValue(false);
            secure.setValue(false);
            md5.setValue(false);
            running.setValue(false);
            environment.setValue(false);
            datasource.setValue(false);
            logs.setValue(false);
            structure.setValue(false);
            serverXml.setValue(false);
            tomcatXml.setValue(false);
            serverbat.setValue(false);
            serverProp.setValue(false);
        }

    }

    /**
     * gets the base url for service
     * 
     * @return
     */
    private String getBaseUrl() {

        String moduleUrl = GWT.getModuleBaseURL();
        if (moduleUrl.indexOf("content") > -1) {
            String baseUrl = moduleUrl.substring(0, moduleUrl.indexOf("content"));
            return baseUrl + "gwtrpc/DISupportUtilityService";
        }
        return moduleUrl + "gwtrpc";

    }

    private void showDialog() {
        message.show();
        message.center();
    }

}