/** Licensed Materials - Property of IBM IBM Cognos Products: DOCS (C) Copyright IBM Corp. 2005, 2008 US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /** * * DeploymentUI.java * * Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved. * Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated). * */ import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.net.URL; import java.util.HashMap; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class DeploymentUI extends JFrame { private CRNConnect connect; private static DeploymentUI frame; // The following variables represent the dialog components. private JTextArea textAreaPane; private JTextField cmURL; private JButton runButton; private JComboBox deployTypeOption; private static Logon sessionLogon; private static final String DEPLOY_ARCHIVE_LIST = "List Archives"; private static final String DEPLOY_IMPORT = "Import"; private static final String DEPLOY_EXPORT = "Export"; private static final int DEPLOY_ENUM_LIST_ARCHIVES = 1; private static final int DEPLOY_ENUM_IMPORT = 2; private static final int DEPLOY_ENUM_EXPORT = 3; private static int deployType = 0; private HashMap selectedPackageNamePath=null; Deployment newDeploy = new Deployment(); // This is the constructor. public DeploymentUI(String title, CRNConnect connection) { // Set the title of the frame, even before the variables are declared. super(title); connect = connection; addComponents(); } // Add all components to the frame's panel. private void addComponents() { JMenuBar mBar = new JMenuBar(); this.setJMenuBar(mBar); // declare menuItems JMenuItem exit; JMenuItem about; JMenuItem overview; // Add and populate the File menu. JMenu fileMenu = new JMenu("File"); mBar.add(fileMenu); exit = new JMenuItem("Exit"); fileMenu.add(exit); exit.addActionListener(new MenuHandler()); // Add and populate the Help menu. JMenu helpMenu = new JMenu("Help"); mBar.add(helpMenu); about = new JMenuItem("About"); helpMenu.add(about); about.addActionListener(new MenuHandler()); overview = new JMenuItem("Overview"); helpMenu.add(overview); overview.addActionListener(new MenuHandler()); JPanel mainPanel = createMainPanel(); JPanel outputPanel = createOutputPanel(); JPanel panel = new JPanel(new BorderLayout()); panel.add(mainPanel, BorderLayout.NORTH); panel.add(outputPanel); setContentPane(panel); } private JPanel createOutputPanel() { // Add the status text pane. textAreaPane = new JTextArea(); JScrollPane areaScrollPane = new JScrollPane(textAreaPane); areaScrollPane .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); areaScrollPane.setPreferredSize(new Dimension(500, 275)); //Create the output panel and it's layout objects GridBagLayout layout = new GridBagLayout(); JPanel outputPanel = new JPanel(layout); GridBagConstraints layoutConstraints = new GridBagConstraints(); layoutConstraints.weightx = 1.0; layoutConstraints.weighty = 1.0; layoutConstraints.fill = GridBagConstraints.BOTH; layout.setConstraints(areaScrollPane, layoutConstraints); outputPanel.add(areaScrollPane); outputPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory .createCompoundBorder(BorderFactory .createTitledBorder("Output"), BorderFactory .createEmptyBorder(5, 5, 5, 5)), outputPanel .getBorder())); return outputPanel; } private JPanel createMainPanel() { // Add the URL text field and label cmURL = new JTextField(CRNConnect.CM_URL.length() + 10); cmURL.setText(CRNConnect.CM_URL); cmURL.setEditable(false); // Put together a panel for the URl JPanel cmURLPanel = new JPanel(); cmURLPanel.add(new JLabel("Server URL:")); cmURLPanel.add(cmURL); //get dropdown box and button panel JPanel optionButtonPanel = createMainButtonPanel(); //create the main panel and add the components JPanel mainPanel = new JPanel(new GridLayout(2, 0)); // Add the panels to the mainPanel mainPanel.add(cmURLPanel); mainPanel.add(optionButtonPanel); return mainPanel; } private JPanel createMainButtonPanel() { // Create the button Panel JPanel buttonPanel = new JPanel(); // Create and add the report output type combo box String deployTypes[] = { DEPLOY_ARCHIVE_LIST, DEPLOY_IMPORT, DEPLOY_EXPORT }; deployTypeOption = new JComboBox(deployTypes); deployTypeOption.setSelectedItem(null); deployTypeOption.addActionListener(new DeployTypeSelectionHandler()); buttonPanel.add(new JLabel("Deployment Options:"), BorderLayout.WEST); buttonPanel.add(deployTypeOption, BorderLayout.WEST); // Create and add the Button runButton = new JButton("Run Option"); runButton.addActionListener(new allButtonsHandler()); buttonPanel.add(runButton, BorderLayout.EAST); return buttonPanel; } // handle menu bar buttons private class MenuHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().startsWith("http://")) { connect.connectionChange(e.getActionCommand()); } try { JMenuItem menuClicked = (JMenuItem) e.getSource(); if (menuClicked.getText() == "Exit") { System.exit(0); } if (menuClicked.getText() == "About") { JOptionPane.showMessageDialog(((JMenuItem) e.getSource()) .getParent(), "IBM Cognos Sample Application\n\n" + "Version 1.0.0\n" + "This application uses the IBM Cognos Software Development Kit", "About IBM Cognos Samples", JOptionPane.INFORMATION_MESSAGE, new ImageIcon( "../Common/about.gif")); } if (menuClicked.getText().compareTo("Overview") == 0) { JFrame explainWindow = new JFrame( "Overview for Deployment Sample"); File explainFile = new File( "Java_DeploymentUI_Explain.html"); if (!explainFile.exists()) { JOptionPane.showMessageDialog(null, "Explain file not found"); return; } URL explainURL = new URL("file:///" + explainFile.getAbsolutePath()); JEditorPane explainPane = new JEditorPane(); explainPane.setPage(explainURL); explainPane.setEditable(false); JScrollPane explainScroll = new JScrollPane(explainPane, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); explainWindow.getContentPane().add(explainScroll); explainWindow.setSize(640, 480); explainWindow.setVisible(true); } } catch (Exception ex) { } } } // The following is the button event handler. private class allButtonsHandler implements ActionListener { public void actionPerformed(ActionEvent e) { if (!Logon.loggedIn(connect)) { try { sessionLogon.logon(connect); } catch (Exception logonException) { } } JButton buttonPressed = ((JButton) e.getSource()); String output = new String(); if (buttonPressed == runButton) { if (deployType == 0) { textAreaPane.setText(""); return; } try { String[] archivesList = newDeploy .getListOfArchives(connect); int len = archivesList.length; // get list archives if (deployType == DEPLOY_ENUM_LIST_ARCHIVES) { textAreaPane.setText(""); deployTypeOption.setSelectedItem(null); if (len > 0) { for (int i = 0; i < archivesList.length; i++) textAreaPane.append(archivesList[i] + "\n"); } else { textAreaPane.setText("No available archives."); } deployType = 0; } // Importing data into the content store else if (deployType == DEPLOY_ENUM_IMPORT) { textAreaPane.setText(""); Object selectedArchive = null; String importArchiveName = null; do { importArchiveName = JOptionPane.showInputDialog(null, "Archive name: ", "Specify a name - New Import", 3); if (importArchiveName == null) { return; } } while (importArchiveName.length() == 0); if ((importArchiveName != null && importArchiveName.length() > 0)&&(len > 0)) { selectedArchive = JOptionPane.showInputDialog(null, "Select the deployment archive", "Deployment archive", JOptionPane.INFORMATION_MESSAGE, null, archivesList, null); } else // no available entries { JOptionPane.showMessageDialog(null, "No entries", "Select the deployment archive", JOptionPane.INFORMATION_MESSAGE); selectedArchive = null; } if (selectedArchive != null) { String oneArchive = ((String) selectedArchive) .trim(); selectedPackageNamePath = newDeploy .getPubFolderContent(oneArchive, connect); String[] selectedPackage=getSelectedPackageName(selectedPackageNamePath); if (selectedPackage.length > 0) { packageDialog myDialog = new packageDialog( frame, "Package", true, importArchiveName, oneArchive, selectedPackage, connect, "import"); myDialog.setVisible(true); String importDeployID = myDialog .getDeploymentID(); deployTypeOption.setSelectedItem(null); if (importDeployID == null) { textAreaPane.setText(""); } else if ((importDeployID .equalsIgnoreCase("Failed"))||(importDeployID.equalsIgnoreCase("-1"))) { textAreaPane .setText("Error occurred in Import."); } else { textAreaPane.setText("The import of " + oneArchive + " has been completed."); } deployType = 0; } else { int result = JOptionPane .showConfirmDialog( null, "The deployment archive is empty. Click Yes to continue the import or Cancel to return to your selection.", "New Import", JOptionPane.OK_CANCEL_OPTION); deployTypeOption.setSelectedItem(null); deployType = 0; if (result != 0) { return; } } } } // Exporting data from the content store else if (deployType == DEPLOY_ENUM_EXPORT) { textAreaPane.setText(""); String archiveName = null; do { archiveName = JOptionPane.showInputDialog(null, "Archive name: ", "Specify a name - New Export", 3); if (archiveName == null) { return; } } while (archiveName.length() == 0); if (archiveName != null && archiveName.length() > 0) { String[] folderArr = newDeploy .getAllFolders(connect); if (folderArr.length != 0) { packageDialog pakDialog = new packageDialog( frame, "Package", true, archiveName, null, folderArr, connect, "export"); pakDialog.setVisible(true); String exportDeployID = pakDialog .getDeploymentID(); deployTypeOption.setSelectedItem(null); if (exportDeployID == null) { textAreaPane.setText(""); } else if (exportDeployID .equalsIgnoreCase("-1")) { textAreaPane .setText("Failed to add a Deployment object."); } else if (exportDeployID .equalsIgnoreCase("Failed")) { textAreaPane .setText("Error occurred in Import."); } else { textAreaPane.setText("The export of " + archiveName + " has been completed."); } deployType = 0; } else { JOptionPane .showMessageDialog( null, "No public folder contents are available", "New Export", 1); deployTypeOption.setSelectedItem(null); deployType = 0; return; } } } } catch (Exception ex) { System.out.println(ex.getMessage()); output = "An error occurred.\nMake sure a " + "deployment option is selected and IBM Cognos is running."; } } if (output.compareTo("") != 0) { textAreaPane.setText(""); textAreaPane.append(output); } } } // This is the Deployment type combo box event handler. private class DeployTypeSelectionHandler implements ActionListener { public void actionPerformed(ActionEvent deployTypeSelectedEvent) { textAreaPane.setText(""); String chosenType = (String) deployTypeOption.getSelectedItem(); if (chosenType == DEPLOY_ARCHIVE_LIST) { deployType = DEPLOY_ENUM_LIST_ARCHIVES; } else if (chosenType == DEPLOY_IMPORT) { deployType = DEPLOY_ENUM_IMPORT; } else if (chosenType == DEPLOY_EXPORT) { deployType = DEPLOY_ENUM_EXPORT; } } } //Get selected package name from a HashMap private String[] getSelectedPackageName(HashMap selectedPackageNamePath) { String[] selectedPackage=null; if(!selectedPackageNamePath.isEmpty()) { Object[] mySelectedPackage = (Object[]) selectedPackageNamePath .keySet().toArray(); selectedPackage = new String[mySelectedPackage.length]; for (int n = 0; n < mySelectedPackage.length; n++) { selectedPackage[n] = (String) mySelectedPackage[n]; } } return selectedPackage; } // Create the main method to execute the application. public static void main(String args[]) { CRNConnect connection = new CRNConnect(); connection.connectToCognosServer(); sessionLogon = new Logon(); String logonOutput = ""; while (!Logon.loggedIn(connection)) { logonOutput = sessionLogon.logon(connection); if (!Logon.loggedIn(connection)) { int retry = JOptionPane.showConfirmDialog(null, "Login Failed. Please try again.", "Login Failed", JOptionPane.OK_CANCEL_OPTION); if (retry != JOptionPane.OK_OPTION) { System.exit(0); } } } frame = new DeploymentUI("IBM Cognos Sample", connection); // Create a WindowAdapter so the application // is exited when the window is closed. frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.textAreaPane.setText(logonOutput); // Set the size of the frame and display it. frame.setSize(750, 440); frame.setVisible(true); frame.setResizable(true); } }