org.pentaho.support.standalone.SDSupportUtility.java Source code

Java tutorial

Introduction

Here is the source code for org.pentaho.support.standalone.SDSupportUtility.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.standalone;

import java.awt.Color;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import javax.swing.ButtonGroup;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.pentaho.support.standalone.constant.SDConstant;
import org.pentaho.supportutility.config.factory.CofingRetrieverFactory;
import org.pentaho.supportutility.config.retriever.BrowserInfoRetriever;
import org.pentaho.supportutility.config.retriever.ConfigRetreiver;
import org.pentaho.supportutility.config.retriever.FileRetriever;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class SDSupportUtility extends JFrame {

    private static final long serialVersionUID = 1L;

    ArrayList<String> ArgList = new ArrayList<String>();
    private CofingRetrieverFactory factory;

    public String currentWorkingDirectory = System.getProperty(SDConstant.USER_DIR);
    public static StringBuilder supProp = null;
    public static StringBuilder WEB_XML = null;

    public static String installType = "Installer";
    public static String serverName = null;
    static String PENTAHO_SOLU_PATH = null;

    private JPanel contentPane;
    private JTextField textFieldBrowser;

    String ServerDirectory;
    String TomcatDirectory;
    String EnterpriseConsoleDirectory;
    String ArtifactsDirectory;
    String browserpath;

    JCheckBox chckbxSelectAll;

    JCheckBox chckbxNewCheckBoxEnvironment;
    JCheckBox chckbxNewCheckBoxStructure;
    JCheckBox chckbxLogs;
    JCheckBox chckbxGetSecureFiles;
    JCheckBox chckbxMd5;
    JCheckBox chckbxDbdetails;
    JCheckBox chckbxLicense;
    JCheckBox chckbxProcesslist;
    JCheckBox chckbxTomcatxml;
    JCheckBox chckbxServerXml;
    JCheckBox chckbxGetBatfiles;
    JCheckBox chckbxServerproperties;

    JList list;

    public static JButton btnNewButton;
    public static JProgressBar progressBar;

    static Boolean serverXml = false;
    static Boolean serverProrperties = false;
    static Boolean serverBatFile = false;
    static Boolean tomcatXml = false;

    private JPanel panel;
    private JScrollPane listScrollPane;

    private JList rowList;

    public static DefaultListModel model = new DefaultListModel();

    public static String close = "     X";
    public static JLabel lblDelete;
    public static File dir;

    File[] fileToSave;
    Properties prop;
    Object element;

    public JRadioButton rdbtnArchive;
    public JRadioButton rdbtnManual;
    public JRadioButton rdbtnInstaller;
    public String PEN_SOL;

    private SDSupportUtility support;

    public String getPEN_SOL() {
        return PEN_SOL;
    }

    public void setPEN_SOL(String pEN_SOL) {
        PEN_SOL = pEN_SOL;
    }

    /**
     * main method to call UI
     * 
     * @param args
     */
    public static void main(String args[]) {
        try {
            SDSupportUtility frame = new SDSupportUtility();
            frame.setSupport(frame);
            frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * initializing UI
     * 
     * @throws Exception
     */
    public SDSupportUtility() throws Exception {

        prop = loadProperty();

        setResizable(false);
        setTitle(SDConstant.PENT_SUP_WIZARD);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 665, 516);

        contentPane = new JPanel();
        contentPane.setBackground(UIManager.getColor("Button.background"));
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JLabel lblLastAttached = new JLabel("Last Attached");
        lblLastAttached.setOpaque(false);
        lblLastAttached.setHorizontalAlignment(SwingConstants.LEFT);
        lblLastAttached.setBounds(322, 335, 127, 23);
        contentPane.add(lblLastAttached);

        JLabel lblPentahoCustomerSupport = new JLabel("Pentaho Customer Support Wizard");
        lblPentahoCustomerSupport.setForeground(new Color(51, 51, 51));
        lblPentahoCustomerSupport.setVerticalAlignment(SwingConstants.TOP);
        lblPentahoCustomerSupport.setHorizontalAlignment(SwingConstants.RIGHT);
        lblPentahoCustomerSupport.setFont(new Font("Tahoma", Font.BOLD, 23));
        lblPentahoCustomerSupport.setBounds(130, 109, 506, 37);
        contentPane.add(lblPentahoCustomerSupport);

        JLabel lbllogo = new JLabel();
        lbllogo.setIcon(new ImageIcon(
                SDSupportUtility.class.getResource("/org/pentaho/support/standalone/puc-login-logo.png")));
        lbllogo.setBounds(10, 11, 409, 93);
        contentPane.add(lbllogo);

        chckbxNewCheckBoxEnvironment = new JCheckBox("Environment");
        chckbxNewCheckBoxEnvironment.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.ENVIRONMENT);
                } else {
                    ArgList.remove(SDConstant.ENVIRONMENT);
                }
            }
        });
        chckbxNewCheckBoxEnvironment.setBounds(109, 268, 243, 23);
        contentPane.add(chckbxNewCheckBoxEnvironment);
        chckbxNewCheckBoxEnvironment.setOpaque(false);

        chckbxNewCheckBoxStructure = new JCheckBox("Structure Details");
        chckbxNewCheckBoxStructure.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.STRUCT);
                } else {
                    ArgList.remove(SDConstant.STRUCT);
                }
            }
        });
        chckbxNewCheckBoxStructure.setBounds(377, 190, 248, 23);
        contentPane.add(chckbxNewCheckBoxStructure);
        chckbxNewCheckBoxStructure.setOpaque(false);

        chckbxLogs = new JCheckBox("Logs");
        chckbxLogs.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.LOGS);
                } else {
                    ArgList.remove(SDConstant.LOGS);
                }
            }
        });
        chckbxLogs.setBounds(377, 164, 248, 23);
        contentPane.add(chckbxLogs);
        chckbxLogs.setOpaque(false);

        chckbxGetSecureFiles = new JCheckBox("Secure Files");
        chckbxGetSecureFiles.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.SECURITY);
                } else {
                    ArgList.remove(SDConstant.SECURITY);
                }
            }
        });
        chckbxGetSecureFiles.setBounds(109, 190, 243, 23);
        contentPane.add(chckbxGetSecureFiles);
        chckbxGetSecureFiles.setOpaque(false);

        chckbxMd5 = new JCheckBox("MD5 Hash Value");
        chckbxMd5.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.MD5);
                } else {
                    ArgList.remove(SDConstant.MD5);
                }
            }
        });
        chckbxMd5.setBounds(109, 216, 243, 23);
        contentPane.add(chckbxMd5);
        chckbxMd5.setOpaque(false);

        chckbxDbdetails = new JCheckBox("Datasource Details");
        chckbxDbdetails.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.DATASOURCE);
                } else {
                    ArgList.remove(SDConstant.DATASOURCE);
                }
            }
        });
        chckbxDbdetails.setBounds(109, 294, 243, 23);
        contentPane.add(chckbxDbdetails);
        chckbxDbdetails.setOpaque(false);

        chckbxLicense = new JCheckBox("License File");
        chckbxLicense.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.LICENSE);
                } else {
                    ArgList.remove(SDConstant.LICENSE);
                }
            }
        });
        chckbxLicense.setBounds(109, 164, 243, 23);
        contentPane.add(chckbxLicense);
        chckbxLicense.setOpaque(false);

        chckbxProcesslist = new JCheckBox("Running Process");
        chckbxProcesslist.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.RUNNING_TASK);
                } else {
                    ArgList.remove(SDConstant.RUNNING_TASK);
                }
            }
        });
        chckbxProcesslist.setBounds(109, 242, 243, 23);
        contentPane.add(chckbxProcesslist);
        chckbxProcesslist.setOpaque(false);

        chckbxTomcatxml = new JCheckBox("XML files from Tomcat");
        chckbxTomcatxml.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.FILE);
                    tomcatXml = true;
                } else {
                    ArgList.remove(SDConstant.FILE);
                    tomcatXml = false;
                }
            }
        });
        chckbxTomcatxml.setBounds(377, 242, 248, 23);
        contentPane.add(chckbxTomcatxml);
        chckbxTomcatxml.setOpaque(false);

        chckbxServerXml = new JCheckBox("XML files from Server");
        chckbxServerXml.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.FILE);
                    serverXml = true;
                } else {
                    ArgList.remove(SDConstant.FILE);
                    serverXml = false;
                }
            }
        });
        chckbxServerXml.setBounds(377, 216, 248, 23);
        contentPane.add(chckbxServerXml);
        chckbxServerXml.setOpaque(false);

        chckbxGetBatfiles = new JCheckBox("Start up files from server");
        chckbxGetBatfiles.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.FILE);
                    serverBatFile = true;
                } else {
                    ArgList.remove(SDConstant.FILE);
                    serverBatFile = false;
                }
            }
        });
        chckbxGetBatfiles.setBounds(377, 268, 248, 23);
        contentPane.add(chckbxGetBatfiles);
        chckbxGetBatfiles.setOpaque(false);

        chckbxServerproperties = new JCheckBox("Properites files from server");
        chckbxServerproperties.addItemListener(new ItemListener() {

            public void itemStateChanged(ItemEvent e) {

                if (e.getStateChange() == ItemEvent.SELECTED) {
                    ArgList.add(SDConstant.FILE);
                    serverProrperties = true;
                } else {
                    ArgList.remove(SDConstant.FILE);
                    serverProrperties = false;
                }
            }
        });
        chckbxServerproperties.setBounds(377, 294, 248, 23);
        contentPane.add(chckbxServerproperties);
        chckbxServerproperties.setOpaque(false);

        btnNewButton = new JButton("Package");
        btnNewButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {

                try {

                    if (installType.equalsIgnoreCase("Manual")) {

                        if (prop.getProperty(SDConstant.BI_TOM_PATH) == null) {
                            JOptionPane.showMessageDialog(contentPane, SDConstant.ERROR_12, "Inane error",
                                    JOptionPane.ERROR_MESSAGE);
                        } else {

                            WEB_XML = new StringBuilder();
                            WEB_XML.append(prop.getProperty(SDConstant.BI_TOM_PATH)).append(File.separator)
                                    .append(SDConstant.WEB_APP).append(File.separator).append(SDConstant.PENTAHO)
                                    .append(File.separator).append(SDConstant.WEB_INF).append(File.separator)
                                    .append(SDConstant.WEB_XML);

                            PENTAHO_SOLU_PATH = getSolutionPath("biserver", WEB_XML.toString());
                            prop.put(SDConstant.PENTAHO_SOLU_PATH, PENTAHO_SOLU_PATH);
                            prop.put(SDConstant.BI_PATH, PENTAHO_SOLU_PATH);
                        }

                    }

                    if (prop.getProperty(SDConstant.BI_PATH) == null) {
                        JOptionPane.showMessageDialog(contentPane, SDConstant.ERROR_1, "Inane error",
                                JOptionPane.ERROR_MESSAGE);
                    }
                    if (prop.getProperty(SDConstant.BI_TOM_PATH) == null) {
                        JOptionPane.showMessageDialog(contentPane, SDConstant.ERROR_12, "Inane error",
                                JOptionPane.ERROR_MESSAGE);
                    }
                    disableAll();
                    setBIServerPath(prop);
                    final String data = textFieldBrowser.getText();
                    if (!data.equalsIgnoreCase(null)) {
                        ArgList.add(SDConstant.BROWSER);
                    }

                    String[] array = new String[ArgList.size()];

                    int count = 0;
                    for (int i = 0; i < ArgList.size(); i++) {

                        String retName = ArgList.get(i);
                        if (retName.equals("file")) {
                            if (count == 0) {
                                array[i] = retName;
                                count++;
                            }
                        } else {
                            array[i] = retName;
                        }

                    }

                    ApplicationContext context = new ClassPathXmlApplicationContext(SDConstant.SPRNG_FILE_NAME);

                    factory = (CofingRetrieverFactory) context.getBean("cofingRetrieverFactory");
                    ConfigRetreiver[] config = factory.getConfigRetrevier(array);

                    ExecutorService service = Executors.newFixedThreadPool(10);

                    for (final ConfigRetreiver configobj : config) {
                        if (null != configobj) {
                            configobj.setBISeverPath(prop);
                            configobj.setServerName("biserver");

                            if (installType.equalsIgnoreCase("Installer")) {
                                configobj.setInstallType("Installer");
                            } else if (installType.equalsIgnoreCase("Archive")) {
                                configobj.setInstallType("Archive");
                            } else if (installType.equalsIgnoreCase("Manual")) {
                                configobj.setInstallType("Manual");
                            }

                            if (configobj instanceof FileRetriever) {
                                configobj.setBidiXml(serverXml);
                                configobj.setBidiBatFile(serverBatFile);
                                configobj.setBidiProrperties(serverProrperties);
                                configobj.setTomcatXml(tomcatXml);
                            }
                            if (configobj instanceof BrowserInfoRetriever) {
                                configobj.setBrowserInfo(data);
                            }

                            service.execute(new Runnable() {
                                public void run() {
                                    if (null != configobj)
                                        configobj.readAndSaveConfiguration(prop);
                                }
                            });
                        }
                    }
                    btnNewButton.setVisible(false);
                    progressBar.setVisible(true);
                    ProgressThread thread = new ProgressThread();
                    thread.setSupport(getSupport());
                    thread.setProp(prop);
                    new Thread(thread).start();

                    service.shutdown();
                } catch (Exception e1) {
                    e1.printStackTrace();
                }

            }

        });

        chckbxSelectAll = new JCheckBox("Select/ De-select");
        chckbxSelectAll.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    selectAll();
                } else {
                    deSelectAll();
                }
            }
        });

        chckbxSelectAll.setBounds(46, 138, 201, 23);
        chckbxSelectAll.setOpaque(false);
        contentPane.add(chckbxSelectAll);
        btnNewButton.setForeground(SystemColor.infoText);
        btnNewButton.setBounds(10, 430, 639, 37);
        contentPane.add(btnNewButton);
        chckbxServerproperties.setOpaque(false);

        JLabel lblAttach = new JLabel("Attach Artifact");
        lblAttach.setHorizontalAlignment(SwingConstants.LEFT);
        lblAttach.setBounds(32, 335, 177, 23);
        contentPane.add(lblAttach);
        lblAttach.setOpaque(false);

        JButton btnNewButtonBrowse = new JButton("Browse");
        btnNewButtonBrowse.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseClicked(MouseEvent arg0) {
                saveSelectedFile(prop);

                JFrame parentFrame = new JFrame();
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setDialogTitle("Specify a file to save");
                fileChooser.setMultiSelectionEnabled(true);

                int userSelection = fileChooser.showSaveDialog(parentFrame);

                if (userSelection == JFileChooser.APPROVE_OPTION) {
                    fileToSave = fileChooser.getSelectedFiles();
                    for (int i = 0; i < fileToSave.length; i++) {
                        File file = fileToSave[i];
                        String artifactpath = file.getAbsolutePath();

                        File f = new File(artifactpath);
                        String absolutefilename = f.getName();
                        String filename = ArtifactsDirectory.concat(absolutefilename);
                        CopyFile artifactcopy = new CopyFile(artifactpath, filename);
                        try {
                            artifactcopy.copy();
                        } catch (Exception e1) {
                            e1.printStackTrace();
                        }

                    }
                    uploadedFiles();

                    rowList = new JList(model);
                    listScrollPane.setViewportView(rowList);
                    panel.add(listScrollPane);

                }
                rowList.addMouseListener(new MouseAdapter() {
                    @Override
                    public void mouseClicked(MouseEvent e) {
                        lblDelete.setVisible(true);
                    }
                });

            }
        });
        btnNewButtonBrowse.setBounds(208, 335, 104, 23);
        contentPane.add(btnNewButtonBrowse);
        btnNewButtonBrowse.setOpaque(false);

        textFieldBrowser = new JTextField();
        textFieldBrowser.setBounds(208, 364, 441, 23);
        contentPane.add(textFieldBrowser);
        textFieldBrowser.setColumns(10);

        progressBar = new JProgressBar(0, 100);
        progressBar.setBounds(8, 437, 639, 24);
        progressBar.setVisible(false);
        progressBar.setStringPainted(true);
        contentPane.add(progressBar);

        JLabel lblBrowserInformation = new JLabel("Browser Information");
        lblBrowserInformation.setHorizontalAlignment(SwingConstants.LEFT);
        lblBrowserInformation.setLabelFor(textFieldBrowser);
        lblBrowserInformation.setBounds(32, 368, 174, 14);
        contentPane.add(lblBrowserInformation);

        panel = new JPanel();
        panel.setBounds(423, 325, 127, 33);
        contentPane.add(panel);
        panel.setLayout(null);

        listScrollPane = new JScrollPane();
        listScrollPane.setBounds(0, 0, 127, 33);
        panel.add(listScrollPane);

        lblDelete = new JLabel("");
        lblDelete.setBounds(552, 325, 22, 23);
        lblDelete.setVisible(false);
        lblDelete.setIcon(
                new ImageIcon(SDSupportUtility.class.getResource("/org/pentaho/support/standalone/remove.png")));
        contentPane.add(lblDelete);
        lblDelete.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                int option = JOptionPane.showConfirmDialog(null, "Are you sure you want to delete this file ?");
                if (option == JOptionPane.YES_OPTION) {
                    String sel = rowList.getSelectedValue().toString();
                    String selected = dir + "/" + sel;
                    File fileExists = new File(selected);
                    fileExists.delete();
                    model.remove(sel.indexOf(sel));
                    lblDelete.setVisible(false);

                }
            }
        });

        JLabel instalType = new JLabel("Installation Type : ");
        instalType.setBounds(32, 395, 177, 23);
        instalType.setVisible(true);
        contentPane.add(instalType);

        ButtonGroup btnGrp = new ButtonGroup();

        rdbtnInstaller = new JRadioButton("Installer");
        rdbtnInstaller.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                installType = "Installer";
            }
        });
        rdbtnInstaller.setBounds(208, 395, 104, 23);
        rdbtnInstaller.setSelected(true);
        contentPane.add(rdbtnInstaller);
        btnGrp.add(rdbtnInstaller);

        rdbtnArchive = new JRadioButton("Archive");
        rdbtnArchive.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                installType = "Archive";
            }
        });
        rdbtnArchive.setBounds(333, 395, 104, 23);
        contentPane.add(rdbtnArchive);
        btnGrp.add(rdbtnArchive);

        rdbtnManual = new JRadioButton("Manual");
        rdbtnManual.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                installType = "Manual";
            }
        });
        rdbtnManual.setBounds(460, 395, 127, 27);
        contentPane.add(rdbtnManual);
        btnGrp.add(rdbtnManual);

        JLabel lblBackground = new JLabel();
        lblBackground.setIcon(new ImageIcon(
                SDSupportUtility.class.getResource("/org/pentaho/support/standalone/login-crystal-bg.jpg")));
        lblBackground.setBackground(SystemColor.controlHighlight);
        lblBackground.setHorizontalAlignment(SwingConstants.CENTER);
        lblBackground.setBounds(0, 0, 659, 488);
        contentPane.add(lblBackground);
    }

    /**
     * upload browsed files
     */
    private void uploadedFiles() {

        String fileUploading = prop.getProperty(SDConstant.SUPP_INFO_DEST_PATH) + File.separator
                + prop.getProperty(SDConstant.SUPP_INF_DIR) + File.separator + "Artifacts";

        dir = new File(fileUploading);
        File[] fList = dir.listFiles();
        for (File filesArtifact : fList) {
            model.addElement(filesArtifact.getName());
        }

    }

    /**
     * save selected files
     * 
     * @param prop
     */
    public void saveSelectedFile(Properties prop) {

        ArtifactsDirectory = prop.getProperty(SDConstant.SUPP_INFO_DEST_PATH) + File.separator
                + prop.getProperty(SDConstant.SUPP_INF_DIR) + File.separator + "Artifacts" + File.separator;

        File InformationDirectory = new File(ArtifactsDirectory);
        InformationDirectory.mkdir();
    }

    /**
     * select all fields
     */
    private void selectAll() {

        chckbxNewCheckBoxEnvironment.setSelected(true);
        chckbxNewCheckBoxStructure.setSelected(true);
        chckbxLogs.setSelected(true);
        chckbxGetSecureFiles.setSelected(true);
        chckbxMd5.setSelected(true);
        chckbxDbdetails.setSelected(true);
        chckbxLicense.setSelected(true);
        chckbxProcesslist.setSelected(true);
        chckbxTomcatxml.setSelected(true);
        chckbxServerXml.setSelected(true);
        chckbxGetBatfiles.setSelected(true);
        chckbxServerproperties.setSelected(true);
    }

    /**
     * de-select all fields
     */
    private void deSelectAll() {

        chckbxNewCheckBoxEnvironment.setSelected(false);
        chckbxNewCheckBoxStructure.setSelected(false);
        chckbxLogs.setSelected(false);
        chckbxGetSecureFiles.setSelected(false);
        chckbxMd5.setSelected(false);
        chckbxDbdetails.setSelected(false);
        chckbxLicense.setSelected(false);
        chckbxProcesslist.setSelected(false);
        chckbxTomcatxml.setSelected(false);
        chckbxServerXml.setSelected(false);
        chckbxGetBatfiles.setSelected(false);
        chckbxServerproperties.setSelected(false);
    }

    /**
     * sets bi server path
     * 
     * @param prop
     */
    private static void setBIServerPath(Properties prop) {

        prop.put(SDConstant.TOM_PATH, prop.getProperty(SDConstant.BI_TOM_PATH));

        WEB_XML = new StringBuilder();
        WEB_XML.append(prop.getProperty(SDConstant.BI_TOM_PATH)).append(File.separator).append(SDConstant.WEB_APP)
                .append(File.separator).append(SDConstant.PENTAHO).append(File.separator).append(SDConstant.WEB_INF)
                .append(File.separator).append(SDConstant.WEB_XML);

        prop.put(SDConstant.WEB_XML_PATH, WEB_XML.toString());

        if (!installType.equalsIgnoreCase("Manual")) {

            prop.put(SDConstant.PENTAHO_SOLU_PATH,
                    prop.getProperty(SDConstant.BI_PATH) + File.separator + SDConstant.PENTAHO_SOL_DIR);
        }

        if (installType.equalsIgnoreCase("Installer")) {

            prop.put(SDConstant.LOG_FILE_PATH,
                    prop.getProperty(SDConstant.BI_TOM_PATH) + File.separator + SDConstant.WEB_APP + File.separator
                            + SDConstant.PENTAHO + File.separator + SDConstant.WEB_INF + File.separator
                            + SDConstant.CLASSES + File.separator + SDConstant.LOG4J_XML);
        } else {

            prop.put(SDConstant.LOG_FILE_PATH, prop.getProperty(SDConstant.BI_TOM_PATH) + File.separator
                    + SDConstant.TOM_LOG + File.separator + SDConstant.LOG_FILE);
        }

    }

    /**
     * disable all fields while processing request
     */
    public void disableAll() {
        chckbxSelectAll.setEnabled(false);
        chckbxNewCheckBoxEnvironment.setEnabled(false);
        chckbxNewCheckBoxStructure.setEnabled(false);
        chckbxLogs.setEnabled(false);
        chckbxGetSecureFiles.setEnabled(false);
        chckbxMd5.setEnabled(false);
        chckbxDbdetails.setEnabled(false);
        chckbxLicense.setEnabled(false);
        chckbxProcesslist.setEnabled(false);
        chckbxTomcatxml.setEnabled(false);
        chckbxServerXml.setEnabled(false);
        chckbxGetBatfiles.setEnabled(false);
        chckbxServerproperties.setEnabled(false);
        rdbtnInstaller.setEnabled(false);
        rdbtnArchive.setEnabled(false);
        rdbtnManual.setEnabled(false);
        textFieldBrowser.setEnabled(false);
    }

    /**
     * enables all fields once process completed
     */
    public void enableAll() {
        chckbxSelectAll.setEnabled(true);
        chckbxNewCheckBoxEnvironment.setEnabled(true);
        chckbxNewCheckBoxStructure.setEnabled(true);
        chckbxLogs.setEnabled(true);
        chckbxGetSecureFiles.setEnabled(true);
        chckbxMd5.setEnabled(true);
        chckbxDbdetails.setEnabled(true);
        chckbxLicense.setEnabled(true);
        chckbxProcesslist.setEnabled(true);
        chckbxTomcatxml.setEnabled(true);
        chckbxServerXml.setEnabled(true);
        chckbxGetBatfiles.setEnabled(true);
        chckbxServerproperties.setEnabled(true);
        rdbtnInstaller.setEnabled(true);
        rdbtnArchive.setEnabled(true);
        rdbtnManual.setEnabled(true);
        textFieldBrowser.setEnabled(true);
    }

    /**
     * parse web.xml file if installation is manual and sets pentaho-solution
     * path
     * 
     * @param server
     * @param webxml
     * @return
     */
    private String getSolutionPath(String server, String webxml) {

        String pentahoSol = null;

        String os = System.getProperty(SDConstant.USER_DIR).toLowerCase().substring(0, 3);

        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        File xmlFile = new File(webxml);
        try {
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            NodeList paramValueList = doc.getElementsByTagName(SDConstant.XML_PARAM_VALUE);

            for (int i = 0; i < paramValueList.getLength(); i++) {

                Node paramNode = paramValueList.item(i);
                if (paramNode.getTextContent().contains(SDConstant.PENTAHO_SOL_DIR)) {

                    if (os.equals("win")) {
                        pentahoSol = paramNode.getTextContent().replace("/", "\\");
                    } else {
                        pentahoSol = paramNode.getTextContent();
                    }
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        return pentahoSol;
    }

    /**
     * loads support.properties
     * 
     * @return
     */
    private Properties loadProperty() {

        supProp = new StringBuilder();
        supProp.append(currentWorkingDirectory).append(File.separator).append(SDConstant.RESOURCE);
        Properties prop = new Properties();

        try {
            prop.load(new FileInputStream(supProp.toString() + File.separator + SDConstant.SUP_PROP_FILE));
            prop.put(SDConstant.ENV_FILE_PATH, supProp.toString() + File.separator + SDConstant.ENV_FILE_NAME);
            prop.put(SDConstant.MD5_PATH, supProp.toString());

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return prop;
    }

    public SDSupportUtility getSupport() {
        return support;
    }

    public void setSupport(SDSupportUtility support) {
        this.support = support;
    }

}