Package org.hsqldb.util

Source Code of org.hsqldb.util.DatabaseManager

package org.hsqldb.util;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.MemoryImageSource;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.Vector;
import org.hsqldb.lib.java.JavaSystem;

public class DatabaseManager extends Applet
  implements ActionListener, WindowListener, KeyListener
{
  private static final String DEFAULT_RCFILE = System.getProperty("user.home") + "/dbmanager.rc";
  static final String NL = System.getProperty("line.separator");
  static final int iMaxRecent = 24;
  private static boolean TT_AVAILABLE = false;
  private static final String HELP_TEXT;
  private static final String ABOUT_TEXT;
  Connection cConn;
  DatabaseMetaData dMeta;
  Statement sStatement;
  Menu mRecent;
  String[] sRecent;
  int iRecent;
  TextArea txtCommand;
  Button butExecute;
  Button butClear;
  Tree tTree;
  Panel pResult;
  long lTime;
  int iResult;
  Grid gResult;
  TextArea txtResult;
  boolean bHelp;
  Frame fMain;
  Image imgEmpty;
  static boolean bMustExit;
  String ifHuge = "";
  static String defDriver;
  static String defURL;
  static String defUser;
  static String defPassword;
  static String defScript;
  static String defDirectory;

  public void connect(Connection paramConnection)
  {
    if (paramConnection == null)
      return;
    if (this.cConn != null)
      try
      {
        this.cConn.close();
      }
      catch (SQLException localSQLException1)
      {
      }
    this.cConn = paramConnection;
    try
    {
      this.dMeta = this.cConn.getMetaData();
      this.sStatement = this.cConn.createStatement();
      refreshTree();
    }
    catch (SQLException localSQLException2)
    {
      localSQLException2.printStackTrace();
    }
  }

  public void init()
  {
    DatabaseManager localDatabaseManager = new DatabaseManager();
    localDatabaseManager.main();
    try
    {
      localDatabaseManager.connect(ConnectionDialog.createConnection(defDriver, defURL, defUser, defPassword));
      localDatabaseManager.insertTestData();
      localDatabaseManager.refreshTree();
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }

  public static void main(String[] paramArrayOfString)
  {
    System.getProperties().put("sun.java2d.noddraw", "true");
    String str2 = null;
    String str3 = null;
    int i = 0;
    int j = 0;
    bMustExit = true;
    for (int k = 0; k < paramArrayOfString.length; k++)
    {
      String str1 = paramArrayOfString[k].toLowerCase();
      if ((str1.length() > 1) && (str1.charAt(1) == '-'))
        str1 = str1.substring(1);
      k++;
      if (k == paramArrayOfString.length)
      {
        showUsage();
        return;
      }
      if (str1.equals("-driver"))
      {
        defDriver = paramArrayOfString[k];
        i = 1;
      }
      else if (str1.equals("-url"))
      {
        defURL = paramArrayOfString[k];
        i = 1;
      }
      else if (str1.equals("-user"))
      {
        defUser = paramArrayOfString[k];
        i = 1;
      }
      else if (str1.equals("-password"))
      {
        defPassword = paramArrayOfString[k];
        i = 1;
      }
      else if (str1.equals("-urlid"))
      {
        str2 = paramArrayOfString[k];
        j = 1;
      }
      else if (str1.equals("-rcfile"))
      {
        str3 = paramArrayOfString[k];
        j = 1;
      }
      else if (str1.equals("-dir"))
      {
        defDirectory = paramArrayOfString[k];
      }
      else if (str1.equals("-script"))
      {
        defScript = paramArrayOfString[k];
      }
      else if (str1.equals("-noexit"))
      {
        bMustExit = false;
        k--;
      }
      else
      {
        showUsage();
        return;
      }
    }
    DatabaseManager localDatabaseManager = new DatabaseManager();
    localDatabaseManager.main();
    Connection localConnection = null;
    try
    {
      if ((i != 0) && (j != 0))
        throw new IllegalArgumentException("You may not specify both (urlid) AND (url/user/password).");
      if (i != 0)
      {
        localConnection = ConnectionDialog.createConnection(defDriver, defURL, defUser, defPassword);
      }
      else if (j != 0)
      {
        if (str2 == null)
          throw new IllegalArgumentException("You must specify an 'urlid' to use an RC file");
        i = 1;
        localConnection = new RCData(new File(str3 == null ? DEFAULT_RCFILE : str3), str2).getConnection(null, System.getProperty("sqlfile.charset"), System.getProperty("javax.net.ssl.trustStore"));
      }
      else
      {
        localConnection = ConnectionDialog.createConnection(localDatabaseManager.fMain, "Connect");
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    if (localConnection == null)
      return;
    localDatabaseManager.connect(localConnection);
  }

  private static void showUsage()
  {
    System.out.println("Usage: java DatabaseManager [--options]\nwhere 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)");
  }

  void insertTestData()
  {
    try
    {
      DatabaseManagerCommon.createTestTables(this.sStatement);
      refreshTree();
      this.txtCommand.setText(DatabaseManagerCommon.createTestData(this.sStatement));
      refreshTree();
      for (int i = 0; i < DatabaseManagerCommon.testDataSql.length; i++)
        addToRecent(DatabaseManagerCommon.testDataSql[i]);
      execute();
    }
    catch (SQLException localSQLException)
    {
      localSQLException.printStackTrace();
    }
  }

  public void main()
  {
    this.fMain = new Frame("HSQL Database Manager");
    this.imgEmpty = createImage(new MemoryImageSource(2, 2, new int[16], 2, 2));
    this.fMain.setIconImage(this.imgEmpty);
    this.fMain.addWindowListener(this);
    MenuBar localMenuBar = new MenuBar();
    String[] arrayOfString1 = { "-Connect...", "--", "-Open Script...", "-Save Script...", "-Save Result...", "-Save Result csv...", "--", "-Exit" };
    addMenu(localMenuBar, "File", arrayOfString1);
    String[] arrayOfString2 = { "RRefresh Tree", "--", "GResults in Grid", "TResults in Text", "--", "1Shrink Tree", "2Enlarge Tree", "3Shrink Command", "4Enlarge Command" };
    addMenu(localMenuBar, "View", arrayOfString2);
    String[] arrayOfString3 = { "SSELECT", "IINSERT", "UUPDATE", "DDELETE", "--", "-CREATE TABLE", "-DROP TABLE", "-CREATE INDEX", "-DROP INDEX", "--", "-CHECKPOINT", "-SCRIPT", "-SET", "-SHUTDOWN", "--", "-Test Script" };
    addMenu(localMenuBar, "Command", arrayOfString3);
    Menu localMenu1 = new Menu("Recent");
    this.mRecent = new Menu("Recent");
    localMenuBar.add(this.mRecent);
    String[] arrayOfString4 = { "-AutoCommit on", "-AutoCommit off", "OCommit", "LRollback", "--", "-Disable MaxRows", "-Set MaxRows to 100", "--", "-Logging on", "-Logging off", "--", "-Insert test data" };
    addMenu(localMenuBar, "Options", arrayOfString4);
    String[] arrayOfString5 = { "-Dump", "-Restore", "-Transfer" };
    addMenu(localMenuBar, "Tools", arrayOfString5);
    Menu localMenu2 = new Menu("Help");
    MenuItem localMenuItem1 = new MenuItem("About");
    localMenuItem1.setShortcut(new MenuShortcut(65));
    localMenuItem1.addActionListener(this);
    localMenu2.add(localMenuItem1);
    MenuItem localMenuItem2 = new MenuItem("Help");
    localMenuItem2.setShortcut(new MenuShortcut(72));
    localMenuItem2.addActionListener(this);
    localMenu2.add(localMenuItem2);
    this.fMain.setMenuBar(localMenuBar);
    this.fMain.setSize(640, 480);
    this.fMain.add("Center", this);
    initGUI();
    this.sRecent = new String[24];
    Dimension localDimension1 = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension localDimension2 = this.fMain.getSize();
    if (localDimension1.width >= 640)
    {
      this.fMain.setLocation((localDimension1.width - localDimension2.width) / 2, (localDimension1.height - localDimension2.height) / 2);
    }
    else
    {
      this.fMain.setLocation(0, 0);
      this.fMain.setSize(localDimension1);
    }
    this.fMain.show();
    if (defScript != null)
    {
      if (defDirectory != null)
        defScript = defDirectory + File.separator + defScript;
      this.txtCommand.setText(DatabaseManagerCommon.readFile(defScript));
    }
    this.txtCommand.requestFocus();
  }

  void addMenu(MenuBar paramMenuBar, String paramString, String[] paramArrayOfString)
  {
    Menu localMenu = new Menu(paramString);
    if ((paramString.equals("Tools")) && (!TT_AVAILABLE))
      localMenu.setEnabled(false);
    addMenuItems(localMenu, paramArrayOfString);
    paramMenuBar.add(localMenu);
  }

  void addMenuItems(Menu paramMenu, String[] paramArrayOfString)
  {
    for (int i = 0; i < paramArrayOfString.length; i++)
    {
      MenuItem localMenuItem = new MenuItem(paramArrayOfString[i].substring(1));
      int j = paramArrayOfString[i].charAt(0);
      if (j != 45)
        localMenuItem.setShortcut(new MenuShortcut(j));
      localMenuItem.addActionListener(this);
      paramMenu.add(localMenuItem);
    }
  }

  public void keyPressed(KeyEvent paramKeyEvent)
  {
  }

  public void keyReleased(KeyEvent paramKeyEvent)
  {
  }

  public void keyTyped(KeyEvent paramKeyEvent)
  {
    if ((paramKeyEvent.getKeyChar() == '\n') && (paramKeyEvent.isControlDown()))
    {
      paramKeyEvent.consume();
      execute();
    }
  }

  public void actionPerformed(ActionEvent paramActionEvent)
  {
    String str1 = paramActionEvent.getActionCommand();
    if ((str1 == null) && ((paramActionEvent.getSource() instanceof MenuItem)))
      str1 = ((MenuItem)paramActionEvent.getSource()).getLabel();
    if (str1 != null)
      if (str1.equals("Execute"))
      {
        execute();
      }
      else if (str1.equals("Clear"))
      {
        clear();
      }
      else if (str1.equals("Exit"))
      {
        windowClosing(null);
      }
      else if (str1.equals("Transfer"))
      {
        Transfer.work(null);
      }
      else if (str1.equals("Dump"))
      {
        Transfer.work(new String[] { "-d" });
      }
      else if (str1.equals("Restore"))
      {
        Transfer.work(new String[] { "-r" });
        refreshTree();
      }
      else if (str1.equals("Logging on"))
      {
        JavaSystem.setLogToSystem(true);
      }
      else if (str1.equals("Logging off"))
      {
        JavaSystem.setLogToSystem(false);
      }
      else if (str1.equals("Help"))
      {
        showHelp(new String[] { "", HELP_TEXT });
      }
      else if (str1.equals("About"))
      {
        showHelp(new String[] { "", ABOUT_TEXT });
      }
      else if (str1.equals("Refresh Tree"))
      {
        refreshTree();
      }
      else if (str1.startsWith("#"))
      {
        int i = Integer.parseInt(str1.substring(1));
        this.txtCommand.setText(this.sRecent[i]);
      }
      else if (str1.equals("Connect..."))
      {
        connect(ConnectionDialog.createConnection(this.fMain, "Connect"));
        refreshTree();
      }
      else if (str1.equals("Results in Grid"))
      {
        this.iResult = 0;
        this.pResult.removeAll();
        this.pResult.add("Center", this.gResult);
        this.pResult.doLayout();
      }
      else
      {
        FileDialog localFileDialog;
        String str2;
        Object localObject;
        if (str1.equals("Open Script..."))
        {
          localFileDialog = new FileDialog(this.fMain, "Open Script", 0);
          if (defDirectory != null)
            localFileDialog.setDirectory(defDirectory);
          localFileDialog.show();
          str2 = localFileDialog.getFile();
          if (str2 != null)
          {
            localObject = new StringBuffer();
            this.ifHuge = DatabaseManagerCommon.readFile(localFileDialog.getDirectory() + str2);
            if (4096 <= this.ifHuge.length())
            {
              ((StringBuffer)localObject).append("This huge file cannot be edited. Please execute\n");
              this.txtCommand.setText(((StringBuffer)localObject).toString());
            }
            else
            {
              this.txtCommand.setText(this.ifHuge);
            }
          }
        }
        else if (str1.equals("Save Script..."))
        {
          localFileDialog = new FileDialog(this.fMain, "Save Script", 1);
          if (defDirectory != null)
            localFileDialog.setDirectory(defDirectory);
          localFileDialog.show();
          str2 = localFileDialog.getFile();
          if (str2 != null)
            DatabaseManagerCommon.writeFile(localFileDialog.getDirectory() + str2, this.txtCommand.getText());
        }
        else if (str1.equals("Save Result csv..."))
        {
          localFileDialog = new FileDialog(this.fMain, "Save Result CSV", 1);
          if (defDirectory != null)
            localFileDialog.setDirectory(defDirectory);
          localFileDialog.show();
          str2 = localFileDialog.getDirectory();
          localObject = localFileDialog.getFile();
          if (str2 != null)
            localObject = str2 + "/" + (String)localObject;
          if (localObject != null)
          {
            showResultInText();
            saveAsCsv((String)localObject);
          }
        }
        else if (str1.equals("Save Result..."))
        {
          localFileDialog = new FileDialog(this.fMain, "Save Result", 1);
          if (defDirectory != null)
            localFileDialog.setDirectory(defDirectory);
          localFileDialog.show();
          str2 = localFileDialog.getFile();
          if (str2 != null)
          {
            showResultInText();
            DatabaseManagerCommon.writeFile(localFileDialog.getDirectory() + str2, this.txtResult.getText());
          }
        }
        else if (str1.equals("Results in Text"))
        {
          this.iResult = 1;
          this.pResult.removeAll();
          this.pResult.add("Center", this.txtResult);
          this.pResult.doLayout();
          showResultInText();
        }
        else if (str1.equals("AutoCommit on"))
        {
          try
          {
            this.cConn.setAutoCommit(true);
          }
          catch (SQLException localSQLException1)
          {
          }
        }
        else if (str1.equals("AutoCommit off"))
        {
          try
          {
            this.cConn.setAutoCommit(false);
          }
          catch (SQLException localSQLException2)
          {
          }
        }
        else
        {
          Dimension localDimension;
          if (str1.equals("Enlarge Tree"))
          {
            localDimension = this.tTree.getMinimumSize();
            localDimension.width += 20;
            this.tTree.setMinimumSize(localDimension);
            this.fMain.pack();
          }
          else if (str1.equals("Shrink Tree"))
          {
            localDimension = this.tTree.getMinimumSize();
            localDimension.width -= 20;
            if (localDimension.width >= 0)
              this.tTree.setMinimumSize(localDimension);
            this.fMain.pack();
          }
          else if (str1.equals("Enlarge Command"))
          {
            this.txtCommand.setRows(this.txtCommand.getRows() + 1);
            this.fMain.pack();
          }
          else if (str1.equals("Shrink Command"))
          {
            int j = this.txtCommand.getRows() - 1;
            this.txtCommand.setRows(j < 1 ? 1 : j);
            this.fMain.pack();
          }
          else if (str1.equals("Commit"))
          {
            try
            {
              this.cConn.commit();
            }
            catch (SQLException localSQLException3)
            {
            }
          }
          else if (str1.equals("Insert test data"))
          {
            insertTestData();
          }
          else if (str1.equals("Rollback"))
          {
            try
            {
              this.cConn.rollback();
            }
            catch (SQLException localSQLException4)
            {
            }
          }
          else if (str1.equals("Disable MaxRows"))
          {
            try
            {
              this.sStatement.setMaxRows(0);
            }
            catch (SQLException localSQLException5)
            {
            }
          }
          else if (str1.equals("Set MaxRows to 100"))
          {
            try
            {
              this.sStatement.setMaxRows(100);
            }
            catch (SQLException localSQLException6)
            {
            }
          }
          else if (str1.equals("SELECT"))
          {
            showHelp(DatabaseManagerCommon.selectHelp);
          }
          else if (str1.equals("INSERT"))
          {
            showHelp(DatabaseManagerCommon.insertHelp);
          }
          else if (str1.equals("UPDATE"))
          {
            showHelp(DatabaseManagerCommon.updateHelp);
          }
          else if (str1.equals("DELETE"))
          {
            showHelp(DatabaseManagerCommon.deleteHelp);
          }
          else if (str1.equals("CREATE TABLE"))
          {
            showHelp(DatabaseManagerCommon.createTableHelp);
          }
          else if (str1.equals("DROP TABLE"))
          {
            showHelp(DatabaseManagerCommon.dropTableHelp);
          }
          else if (str1.equals("CREATE INDEX"))
          {
            showHelp(DatabaseManagerCommon.createIndexHelp);
          }
          else if (str1.equals("DROP INDEX"))
          {
            showHelp(DatabaseManagerCommon.dropIndexHelp);
          }
          else if (str1.equals("CHECKPOINT"))
          {
            showHelp(DatabaseManagerCommon.checkpointHelp);
          }
          else if (str1.equals("SCRIPT"))
          {
            showHelp(DatabaseManagerCommon.scriptHelp);
          }
          else if (str1.equals("SHUTDOWN"))
          {
            showHelp(DatabaseManagerCommon.shutdownHelp);
          }
          else if (str1.equals("SET"))
          {
            showHelp(DatabaseManagerCommon.setHelp);
          }
          else if (str1.equals("Test Script"))
          {
            showHelp(DatabaseManagerCommon.testHelp);
          }
        }
      }
  }

  void showHelp(String[] paramArrayOfString)
  {
    this.txtCommand.setText(paramArrayOfString[0]);
    this.txtResult.setText(paramArrayOfString[1]);
    this.bHelp = true;
    this.pResult.removeAll();
    this.pResult.add("Center", this.txtResult);
    this.pResult.doLayout();
    this.txtCommand.requestFocus();
    this.txtCommand.setCaretPosition(paramArrayOfString[0].length());
  }

  public void windowActivated(WindowEvent paramWindowEvent)
  {
  }

  public void windowDeactivated(WindowEvent paramWindowEvent)
  {
  }

  public void windowClosed(WindowEvent paramWindowEvent)
  {
  }

  public void windowClosing(WindowEvent paramWindowEvent)
  {
    try
    {
      this.cConn.close();
    }
    catch (Exception localException)
    {
    }
    this.fMain.dispose();
    if (bMustExit)
      System.exit(0);
  }

  public void windowDeiconified(WindowEvent paramWindowEvent)
  {
  }

  public void windowIconified(WindowEvent paramWindowEvent)
  {
  }

  public void windowOpened(WindowEvent paramWindowEvent)
  {
  }

  void clear()
  {
    this.ifHuge = "";
    this.txtCommand.setText(this.ifHuge);
  }

  void execute()
  {
    String str1 = null;
    if (4096 <= this.ifHuge.length())
      str1 = this.ifHuge;
    else
      str1 = this.txtCommand.getText();
    if (str1.startsWith("-->>>TEST<<<--"))
    {
      testPerformance();
      return;
    }
    String[] arrayOfString = new String[1];
    this.lTime = System.currentTimeMillis();
    try
    {
      this.sStatement.execute(str1);
      this.lTime = (System.currentTimeMillis() - this.lTime);
      int i = this.sStatement.getUpdateCount();
      if (i == -1)
      {
        formatResultSet(this.sStatement.getResultSet());
      }
      else
      {
        arrayOfString[0] = "update count";
        this.gResult.setHead(arrayOfString);
        arrayOfString[0] = String.valueOf(i);
        this.gResult.addRow(arrayOfString);
      }
      addToRecent(this.txtCommand.getText());
    }
    catch (SQLException localSQLException)
    {
      this.lTime = (System.currentTimeMillis() - this.lTime);
      arrayOfString[0] = "SQL Error";
      this.gResult.setHead(arrayOfString);
      String str2 = localSQLException.getMessage();
      str2 = str2 + " / Error Code: " + localSQLException.getErrorCode();
      str2 = str2 + " / State: " + localSQLException.getSQLState();
      arrayOfString[0] = str2;
      this.gResult.addRow(arrayOfString);
    }
    updateResult();
    System.gc();
  }

  void updateResult()
  {
    if (this.iResult == 0)
    {
      if (this.bHelp)
      {
        this.pResult.removeAll();
        this.pResult.add("Center", this.gResult);
        this.pResult.doLayout();
        this.bHelp = false;
      }
      this.gResult.update();
      this.gResult.repaint();
    }
    else
    {
      showResultInText();
    }
    this.txtCommand.selectAll();
    this.txtCommand.requestFocus();
  }

  void formatResultSet(ResultSet paramResultSet)
  {
    Object localObject;
    if (paramResultSet == null)
    {
      localObject = new String[1];
      localObject[0] = "Result";
      this.gResult.setHead(localObject);
      localObject[0] = "(empty)";
      this.gResult.addRow(localObject);
      return;
    }
    try
    {
      localObject = paramResultSet.getMetaData();
      int i = ((ResultSetMetaData)localObject).getColumnCount();
      String[] arrayOfString = new String[i];
      for (int j = 1; j <= i; j++)
        arrayOfString[(j - 1)] = ((ResultSetMetaData)localObject).getColumnLabel(j);
      this.gResult.setHead(arrayOfString);
      while (paramResultSet.next())
      {
        for (j = 1; j <= i; j++)
          try
          {
            arrayOfString[(j - 1)] = paramResultSet.getString(j);
            if (paramResultSet.wasNull())
              arrayOfString[(j - 1)] = "(null)";
          }
          catch (SQLException localSQLException2)
          {
          }
        this.gResult.addRow(arrayOfString);
      }
      paramResultSet.close();
    }
    catch (SQLException localSQLException1)
    {
    }
  }

  void testPerformance()
  {
    String str1 = this.txtCommand.getText();
    StringBuffer localStringBuffer = new StringBuffer();
    long l1 = 0L;
    for (int i = 0; i < str1.length(); i++)
    {
      c = str1.charAt(i);
      if (c == '\n')
        continue;
      localStringBuffer.append(c);
    }
    str1 = localStringBuffer.toString();
    String[] arrayOfString = new String[4];
    arrayOfString[0] = "ms";
    arrayOfString[1] = "count";
    arrayOfString[2] = "sql";
    arrayOfString[3] = "error";
    this.gResult.setHead(arrayOfString);
    char c = '\001';
    this.lTime = (System.currentTimeMillis() - this.lTime);
    while (!str1.equals(""))
    {
      int k = str1.indexOf(';');
      String str2;
      if (k != -1)
      {
        str2 = str1.substring(0, k);
        str1 = str1.substring(k + 1);
      }
      else
      {
        str2 = str1;
        str1 = "";
      }
      int j;
      if (str2.startsWith("--#"))
      {
        j = Integer.parseInt(str2.substring(3));
        continue;
      }
      if (str2.startsWith("--"))
        continue;
      arrayOfString[2] = str2;
      long l2 = 0L;
      try
      {
        l2 = DatabaseManagerCommon.testStatement(this.sStatement, str2, j);
        l1 += l2;
        arrayOfString[0] = String.valueOf(l2);
        arrayOfString[1] = String.valueOf(j);
        arrayOfString[3] = "";
      }
      catch (SQLException localSQLException)
      {
        String tmp274_271 = "n/a";
        arrayOfString[1] = tmp274_271;
        arrayOfString[0] = tmp274_271;
        arrayOfString[3] = localSQLException.toString();
      }
      this.gResult.addRow(arrayOfString);
      System.out.println(l2 + " ms : " + str2);
    }
    arrayOfString[0] = ("" + l1);
    arrayOfString[1] = "total";
    arrayOfString[2] = "";
    this.gResult.addRow(arrayOfString);
    this.lTime = (System.currentTimeMillis() - this.lTime);
    updateResult();
  }

  void saveAsCsv(String paramString)
  {
    try
    {
      File localFile = new File(paramString);
      CSVWriter localCSVWriter = new CSVWriter(localFile, null);
      String[] arrayOfString1 = this.gResult.getHead();
      int i = arrayOfString1.length;
      Vector localVector = this.gResult.getData();
      int j = localVector.size();
      localCSVWriter.writeHeader(arrayOfString1);
      for (int k = 0; k < j; k++)
      {
        String[] arrayOfString2 = (String[])localVector.elementAt(k);
        String[] arrayOfString3 = new String[arrayOfString2.length];
        for (int m = 0; m < arrayOfString2.length; m++)
        {
          String str = arrayOfString2[m];
          if (str.equals("(null)"))
            str = "";
          arrayOfString3[m] = str;
        }
        localCSVWriter.writeData(arrayOfString3);
      }
      localCSVWriter.close();
    }
    catch (IOException localIOException)
    {
      throw new RuntimeException("IOError: " + localIOException.getMessage());
    }
  }

  void showResultInText()
  {
    String[] arrayOfString1 = this.gResult.getHead();
    int i = arrayOfString1.length;
    int[] arrayOfInt = new int[i];
    Vector localVector = this.gResult.getData();
    int j = localVector.size();
    for (int k = 0; k < i; k++)
      arrayOfInt[k] = arrayOfString1[k].length();
    String[] arrayOfString2;
    int n;
    for (k = 0; k < j; k++)
    {
      arrayOfString2 = (String[])localVector.elementAt(k);
      for (m = 0; m < i; m++)
      {
        n = arrayOfString2[m].length();
        if (n <= arrayOfInt[m])
          continue;
        arrayOfInt[m] = n;
      }
    }
    StringBuffer localStringBuffer = new StringBuffer();
    for (int m = 0; m < i; m++)
    {
      localStringBuffer.append(arrayOfString1[m]);
      for (n = arrayOfString1[m].length(); n <= arrayOfInt[m]; n++)
        localStringBuffer.append(' ');
    }
    localStringBuffer.append(NL);
    for (m = 0; m < i; m++)
    {
      for (n = 0; n < arrayOfInt[m]; n++)
        localStringBuffer.append('-');
      localStringBuffer.append(' ');
    }
    localStringBuffer.append(NL);
    for (m = 0; m < j; m++)
    {
      arrayOfString2 = (String[])localVector.elementAt(m);
      for (n = 0; n < i; n++)
      {
        localStringBuffer.append(arrayOfString2[n]);
        for (int i1 = arrayOfString2[n].length(); i1 <= arrayOfInt[n]; i1++)
          localStringBuffer.append(' ');
      }
      localStringBuffer.append(NL);
    }
    localStringBuffer.append(NL + j + " row(s) in " + this.lTime + " ms");
    this.txtResult.setText(localStringBuffer.toString());
  }

  private void addToRecent(String paramString)
  {
    for (int i = 0; i < 24; i++)
      if (paramString.equals(this.sRecent[i]))
        return;
    if (this.sRecent[this.iRecent] != null)
      this.mRecent.remove(this.iRecent);
    this.sRecent[this.iRecent] = paramString;
    if (paramString.length() > 43)
      paramString = paramString.substring(0, 40) + "...";
    MenuItem localMenuItem = new MenuItem(paramString);
    localMenuItem.setActionCommand("#" + this.iRecent);
    localMenuItem.addActionListener(this);
    this.mRecent.insert(localMenuItem, this.iRecent);
    this.iRecent = ((this.iRecent + 1) % 24);
  }

  private void initGUI()
  {
    Panel localPanel1 = new Panel();
    Panel localPanel2 = new Panel();
    this.pResult = new Panel();
    localPanel1.setLayout(new BorderLayout());
    localPanel2.setLayout(new BorderLayout());
    this.pResult.setLayout(new BorderLayout());
    Font localFont = new Font("Dialog", 0, 12);
    this.txtCommand = new TextArea(5, 40);
    this.txtCommand.addKeyListener(this);
    this.txtResult = new TextArea(20, 40);
    this.txtCommand.setFont(localFont);
    this.txtResult.setFont(new Font("Courier", 0, 12));
    this.butExecute = new Button("Execute");
    this.butClear = new Button("Clear");
    this.butExecute.addActionListener(this);
    this.butClear.addActionListener(this);
    localPanel2.add("East", this.butExecute);
    localPanel2.add("West", this.butClear);
    localPanel2.add("Center", this.txtCommand);
    this.gResult = new Grid();
    setLayout(new BorderLayout());
    this.pResult.add("Center", this.gResult);
    localPanel1.add("North", localPanel2);
    localPanel1.add("Center", this.pResult);
    this.fMain.add("Center", localPanel1);
    this.tTree = new Tree();
    Dimension localDimension = Toolkit.getDefaultToolkit().getScreenSize();
    if (localDimension.width >= 640)
      this.tTree.setMinimumSize(new Dimension(200, 100));
    else
      this.tTree.setMinimumSize(new Dimension(80, 100));
    this.gResult.setMinimumSize(new Dimension(200, 300));
    this.fMain.add("West", this.tTree);
    doLayout();
    this.fMain.pack();
  }

  protected void refreshTree()
  {
    this.tTree.removeAll();
    try
    {
      int i = Color.yellow.getRGB();
      int j = Color.orange.getRGB();
      int k = Color.red.getRGB();
      this.tTree.addRow("", this.dMeta.getURL(), "-", 0);
      String[] arrayOfString = { "TABLE", "GLOBAL TEMPORARY", "VIEW" };
      Vector localVector1 = new Vector();
      Vector localVector2 = new Vector();
      Vector localVector3 = new Vector();
      ResultSet localResultSet1 = this.dMeta.getTables(null, null, null, arrayOfString);
      try
      {
        while (localResultSet1.next())
        {
          localVector1.addElement(localResultSet1.getString(2));
          localVector2.addElement(localResultSet1.getString(3));
          localVector3.addElement(localResultSet1.getString(5));
        }
      }
      finally
      {
        localResultSet1.close();
      }
      for (int m = 0; m < localVector2.size(); m++)
      {
        String str1 = (String)localVector2.elementAt(m);
        String str2 = (String)localVector1.elementAt(m);
        String str3 = "tab-" + str1 + "-";
        this.tTree.addRow(str3, str1, "+", i);
        String str4 = (String)localVector3.elementAt(m);
        if ((str2 != null) && (!str2.trim().equals("")))
          this.tTree.addRow(str3 + "s", "schema: " + str2);
        if ((str4 != null) && (!str4.trim().equals("")))
          this.tTree.addRow(str3 + "r", " " + str4);
        ResultSet localResultSet2 = this.dMeta.getColumns(null, str2, str1, null);
        try
        {
          while (localResultSet2.next())
          {
            localObject2 = localResultSet2.getString(4);
            localObject3 = str3 + "col-" + (String)localObject2 + "-";
            this.tTree.addRow((String)localObject3, (String)localObject2, "+", j);
            String str5 = localResultSet2.getString(6);
            this.tTree.addRow((String)localObject3 + "t", "Type: " + str5);
            boolean bool2 = localResultSet2.getInt(11) != 0;
            this.tTree.addRow((String)localObject3 + "n", "Nullable: " + bool2);
          }
        }
        finally
        {
          localResultSet2.close();
        }
        this.tTree.addRow(str3 + "ind", "Indices", "+", 0);
        Object localObject2 = this.dMeta.getIndexInfo(null, str2, str1, false, false);
        Object localObject3 = null;
        try
        {
          while (((ResultSet)localObject2).next())
          {
            boolean bool1 = ((ResultSet)localObject2).getBoolean(4);
            String str6 = ((ResultSet)localObject2).getString(6);
            String str7 = str3 + "ind-" + str6 + "-";
            if ((localObject3 == null) || (!((String)localObject3).equals(str6)))
            {
              this.tTree.addRow(str7, str6, "+", k);
              this.tTree.addRow(str7 + "u", "Unique: " + (!bool1));
              localObject3 = str6;
            }
            String str8 = ((ResultSet)localObject2).getString(9);
            this.tTree.addRow(str7 + "c-" + str8 + "-", str8);
          }
        }
        finally
        {
          ((ResultSet)localObject2).close();
        }
      }
      this.tTree.addRow("p", "Properties", "+", 0);
      this.tTree.addRow("pu", "User: " + this.dMeta.getUserName());
      this.tTree.addRow("pr", "ReadOnly: " + this.cConn.isReadOnly());
      this.tTree.addRow("pa", "AutoCommit: " + this.cConn.getAutoCommit());
      this.tTree.addRow("pd", "Driver: " + this.dMeta.getDriverName());
      this.tTree.addRow("pp", "Product: " + this.dMeta.getDatabaseProductName());
      this.tTree.addRow("pv", "Version: " + this.dMeta.getDatabaseProductVersion());
    }
    catch (SQLException localSQLException)
    {
      this.tTree.addRow("", "Error getting metadata:", "-", 0);
      this.tTree.addRow("-", localSQLException.getMessage());
      this.tTree.addRow("-", localSQLException.getSQLState());
    }
    this.tTree.update();
  }

  static
  {
    try
    {
      Class.forName(DatabaseManagerSwing.class.getPackage().getName() + ".Transfer");
      TT_AVAILABLE = true;
    }
    catch (Throwable localThrowable)
    {
    }
    HELP_TEXT = "See the forums, mailing lists, and HSQLDB User Guide\nat http://hsqldb.org.\n\nPlease paste the following version identifier with any\nproblem reports or help requests:  $Revision: 1.33 $" + (TT_AVAILABLE ? "" : "\n\nTransferTool classes are not in CLASSPATH.\nTo enable the Tools menu, add 'transfer.jar' to your class path.");
    ABOUT_TEXT = "$Revision: 1.33 $ of DatabaseManagerSwing\n\nCopyright (c) 1995-2000, The Hypersonic SQL Group.\nCopyright (c) 2001-2005, The HSQL Development Group.\nhttp://hsqldb.org  (User Guide available at this site).\n\n\nYou may use and redistribute according to the HSQLDB\nlicense documented in the source code and at the web\nsite above." + (TT_AVAILABLE ? "\n\nTransferTool options are available." : "");
    defDriver = "org.hsqldb.jdbcDriver";
    defURL = "jdbc:hsqldb:.";
    defUser = "sa";
    defPassword = "";
  }
}

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/thirdparty-all.jar
* Qualified Name:     org.hsqldb.util.DatabaseManager
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of org.hsqldb.util.DatabaseManager

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.