View Javadoc
1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2000 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: OfflineConnection.java,v 1.11 2003/08/17 01:32:23 tanderson Exp $ 44 * 45 * Date Author Changes 46 * $Date jimm Created 47 */ 48 49 50 package org.exolab.jms.jndiadministration; 51 52 import java.awt.Component; 53 import java.util.Enumeration; 54 import java.util.Hashtable; 55 56 import javax.naming.Context; 57 import javax.naming.InitialContext; 58 import javax.swing.JFileChooser; 59 import javax.swing.JOptionPane; 60 61 import org.exolab.jms.config.Configuration; 62 import org.exolab.jms.config.ConfigurationManager; 63 import org.exolab.jms.config.DatabaseConfiguration; 64 import org.exolab.jms.persistence.DatabaseService; 65 66 67 /*** 68 * Use the IntraVM Jndi Context. 69 * 70 * @version $Revision: 1.11 $ $Date: 2003/08/17 01:32:23 $ 71 * @author <a href="mailto:mourikis@exolab.org">Jim Mourikis</a> 72 * @see AdminConnection 73 * @see AdminMgr 74 */ 75 public class OfflineConnection extends AdminConnection { 76 77 // The parent Gui 78 private Component parent_; 79 80 // The deafult JNDI context. 81 private Context context_ = null; 82 83 /*** 84 * Connect to the intravm Jndi Server. 85 * 86 * @param parent The component parent. 87 * @exception OfflineConnectionException When the database cannot be opened 88 * 89 */ 90 public OfflineConnection(Component parent) 91 throws OfflineConnectionException { 92 try { 93 if (instance_ == null) { 94 Configuration config = ConfigurationManager.getConfig(); 95 parent_ = parent; 96 DatabaseConfiguration dbconfig = 97 config.getDatabaseConfiguration(); 98 99 if (dbconfig.getRdbmsDatabaseConfiguration() != null) { 100 DatabaseService.getAdapter(); 101 instance_ = this; 102 } else { 103 JFileChooser chooser = new JFileChooser("."); 104 chooser.setDialogTitle 105 ("Select OpenJMS Database to connect to"); 106 chooser.setFileFilter(new DatabaseFilter()); 107 int returnVal = chooser.showOpenDialog(parent); 108 109 if (returnVal == JFileChooser.APPROVE_OPTION) { 110 DatabaseService.getAdapter(); 111 instance_ = this; 112 } 113 } 114 115 if (instance_ != null) { 116 if (context_ == null) { 117 // connect to the JNDI server and get a 118 // reference to root context 119 Hashtable props = new Hashtable(); 120 props.put 121 (Context.INITIAL_CONTEXT_FACTORY, 122 "org.exolab.jms.jndi.intravm.IntravmJndiServer"); 123 context_ = new InitialContext(props); 124 } 125 } 126 } else { 127 throw new OfflineConnectionException("Already connected"); 128 } 129 } catch (Exception err) { 130 throw new OfflineConnectionException 131 ("Database Error: " + err.getMessage()); 132 } 133 } 134 135 136 /*** 137 * Close the database connection. 138 * 139 */ 140 public void close() { 141 try { 142 context_.close(); 143 DatabaseService.getAdapter().close(); 144 instance_ = null; 145 context_ = null; 146 } catch (javax.naming.NamingException err) { 147 displayError(err, "Failed to close context"); 148 } 149 } 150 151 152 /*** 153 * Get an enumerated list of all the Contexts 154 * 155 * @return Enumeration The list of Contexts 156 * 157 */ 158 public Enumeration getAllContexts(String name) { 159 try { 160 if (name == null) { 161 name = ""; 162 } 163 164 return context_.list(name); 165 } catch (Exception err) { 166 System.err.println("Err in getAllContexts\n" + err); 167 return null; 168 } 169 } 170 171 172 /*** 173 * Return the object associated with this context. 174 * if none exists return null. 175 * 176 * @param context The context name 177 * @return Object The object for this context. 178 * 179 */ 180 public Object lookup(String context) { 181 try { 182 return context_.lookup(context); 183 } catch (Exception err) { 184 System.err.println("Failed to get Context " + context + "\n" + 185 err); 186 return null; 187 } 188 } 189 190 191 /*** 192 * Create a new context with the given name. 193 * 194 * @param name The new context name. 195 * @exception NamingException If the context cannot be created. 196 * 197 */ 198 public void createContext(String name) throws javax.naming.NamingException { 199 context_.createSubcontext(name); 200 } 201 202 203 /*** 204 * Destroy context with the given name. 205 * 206 * @param name The new context name. 207 * @exception NamingException If the context cannot be created. 208 * 209 */ 210 public void destroyContext(String name) throws javax.naming.NamingException { 211 context_.unbind(name); 212 } 213 214 215 /*** 216 * Rename context with the given name. 217 * 218 * @param oldName The old context name 219 * @param newName The new context name 220 * @exception NamingException If the context cannot be created. 221 * 222 */ 223 public void renameContext(String oldName, String newName) 224 throws javax.naming.NamingException { 225 context_.rename(oldName, newName); 226 } 227 228 229 /*** 230 * Rebind the context with the given object. 231 * 232 * @param name The context name 233 * @param ob The object to bind in this context 234 * @exception NamingException If the context cannot be created. 235 * 236 */ 237 public void rebind(String name, Object ob) 238 throws javax.naming.NamingException { 239 context_.rebind(name, ob); 240 } 241 242 243 /*** 244 * Display the error in a JOptionPane. 245 * 246 * @param err The Error to display. 247 * @param st The string to use as a title on the JOptionPane. 248 * 249 */ 250 private void displayError(Exception err, String st) { 251 JOptionPane.showMessageDialog 252 (parent_, st + "\n" + err, st, JOptionPane.ERROR_MESSAGE); 253 } 254 255 256 } // End OfflineConnection

This page was automatically generated by Maven