From 987b6020d8199c6b43ad2db7a464a95540baee82 Mon Sep 17 00:00:00 2001 From: servertood Date: Sun, 21 Dec 2008 00:54:39 +0000 Subject: [PATCH] get rid of duplicate db connection script and make work for oracle --- extra/jheidi/connectDialogEvents.ajl | 6 ++-- extra/jheidi/initDB.ajl | 35 --------------------- extra/jheidi/lib/ajl.jar | Bin 308182 -> 307457 bytes extra/jheidi/showMainWindow.ajl | 6 +++- extra/jheidi/testConnect$mysql.ajl | 44 +++++++++++++++++++++++++++ extra/jheidi/testConnect$oracle.ajl | 39 ++++++++++++++++++++++++ 6 files changed, 92 insertions(+), 38 deletions(-) delete mode 100644 extra/jheidi/initDB.ajl create mode 100644 extra/jheidi/testConnect$mysql.ajl create mode 100644 extra/jheidi/testConnect$oracle.ajl diff --git a/extra/jheidi/connectDialogEvents.ajl b/extra/jheidi/connectDialogEvents.ajl index 537960a1..24792019 100644 --- a/extra/jheidi/connectDialogEvents.ajl +++ b/extra/jheidi/connectDialogEvents.ajl @@ -120,12 +120,14 @@ else if ("Save" == event || "Save/Connect" == event || "Connect" == event) if ( event.endsWith("Connect")) { HashObject profile = (HashObject)profiles.getObject(connProfiles.getText()); + String curVendor = dialog.getProperty("currentVendor"); args().put("profile", profile); - DB db = (DB)script("testConnect", args()); + DB db = script(String.format("testConnect$%s", curVendor), args()); if (db != null) { dialog.dispose(); + args().put("db", db); script("showMainWindow", args()); } } @@ -200,7 +202,7 @@ else if ("Vendor" == event) else if ( newVendor == "oracle" ) { dialog.setTitle("New Connection - Oracle"); - hostLabel.setText("Service@Host"); + hostLabel.setText("Service@Host:"); compressBox.setEnabled(false); dbsLabel.setText(dbsLabel.getText().replaceAll("Database", "Schema")); sortBox.setText(sortBox.getText().replaceAll("database", "schema")); diff --git a/extra/jheidi/initDB.ajl b/extra/jheidi/initDB.ajl deleted file mode 100644 index 0102418b..00000000 --- a/extra/jheidi/initDB.ajl +++ /dev/null @@ -1,35 +0,0 @@ -import com.mysql.jdbc.jdbc2.optional.*; -import javax.sql.DataSource; -import com.rendion.editor.*; - -DB db = null; - -WindowContext context = argObj("windowContext"); -HashObject profile = context.get("profile"); -AjlEditor editor = context.get("/consoleTabs/SQL Log/outputWindow"); - -try -{ - MysqlDataSource ds = new MysqlDataSource(); - String url = "jdbc:mysql://" + profile.get("host") + ":" + profile.get("port") + "/"; - - url+="?zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true"; - - if ( "true".equals(profile.get("compress")) ) - { - url+="&useCompression=true"; - } - ds.setUrl(url); - ds.setUser(profile.get("user")); - ds.setPassword(profile.get("password")); - ds.setLoginTimeout(Integer.parseInt(profile.get("timeout"))); - - db = new SQLLoggingDB((DataSource)ds, editor); - db.useCache(true); - -} catch (Exception e) { - throw new RuntimeException(e); -} - -context.put("db", db); - diff --git a/extra/jheidi/lib/ajl.jar b/extra/jheidi/lib/ajl.jar index 4a94e5c5064896e571ead3347aa167156e90dbd8..c615af4a05d4b6b91536e09c2ff155c8778cb5d1 100644 GIT binary patch delta 32583 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 delta 33003 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 z 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 z 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 CN?n2g diff --git a/extra/jheidi/showMainWindow.ajl b/extra/jheidi/showMainWindow.ajl index 03a354be..3e5376f2 100644 --- a/extra/jheidi/showMainWindow.ajl +++ b/extra/jheidi/showMainWindow.ajl @@ -129,9 +129,13 @@ app.maximize(); app.visible(); + + DB conn = argObj("db"); + DB db = new SQLLoggingDB(conn, editor); + db.useCache(true); + context.put("db", db); args().put("windowContext", context); - script("initDB", args()); Worker w = worker("initTreeWorker", args()); LongRunningTask.detect("initTreeWorker", "progressWaiter", args(), w , 250); w = worker("loadHostInfoWorker", args()); diff --git a/extra/jheidi/testConnect$mysql.ajl b/extra/jheidi/testConnect$mysql.ajl new file mode 100644 index 00000000..ac3733d3 --- /dev/null +++ b/extra/jheidi/testConnect$mysql.ajl @@ -0,0 +1,44 @@ +import com.mysql.jdbc.jdbc2.optional.*; +import javax.sql.DataSource; + +DB db = null; + +WindowContext context = argObj("windowContext"); +Frame f = context.get("/"); +HashObject profile = argObj("profile"); + +try +{ + MysqlDataSource ds = new MysqlDataSource(); + String url = String.format("jdbc:mysql://%s:%s/?zeroDateTimeBehavior=convertToNull&useOldAliasMetadataBehavior=true&useCompression=%s", + profile.get("host"), profile.get("port"), profile.get("compress")); + + ds.setUrl(url); + ds.setUser(profile.get("user")); + ds.setPassword(profile.get("password")); + ds.setLoginTimeout(Integer.parseInt(profile.get("timeout"))); + + db = new DB((DataSource)ds); + db.execute("select 'abcdefg'"); +} +catch (Exception e) +{ + Throwable cause = e.getCause(); + String message = cause.getMessage(); + + if (message.indexOf("\n") != -1) + { + int startMessage = message.indexOf("MESSAGE:"); + if ( startMessage != -1) + { + startMessage+=8; + message = message.substring(startMessage, message.indexOf("\n", startMessage)); + } + } + + f.popupMessage("Connection Failed!", message); + db = null; +} + +return db; + diff --git a/extra/jheidi/testConnect$oracle.ajl b/extra/jheidi/testConnect$oracle.ajl new file mode 100644 index 00000000..611f7eb4 --- /dev/null +++ b/extra/jheidi/testConnect$oracle.ajl @@ -0,0 +1,39 @@ +import oracle.jdbc.pool.OracleDataSource; +import javax.sql.DataSource; + +DB db = null; + +WindowContext context = argObj("windowContext"); +Frame f = context.get("/"); +HashObject profile = argObj("profile"); + +try +{ + OracleDataSource ds = new OracleDataSource(); + String host = profile.get("host"); + if ( !host.contains("@")) + { + host+="@localhost"; + } + String[] serviceHost = host.split("@"); + String url = String.format("jdbc:oracle:thin:@%s:%s:%s", serviceHost[1], profile.get("port"), serviceHost[0]); + + ds.setURL(url); + ds.setUser(profile.get("user")); + ds.setPassword(profile.get("password")); + ds.setLoginTimeout(Integer.parseInt(profile.get("timeout"))); + + db = new DB((DataSource)ds); + db.execute("select 'abcdefg' from dual"); +} +catch (Exception e) +{ + Throwable cause = e.getCause(); + String message = cause.getMessage(); + + f.popupMessage("Connection Failed!", message); + db = null; +} + +return db; +