Package com.sun.messaging.jmq.admin.apps.console

Source Code of com.sun.messaging.jmq.admin.apps.console.ObjAdminHandler

/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 2000-2010 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License").  You
* may not use this file except in compliance with the License.  You can
* obtain a copy of the License at
* https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
* or packager/legal/LICENSE.txt.  See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at packager/legal/LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license."  If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above.  However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/

/*
* @(#)ObjAdminHandler.java  1.45 06/27/07
*/

package com.sun.messaging.jmq.admin.apps.console;

import com.sun.messaging.InvalidPropertyException;
import com.sun.messaging.InvalidPropertyValueException;

import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.naming.Context;
import javax.naming.NameClassPair;
import javax.swing.JOptionPane;
import javax.swing.tree.DefaultMutableTreeNode;

import com.sun.messaging.jmq.admin.util.Globals;
import com.sun.messaging.jmq.admin.util.JMSObjFactory;
import com.sun.messaging.jmq.admin.resources.AdminConsoleResources;
import com.sun.messaging.jmq.admin.apps.console.event.AdminEvent;
import com.sun.messaging.jmq.admin.apps.console.event.DialogEvent;
import com.sun.messaging.jmq.admin.apps.console.event.ObjAdminEvent;
import com.sun.messaging.jmq.admin.apps.console.event.AdminEventListener;
import com.sun.messaging.jmq.admin.apps.console.event.ConsoleActionEvent;
import com.sun.messaging.jmq.admin.objstore.AuthenticationException;
import com.sun.messaging.jmq.admin.objstore.NameAlreadyExistsException;
import com.sun.messaging.jmq.admin.objstore.NameNotFoundException;
import com.sun.messaging.jmq.admin.objstore.ObjStore;
import com.sun.messaging.jmq.admin.objstore.ObjStoreAttrs;
import com.sun.messaging.jmq.admin.objstore.ObjStoreManager;
import com.sun.messaging.jmq.admin.objstore.ObjStoreException;

/**
* Handles the object administration tasks delegated by the
* AController class.
*
* @see AController
*/
public class ObjAdminHandler implements AdminEventListener  {

    private static String OBJSTORELIST_FILENAME    = "objstorelist.properties";

    private static AdminConsoleResources acr = Globals.getAdminConsoleResources();
    private static String close[] = {acr.getString(acr.I_DIALOG_CLOSE)};

    private AdminApp  app;
    private AController  controller;

    private ObjStoreAddDialog objStoreAddDialog = null;
    private ObjStorePropsDialog objStorePropsDialog = null;
    private ObjStorePasswdDialog objStorePasswdDialog = null;
    private ObjStoreDestAddDialog objStoreDestAddDialog = null;
    private ObjStoreDestPropsDialog objStoreDestPropsDialog = null;
    private ObjStoreConFactoryAddDialog objStoreConFactoryAddDialog = null;
    private ObjStoreConFactoryPropsDialog objStoreConFactoryPropsDialog = null;

    /**
     * Create/initialize the admin explorer GUI component.
     */
    public ObjAdminHandler(AdminApp app, AController controller) {
  this.app = app;
  this.controller = controller;
    }

    public void init()  {
        loadObjStoreList();
    }

    /*
     * BEGIN INTERFACE AdminEventListener
     */
    public void adminEventDispatched(AdminEvent e)  {
  int id;
  ConsoleObj selObj;
 
  if (e instanceof DialogEvent)  {
      handleDialogEvents((DialogEvent)e);
  } else if (e instanceof ObjAdminEvent)  {
      handleObjAdminEvents((ObjAdminEvent)e);
  }
    }
    /*
     * END INTERFACE AdminEventListener
     */

    public void handleDialogEvents(DialogEvent de) {

  ConsoleObj selObj = app.getSelectedObj();
        int dialogType = de.getDialogType();

        switch (dialogType)  {
        case DialogEvent.ADD_DIALOG:
      if (selObj instanceof ObjStoreListCObj) {
    if (objStoreAddDialog == null) {
                    objStoreAddDialog = new ObjStoreAddDialog(app.getFrame(),
              (ObjStoreListCObj)selObj);
                    objStoreAddDialog.addAdminEventListener(this);
                    objStoreAddDialog.setLocationRelativeTo(app.getFrame());
          }
                objStoreAddDialog.show();

      } else if (selObj instanceof ObjStoreDestListCObj) {
    if (objStoreDestAddDialog == null) {
                    objStoreDestAddDialog = new ObjStoreDestAddDialog(app.getFrame());
                    objStoreDestAddDialog.addAdminEventListener(this);
                    objStoreDestAddDialog.setLocationRelativeTo(app.getFrame());
          }

          // This should't happen - menu item should be disabled.
    ObjStore os = ((ObjStoreDestListCObj)selObj).getObjStore();
    if (!os.isOpen()) {
            JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OBJSTORE_NOT_CONNECTED, os.getID()),
      acr.getString(acr.I_ADD_OBJSTORE_DEST) + ": " +
          acr.getString(acr.I_ERROR_CODE,
            AdminConsoleResources.E_OBJSTORE_NOT_CONNECTED),
      JOptionPane.YES_NO_OPTION,
      JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    }
                objStoreDestAddDialog.show((ObjStoreDestListCObj)selObj);

      } else if (selObj instanceof ObjStoreConFactoryListCObj) {
    if (objStoreConFactoryAddDialog == null) {
                    objStoreConFactoryAddDialog = new ObjStoreConFactoryAddDialog(app.getFrame());
                    objStoreConFactoryAddDialog.addAdminEventListener(this);
                    objStoreConFactoryAddDialog.setLocationRelativeTo(app.getFrame());
          }
          // This should't happen - menu item should be disabled.
    ObjStore os = ((ObjStoreConFactoryListCObj)selObj).getObjStore();
    if (!os.isOpen()) {
            JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OBJSTORE_NOT_CONNECTED, os.getID()),
      acr.getString(acr.I_ADD_OBJSTORE_CF) + ": " +
          acr.getString(acr.I_ERROR_CODE,
            AdminConsoleResources.E_OBJSTORE_NOT_CONNECTED),
      JOptionPane.YES_NO_OPTION,
      JOptionPane.ERROR_MESSAGE, null, close, close[0]);
        return;
    }
                objStoreConFactoryAddDialog.show((ObjStoreConFactoryListCObj)selObj);

            }
  break;

        case DialogEvent.DELETE_DIALOG:
      if (selObj instanceof ObjStoreCObj) {
    doDeleteObjStore(selObj);
      } else if (selObj instanceof ObjStoreDestCObj) {
    doDeleteDestination(selObj);
      } else if (selObj instanceof ObjStoreConFactoryCObj) {
    doDeleteConnFactory(selObj);
            }
        break;

  case DialogEvent.PROPS_DIALOG:
      if (selObj instanceof ObjStoreCObj) {
    if (objStorePropsDialog == null) {
        ObjStoreCObj osCObj = (ObjStoreCObj)selObj;
        ObjStoreListCObj oslCObj = (ObjStoreListCObj)osCObj.getParent();
                    objStorePropsDialog = new ObjStorePropsDialog(app.getFrame(),
            oslCObj);
                    objStorePropsDialog.addAdminEventListener(this);
                    objStorePropsDialog.setLocationRelativeTo(app.getFrame());
          }
                objStorePropsDialog.show((ObjStoreCObj)selObj);
      } else if (selObj instanceof ObjStoreDestCObj) {
    if (objStoreDestPropsDialog == null) {
                    objStoreDestPropsDialog = new ObjStoreDestPropsDialog
            (app.getFrame());
                    objStoreDestPropsDialog.addAdminEventListener(this);
                    objStoreDestPropsDialog.setLocationRelativeTo(app.getFrame());
          }
          // This should't happen - menu item should be disabled.
    ObjStore os = ((ObjStoreDestCObj)selObj).getObjStore();
    if (!os.isOpen()) {
            JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OBJSTORE_NOT_CONNECTED, os.getID()),
      acr.getString(acr.I_OBJSTORE_DEST_PROPS) + ": " +
          acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_OBJSTORE_NOT_CONNECTED),
      JOptionPane.YES_NO_OPTION,
      JOptionPane.ERROR_MESSAGE, null, close, close[0]);
        return;
    }
                objStoreDestPropsDialog.show((ObjStoreDestCObj)selObj);
      } else if (selObj instanceof ObjStoreConFactoryCObj) {
    if (objStoreConFactoryPropsDialog == null) {
                    objStoreConFactoryPropsDialog =
      new ObjStoreConFactoryPropsDialog(app.getFrame());
                    objStoreConFactoryPropsDialog.addAdminEventListener(this);
                    objStoreConFactoryPropsDialog.setLocationRelativeTo
              (app.getFrame());
          }
          // This should't happen - menu item should be disabled.
    ObjStore os = ((ObjStoreConFactoryCObj)selObj).getObjStore();
    if (!os.isOpen()) {
            JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OBJSTORE_NOT_CONNECTED, os.getID()),
      acr.getString(acr.I_OBJSTORE_CF_PROPS) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_OBJSTORE_NOT_CONNECTED),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
        return;
    }
                objStoreConFactoryPropsDialog.show((ObjStoreConFactoryCObj)selObj);
      }
  break;

        case DialogEvent.CONNECT_DIALOG:
            if (selObj instanceof ObjStoreCObj) {
    doConnectObjStore(selObj);
      }
        break;

        case DialogEvent.DISCONNECT_DIALOG:
            if (selObj instanceof ObjStoreCObj) {
    doDisconnectObjStore(selObj);
      }
        break;

        case DialogEvent.HELP_DIALOG:
      JOptionPane.showOptionDialog(app.getFrame(),
    acr.getString(acr.I_NO_HELP),
    acr.getString(acr.I_HELP_TEXT),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.INFORMATION_MESSAGE, null, close, close[0]);
  break;

        case DialogEvent.SHUTDOWN_DIALOG:
        case DialogEvent.RESTART_DIALOG:
        case DialogEvent.PAUSE_DIALOG:
        case DialogEvent.RESUME_DIALOG:
      /*
       * No shutdown/restart/pause/resume for obj admin
       */
        break;

        }
    }

    public void handleObjAdminEvents(ObjAdminEvent oae) {
  ConsoleObj      selObj = app.getSelectedObj();
        int     type = oae.getType();

        switch (type)  {
  case ObjAdminEvent.ADD_OBJSTORE:
      doAddObjStore(oae, selObj);
      break;

  case ObjAdminEvent.UPDATE_OBJSTORE:
      doUpdateObjStore(oae, selObj);
      break;

  case ObjAdminEvent.ADD_DESTINATION:
      doAddDestination(oae, selObj);
      break;

  case ObjAdminEvent.UPDATE_DESTINATION:
      doUpdateDestination(oae, selObj);
      break;

  case ObjAdminEvent.ADD_CONN_FACTORY:
      doAddConnFactory(oae, selObj);
      break;

  case ObjAdminEvent.UPDATE_CONN_FACTORY:
      doUpdateConnFactory(oae, selObj);
      break;

  case ObjAdminEvent.UPDATE_CREDENTIALS:
      doUpdateCredentials(oae, selObj);
      break;

  }

    }


    private void doAddObjStore(ObjAdminEvent oae, ConsoleObj selObj) {

  ObjStoreAttrs osa = oae.getObjStoreAttrs();
  ObjStoreManager osMgr = app.getObjStoreListCObj().getObjStoreManager();
  boolean connect = oae.isConnectAttempt();
  ConsoleObj osCObj = null;

  /*
   * Create store and connect (if requested).
   */
  ObjStore os = createStore(osMgr, osa, connect);

  /*
   * If valid object store, then now try reading in any existing objects.
   */
  if (os != null)  {
       osCObj = new ObjStoreCObj(os)
      if (os.isOpen()) {
          readObjStore(osCObj, osMgr, os);
      }
  }   
  /*
   * If os is still valid, then add it to the tree list.
   */
  if (osCObj != null) {
      app.getExplorer().addObjStore(osCObj);
      app.getInspector().refresh();
      app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_ADD,
               osCObj.toString()));
  }

  /*
   * Bring down the dialog if successful,
   * otherwise keep it up.
   */
  if (oae.isOKAction() && os != null)  {
      objStoreAddDialog.hide();
  }

  saveObjStoreList();

    }

    private void doUpdateObjStore(ObjAdminEvent oae, ConsoleObj selObj) {

  ObjStoreAttrs osa = oae.getObjStoreAttrs();
  ObjStoreManager osMgr = app.getObjStoreListCObj().getObjStoreManager();
  boolean connect = oae.isConnectAttempt();
  ObjStore prevOs = ((ObjStoreCObj)selObj).getObjStore();
  String newName = oae.getObjStoreID();

  /*
   * Create/Update a new store and connect (if requested).
   */
  ObjStore os = updateStore(prevOs, newName, osMgr, osa, connect);

  /*
   * If valid object store, then now try reading in any existing objects.
   */
  if (os == null) {
      // Don't do anything, just keep the old os.
      return;
  } else {
      /*
       * Read in the objects from the os.
       */
      if (os.isOpen()) {
          readObjStore(selObj, osMgr, os);
      }
  } 

  /*
   * If os is still valid, then update it cobj with the new obj store.
   */
  ((ObjStoreCObj)selObj).setObjStore(os);
  /*
   * We know that 0 is the dest list and 1 is the con factory list.
   */
  ObjStoreDestListCObj     destListCObj =
      (ObjStoreDestListCObj)selObj.getChildAt(0);
  ObjStoreConFactoryListCObj cfListCObj =
      (ObjStoreConFactoryListCObj)selObj.getChildAt(1);
  destListCObj.setObjStore(os);
  cfListCObj.setObjStore(os);

        app.getExplorer().nodeChanged((DefaultMutableTreeNode)selObj);
  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_UPDATE,
             selObj.toString()));
  app.getInspector().selectedObjectUpdated();

  // Update menu items, buttons.
  controller.setActions(selObj);

  /*
   * If check box to connect is not checked, then
   * remove all destination/connection factory objects from this
   * object store node hierarchy
   */
  if (!connect) {
            clearStore(selObj);
  }

  /*
   * Bring down the dialog if successful,
   * otherwise keep it up.
   */
  if (oae.isOKAction() && os != null)  {
      objStorePropsDialog.hide();
  }

  saveObjStoreList();
    }

    /*
     * Read in the objects from the obj store and store them
     * in the console object.
     */
    private boolean readObjStore(ConsoleObj osCObj, ObjStoreManager osMgr, ObjStore os) {

  Vector v = null;

  try {
      v = os.list();
        } catch (Exception e) {
      JOptionPane.showOptionDialog(app.getFrame(),
    acr.getString(acr.E_OBJSTORE_LIST, os.getID(), e.toString()),
    acr.getString(acr.I_OBJSTORE) + ": " +
                    acr.getString(acr.I_ERROR_CODE,
                      AdminConsoleResources.E_OBJSTORE_LIST),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      // Close the obj store connection.
      try {
    os.close();
      } catch (Exception ex) { }
      // No Changes
        return false;
        }

  /*
   * We know that 0 is the dest list and 1 is the con factory list.
   */
  ObjStoreDestListCObj     destListCObj =
      (ObjStoreDestListCObj)osCObj.getChildAt(0);
  ObjStoreConFactoryListCObj cfListCObj =
      (ObjStoreConFactoryListCObj)osCObj.getChildAt(1);
  /*
   * We're re-reading it in so clear out whatever's there.
   */
  ConsoleObj node;
  for (Enumeration e = destListCObj.children(); e.hasMoreElements(); ) {
      node = (ConsoleObj)e.nextElement();
      app.getExplorer().removeFromParent(node);
      e = destListCObj.children()// Need to set e again after a remove
  }

  for (Enumeration e = cfListCObj.children(); e.hasMoreElements(); ) {
      node = (ConsoleObj)e.nextElement();
      app.getExplorer().removeFromParent(node);
      e = cfListCObj.children()// Need to set e again after a remove
  }

  /*
   * Re-read the objects into the nodes.
   */
  for (int i = 0; i < v.size(); i++) {
            NameClassPair obj = (NameClassPair)v.get(i);
      String lookupName = ((NameClassPair)obj).getName();
      Object object = null;
      try {
    object = os.retrieve(lookupName);
      } catch (Exception e) {
          JOptionPane.showOptionDialog(app.getFrame(),
        acr.getString(acr.E_RETRIEVE_OBJECT, lookupName, os.getID()),
        acr.getString(acr.I_OBJSTORE) + ": " +
                        acr.getString(acr.I_ERROR_CODE,
                          AdminConsoleResources.E_RETRIEVE_OBJECT),
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    continue;
      }

            if ((com.sun.messaging.Topic.class.getName().
                 equals(obj.getClassName())) ||
                (com.sun.messaging.Queue.class.getName().
                 equals(obj.getClassName()))) {

           ObjStoreDestCObj destCObj =
      new ObjStoreDestCObj((ObjStoreCObj)osCObj, lookupName, object);

       app.getExplorer().addToParent(destListCObj, destCObj);

      }
            else if ((com.sun.messaging.TopicConnectionFactory.class.getName().
                      equals(obj.getClassName())) ||
                     (com.sun.messaging.QueueConnectionFactory.class.getName().
                      equals(obj.getClassName())) ||
                     (com.sun.messaging.ConnectionFactory.class.getName().
                      equals(obj.getClassName())) ||
                     (com.sun.messaging.XATopicConnectionFactory.class.getName().
                      equals(obj.getClassName())) ||
                     (com.sun.messaging.XAQueueConnectionFactory.class.getName().
                      equals(obj.getClassName())) ||
                     (com.sun.messaging.XAConnectionFactory.class.getName().
                      equals(obj.getClassName()))) {

           ObjStoreConFactoryCObj cfCObj =
      new ObjStoreConFactoryCObj((ObjStoreCObj)osCObj, lookupName,
                object);
    app.getExplorer().addToParent(cfListCObj, cfCObj);

            }
  }

  return true;
    }

    private void clearStore(ConsoleObj osCObj) {
  /*
   * We know that 0 is the dest list and 1 is the con factory list.
   */
  ObjStoreDestListCObj     destListCObj =
      (ObjStoreDestListCObj)osCObj.getChildAt(0);
  ObjStoreConFactoryListCObj cfListCObj =
      (ObjStoreConFactoryListCObj)osCObj.getChildAt(1);
  /*
   * We're re-reading it in so clear out whatever's there.
   */
  ConsoleObj node;
  for (Enumeration e = destListCObj.children(); e.hasMoreElements(); ) {
      node = (ConsoleObj)e.nextElement();
      app.getExplorer().removeFromParent(node);
      e = destListCObj.children()// Need to set e again after a remove
  }

  for (Enumeration e = cfListCObj.children(); e.hasMoreElements(); ) {
      node = (ConsoleObj)e.nextElement();
      app.getExplorer().removeFromParent(node);
      e = cfListCObj.children()// Need to set e again after a remove
  }

    }

    private ObjStore createStore(ObjStoreManager osMgr, ObjStoreAttrs osa,
         boolean attemptToConnect) {
  ObjStore os = null;

  if (osMgr == null || osa == null)  {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_PROCESS),
      acr.getString(acr.I_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_OS_PROCESS),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return (null);
  }

  /*
   * Create ObjStore
   */
  try  {
      os = osMgr.createStore(osa);
        } catch (Exception ex) {
      JOptionPane.showOptionDialog(app.getFrame(),
      ex.toString(),
      acr.getString(acr.I_OBJSTORE),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return null;
  }

  /*
   * Now try connecting to it (if they want to try).
   * Then read in the objects from the store.
   */
  if (attemptToConnect) {

      try {
          if (os != null)
              os.open();
      } catch (Exception e) {
          JOptionPane.showOptionDialog(app.getFrame(),
        acr.getString(acr.E_INSUFFICIENT_INFO, e.toString()),
        acr.getString(acr.I_OBJSTORE) + ": " +
                        acr.getString(acr.I_ERROR_CODE,
                          AdminConsoleResources.E_INSUFFICIENT_INFO),
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    os = null;
    // Delete it.
    try {
        osMgr.destroyStore(osa.getID());
    } catch (Exception ex) { }
      }
  }

  return (os);
    }

    private ObjStore updateStore(ObjStore prevOs, String newName,
         ObjStoreManager osMgr,
         ObjStoreAttrs osa, boolean attemptToConnect) {
  ObjStore os = null;
  boolean created = false;

  if (osMgr == null || osa == null)  {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_PROCESS),
      acr.getString(acr.I_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_OS_PROCESS),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return (null);
  }

  /*
   * Update ObjStore
   */
  ObjStoreAttrs prevAttrs = prevOs.getObjStoreAttrs();
  os = osMgr.getStore(prevOs.getID());

  if (os == null) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_PROCESS),
      acr.getString(acr.I_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_OS_PROCESS),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  }

  //
  // If we're changing the OS name, then we need to
  // delete old os and create new one.
  // Otherwise, just set new attrs on the os.
  //
  try  {
      if (newName != null && os != null && !newName.equals(os.getID())) {
          os = osMgr.createStore(osa);
    created = true;
      } else if (os != null)  {
          os.setObjStoreAttrs(osa);
      }
        } catch (Exception ex) {
      JOptionPane.showOptionDialog(app.getFrame(),
    ex.toString(),
    acr.getString(acr.I_OBJSTORE_PROPS),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return null;
  }

  /*
   * Now try connecting to it (if they want to try).
   * Then read in the objects from the store.
   */
  if (attemptToConnect) {
      try {
          if (os != null) {
              os.open();
          }
      } catch (Exception e) {
          JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_INSUFFICIENT_INFO, e.toString()),
      acr.getString(acr.I_OBJSTORE_PROPS) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_INSUFFICIENT_INFO),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    // Don't update it, undo everything
    try {
        if (created) {
          osMgr.destroyStore(osa.getID());
        } else {
      // Reset old attrs back
      os.setObjStoreAttrs(prevAttrs);
        }
     } catch (Exception ex) { }
        return null;
      }
  }

  //
  // If successful in updating, now we can delete the old one.
  //
  if (os != null && created) {
      try {
    if (prevOs.isOpen())
        prevOs.close();
        osMgr.destroyStore(prevOs.getID());

           if (!attemptToConnect && os.isOpen())
        os.close();

      } catch (Exception ex) { }
  }

  //
  // If the os is open and unchecked connect box, then close it.
  //
   if (os != null && !attemptToConnect && os.isOpen()) {
      try {
    os.close();
      } catch (Exception ex) { }
  }
  return (os);
    }

    private void doConnectObjStore(ConsoleObj selObj) {

  ObjStore os =((ObjStoreCObj)selObj).getObjStore();

  if (os.isOpen()) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_ALREADY_CONNECTED,
              selObj.toString()),
      acr.getString(acr.I_CONNECT_OBJSTORE) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_OS_ALREADY_CONNECTED),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
  }


        /*
         *Retrieve the original ObjStoreAttrs that the user input.
         *This DOES NOT read any jndi property files processed by jndi
         * since this is done PRIOR to creating the initialContext.
         */
        ObjStoreAttrs osa = os.getObjStoreAttrs();
        Vector missingAuthInfo = os.checkAuthentication(osa);
        int missingAuthInfoSize = missingAuthInfo.size();

        boolean carriageReturnNeeded = false;
        if (missingAuthInfo != null && missingAuthInfoSize > 0) {
      if (objStorePasswdDialog == null && missingAuthInfoSize > 0) {
                objStorePasswdDialog = new ObjStorePasswdDialog(app.getFrame());
                objStorePasswdDialog.addAdminEventListener(this);
                objStorePasswdDialog.setLocationRelativeTo(app.getFrame());
      }
      if (missingAuthInfoSize > 0)
                objStorePasswdDialog.show(os, missingAuthInfo);
        } else {
      boolean success = finishDoConnectObjStore(selObj, os);
      if (success) {
      app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_CONNECT,
                     selObj.toString()));
      }
  }

    }

    private boolean finishDoConnectObjStore(ConsoleObj selObj, ObjStore os) {

  try {
      os.open();
  } catch (AuthenticationException ae) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_PASSWORD),
      acr.getString(acr.I_CONNECT_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_PASSWORD),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      closeObjStore(os, selObj);
      return false;
  } catch (Exception e) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_UNABLE_CONNECT, selObj.toString(),
              e.toString()),
      acr.getString(acr.I_CONNECT_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_OS_UNABLE_CONNECT),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      closeObjStore(os, selObj);
      return false;
  }

  // Read in the objects.
  ObjStoreManager osMgr = app.getObjStoreListCObj().getObjStoreManager();
  boolean success = readObjStore(selObj, osMgr, os);
  if (success) {
            app.getExplorer().nodeChanged((DefaultMutableTreeNode)selObj);
      app.getInspector().selectedObjectUpdated();
      // XXX This causes selection to go away if selected in inspector
      app.getInspector().refresh();
  }

  // Update menu items, buttons.
  controller.setActions(selObj);

  return true;
    }


    private void doDisconnectObjStore(ConsoleObj selObj) {

  ObjStore os =((ObjStoreCObj)selObj).getObjStore();

  if (!os.isOpen()) {
      JOptionPane.showOptionDialog(app.getFrame(),
    acr.getString(acr.E_OS_ALREADY_DISCONNECTED,
            selObj.toString()),
    acr.getString(acr.I_DISCONNECT_OBJSTORE) + ": " +
                    acr.getString(acr.I_ERROR_CODE,
                      AdminConsoleResources.E_OS_ALREADY_DISCONNECTED),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
  }

  try {
      if (os != null)
          os.close();
  } catch (Exception e) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OS_UNABLE_DISCONNECT,
              selObj.toString()),
      acr.getString(acr.I_DISCONNECT_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                  AdminConsoleResources.E_OS_UNABLE_DISCONNECT),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
  }

  /*
   * Remove all destination/connection factory objects from this
   * object store node hierarchy
   */
        clearStore(selObj);

        app.getExplorer().nodeChanged((DefaultMutableTreeNode)selObj);
  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_DISCONNECT,
               selObj.toString()));
  // XXX This causes selection to go away if selected in inspector
  app.getInspector().refresh();
        app.getInspector().selectedObjectUpdated();


  // Update menu items, buttons.
  controller.setActions(selObj);
    }

    private void doDeleteObjStore(ConsoleObj selObj) {

      int result = JOptionPane.showConfirmDialog(app.getFrame(),
      acr.getString(acr.Q_OBJSTORE_DELETE, selObj.toString()),
      acr.getString(acr.I_DELETE_OBJSTORE),
      JOptionPane.YES_NO_OPTION);

  if (result == JOptionPane.NO_OPTION)
      return;

  /*
   * Disconnect and delete the object store.
   */
  ObjStore os = ((ObjStoreCObj)selObj).getObjStore();
  try {
      os.close();
  } catch (Exception e) { }

  ObjStoreManager osMgr = app.getObjStoreListCObj().getObjStoreManager();
  try {
      osMgr.destroyStore(os.getID());
  } catch (Exception e) { }

  /*
   * Remove the node from the tree.
   */
  app.getExplorer().removeFromParent(selObj);
  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_DELETE,
               os.getID()));

  /*
   * Clear selection if the selection is from the explorer.
   * Otherwise, refresh the inspector.
   */
