📄 databasemanagerswing.java
字号:
private static final String ROWCOUNTS_BOX_TEXT = "Show row counts";
private static final String SHOWSYS_BOX_TEXT = "Show system tables";
private static final String GRID_BOX_TEXT =
"Show results in Grid (a.o.t. Text)";
// variables to hold the default cursors for these top level swing objects
// so we can restore them when we exit our thread
Cursor fMainCursor;
Cursor txtCommandCursor;
Cursor txtResultCursor;
HashMap tipMap = new HashMap();
private JMenu mnuSchemas = new JMenu("Schemas");
/**
* Wait Cursor
*/
// Changed: (weconsultants@users): commonted out the, out of the box, cursor to use a custom cursor
private final Cursor waitCursor = new Cursor(Cursor.WAIT_CURSOR);
//getToolkit().createCustomCursor(CommonSwing.getIcon("SystemCursor"),
// new Point(4, 4), "HourGlass cursor");
// (ulrivo): variables set by arguments from the commandline
static String defDriver = "org.hsqldb.jdbcDriver";
static String defURL = "jdbc:hsqldb:.";
static String defUser = "sa";
static String defPassword = "";
static String defScript;
static String defDirectory;
private String schemaFilter = null;
public DatabaseManagerSwing() {
jframe = new JFrame("HSQLDB DatabaseManager");
fMain = jframe;
}
;
public DatabaseManagerSwing(JFrame frameIn) {
jframe = frameIn;
fMain = jframe;
}
;
public void init() {
javax.swing.AbstractButton btn;
fMain = this;
main();
for (int i = 0; i < localActionList.size(); i++) {
btn = (javax.swing.AbstractButton) localActionList.get(i);
btn.setEnabled(false);
}
Connection c = null;
boolean auto = false;
if (getParameter("jdbcDriver") != null) {
auto = true;
defDriver = getParameter("jdbcDriver");
}
if (getParameter("jdbcUrl") != null) {
auto = true;
defURL = getParameter("jdbcUrl");
}
if (getParameter("jdbcUser") != null) {
auto = true;
defUser = getParameter("jdbcUser");
}
if (getParameter("jdbcPassword") != null) {
auto = true;
defPassword = getParameter("jdbcPassword");
}
try {
setWaiting("Initializing");
//insertTestData();
//updateAutoCommitBox();
c = (auto
? ConnectionDialogSwing.createConnection(defDriver, defURL,
defUser, defPassword)
: ConnectionDialogSwing.createConnection(jframe, "Connect"));
} catch (Exception e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
} finally {
setWaiting(null);
}
if (c != null) {
connect(c);
}
if (getParameter("loadSampleData") != null
&& getParameter("loadSampleData").equals("true")) {
insertTestData();
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {}
;
// I don't know why, but the tree refresh below sometimes
// doesn't show all tables unless I put this delay here.
refreshTree();
}
if (getParameter("schemaFilter") != null) {
schemaFilter = getParameter("schemaFilter");
}
}
public static void main(String[] arg) {
System.getProperties().put("sun.java2d.noddraw", "true");
// (ulrivo): read all arguments from the command line
String lowerArg;
String urlid = null;
String rcFile = null;
boolean autoConnect = false;
boolean urlidConnect = false;
bMustExit = true;
for (int i = 0; i < arg.length; i++) {
lowerArg = arg[i].toLowerCase();
if (lowerArg.length() > 1 && lowerArg.charAt(1) == '-') {
lowerArg = lowerArg.substring(1);
}
i++;
if (lowerArg.equals("-driver")) {
defDriver = arg[i];
autoConnect = true;
} else if (lowerArg.equals("-url")) {
defURL = arg[i];
autoConnect = true;
} else if (lowerArg.equals("-user")) {
defUser = arg[i];
autoConnect = true;
} else if (lowerArg.equals("-password")) {
defPassword = arg[i];
autoConnect = true;
} else if (lowerArg.equals("-urlid")) {
urlid = arg[i];
urlidConnect = true;
} else if (lowerArg.equals("-rcfile")) {
rcFile = arg[i];
urlidConnect = true;
} else if (lowerArg.equals("-dir")) {
defDirectory = arg[i];
} else if (lowerArg.equals("-script")) {
defScript = arg[i];
} else if (lowerArg.equals("-noexit")) {
bMustExit = false;
i--;
} else {
showUsage();
return;
}
}
DatabaseManagerSwing m =
new DatabaseManagerSwing(new JFrame("HSQL Database Manager"));
// Added: (weconsultants@users): Need databaseManagerSwing for later Reference
refForFontDialogSwing = m;
m.main();
Connection c = null;
m.setWaiting("Initializing");
try {
if (autoConnect && urlidConnect) {
throw new IllegalArgumentException(
"You may not specify both (urlid) AND (url/user/password).");
}
if (autoConnect) {
c = ConnectionDialogSwing.createConnection(defDriver, defURL,
defUser, defPassword);
} else if (urlidConnect) {
if (urlid == null) {
throw new IllegalArgumentException(
"You must specify an 'urlid' to use an RC file");
}
autoConnect = true;
String rcfilepath = (rcFile == null) ? DEFAULT_RCFILE
: rcFile;
RCData rcdata = new RCData(new File(rcfilepath), urlid);
c = rcdata.getConnection(
null, System.getProperty("sqlfile.charset"),
System.getProperty("javax.net.ssl.trustStore"));
} else {
c = ConnectionDialogSwing.createConnection(m.jframe,
"Connect");
}
} catch (Exception e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
} finally {
m.setWaiting(null);
}
if (c != null) {
m.connect(c);
}
// Added: (weconsultants@users): For preloadng FontDialogSwing
FontDialogSwing.creatFontDialog(refForFontDialogSwing);
m.start();
}
/**
* This stuff is all quick, except for the refreshTree().
* This unit can be kicked off in main Gui thread. The refreshTree
* will be backgrounded and this method will return.
*/
public void connect(Connection c) {
schemaFilter = null;
if (c == null) {
return;
}
if (cConn != null) {
try {
cConn.close();
} catch (SQLException e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
}
}
cConn = c;
// Added: (weconsultants@users) Need to barrow to get the table rowcounts
rowConn = c;
try {
dMeta = cConn.getMetaData();
isOracle = (dMeta.getDatabaseProductName().indexOf("Oracle") >= 0);
sStatement = cConn.createStatement();
updateAutoCommitBox();
// Workaround for EXTREME SLOWNESS getting this info from O.
showIndexDetails = !isOracle;
Driver driver = DriverManager.getDriver(dMeta.getURL());
String userName = dMeta.getUserName();
int index = userName.indexOf("@localhost");
if (index > -1) {
userName = userName.substring(0, index);
}
ConnectionSetting newSetting =
new ConnectionSetting(dMeta.getDatabaseProductName(),
driver.getClass().getName(),
dMeta.getURL(), userName, "");
Hashtable settings =
ConnectionDialogCommon.loadRecentConnectionSettings();
ConnectionDialogCommon.addToRecentConnectionSettings(settings,
newSetting);
ConnectionDialogSwing.setConnectionSetting(newSetting);
refreshTree();
clearResultPanel();
if (fMain instanceof JApplet) {
getAppletContext().showStatus(
"JDBC Connection established to a "
+ dMeta.getDatabaseProductName() + " v. "
+ dMeta.getDatabaseProductVersion() + " database as '"
+ dMeta.getUserName() + "'.");
}
} catch (SQLException e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
} catch (IOException e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
} catch (Exception e) {
CommonSwing.errorMessage(e);
}
}
private static void showUsage() {
System.out.println(
"Usage: java DatabaseManagerSwing [--options]\n"
+ "where options include:\n"
+ " --driver <classname> jdbc driver class\n"
+ " --url <name> jdbc url\n"
+ " --user <name> username used for connection\n"
+ " --password <password> password for this user\n"
+ " --urlid <urlid> use url/user/password/driver in rc file\n"
+ " --rcfile <file> (defaults to 'dbmanager.rc' in home dir)\n"
+ " --dir <path> default directory\n"
+ " --script <file> reads from script file\n"
+ " --noexit do not call system.exit()\n"
+ "(Single-hypen switches like '-driver' are also supported)");
}
private void insertTestData() {
try {
DatabaseManagerCommon.createTestTables(sStatement);
txtCommand.setText(
DatabaseManagerCommon.createTestData(sStatement));
for (int i = 0; i < DatabaseManagerCommon.testDataSql.length;
i++) {
addToRecent(DatabaseManagerCommon.testDataSql[i]);
}
executeCurrentSQL();
} catch (SQLException e) {
// Added: (weconsultants@users)
CommonSwing.errorMessage(e);
}
}
public void setMustExit(boolean b) {
this.bMustExit = b;
}
private DBMPrefs prefs = null;
public void main() {
JMenu jmenu;
JMenuItem mitem;
try {
prefs = new DBMPrefs(fMain instanceof JApplet);
} catch (Exception e) {
System.err.println(
"Failed to load preferences. Proceeding with defaults:\n");
}
if (prefs == null) {
setLF(CommonSwing.Native);
} else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -