initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / util / connection / ConnectionUtil.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/connection/ConnectionUtil.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/util/connection/ConnectionUtil.java
new file mode 100644 (file)
index 0000000..ecfe620
--- /dev/null
@@ -0,0 +1,46 @@
+package com.quantum.util.connection;
+
+import java.sql.Connection;
+
+import com.quantum.Messages;
+import com.quantum.model.Bookmark;
+import com.quantum.model.ConnectionException;
+import com.quantum.model.NotConnectedException;
+import com.quantum.ui.dialog.ExceptionDisplayDialog;
+import com.quantum.ui.dialog.PasswordDialog;
+
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * <p>This utility gets a connection from a bookmark, and handles any UI-specific
+ * interactions such as providing messages to the user and/or prompting for a 
+ * password.
+ * 
+ * @author BC
+ */
+public class ConnectionUtil {
+
+    public Connection getConnection(Bookmark bookmark, Shell shell) {
+        Connection connection = null;
+        try {
+            connection = bookmark.getConnection();
+        } catch (NotConnectedException e) {
+            connection = connect(bookmark, shell);
+        }
+        return connection;
+    }
+
+    public Connection connect(Bookmark bookmark, Shell shell) {
+        Connection connection = null;
+        try {
+            connection = bookmark.connect(PasswordDialog.createPasswordFinder(shell));
+        } catch (ConnectionException e) {
+            ExceptionDisplayDialog.openError(shell, 
+                Messages.getString(getClass().getName() + ".title"), 
+                Messages.getString(getClass().getName() + ".message") +
+                               " (Bookmark:"+bookmark.getName()+")", e);
+        }
+        return connection;
+    }
+
+}