/*
  if (fromExplorer)
      controller.clearSelection();
  else
      app.getInspector().refresh();
*/
  controller.clearSelection();

  saveObjStoreList();
    
    }

    private void doDeleteDestination(ConsoleObj selObj) {

  ObjStore os = ((ObjStoreDestCObj)selObj).getObjStore();
      int result = JOptionPane.showConfirmDialog(app.getFrame(),
      acr.getString(acr.Q_DEST_OBJ_DELETE,
              selObj.toString(), os.getID()),
      acr.getString(acr.I_DELETE_OBJSTORE_DEST),
      JOptionPane.YES_NO_OPTION);

  if (result == JOptionPane.NO_OPTION)
      return;

  /*
   * Disconnect and delete the object store.
   */
  String lookupName = selObj.toString();
  try {
      os.delete(lookupName);
  } catch (Exception e) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_DELETE_DEST_OBJ, selObj.toString(),
              e.toString()),
      acr.getString(acr.I_DELETE_OBJSTORE_DEST) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                AdminConsoleResources.E_DELETE_DEST_OBJ),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_DELETE_DEST,
                 selObj.toString(), os.getID()));
  ObjStoreDestListCObj destList = (ObjStoreDestListCObj)selObj.getParent();
  app.getExplorer().removeFromParent(selObj);
  // Force selection of ObjStoreDestListCObj
  app.getExplorer().select(((ConsoleObj)destList));
  app.getInspector().refresh();

    }

    private void doDeleteConnFactory(ConsoleObj selObj) {

  ObjStore os = ((ObjStoreConFactoryCObj)selObj).getObjStore();
      int result = JOptionPane.showConfirmDialog(app.getFrame(),
      acr.getString(acr.Q_CF_OBJ_DELETE,
              selObj.toString(), os.getID()),
      acr.getString(acr.I_DELETE_OBJSTORE_CF),
      JOptionPane.YES_NO_OPTION);

  if (result == JOptionPane.NO_OPTION)
      return;

  /*
   * Disconnect and delete the object store.
   */
  String lookupName = selObj.toString();
  try {
      os.delete(lookupName);
  } catch (Exception e) {
      JOptionPane.showOptionDialog(app.getFrame(),
    acr.getString(acr.E_DELETE_CF_OBJ, selObj.toString(),
            e.toString()),
    acr.getString(acr.I_DELETE_OBJSTORE_CF) + ": " +
                              acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_DELETE_CF_OBJ),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_DELETE_CF,
                 selObj.toString(), os.getID()));
  ObjStoreConFactoryListCObj cfList = (ObjStoreConFactoryListCObj)selObj.getParent();
  app.getExplorer().removeFromParent(selObj);
  // Force selection of ObjStoreDestListCObj
  app.getExplorer().select(((ConsoleObj)cfList));
  app.getInspector().refresh();

    }

    private void doUpdateDestination(ObjAdminEvent oae, ConsoleObj selObj) {

  ObjStore os = oae.getObjStore();
  String lookupName = oae.getLookupName();
  boolean readOnly = oae.isReadOnly();

  Object currentObj = ((ObjStoreDestCObj)selObj).getObject();
  Object updatedObject = updateObject(currentObj, oae.getDestinationType(),
        oae.getObjProperties(), readOnly);
  if (updatedObject == null)
      return;

  try {
      os.add(lookupName, updatedObject, true);
        } catch (NameAlreadyExistsException naee) {
            // Should never happen, since we pass true to add

        } catch (Exception e)  {
      JOptionPane.showOptionDialog(app.getFrame(),
    e.toString(),
    acr.getString(acr.I_OBJSTORE_DEST_PROPS),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  /*
   * Now replace this updated object in the tree.
   */
  ((ObjStoreDestCObj)selObj).setObject(updatedObject);

  //ConsoleObj parent = (ConsoleObj)selObj.getParent();
  //app.getExplorer().removeFromParent(selObj);

   //ObjStoreDestCObj destCObj = new ObjStoreDestCObj(os, lookupName, updatedObject);
  //app.getExplorer().addToParent(parent, destCObj);

  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_UPDATE_DEST,
                      selObj.toString(), os.getID()));
  app.getInspector().selectedObjectUpdated();

  if (oae.isOKAction())  {
      objStoreDestPropsDialog.hide();
        }
    }

    private Object updateObject(Object object, int type,
                        Properties objProps, boolean readOnly) {

        Object updatedObject = null;
        String titleId = acr.I_OBJSTORE;
        String readOnlyValue = null;

  if (readOnly)
      readOnlyValue = "true";
  else
      readOnlyValue = "false";
     
  try {

            if (type == ObjAdminEvent.QUEUE) {
    titleId = acr.I_OBJSTORE_DEST_PROPS;
                updatedObject = JMSObjFactory.updateQueue(object, objProps,
                readOnlyValue);
            } else if (type == ObjAdminEvent.TOPIC) {
      titleId = acr.I_OBJSTORE_DEST_PROPS;
                updatedObject = JMSObjFactory.updateTopic(object, objProps,
                readOnlyValue);
            } else if (type == ObjAdminEvent.QCF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateQueueConnectionFactory
                                                 (object, objProps, readOnlyValue);
            } else if (type == ObjAdminEvent.TCF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateTopicConnectionFactory
                                                 (object, objProps, readOnlyValue);
            } else if (type == ObjAdminEvent.CF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateConnectionFactory
                                                 (object, objProps, readOnlyValue);
            } else if (type == ObjAdminEvent.XAQCF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateXAQueueConnectionFactory
                                                 (object, objProps, readOnlyValue);
            } else if (type == ObjAdminEvent.XATCF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateXATopicConnectionFactory
                                                 (object, objProps, readOnlyValue);
            } else if (type == ObjAdminEvent.XACF) {
    titleId = acr.I_OBJSTORE_CF_PROPS;
                updatedObject = JMSObjFactory.updateXAConnectionFactory
                                                 (object, objProps, readOnlyValue);
            }

  } catch (Exception e) {
      handleExceptions(e, titleId);
      return null;
  }

        return updatedObject;

    }

    private void doUpdateCredentials(ObjAdminEvent oae, ConsoleObj selObj) {
  ObjStore os = oae.getObjStore();

  boolean success = finishDoConnectObjStore(selObj, os);
  if (success) {
      app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_CONNECT,
                     selObj.toString()));
  }

  // Remove missing info that we just added.
  ObjStoreAttrs osa = oae.getObjStoreAttrs();
  Vector missingInfo = oae.getMissingAuthInfo();

  for (int i = 0; i < missingInfo.size(); i++) {
      String key = (String)missingInfo.elementAt(i);
      osa.remove(key);
  }
  try {
      os.setObjStoreAttrs(osa);
  } catch (ObjStoreException ose) {
      JOptionPane.showOptionDialog(app.getFrame(),
    ose.toString(),
    acr.getString(acr.I_OBJSTORE),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  }

  // Dismiss window
 
  if (success && oae.isOKAction())  {
      objStorePasswdDialog.hide();
  }
    }

    private void doUpdateConnFactory(ObjAdminEvent oae, ConsoleObj selObj) {

  ObjStore os = oae.getObjStore();
  String lookupName = oae.getLookupName();
  boolean readOnly = oae.isReadOnly();

  Object currentObj = ((ObjStoreConFactoryCObj)selObj).getObject();
  Object updatedObject = updateObject(currentObj, oae.getFactoryType(),
              oae.getObjProperties(), readOnly);
  if (updatedObject == null)
      return;

  try {
      os.add(lookupName, updatedObject, true);
        } catch (NameAlreadyExistsException naee) {
            // Should never happen, since we pass true to add

        } catch (Exception e)  {
      JOptionPane.showOptionDialog(app.getFrame(),
    e.toString(),
    acr.getString(acr.I_OBJSTORE_CF_PROPS),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  /*
   * Now replace this updated object in the tree.
   */
  ((ObjStoreConFactoryCObj)selObj).setObject(updatedObject);

  //ConsoleObj parent = (ConsoleObj)selObj.getParent();
  //app.getExplorer().removeFromParent(selObj);

   //ObjStoreConFactoryCObj conFactoryCObj = new ObjStoreConFactoryCObj (os, lookupName, updatedObject);
  //app.getExplorer().addToParent(parent, conFactoryCObj);

  app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_UPDATE_CF,
                      selObj.toString(), os.getID()));
  app.getInspector().selectedObjectUpdated();

  if (oae.isOKAction())  {
      objStoreConFactoryPropsDialog.hide();
        }
    }

    private void doAddDestination(ObjAdminEvent oae, ConsoleObj selObj) {

  Object object = null;
  ObjStore os = oae.getObjStore();
  int destType = oae.getDestinationType();
  String lookupName = oae.getLookupName();
  Properties objProps = oae.getObjProperties();
  boolean readOnly = oae.isReadOnly();
  boolean overwrite = false;

  if (os.isOpen()) {
      Object newObj = null;
      try {

          if (destType == ObjAdminEvent.TOPIC) {
              newObj = JMSObjFactory.createTopic(objProps);
          } else if (destType == ObjAdminEvent.QUEUE) {
              newObj = JMSObjFactory.createQueue(objProps);
          }

      } catch (Exception e) {
          handleExceptions(e, acr.I_ADD_OBJSTORE_DEST);
    return;
      }

            /*
             * Set this newly created obj to read-only if specified.
             */
      if (readOnly)
                JMSObjFactory.doReadOnlyForAdd(newObj, "true");
      else
                JMSObjFactory.doReadOnlyForAdd(newObj, "false");

      //
      // Check if it already exists so we can confirm with user to
      // overwrite.
      //
      try {
    object = os.retrieve(lookupName);
            } catch (NameNotFoundException nnfe) {
    // Make sure that this exception is NOT treated as an error for add
    ;
      } catch (Exception ex) {
        JOptionPane.showOptionDialog(app.getFrame(),
      ex.toString(),
      acr.getString(acr.I_ADD_OBJSTORE_DEST),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    return;
      }

      // Object already exists so confirm with user.
      if (object != null) {
          int result = JOptionPane.showConfirmDialog(app.getFrame(),
       acr.getString(acr.Q_LOOKUP_NAME_EXISTS, lookupName),
        acr.getString(acr.I_ADD_OBJSTORE_DEST),
       JOptionPane.YES_NO_OPTION);
    if (result == JOptionPane.NO_OPTION)
        return;
    else
        overwrite = true;
      }

      try {
    os.add(lookupName, newObj, true);
      } catch (Exception ex) {
        JOptionPane.showOptionDialog(app.getFrame(),
      ex.toString(),
      acr.getString(acr.I_ADD_OBJSTORE_DEST),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    return;
      }

      if (os != null)  {
     /*
      * If already exists, the delete old tree node before adding.
      */
     if (overwrite) {
           removeChild(selObj, lookupName)
           removeChild((ConsoleObj)selObj.getParent().getChildAt(1), lookupName)
     }
     ObjStoreDestCObj destCObj =
      new ObjStoreDestCObj((ObjStoreCObj)selObj.getParent(), lookupName, newObj);
           app.getExplorer().addToParent(selObj, destCObj);
           app.getInspector().refresh();
           app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_ADD_DEST,
                     lookupName, os.getID()));
     if (oae.isOKAction())  {
               objStoreDestAddDialog.hide();
     }
      }
  }
    }

    private void doAddConnFactory(ObjAdminEvent oae, ConsoleObj selObj) {

  Object object = null;
  ObjStore os = oae.getObjStore();
  int factoryType = oae.getFactoryType();
  String lookupName = oae.getLookupName();
  Properties objProps = oae.getObjProperties();
        boolean readOnly = oae.isReadOnly();
  boolean overwrite = false;

  if (os.isOpen()) {
      Object newObj = null;
      try {

          if (factoryType == ObjAdminEvent.QCF) {
              newObj = JMSObjFactory.createQueueConnectionFactory(objProps);
          } else if (factoryType == ObjAdminEvent.TCF) {
              newObj = JMSObjFactory.createTopicConnectionFactory(objProps);
          } else if (factoryType == ObjAdminEvent.CF) {
              newObj = JMSObjFactory.createConnectionFactory(objProps);
          } else if (factoryType == ObjAdminEvent.XAQCF) {
              newObj = JMSObjFactory.createXAQueueConnectionFactory(objProps);
          } else if (factoryType == ObjAdminEvent.XATCF) {
              newObj = JMSObjFactory.createXATopicConnectionFactory(objProps);
          } else if (factoryType == ObjAdminEvent.XACF) {
              newObj = JMSObjFactory.createXAConnectionFactory(objProps);
          }

      } catch (Exception e) {
    handleExceptions(e, acr.I_ADD_OBJSTORE_CF);
    return;
      }

            /*
             * Set this newly created obj to read-only if specified.
             */
            if (readOnly)
                JMSObjFactory.doReadOnlyForAdd(newObj, "true");
            else
                JMSObjFactory.doReadOnlyForAdd(newObj, "false");

      //
      // Check if it already exists so we can confirm with user to
      // overwrite.
      //
      try {
    object = os.retrieve(lookupName);
            } catch (NameNotFoundException nnfe) {
    // Make sure that this exception is NOT treated as an error for add
    ;
      } catch (Exception ex) {
        JOptionPane.showOptionDialog(app.getFrame(),
      ex.toString(),
      acr.getString(acr.I_ADD_OBJSTORE_CF),
      JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    return;
      }

      // Object already exists so confirm with user.
      if (object != null) {
                int result = JOptionPane.showConfirmDialog(app.getFrame(),
                         acr.getString(acr.Q_LOOKUP_NAME_EXISTS, lookupName),
                         acr.getString(acr.I_ADD_OBJSTORE_CF),
                         JOptionPane.YES_NO_OPTION);
                if (result == JOptionPane.NO_OPTION)
                    return;
                else
                    overwrite = true;
      }

      try {
    os.add(lookupName, newObj, true);
      } catch (Exception ex) {
        JOptionPane.showOptionDialog(app.getFrame(),
      ex.toString(),
      acr.getString(acr.I_ADD_OBJSTORE_CF),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
    return;
      }

      if (os != null)  {
     /*
      * If already exists, the delete old tree node before adding.
      */
     if (overwrite) {
           removeChild(selObj, lookupName)
           removeChild((ConsoleObj)selObj.getParent().getChildAt(0), lookupName)
     }
     ObjStoreConFactoryCObj conFacCObj =
      new ObjStoreConFactoryCObj((ObjStoreCObj)selObj.getParent(), lookupName, newObj);
           app.getExplorer().addToParent(selObj, conFacCObj);
           app.getInspector().refresh();
           app.getStatusArea().appendText(acr.getString(acr.S_OBJSTORE_ADD_CF,
                     lookupName, os.getID()));
     if (oae.isOKAction())  {
               objStoreConFactoryAddDialog.hide();
     }
      }
  }
    }

    /*
     * Remove the child node with the given name.
     */
    private void removeChild(ConsoleObj parent, String childName) {

  for (Enumeration e = parent.children(); e.hasMoreElements(); ) {
      ConsoleObj node = (ConsoleObj)e.nextElement();
      if ((node.toString()).equals(childName)) {
    app.getExplorer().removeFromParent(node);
    e = parent.children()
      }
  }
    }

    /*
     * Load objstore list from property file. See ConsoleObjStoreManager and
     * ObjStoreListProperties for details on the actual file loading.
     */
    private void loadObjStoreList()  {
  ConsoleObjStoreManager   osMgr;

  osMgr = (ConsoleObjStoreManager)app.getObjStoreListCObj().getObjStoreManager();

  try  {
      osMgr.setFileName(OBJSTORELIST_FILENAME);
      osMgr.readObjStoresFromFile();
  } catch (Exception ex)  {
      String errStr = acr.getString(acr.E_LOAD_OBJSTORE_LIST, ex.getMessage());
      /*
       * Show popup to indicate that the loading failed.
       */
      JOptionPane.showOptionDialog(app.getFrame(), errStr,
              acr.getString(acr.I_LOAD_OBJSTORE_LIST) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                AdminConsoleResources.E_LOAD_OBJSTORE_LIST),
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      /*
       * At this point, should we make sure the ConsoleObjStoreManager
       * contains no obj stores ?
       */
  }

  Vector v = osMgr.getAllStores();

  for (int i = 0; i < v.size(); i++) {
      ObjStore os = (ObjStore)v.get(i);
      ConsoleObj osCObj= new ObjStoreCObj(os);

      if (os.isOpen()) {
          readObjStore(osCObj, osMgr, os);
      }
      app.getExplorer().addObjStore(osCObj);
  }

  app.getInspector().refresh();
    }

    /*
     * Save objstore list to property file. See ConsoleObjStoreManager and
     * ObjStoreListProperties for details on the actual file saving.
     */
    private void saveObjStoreList()  {
  ConsoleObjStoreManager   osMgr;

  osMgr = (ConsoleObjStoreManager)app.getObjStoreListCObj().getObjStoreManager();

  try  {
      osMgr.setFileName(OBJSTORELIST_FILENAME);
      osMgr.writeObjStoresToFile();
  } catch (Exception ex)  {
      String errStr = acr.getString(acr.E_SAVE_OBJSTORE_LIST, ex.getMessage());
      String titles[] = {acr.getString(acr.I_DIALOG_CLOSE),
             acr.getString(acr.I_DIALOG_DO_NOT_SHOW_AGAIN)};

      /*
       * Inform the user that the save failed with the option of not
       * popping up this dialog again in the future.
       */
      JOptionPane.showOptionDialog(app.getFrame(), errStr,
              acr.getString(acr.I_OBJSTORE) + ": " +
                                acr.getString(acr.I_ERROR_CODE,
                                AdminConsoleResources.E_SAVE_OBJSTORE_LIST),
        JOptionPane.YES_NO_OPTION,
                    JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  }
    }


    public void handleConsoleActionEvents(ConsoleActionEvent cae) {
        int type      = cae.getType();

  switch (type)  {
  case ConsoleActionEvent.REFRESH:
      doRefresh();
  break;
  }
    }

    private void doRefresh() {
  ConsoleObj selObj = app.getSelectedObj();

        if (selObj instanceof ObjStoreCObj)  {
      doRefreshObjStore(selObj);
  } else if (selObj instanceof ObjStoreDestListCObj)  {
      doRefreshObjStore(selObj);
  } else if (selObj instanceof ObjStoreDestCObj)  {
      //doRefreshDestination(selObj);
      ObjStoreDestCObj destCObj = (ObjStoreDestCObj)selObj;
      ObjStoreCObj     osCObj = destCObj.getObjStoreCObj();
      doRefreshObjStore(((ObjStoreCObj)osCObj).getObjStoreDestListCObj());
  } else if (selObj instanceof ObjStoreConFactoryListCObj)  {
      doRefreshObjStore(selObj);
  } else if (selObj instanceof ObjStoreConFactoryCObj)  {
      //doRefreshConnFactory(selObj);
      ObjStoreConFactoryCObj cfCObj = (ObjStoreConFactoryCObj)selObj;
      ObjStoreCObj           osCObj = cfCObj.getObjStoreCObj();
      doRefreshObjStore(((ObjStoreCObj)osCObj).getObjStoreConFactoryListCObj());
  }
    }

    private void doRefreshConnFactory(ConsoleObj selObj) {

  ObjStore os = ((ObjStoreConFactoryCObj)selObj).getObjStore();
  String lookupName = ((ObjStoreConFactoryCObj)selObj).getLookupName();
  Object object = null;

  try {
      object = os.retrieve(lookupName);
        } catch (Exception e)  {
      JOptionPane.showOptionDialog(app.getFrame(),
    e.toString(),
    acr.getString(acr.I_OBJSTORE_REFRESH_CF),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  /*
   * Now replace this updated object in the tree.
   */
  ((ObjStoreConFactoryCObj)selObj).setObject(object);

  app.getStatusArea().appendText(acr.getString(acr.S_OS_CF_REFRESH,
                      selObj.toString(), os.getID()));
  app.getInspector().selectedObjectUpdated();

    }

    private void doRefreshDestination(ConsoleObj selObj) {

  ObjStore os = ((ObjStoreDestCObj)selObj).getObjStore();
  String lookupName = ((ObjStoreDestCObj)selObj).getLookupName();
  Object object = null;

  try {
      object = os.retrieve(lookupName);
        } catch (Exception e)  {
      JOptionPane.showOptionDialog(app.getFrame(),
    e.toString(),
    acr.getString(acr.I_OBJSTORE_REFRESH_DEST),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
        }

  /*
   * Now replace this updated object in the tree.
   */
  ((ObjStoreDestCObj)selObj).setObject(object);

  app.getStatusArea().appendText(acr.getString(acr.S_OS_DEST_REFRESH,
                      selObj.toString(), os.getID()));
  app.getInspector().selectedObjectUpdated();

    }

    private void doRefreshObjStore(ConsoleObj selObj) {

  ObjStore os = null;
    ConsoleObj cObj = selObj;

  if (selObj instanceof ObjStoreCObj) {
      os =((ObjStoreCObj)selObj).getObjStore();
      cObj = selObj;     
  } else if (selObj instanceof ObjStoreDestListCObj) {
      os = ((ObjStoreDestListCObj)selObj).getObjStore();
      cObj = (ConsoleObj)selObj.getParent();     
  } else if (selObj instanceof ObjStoreConFactoryListCObj) {
      os = ((ObjStoreConFactoryListCObj)selObj).getObjStore();
      cObj = (ConsoleObj)selObj.getParent();     
  }

  if (!os.isOpen()) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_OBJSTORE_NOT_CONNECTED,
              selObj.toString()),
      acr.getString(acr.I_OBJSTORE_REFRESH) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_OBJSTORE_NOT_CONNECTED),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
      return;
  }

  boolean success = finishDoConnectObjStore(cObj, os);

  if (success) {
      // Update menu items, buttons.
      controller.setActions(selObj);

      // XXX This causes selection in inspector to go away.
      app.getInspector().refresh();

      if (selObj instanceof ObjStoreCObj) {
          app.getStatusArea().appendText(acr.getString(acr.S_OS_REFRESH,
                      os.getID()));
      } else if (selObj instanceof ObjStoreDestListCObj) {
          app.getStatusArea().appendText(acr.getString(acr.S_OS_DESTLIST_REFRESH,
                      os.getID()));
      } else if (selObj instanceof ObjStoreConFactoryListCObj) {
          app.getStatusArea().appendText(acr.getString(acr.S_OS_CFLIST_REFRESH,
                      os.getID()));
      }
  }
    }

    private void handleExceptions(Exception e, String titleId) {

        if (e instanceof InvalidPropertyException) {
 
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_INVALID_PROP_NAME, 
        e.getMessage()),
      acr.getString(titleId) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_INVALID_PROP_NAME),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  } else if (e instanceof InvalidPropertyValueException) {
      JOptionPane.showOptionDialog(app.getFrame(),
      acr.getString(acr.E_INVALID_PROP_VALUE,
        e.getMessage()),
      acr.getString(titleId) + ": " +
                            acr.getString(acr.I_ERROR_CODE,
                              AdminConsoleResources.E_INVALID_PROP_VALUE),
                        JOptionPane.YES_NO_OPTION,
                        JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  } else {
      JOptionPane.showOptionDialog(app.getFrame(),
    e.toString(),
    acr.getString(titleId),
                JOptionPane.YES_NO_OPTION,
                JOptionPane.ERROR_MESSAGE, null, close, close[0]);
  }

    }

    private void closeObjStore(ObjStore os, ConsoleObj selObj) {

  if (os == null)
      return;

  try {
      // Close the obj store
      // and update the explorer to X icon.
      // and refresh the inspector.
      if (os.isOpen()) {
          os.close();
    if (selObj instanceof ObjStoreCObj) {
        clearStore(selObj);
              app.getExplorer().nodeChanged((DefaultMutableTreeNode)selObj);
            app.getInspector().refresh();
        // Update menu items, buttons.
          controller.setActions(selObj);
   
      }
  } catch (Exception e) {
      ;
  }
    }
}
TOP

Related Classes of com.sun.messaging.jmq.admin.apps.console.ObjAdminHandler

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.