|
@@ -0,0 +1,1764 @@
|
|
|
+/*
|
|
|
+ * SchemaSpyGUIApp.java
|
|
|
+ *
|
|
|
+ * Created on 07.01.2009, 22:21:15
|
|
|
+ */
|
|
|
+
|
|
|
+package schemaspygui;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import javax.swing.*;
|
|
|
+import javax.swing.UIManager;
|
|
|
+import javax.swing.filechooser.FileFilter;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.Properties;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * @author Joachim Uhl
|
|
|
+ */
|
|
|
+public class SchemaSpyGUIApp extends javax.swing.JFrame {
|
|
|
+
|
|
|
+ /** Creates new form SchemaSpyGUIApp */
|
|
|
+ public SchemaSpyGUIApp() {
|
|
|
+ setLookandFeel();
|
|
|
+ initParams();
|
|
|
+ initComponents();
|
|
|
+ }
|
|
|
+
|
|
|
+ /** This method is called from within the constructor to
|
|
|
+ * initialize the form.
|
|
|
+ * WARNING: Do NOT modify this code. The content of this method is
|
|
|
+ * always regenerated by the Form Editor.
|
|
|
+ */
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
|
|
+ private void initComponents() {
|
|
|
+
|
|
|
+ jToolBar = new javax.swing.JToolBar();
|
|
|
+ exitButton = new javax.swing.JButton();
|
|
|
+ quickSaveButton = new javax.swing.JButton();
|
|
|
+ quickLoadButton = new javax.swing.JButton();
|
|
|
+ jSeparator2 = new javax.swing.JToolBar.Separator();
|
|
|
+ saveParamFileButton = new javax.swing.JButton();
|
|
|
+ loadParamFileButton = new javax.swing.JButton();
|
|
|
+ clearFieldsButton = new javax.swing.JButton();
|
|
|
+ jSeparator1 = new javax.swing.JToolBar.Separator();
|
|
|
+ startSchemaSpyButton = new javax.swing.JButton();
|
|
|
+ showOutputButton = new javax.swing.JButton();
|
|
|
+ jTabbedPane = new javax.swing.JTabbedPane();
|
|
|
+ reqParamPanel = new javax.swing.JPanel();
|
|
|
+ lbl_DBType = new javax.swing.JLabel();
|
|
|
+ dbTypeCBox = new javax.swing.JComboBox();
|
|
|
+ lbl_PathtoDBdrvr = new javax.swing.JLabel();
|
|
|
+ lbl_DBName = new javax.swing.JLabel();
|
|
|
+ lbl_DBHost = new javax.swing.JLabel();
|
|
|
+ lbl_DBPort = new javax.swing.JLabel();
|
|
|
+ lbl_DBUser = new javax.swing.JLabel();
|
|
|
+ lbl_DBPwd = new javax.swing.JLabel();
|
|
|
+ lbl_PathSchemSpy = new javax.swing.JLabel();
|
|
|
+ dbPwdField = new javax.swing.JPasswordField();
|
|
|
+ dbUserTField = new javax.swing.JTextField();
|
|
|
+ dbNameTField = new javax.swing.JTextField();
|
|
|
+ dbHostTField = new javax.swing.JTextField();
|
|
|
+ dbPortTField = new javax.swing.JTextField();
|
|
|
+ dbDriverPTField = new javax.swing.JTextField();
|
|
|
+ driverButton = new javax.swing.JButton();
|
|
|
+ sSpyPathTField = new javax.swing.JTextField();
|
|
|
+ sSpyPathButton = new javax.swing.JButton();
|
|
|
+ lbl_PropertiePath = new javax.swing.JLabel();
|
|
|
+ propertiePathTField = new javax.swing.JTextField();
|
|
|
+ propertiePathButton = new javax.swing.JButton();
|
|
|
+ propertiesTField = new javax.swing.JTextField();
|
|
|
+ lbl_prop = new javax.swing.JLabel();
|
|
|
+ flagsPanel = new javax.swing.JPanel();
|
|
|
+ aHTMLCBox = new javax.swing.JCheckBox();
|
|
|
+ noHTMLCBox = new javax.swing.JCheckBox();
|
|
|
+ dincFKCBox = new javax.swing.JCheckBox();
|
|
|
+ noAdsCBox = new javax.swing.JCheckBox();
|
|
|
+ noLogoCBox = new javax.swing.JCheckBox();
|
|
|
+ noRowsBox = new javax.swing.JCheckBox();
|
|
|
+ railsCBox = new javax.swing.JCheckBox();
|
|
|
+ qualityPanel = new javax.swing.JPanel();
|
|
|
+ highQuCBox = new javax.swing.JCheckBox();
|
|
|
+ lowQuCBox = new javax.swing.JCheckBox();
|
|
|
+ singleSignCBox = new javax.swing.JCheckBox();
|
|
|
+ showFinishCBox = new javax.swing.JCheckBox();
|
|
|
+ savePassCBox = new javax.swing.JCheckBox();
|
|
|
+ outputOptionsPanel = new javax.swing.JPanel();
|
|
|
+ lbl_OutDir = new javax.swing.JLabel();
|
|
|
+ pathOutputTField = new javax.swing.JTextField();
|
|
|
+ outDirButton = new javax.swing.JButton();
|
|
|
+ allSchemasCBox = new javax.swing.JCheckBox();
|
|
|
+ schemaTField = new javax.swing.JTextField();
|
|
|
+ lbl_Schema = new javax.swing.JLabel();
|
|
|
+ lbl_Desc = new javax.swing.JLabel();
|
|
|
+ descTAreaScrollPane = new javax.swing.JScrollPane();
|
|
|
+ descTArea = new javax.swing.JTextArea();
|
|
|
+ lbl_TableRegEx = new javax.swing.JLabel();
|
|
|
+ tNameRExTField = new javax.swing.JTextField();
|
|
|
+ lbl_TableExRegEx = new javax.swing.JLabel();
|
|
|
+ tNameExRExTField = new javax.swing.JTextField();
|
|
|
+ lbl_ColumnRegEx = new javax.swing.JLabel();
|
|
|
+ cNameRExTField = new javax.swing.JTextField();
|
|
|
+ colExRelCBox = new javax.swing.JCheckBox();
|
|
|
+ stylePanel = new javax.swing.JPanel();
|
|
|
+ charsetComBox = new javax.swing.JComboBox();
|
|
|
+ lbl_Charset = new javax.swing.JLabel();
|
|
|
+ lbl_Font = new javax.swing.JLabel();
|
|
|
+ fontNameTField = new javax.swing.JTextField();
|
|
|
+ lbl_fontSize = new javax.swing.JLabel();
|
|
|
+ fontSizeTField = new javax.swing.JTextField();
|
|
|
+ lbl_css = new javax.swing.JLabel();
|
|
|
+ cssPathTField = new javax.swing.JTextField();
|
|
|
+ jButton1 = new javax.swing.JButton();
|
|
|
+ metaFilePathButton = new javax.swing.JButton();
|
|
|
+ metaFilePathTField = new javax.swing.JTextField();
|
|
|
+ lbl_OutDir1 = new javax.swing.JLabel();
|
|
|
+ outputPanel = new javax.swing.JPanel();
|
|
|
+ sSpyOutTAreaScrollPane = new javax.swing.JScrollPane();
|
|
|
+ sSpyOutTArea = new javax.swing.JTextArea();
|
|
|
+ mainMenuBar = new javax.swing.JMenuBar();
|
|
|
+ fileMenu = new javax.swing.JMenu();
|
|
|
+ sParamMenuItem = new javax.swing.JMenuItem();
|
|
|
+ lParamMenuItem = new javax.swing.JMenuItem();
|
|
|
+ exitMenuItem = new javax.swing.JMenuItem();
|
|
|
+ infoMenu = new javax.swing.JMenu();
|
|
|
+ helpMenueAboutItem = new javax.swing.JMenuItem();
|
|
|
+
|
|
|
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
|
|
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("schemaspygui/resources/ReleaseText"); // NOI18N
|
|
|
+ setTitle(bundle.getString("ProgramName")); // NOI18N
|
|
|
+ setName("SchemaSpyGUIAppMainFrame"); // NOI18N
|
|
|
+
|
|
|
+ jToolBar.setRollover(true);
|
|
|
+
|
|
|
+ exitButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/door_out.png"))); // NOI18N
|
|
|
+ exitButton.setText("Exit");
|
|
|
+ exitButton.setFocusable(false);
|
|
|
+ exitButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ exitButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ exitButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ exitButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(exitButton);
|
|
|
+
|
|
|
+ quickSaveButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/disk.png"))); // NOI18N
|
|
|
+ quickSaveButton.setText("Quick Save");
|
|
|
+ quickSaveButton.setToolTipText("<html>Saves your settings in a default xml file</html>");
|
|
|
+ quickSaveButton.setFocusable(false);
|
|
|
+ quickSaveButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ quickSaveButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ quickSaveButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ quickSaveButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(quickSaveButton);
|
|
|
+
|
|
|
+ quickLoadButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/folder_page_white.png"))); // NOI18N
|
|
|
+ quickLoadButton.setText("Quick Load");
|
|
|
+ quickLoadButton.setToolTipText("<html>Loads your settings out of the default xml file</html>");
|
|
|
+ quickLoadButton.setFocusable(false);
|
|
|
+ quickLoadButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ quickLoadButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ quickLoadButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ quickLoadButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(quickLoadButton);
|
|
|
+ jToolBar.add(jSeparator2);
|
|
|
+
|
|
|
+ saveParamFileButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/disk_multiple.png"))); // NOI18N
|
|
|
+ saveParamFileButton.setText("Save File");
|
|
|
+ saveParamFileButton.setToolTipText("<html>Save your settings with a filename (xml format) you can choose</html>");
|
|
|
+ saveParamFileButton.setFocusable(false);
|
|
|
+ saveParamFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ saveParamFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ saveParamFileButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ saveParamFileButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(saveParamFileButton);
|
|
|
+
|
|
|
+ loadParamFileButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/folder_explore.png"))); // NOI18N
|
|
|
+ loadParamFileButton.setText("Load File");
|
|
|
+ loadParamFileButton.setToolTipText("<html>Load your settings.<br>Choose freely which xml config file you need</html>");
|
|
|
+ loadParamFileButton.setFocusable(false);
|
|
|
+ loadParamFileButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ loadParamFileButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ loadParamFileButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ loadParamFileButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(loadParamFileButton);
|
|
|
+
|
|
|
+ clearFieldsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/cross.png"))); // NOI18N
|
|
|
+ clearFieldsButton.setText("Clear Fields");
|
|
|
+ clearFieldsButton.setFocusable(false);
|
|
|
+ clearFieldsButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ clearFieldsButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ clearFieldsButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ clearFieldsButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(clearFieldsButton);
|
|
|
+ jToolBar.add(jSeparator1);
|
|
|
+
|
|
|
+ startSchemaSpyButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/database_connect.png"))); // NOI18N
|
|
|
+ startSchemaSpyButton.setText("Start SchemaSpy");
|
|
|
+ startSchemaSpyButton.setFocusable(false);
|
|
|
+ startSchemaSpyButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ startSchemaSpyButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ startSchemaSpyButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ startSchemaSpyButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(startSchemaSpyButton);
|
|
|
+
|
|
|
+ showOutputButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/schemaspygui/resources/database_go.png"))); // NOI18N
|
|
|
+ showOutputButton.setText("Show Output");
|
|
|
+ showOutputButton.setFocusable(false);
|
|
|
+ showOutputButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
|
|
|
+ showOutputButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
|
|
|
+ showOutputButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ showOutputButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ jToolBar.add(showOutputButton);
|
|
|
+
|
|
|
+ jTabbedPane.setToolTipText("");
|
|
|
+
|
|
|
+ reqParamPanel.setToolTipText("");
|
|
|
+
|
|
|
+ lbl_DBType.setFont(lbl_DBType.getFont());
|
|
|
+ lbl_DBType.setText("DB Type:"); // NOI18N
|
|
|
+
|
|
|
+ dbTypeCBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { " ", "db2", "db2net", "derby", "derbynet", "firebird", "hsqldb", "informix", "maxdb", "mssql", "mssql05", "mssql-jtds", "mssql05-jtds", "mysql", "ora", "orathin", "pgsql", "sybase", "sybase2", "udbt4" }));
|
|
|
+ dbTypeCBox.setToolTipText("Choose your type of database (-t)");
|
|
|
+ dbTypeCBox.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ dbTypeCBoxActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ lbl_PathtoDBdrvr.setText("Path to DB driver:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_DBName.setText("DB name:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_DBHost.setText("DB Host:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_DBPort.setText("DB Port:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_DBUser.setText("DB User:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_DBPwd.setText("Password:"); // NOI18N
|
|
|
+
|
|
|
+ lbl_PathSchemSpy.setText("Path to SchemaSpy:"); // NOI18N
|
|
|
+
|
|
|
+ dbPwdField.setToolTipText("<html>Enter the User Password (-p)<br>It's not displayed in the SchemaSpy Output,<br>but be careful with the \"Save User Password\" option.<br> Currently the PWD is stored in clear text.\n</html>");
|
|
|
+
|
|
|
+ dbUserTField.setToolTipText("Enter the User name (-u)");
|
|
|
+
|
|
|
+ dbNameTField.setToolTipText("Enter the Database Name to connect to (-db)");
|
|
|
+
|
|
|
+ dbHostTField.setToolTipText("Enter your DB Host (-host)");
|
|
|
+
|
|
|
+ dbPortTField.setToolTipText("Enter the port for the DB (-port)");
|
|
|
+
|
|
|
+ dbDriverPTField.setToolTipText("The path to your DB driver");
|
|
|
+
|
|
|
+ driverButton.setText("Choose"); // NOI18N
|
|
|
+ driverButton.setToolTipText("Click to choose the path to database driver file (-dp)"); // NOI18N
|
|
|
+ driverButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ driverButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ sSpyPathTField.setToolTipText("The path to the schemaSpy.jar file (executable)");
|
|
|
+
|
|
|
+ sSpyPathButton.setText("Choose"); // NOI18N
|
|
|
+ sSpyPathButton.setToolTipText("Click to choose the path to SchemaSpy"); // NOI18N
|
|
|
+ sSpyPathButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ sSpyPathButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ lbl_PropertiePath.setText("Path propertie file:"); // NOI18N
|
|
|
+
|
|
|
+ propertiePathTField.setToolTipText("<html>Specifies additional properties to be used when connecting to the database.<br> Specify a .properties file with key=value entries.<br>\nHave a look at the .propertie Files in the subdirectory /properties in your SchemaSpyGUI folder.</html>");
|
|
|
+
|
|
|
+ propertiePathButton.setText("Choose"); // NOI18N
|
|
|
+ propertiePathButton.setToolTipText("Click to choose the path to your database specific propertie file"); // NOI18N
|
|
|
+ propertiePathButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ propertiePathButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ propertiesTField.setToolTipText("Specify the entries directly, escaping the ='s with \\= and separating each key\\=value pair with a ;.");
|
|
|
+
|
|
|
+ lbl_prop.setText("Properties directly:");
|
|
|
+
|
|
|
+ flagsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(" Flags "));
|
|
|
+
|
|
|
+ aHTMLCBox.setText("Allow HTML in comments"); // NOI18N
|
|
|
+ aHTMLCBox.setToolTipText("<html>Any HTML embedded in comments normally gets encoded so that it's rendered as text.<br> This option allows it to be rendered as HTML. (-ahic)</html>");
|
|
|
+
|
|
|
+ noHTMLCBox.setText("No HTML"); // NOI18N
|
|
|
+ noHTMLCBox.setToolTipText("<html>Only generate files needed for insertion/deletion of data (e.g. for scripts)<br> and an XML representation of the schema. (-nohtml)</html>");
|
|
|
+
|
|
|
+ dincFKCBox.setText("Don't include foreign key"); // NOI18N
|
|
|
+ dincFKCBox.setToolTipText("Don't include implied foreign key relationships. (-noimplied)");
|
|
|
+
|
|
|
+ noAdsCBox.setText("No Ads");
|
|
|
+ noAdsCBox.setToolTipText("Don't show ads (-noads)");
|
|
|
+ noAdsCBox.setEnabled(false);
|
|
|
+
|
|
|
+ noLogoCBox.setText("No Logo");
|
|
|
+ noLogoCBox.setToolTipText("Don't show Sourceforge.net image logo. (-nologo)");
|
|
|
+
|
|
|
+ noRowsBox.setText("Don't query or display row counts");
|
|
|
+ noRowsBox.setToolTipText("(-norows)");
|
|
|
+
|
|
|
+ railsCBox.setText("Ruby on Rails-based database");
|
|
|
+ railsCBox.setToolTipText("(-rails)");
|
|
|
+
|
|
|
+ qualityPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Quality Image Diagrams:"));
|
|
|
+ qualityPanel.setToolTipText("Generate either higher or lower-quality diagrams. Depends Graphviz istallation.");
|
|
|
+
|
|
|
+ highQuCBox.setText("High Quality");
|
|
|
+ highQuCBox.setToolTipText("(-hq)");
|
|
|
+
|
|
|
+ lowQuCBox.setText("Low Quality");
|
|
|
+ lowQuCBox.setToolTipText("(-lq)");
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout qualityPanelLayout = new org.jdesktop.layout.GroupLayout(qualityPanel);
|
|
|
+ qualityPanel.setLayout(qualityPanelLayout);
|
|
|
+ qualityPanelLayout.setHorizontalGroup(
|
|
|
+ qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(qualityPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(highQuCBox)
|
|
|
+ .add(lowQuCBox))
|
|
|
+ .addContainerGap(37, Short.MAX_VALUE))
|
|
|
+ );
|
|
|
+ qualityPanelLayout.setVerticalGroup(
|
|
|
+ qualityPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(qualityPanelLayout.createSequentialGroup()
|
|
|
+ .add(highQuCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(lowQuCBox))
|
|
|
+ );
|
|
|
+
|
|
|
+ singleSignCBox.setText("Single Sign-On");
|
|
|
+ singleSignCBox.setToolTipText("Don't require a user to be specified with -u to simplify configuration when running in a single sign-on environment (-sso)");
|
|
|
+ singleSignCBox.setEnabled(false);
|
|
|
+
|
|
|
+ showFinishCBox.setText("Show Output when finished");
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout flagsPanelLayout = new org.jdesktop.layout.GroupLayout(flagsPanel);
|
|
|
+ flagsPanel.setLayout(flagsPanelLayout);
|
|
|
+ flagsPanelLayout.setHorizontalGroup(
|
|
|
+ flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(44, 44, 44)
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(aHTMLCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(46, 46, 46))
|
|
|
+ .add(noRowsBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(railsCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(16, 16, 16))
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(qualityPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(49, 49, 49)))
|
|
|
+ .add(17, 17, 17)
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(dincFKCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(noHTMLCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(76, 76, 76)))
|
|
|
+ .add(9, 9, 9)
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(noAdsCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(6, 6, 6))
|
|
|
+ .add(noLogoCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(showFinishCBox)
|
|
|
+ .add(60, 60, 60))
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(singleSignCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(122, 122, 122)))
|
|
|
+ .add(77, 77, 77))
|
|
|
+ );
|
|
|
+ flagsPanelLayout.setVerticalGroup(
|
|
|
+ flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, flagsPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap(11, Short.MAX_VALUE)
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(flagsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(aHTMLCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(noRowsBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(railsCBox))
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(noHTMLCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(dincFKCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(singleSignCBox)))
|
|
|
+ .add(18, 18, 18)
|
|
|
+ .add(showFinishCBox))
|
|
|
+ .add(flagsPanelLayout.createSequentialGroup()
|
|
|
+ .add(noLogoCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(noAdsCBox)))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 43, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, flagsPanelLayout.createSequentialGroup()
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 80, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(qualityPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+
|
|
|
+ savePassCBox.setText("Save User Password");
|
|
|
+ savePassCBox.setToolTipText("<html><b>WARNING:</b> Saves DB User Password as plain text!</html>");
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout reqParamPanelLayout = new org.jdesktop.layout.GroupLayout(reqParamPanel);
|
|
|
+ reqParamPanel.setLayout(reqParamPanelLayout);
|
|
|
+ reqParamPanelLayout.setHorizontalGroup(
|
|
|
+ reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(28, 28, 28)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(51, 51, 51)
|
|
|
+ .add(lbl_DBName, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(53, 53, 53)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(lbl_DBType)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(lbl_DBHost, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(2, 2, 2))))
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(55, 55, 55)
|
|
|
+ .add(lbl_DBUser, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
|
+ .add(lbl_PathtoDBdrvr)
|
|
|
+ .add(lbl_PathSchemSpy)
|
|
|
+ .add(lbl_PropertiePath)
|
|
|
+ .add(lbl_prop))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(propertiesTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 381, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.LEADING, dbDriverPTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.LEADING, sSpyPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.LEADING, propertiePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 306, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(propertiePathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(sSpyPathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(driverButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(dbTypeCBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 122, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(dbNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(dbUserTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(dbHostTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 171, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(savePassCBox)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(lbl_DBPwd, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .add(8, 8, 8)
|
|
|
+ .add(lbl_DBPort, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
|
|
+ .add(18, 18, 18)))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(dbPortTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(dbPwdField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
|
|
|
+ .add(41, 41, 41)))
|
|
|
+ .add(54, 54, 54))
|
|
|
+ .add(reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(flagsPanel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+ reqParamPanelLayout.setVerticalGroup(
|
|
|
+ reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, reqParamPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(dbTypeCBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_DBType))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(dbHostTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_DBHost)
|
|
|
+ .add(dbPortTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_DBPort))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(dbNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_DBName))
|
|
|
+ .add(6, 6, 6)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(dbUserTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(dbPwdField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_DBPwd)
|
|
|
+ .add(lbl_DBUser))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(savePassCBox)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 15, Short.MAX_VALUE)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(dbDriverPTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(driverButton)
|
|
|
+ .add(lbl_PathtoDBdrvr))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(sSpyPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(sSpyPathButton)
|
|
|
+ .add(lbl_PathSchemSpy))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(propertiePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(propertiePathButton)
|
|
|
+ .add(lbl_PropertiePath))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(reqParamPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(propertiesTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_prop))
|
|
|
+ .add(18, 18, 18)
|
|
|
+ .add(flagsPanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+
|
|
|
+ jTabbedPane.addTab("Parameters/Flags", reqParamPanel);
|
|
|
+
|
|
|
+ outputOptionsPanel.setToolTipText("");
|
|
|
+
|
|
|
+ lbl_OutDir.setText("Output directory:"); // NOI18N
|
|
|
+
|
|
|
+ pathOutputTField.setToolTipText("Choose the path to your SchemaSpy output dir (-o)");
|
|
|
+
|
|
|
+ outDirButton.setText("Choose"); // NOI18N
|
|
|
+ outDirButton.setToolTipText("Click to choose the path to your SchemaSpy output dir (-o). You can leave this blank. SchemaSpyGUI will generate a path out of your db-name, db-user and db-schema name"); // NOI18N
|
|
|
+ outDirButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ outDirButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ allSchemasCBox.setText("All Schemas");
|
|
|
+ allSchemasCBox.setToolTipText("Evaluate all schemas in a database (-all)");
|
|
|
+ allSchemasCBox.addChangeListener(new javax.swing.event.ChangeListener() {
|
|
|
+ public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
|
|
+ allSchemasCBoxStateChanged(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ schemaTField.setToolTipText("<html>Database schema (optional if the same as user or isn't supported by your database)(-s).<br> Evaluate specified schemas.(-schemas \"s1,s2\")</html>");
|
|
|
+
|
|
|
+ lbl_Schema.setText("Schema/s to explore:"); // NOI18N
|
|
|
+ lbl_Schema.setToolTipText("Schemas coma separated");
|
|
|
+
|
|
|
+ lbl_Desc.setText("Description on summary page:"); // NOI18N
|
|
|
+
|
|
|
+ descTArea.setColumns(20);
|
|
|
+ descTArea.setRows(4);
|
|
|
+ descTArea.setToolTipText("Displays the specified textual description on summary pages (-desc).\nFor example: <a href\\='http://schemaspy.sourceforge.net'>SchemaSpy</a>");
|
|
|
+ descTAreaScrollPane.setViewportView(descTArea);
|
|
|
+
|
|
|
+ lbl_TableRegEx.setText("Table name RegExp:"); // NOI18N
|
|
|
+
|
|
|
+ tNameRExTField.setToolTipText("<html>This is a regular expression that's used to determine which tables/views to include (-i).<br> For example: (.*book.*)|(library.*)</html>");
|
|
|
+
|
|
|
+ lbl_TableExRegEx.setText("Table Exclusion RegExp:");
|
|
|
+
|
|
|
+ tNameExRExTField.setToolTipText("This is a regular expression that's used to determine which tables/views to exclude (-I).");
|
|
|
+
|
|
|
+ lbl_ColumnRegEx.setText("Column Exclusion RegExp:"); // NOI18N
|
|
|
+
|
|
|
+ cNameRExTField.setToolTipText("<html>Exclude matching columns from relationship analysis to simplify the generated graphs (-x).<br>For example: (book.isbn)|(borrower.address)</html>");
|
|
|
+
|
|
|
+ colExRelCBox.setText("Excluded relationships");
|
|
|
+ colExRelCBox.setToolTipText("<html>Set the columns to exclude from relationship diagrams where<br>the specified columns aren't directly referenced by the focal table. (-X)</html>");
|
|
|
+
|
|
|
+ stylePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(" Style: (Modify the .css to specify HTML fonts) "));
|
|
|
+ stylePanel.setToolTipText("Modify the .css to specify HTML fonts.");
|
|
|
+
|
|
|
+ charsetComBox.setEditable(true);
|
|
|
+ charsetComBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "", "UTF-8", "ISO-8859-1", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "ISO-8859-10", "ISO-8859-11", "ISO-8859-12", "ISO-8859-13", "ISO-8859-14", "ISO-8859-15" }));
|
|
|
+ charsetComBox.setToolTipText("Default by SchemaSpy: ISO-8859-1 (-charset)");
|
|
|
+
|
|
|
+ lbl_Charset.setText("Charset:");
|
|
|
+
|
|
|
+ lbl_Font.setText("Font Name:");
|
|
|
+
|
|
|
+ fontNameTField.setToolTipText("Default font: \"Helvetica\" (-font). Use the file font name instead of Real name, ej. times or timesb instead of \"Times New Roman\" or \"Times New Roman Bold\"");
|
|
|
+
|
|
|
+ lbl_fontSize.setText("Font size:");
|
|
|
+
|
|
|
+ fontSizeTField.setToolTipText("Fontsize default: 11 (-fontsize)");
|
|
|
+
|
|
|
+ lbl_css.setText("Style css file:");
|
|
|
+
|
|
|
+ cssPathTField.setToolTipText("css file default: schemaSpy.css (-css)");
|
|
|
+
|
|
|
+ jButton1.setText("Choose");
|
|
|
+ jButton1.setToolTipText("Click to choose the path to css file (-css)");
|
|
|
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ jButton1ActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout stylePanelLayout = new org.jdesktop.layout.GroupLayout(stylePanel);
|
|
|
+ stylePanel.setLayout(stylePanelLayout);
|
|
|
+ stylePanelLayout.setHorizontalGroup(
|
|
|
+ stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(stylePanelLayout.createSequentialGroup()
|
|
|
+ .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
|
|
|
+ .add(stylePanelLayout.createSequentialGroup()
|
|
|
+ .add(lbl_Charset)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(charsetComBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(lbl_Font)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(fontNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 136, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(lbl_fontSize)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(fontSizeTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 39, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .add(stylePanelLayout.createSequentialGroup()
|
|
|
+ .add(lbl_css)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(cssPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(jButton1)))
|
|
|
+ .addContainerGap(org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
|
+ );
|
|
|
+ stylePanelLayout.setVerticalGroup(
|
|
|
+ stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(stylePanelLayout.createSequentialGroup()
|
|
|
+ .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(lbl_Charset)
|
|
|
+ .add(charsetComBox, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_Font)
|
|
|
+ .add(fontNameTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_fontSize)
|
|
|
+ .add(fontSizeTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(stylePanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(lbl_css)
|
|
|
+ .add(cssPathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(jButton1)))
|
|
|
+ );
|
|
|
+
|
|
|
+ metaFilePathButton.setText("Choose"); // NOI18N
|
|
|
+ metaFilePathButton.setToolTipText("Click to choose the path to your Metafile (-meta). You can leave this blank."); // NOI18N
|
|
|
+ metaFilePathButton.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ metaFilePathButtonActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ metaFilePathTField.setToolTipText("Choose the path to your Metafile (-meta)");
|
|
|
+
|
|
|
+ lbl_OutDir1.setText("Metafile Path:"); // NOI18N
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout outputOptionsPanelLayout = new org.jdesktop.layout.GroupLayout(outputOptionsPanel);
|
|
|
+ outputOptionsPanel.setLayout(outputOptionsPanelLayout);
|
|
|
+ outputOptionsPanelLayout.setHorizontalGroup(
|
|
|
+ outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(outputOptionsPanelLayout.createSequentialGroup()
|
|
|
+ .add(38, 38, 38)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(lbl_Desc)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.LEADING, descTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 517, Short.MAX_VALUE)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.LEADING, outputOptionsPanelLayout.createSequentialGroup()
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_ColumnRegEx)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_TableExRegEx)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, lbl_TableRegEx))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
|
|
|
+ .add(tNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(tNameExRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(cNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 387, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(colExRelCBox))))
|
|
|
+ .add(stylePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .add(19, 19, 19))
|
|
|
+ .add(outputOptionsPanelLayout.createSequentialGroup()
|
|
|
+ .add(29, 29, 29)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
|
|
|
+ .add(lbl_Schema)
|
|
|
+ .add(lbl_OutDir)
|
|
|
+ .add(lbl_OutDir1))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(metaFilePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(schemaTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(pathOutputTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 309, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(metaFilePathButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
|
|
|
+ .add(outDirButton, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)
|
|
|
+ .add(allSchemasCBox, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
|
|
|
+ .add(28, 28, 28))
|
|
|
+ );
|
|
|
+ outputOptionsPanelLayout.setVerticalGroup(
|
|
|
+ outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(outputOptionsPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(pathOutputTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_OutDir)
|
|
|
+ .add(outDirButton))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(schemaTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(lbl_Schema)
|
|
|
+ .add(allSchemasCBox))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(metaFilePathTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .add(metaFilePathButton)
|
|
|
+ .add(lbl_OutDir1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE))
|
|
|
+ .add(29, 29, 29)
|
|
|
+ .add(lbl_Desc)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(descTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 118, Short.MAX_VALUE)
|
|
|
+ .add(18, 18, 18)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(lbl_TableRegEx)
|
|
|
+ .add(tNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(lbl_TableExRegEx)
|
|
|
+ .add(tNameExRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(outputOptionsPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
|
|
|
+ .add(lbl_ColumnRegEx)
|
|
|
+ .add(cNameRExTField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(colExRelCBox)
|
|
|
+ .add(18, 18, 18)
|
|
|
+ .add(stylePanel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+
|
|
|
+ jTabbedPane.addTab("Ouput Options", outputOptionsPanel);
|
|
|
+
|
|
|
+ outputPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1));
|
|
|
+
|
|
|
+ sSpyOutTArea.setEditable(false);
|
|
|
+ sSpyOutTArea.setLineWrap(true);
|
|
|
+ sSpyOutTArea.setWrapStyleWord(true);
|
|
|
+ sSpyOutTAreaScrollPane.setViewportView(sSpyOutTArea);
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout outputPanelLayout = new org.jdesktop.layout.GroupLayout(outputPanel);
|
|
|
+ outputPanel.setLayout(outputPanelLayout);
|
|
|
+ outputPanelLayout.setHorizontalGroup(
|
|
|
+ outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(outputPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(sSpyOutTAreaScrollPane)
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+ outputPanelLayout.setVerticalGroup(
|
|
|
+ outputPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(org.jdesktop.layout.GroupLayout.TRAILING, outputPanelLayout.createSequentialGroup()
|
|
|
+ .addContainerGap()
|
|
|
+ .add(sSpyOutTAreaScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 452, Short.MAX_VALUE)
|
|
|
+ .addContainerGap())
|
|
|
+ );
|
|
|
+
|
|
|
+ jTabbedPane.addTab("SchemaSpy Output", outputPanel);
|
|
|
+
|
|
|
+ fileMenu.setText("File"); // NOI18N
|
|
|
+
|
|
|
+ sParamMenuItem.setText("Save Parameters ..."); // NOI18N
|
|
|
+ sParamMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ sParamMenuItemActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ fileMenu.add(sParamMenuItem);
|
|
|
+
|
|
|
+ lParamMenuItem.setText("Load Parameters ..."); // NOI18N
|
|
|
+ lParamMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ lParamMenuItemActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ fileMenu.add(lParamMenuItem);
|
|
|
+
|
|
|
+ exitMenuItem.setText("Exit"); // NOI18N
|
|
|
+ exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ exitMenuItemActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ fileMenu.add(exitMenuItem);
|
|
|
+
|
|
|
+ mainMenuBar.add(fileMenu);
|
|
|
+
|
|
|
+ infoMenu.setText("Help"); // NOI18N
|
|
|
+
|
|
|
+ helpMenueAboutItem.setText("About"); // NOI18N
|
|
|
+ helpMenueAboutItem.addActionListener(new java.awt.event.ActionListener() {
|
|
|
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
|
|
|
+ helpMenueAboutItemActionPerformed(evt);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ infoMenu.add(helpMenueAboutItem);
|
|
|
+
|
|
|
+ mainMenuBar.add(infoMenu);
|
|
|
+
|
|
|
+ setJMenuBar(mainMenuBar);
|
|
|
+
|
|
|
+ org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
|
|
|
+ getContentPane().setLayout(layout);
|
|
|
+ layout.setHorizontalGroup(
|
|
|
+ layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(jToolBar, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE)
|
|
|
+ .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 579, Short.MAX_VALUE)
|
|
|
+ );
|
|
|
+ layout.setVerticalGroup(
|
|
|
+ layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
|
|
|
+ .add(layout.createSequentialGroup()
|
|
|
+ .add(jToolBar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
|
|
|
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
|
|
|
+ .add(jTabbedPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 504, Short.MAX_VALUE))
|
|
|
+ );
|
|
|
+
|
|
|
+ pack();
|
|
|
+ }// </editor-fold>//GEN-END:initComponents
|
|
|
+
|
|
|
+ private void sParamMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sParamMenuItemActionPerformed
|
|
|
+ operations.saveParam("Menu");
|
|
|
+}//GEN-LAST:event_sParamMenuItemActionPerformed
|
|
|
+
|
|
|
+ private void lParamMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lParamMenuItemActionPerformed
|
|
|
+ operations.loadParam("Menu");
|
|
|
+}//GEN-LAST:event_lParamMenuItemActionPerformed
|
|
|
+
|
|
|
+ private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitMenuItemActionPerformed
|
|
|
+ operations.systemEnd();
|
|
|
+}//GEN-LAST:event_exitMenuItemActionPerformed
|
|
|
+
|
|
|
+ private void helpMenueAboutItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpMenueAboutItemActionPerformed
|
|
|
+ operations.showAbout(this);
|
|
|
+}//GEN-LAST:event_helpMenueAboutItemActionPerformed
|
|
|
+
|
|
|
+ private void quickLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quickLoadButtonActionPerformed
|
|
|
+ operations.loadParam("Quick");
|
|
|
+}//GEN-LAST:event_quickLoadButtonActionPerformed
|
|
|
+
|
|
|
+ private void quickSaveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quickSaveButtonActionPerformed
|
|
|
+ operations.saveParam("Quick");
|
|
|
+ }//GEN-LAST:event_quickSaveButtonActionPerformed
|
|
|
+
|
|
|
+ private void clearFieldsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearFieldsButtonActionPerformed
|
|
|
+ operations.clearAllFields();
|
|
|
+ }//GEN-LAST:event_clearFieldsButtonActionPerformed
|
|
|
+
|
|
|
+ private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitButtonActionPerformed
|
|
|
+ operations.systemEnd();
|
|
|
+ }//GEN-LAST:event_exitButtonActionPerformed
|
|
|
+
|
|
|
+ private void saveParamFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveParamFileButtonActionPerformed
|
|
|
+ operations.saveParam("Menu");
|
|
|
+}//GEN-LAST:event_saveParamFileButtonActionPerformed
|
|
|
+
|
|
|
+ private void loadParamFileButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadParamFileButtonActionPerformed
|
|
|
+ operations.loadParam("Menu");
|
|
|
+ }//GEN-LAST:event_loadParamFileButtonActionPerformed
|
|
|
+
|
|
|
+ private void driverButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_driverButtonActionPerformed
|
|
|
+ operations.setPath("driverDirPath");
|
|
|
+}//GEN-LAST:event_driverButtonActionPerformed
|
|
|
+
|
|
|
+ private void sSpyPathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sSpyPathButtonActionPerformed
|
|
|
+ operations.setPath("sSpyFilePath");
|
|
|
+}//GEN-LAST:event_sSpyPathButtonActionPerformed
|
|
|
+
|
|
|
+ private void propertiePathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_propertiePathButtonActionPerformed
|
|
|
+ operations.setPath("propertiePath");
|
|
|
+}//GEN-LAST:event_propertiePathButtonActionPerformed
|
|
|
+
|
|
|
+ private void dbTypeCBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dbTypeCBoxActionPerformed
|
|
|
+ // nothing TODO here at the moment
|
|
|
+ }//GEN-LAST:event_dbTypeCBoxActionPerformed
|
|
|
+
|
|
|
+ private void outDirButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_outDirButtonActionPerformed
|
|
|
+ operations.setPath("outDirPath");
|
|
|
+}//GEN-LAST:event_outDirButtonActionPerformed
|
|
|
+
|
|
|
+ private void allSchemasCBoxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_allSchemasCBoxStateChanged
|
|
|
+ if (allSchemasCBox.isSelected())
|
|
|
+ schemaTField.setEnabled(false);
|
|
|
+ else schemaTField.setEnabled(true);
|
|
|
+}//GEN-LAST:event_allSchemasCBoxStateChanged
|
|
|
+
|
|
|
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
|
|
|
+ operations.setPath("cssPath");
|
|
|
+}//GEN-LAST:event_jButton1ActionPerformed
|
|
|
+
|
|
|
+ private void startSchemaSpyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startSchemaSpyButtonActionPerformed
|
|
|
+ jTabbedPane.setSelectedIndex(2);
|
|
|
+ operations.startSchemaSpy(gui);
|
|
|
+}//GEN-LAST:event_startSchemaSpyButtonActionPerformed
|
|
|
+
|
|
|
+ private void showOutputButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showOutputButtonActionPerformed
|
|
|
+ operations.showOutput();
|
|
|
+ }//GEN-LAST:event_showOutputButtonActionPerformed
|
|
|
+
|
|
|
+ private void metaFilePathButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_metaFilePathButtonActionPerformed
|
|
|
+ operations.setPath("metaFilePath");
|
|
|
+}//GEN-LAST:event_metaFilePathButtonActionPerformed
|
|
|
+
|
|
|
+ private void setLookandFeel() {
|
|
|
+ try {
|
|
|
+ UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
|
|
|
+ } catch(Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initParams() {
|
|
|
+ this.gui = this;
|
|
|
+ params = new Properties();
|
|
|
+ operations = new Operations();
|
|
|
+ sSpyPathTField = null;
|
|
|
+ dbDriverPTField = null;
|
|
|
+ pathOutputTField = null;
|
|
|
+ ToolTipManager.sharedInstance().setDismissDelay(12000);
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean getAutoLaunchInfo() {
|
|
|
+ boolean info = operations.getAutoLaunch();
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setOutputText(String outputText) {
|
|
|
+ operations.setText(outputText);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void startShowOutput() {
|
|
|
+ operations.showOutput();
|
|
|
+ }
|
|
|
+
|
|
|
+ private SchemaSpyGUIApp gui;
|
|
|
+ private Operations operations;
|
|
|
+ private Properties params;
|
|
|
+ private Build build;
|
|
|
+ private RunSchemaSpy op;
|
|
|
+ private Thread t1;
|
|
|
+ // Variables declaration - do not modify//GEN-BEGIN:variables
|
|
|
+ private javax.swing.JCheckBox aHTMLCBox;
|
|
|
+ private javax.swing.JCheckBox allSchemasCBox;
|
|
|
+ private javax.swing.JTextField cNameRExTField;
|
|
|
+ private javax.swing.JComboBox charsetComBox;
|
|
|
+ private javax.swing.JButton clearFieldsButton;
|
|
|
+ private javax.swing.JCheckBox colExRelCBox;
|
|
|
+ private javax.swing.JTextField cssPathTField;
|
|
|
+ private javax.swing.JTextField dbDriverPTField;
|
|
|
+ private javax.swing.JTextField dbHostTField;
|
|
|
+ private javax.swing.JTextField dbNameTField;
|
|
|
+ private javax.swing.JTextField dbPortTField;
|
|
|
+ private javax.swing.JPasswordField dbPwdField;
|
|
|
+ private javax.swing.JComboBox dbTypeCBox;
|
|
|
+ private javax.swing.JTextField dbUserTField;
|
|
|
+ private javax.swing.JTextArea descTArea;
|
|
|
+ private javax.swing.JScrollPane descTAreaScrollPane;
|
|
|
+ private javax.swing.JCheckBox dincFKCBox;
|
|
|
+ private javax.swing.JButton driverButton;
|
|
|
+ private javax.swing.JButton exitButton;
|
|
|
+ private javax.swing.JMenuItem exitMenuItem;
|
|
|
+ private javax.swing.JMenu fileMenu;
|
|
|
+ private javax.swing.JPanel flagsPanel;
|
|
|
+ private javax.swing.JTextField fontNameTField;
|
|
|
+ private javax.swing.JTextField fontSizeTField;
|
|
|
+ private javax.swing.JMenuItem helpMenueAboutItem;
|
|
|
+ private javax.swing.JCheckBox highQuCBox;
|
|
|
+ private javax.swing.JMenu infoMenu;
|
|
|
+ private javax.swing.JButton jButton1;
|
|
|
+ private javax.swing.JToolBar.Separator jSeparator1;
|
|
|
+ private javax.swing.JToolBar.Separator jSeparator2;
|
|
|
+ private javax.swing.JTabbedPane jTabbedPane;
|
|
|
+ private javax.swing.JToolBar jToolBar;
|
|
|
+ private javax.swing.JMenuItem lParamMenuItem;
|
|
|
+ private javax.swing.JLabel lbl_Charset;
|
|
|
+ private javax.swing.JLabel lbl_ColumnRegEx;
|
|
|
+ private javax.swing.JLabel lbl_DBHost;
|
|
|
+ private javax.swing.JLabel lbl_DBName;
|
|
|
+ private javax.swing.JLabel lbl_DBPort;
|
|
|
+ private javax.swing.JLabel lbl_DBPwd;
|
|
|
+ private javax.swing.JLabel lbl_DBType;
|
|
|
+ private javax.swing.JLabel lbl_DBUser;
|
|
|
+ private javax.swing.JLabel lbl_Desc;
|
|
|
+ private javax.swing.JLabel lbl_Font;
|
|
|
+ private javax.swing.JLabel lbl_OutDir;
|
|
|
+ private javax.swing.JLabel lbl_OutDir1;
|
|
|
+ private javax.swing.JLabel lbl_PathSchemSpy;
|
|
|
+ private javax.swing.JLabel lbl_PathtoDBdrvr;
|
|
|
+ private javax.swing.JLabel lbl_PropertiePath;
|
|
|
+ private javax.swing.JLabel lbl_Schema;
|
|
|
+ private javax.swing.JLabel lbl_TableExRegEx;
|
|
|
+ private javax.swing.JLabel lbl_TableRegEx;
|
|
|
+ private javax.swing.JLabel lbl_css;
|
|
|
+ private javax.swing.JLabel lbl_fontSize;
|
|
|
+ private javax.swing.JLabel lbl_prop;
|
|
|
+ private javax.swing.JButton loadParamFileButton;
|
|
|
+ private javax.swing.JCheckBox lowQuCBox;
|
|
|
+ private javax.swing.JMenuBar mainMenuBar;
|
|
|
+ private javax.swing.JButton metaFilePathButton;
|
|
|
+ private javax.swing.JTextField metaFilePathTField;
|
|
|
+ private javax.swing.JCheckBox noAdsCBox;
|
|
|
+ private javax.swing.JCheckBox noHTMLCBox;
|
|
|
+ private javax.swing.JCheckBox noLogoCBox;
|
|
|
+ private javax.swing.JCheckBox noRowsBox;
|
|
|
+ private javax.swing.JButton outDirButton;
|
|
|
+ private javax.swing.JPanel outputOptionsPanel;
|
|
|
+ private javax.swing.JPanel outputPanel;
|
|
|
+ private javax.swing.JTextField pathOutputTField;
|
|
|
+ private javax.swing.JButton propertiePathButton;
|
|
|
+ private javax.swing.JTextField propertiePathTField;
|
|
|
+ private javax.swing.JTextField propertiesTField;
|
|
|
+ private javax.swing.JPanel qualityPanel;
|
|
|
+ private javax.swing.JButton quickLoadButton;
|
|
|
+ private javax.swing.JButton quickSaveButton;
|
|
|
+ private javax.swing.JCheckBox railsCBox;
|
|
|
+ private javax.swing.JPanel reqParamPanel;
|
|
|
+ private javax.swing.JMenuItem sParamMenuItem;
|
|
|
+ private javax.swing.JTextArea sSpyOutTArea;
|
|
|
+ private javax.swing.JScrollPane sSpyOutTAreaScrollPane;
|
|
|
+ private javax.swing.JButton sSpyPathButton;
|
|
|
+ private javax.swing.JTextField sSpyPathTField;
|
|
|
+ private javax.swing.JButton saveParamFileButton;
|
|
|
+ private javax.swing.JCheckBox savePassCBox;
|
|
|
+ private javax.swing.JTextField schemaTField;
|
|
|
+ private javax.swing.JCheckBox showFinishCBox;
|
|
|
+ private javax.swing.JButton showOutputButton;
|
|
|
+ private javax.swing.JCheckBox singleSignCBox;
|
|
|
+ private javax.swing.JButton startSchemaSpyButton;
|
|
|
+ private javax.swing.JPanel stylePanel;
|
|
|
+ private javax.swing.JTextField tNameExRExTField;
|
|
|
+ private javax.swing.JTextField tNameRExTField;
|
|
|
+ // End of variables declaration//GEN-END:variables
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Class for Application Functions like saveParam etc.
|
|
|
+ * */
|
|
|
+ private class Operations {
|
|
|
+
|
|
|
+ public Operations () {
|
|
|
+ build = new Build();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Starts the schema scanning with SchemaSpy in a separate thread
|
|
|
+ * @param gui
|
|
|
+ */
|
|
|
+ private void startSchemaSpy(SchemaSpyGUIApp gui) {
|
|
|
+ String run_command;
|
|
|
+ String displ_command;
|
|
|
+
|
|
|
+ sSpyOutTArea.setText("");
|
|
|
+
|
|
|
+ if (checkPath()) {
|
|
|
+ run_command = build.buildCommand("run");
|
|
|
+ displ_command = build.buildCommand("displ");
|
|
|
+
|
|
|
+ op = new RunSchemaSpy(gui, run_command, displ_command);
|
|
|
+ t1 = new Thread(op);
|
|
|
+ t1.setName("SSpy");
|
|
|
+ t1.start();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Shows the about box
|
|
|
+ * @param frame
|
|
|
+ */
|
|
|
+ private void showAbout(JFrame frame) {
|
|
|
+ JDialog aboutBox = new AboutBox(frame);
|
|
|
+ aboutBox.setVisible(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Sets the text in Output Area
|
|
|
+ * @param text
|
|
|
+ */
|
|
|
+ public void setText (String text) {
|
|
|
+ sSpyOutTArea.append(text);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setPath (String button) {
|
|
|
+ String openDialogDefaultPath = ".";
|
|
|
+
|
|
|
+ if (button.equals("driverDirPath")) {
|
|
|
+ if (!dbDriverPTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(dbDriverPTField.getText());
|
|
|
+ openDialogDefaultPath = dbDriverPTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (button.equals("outDirPath")) {
|
|
|
+ if (!pathOutputTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(pathOutputTField.getText());
|
|
|
+ openDialogDefaultPath = pathOutputTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (button.equals("sSpyFilePath")) {
|
|
|
+ if (!sSpyPathTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(sSpyPathTField.getText());
|
|
|
+ openDialogDefaultPath = sSpyPathTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (button.equals("propertiePath")) {
|
|
|
+ if (!propertiePathTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(propertiePathTField.getText());
|
|
|
+ openDialogDefaultPath = propertiePathTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (button.equals("cssPath")) {
|
|
|
+ if (!cssPathTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(cssPathTField.getText());
|
|
|
+ openDialogDefaultPath = cssPathTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (button.equals("metaFilePath")) {
|
|
|
+ if (!metaFilePathTField.getText().equals("")) {
|
|
|
+ //openDialogDefaultPath = makePathUsable(cssPathTField.getText());
|
|
|
+ openDialogDefaultPath = metaFilePathTField.getText();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ JFileChooser openDialog = new JFileChooser(openDialogDefaultPath);
|
|
|
+
|
|
|
+ if (button.equals("outDirPath")) {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
|
|
+ }
|
|
|
+ else if (button.equals("cssPath")) {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ openDialog.setFileFilter(getCssFilter());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ }
|
|
|
+ /*
|
|
|
+ if (button.equals("driverDirPath")) {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ }
|
|
|
+ if (button.equals("sSpyFilePath")) {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ }
|
|
|
+ if (button.equals("propertiePath")) {
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ }
|
|
|
+ */
|
|
|
+ openDialog.setDialogType(JFileChooser.OPEN_DIALOG);
|
|
|
+
|
|
|
+ int returnVal = openDialog.showOpenDialog(gui);
|
|
|
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
|
+ String path = openDialog.getSelectedFile().getAbsolutePath();
|
|
|
+ if (button.equals("driverDirPath")) {
|
|
|
+ dbDriverPTField.setText(path);
|
|
|
+ }
|
|
|
+ if (button.equals("outDirPath")) {
|
|
|
+ pathOutputTField.setText(path);
|
|
|
+ }
|
|
|
+ if (button.equals("sSpyFilePath")) {
|
|
|
+ sSpyPathTField.setText(path);
|
|
|
+ }
|
|
|
+ if (button.equals("propertiePath")) {
|
|
|
+ propertiePathTField.setText(path);
|
|
|
+ }
|
|
|
+ if (button.equals("cssPath")) {
|
|
|
+ cssPathTField.setText(path);
|
|
|
+ }
|
|
|
+ if (button.equals("metaFilePath")) {
|
|
|
+ metaFilePathTField.setText(path);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getCBoxString (JCheckBox cBox) {
|
|
|
+ if (cBox.isSelected()) {
|
|
|
+ return "true";
|
|
|
+ } else {
|
|
|
+ return "false";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private FileFilter getXmlFilter() {
|
|
|
+ FileFilter ff = new FileFilter() {
|
|
|
+ @Override
|
|
|
+ public boolean accept(File f) {
|
|
|
+ return f.getName().toLowerCase().endsWith(".xml")
|
|
|
+ || f.isDirectory();
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public String getDescription() {
|
|
|
+ return "XML Files";
|
|
|
+ }
|
|
|
+ };
|
|
|
+ return ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ private FileFilter getCssFilter() {
|
|
|
+ FileFilter ff = new FileFilter() {
|
|
|
+ @Override
|
|
|
+ public boolean accept(File f) {
|
|
|
+ return f.getName().toLowerCase().endsWith(".css")
|
|
|
+ || f.isDirectory();
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public String getDescription() {
|
|
|
+ return "CSS Files";
|
|
|
+ }
|
|
|
+ };
|
|
|
+ return ff;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveParam(String option) {
|
|
|
+ params.setProperty("dbTypeCBox", (String)dbTypeCBox.getSelectedItem());
|
|
|
+ params.setProperty("dbHostTField", dbHostTField.getText());
|
|
|
+ params.setProperty("dbNameTField", dbNameTField.getText());
|
|
|
+ params.setProperty("dbPortTField", dbPortTField.getText());
|
|
|
+ params.setProperty("dbUserTField", dbUserTField.getText());
|
|
|
+ // Save password
|
|
|
+ if (savePassCBox.isSelected()){
|
|
|
+ params.setProperty("dbPwdField", String.valueOf(dbPwdField.getPassword()));
|
|
|
+ }
|
|
|
+ else params.setProperty("dbPwdField", "");
|
|
|
+
|
|
|
+ params.setProperty("dbDriverPTField", dbDriverPTField.getText());
|
|
|
+ params.setProperty("pathOutputTField", pathOutputTField.getText());
|
|
|
+ params.setProperty("sSpyPathTField", sSpyPathTField.getText());
|
|
|
+
|
|
|
+ params.setProperty("propertiePathTField", propertiePathTField.getText());
|
|
|
+ params.setProperty("propertiesTField", propertiesTField.getText());
|
|
|
+ params.setProperty("metaFilePathTField", metaFilePathTField.getText());
|
|
|
+
|
|
|
+ params.setProperty("schemaTField", schemaTField.getText());
|
|
|
+ params.setProperty("allSchemasCBox", getCBoxString(allSchemasCBox));
|
|
|
+ params.setProperty("descTArea", descTArea.getText().replace("\"", "'"));
|
|
|
+ params.setProperty("tNameRExTField", tNameRExTField.getText());
|
|
|
+ params.setProperty("tNameExRExTField", tNameExRExTField.getText());
|
|
|
+ params.setProperty("cNameRExTField", cNameRExTField.getText());
|
|
|
+ params.setProperty("colExRelCBox", getCBoxString(colExRelCBox));
|
|
|
+
|
|
|
+ params.setProperty("charsetComBox", (String)charsetComBox.getSelectedItem());
|
|
|
+ params.setProperty("fontSizeTField", fontSizeTField.getText());
|
|
|
+ params.setProperty("fontNameTField", fontNameTField.getText());
|
|
|
+ params.setProperty("cssPathTField", cssPathTField.getText());
|
|
|
+
|
|
|
+ params.setProperty("aHTMLCBox", getCBoxString(aHTMLCBox));
|
|
|
+ params.setProperty("noRowsBox", getCBoxString(noRowsBox));
|
|
|
+ params.setProperty("dincFKCBox", getCBoxString(dincFKCBox));
|
|
|
+ params.setProperty("noHTMLCBox", getCBoxString(noHTMLCBox));
|
|
|
+ params.setProperty("railsCBox", getCBoxString(railsCBox));
|
|
|
+ // TODO: Single Sign-On (-sso).
|
|
|
+ //params.setProperty("singleSignCBox", getCBoxString(singleSignCBox));
|
|
|
+ // Quality Images
|
|
|
+ params.setProperty("highQuCBox", getCBoxString(highQuCBox));
|
|
|
+ params.setProperty("lowQuCBox", getCBoxString(lowQuCBox));
|
|
|
+ //----------
|
|
|
+ params.setProperty("noAdsCBox", getCBoxString(noAdsCBox));
|
|
|
+ params.setProperty("noLogoCBox", getCBoxString(noLogoCBox));
|
|
|
+
|
|
|
+ params.setProperty("savePassCBox", getCBoxString(savePassCBox));
|
|
|
+ params.setProperty("showFinishCBox", getCBoxString(showFinishCBox));
|
|
|
+
|
|
|
+ String name = "", coment = "";
|
|
|
+ if (option.equals("Quick")) {
|
|
|
+ name = "SSpyGUIQuick.xml";
|
|
|
+ coment = "Saved parameters for SchemaSpyGUI. Load it with: Quick Load Parameters";
|
|
|
+ }
|
|
|
+ // Save JFileChooser
|
|
|
+ else if (option.equals("Menu")) {
|
|
|
+ JFileChooser saveDialog = new JFileChooser(".");
|
|
|
+ saveDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ saveDialog.setDialogType(JFileChooser.SAVE_DIALOG);
|
|
|
+ saveDialog.setDialogTitle("Save Parameters ...");
|
|
|
+ saveDialog.setFileFilter(getXmlFilter());
|
|
|
+
|
|
|
+ int returnVal = saveDialog.showOpenDialog(gui);
|
|
|
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
|
+ name = saveDialog.getSelectedFile().getAbsolutePath();
|
|
|
+ coment = "Saved parameters for SchemaSpyGUI. Load it with Load Menu";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!name.equals("")) {
|
|
|
+ // Add xml extension
|
|
|
+ if (!name.endsWith(".xml"))
|
|
|
+ name += ".xml";
|
|
|
+ try {
|
|
|
+ FileOutputStream fos = new FileOutputStream(name);
|
|
|
+ params.storeToXML(fos, coment);
|
|
|
+ fos.close();
|
|
|
+ } catch (IOException ioe) {
|
|
|
+ ioe.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void loadParam(String option) {
|
|
|
+ String name = "";
|
|
|
+ if (option.equals("Quick")) {
|
|
|
+ name = "SSpyGUIQuick.xml";
|
|
|
+ }
|
|
|
+ else if (option.equals("Menu")) {
|
|
|
+ JFileChooser openDialog = new JFileChooser(".");
|
|
|
+ openDialog.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
|
|
+ openDialog.setDialogType(JFileChooser.OPEN_DIALOG);
|
|
|
+ openDialog.setDialogTitle("Load Parameters ...");
|
|
|
+ openDialog.setFileFilter(getXmlFilter());
|
|
|
+
|
|
|
+ int returnVal = openDialog.showOpenDialog(gui);
|
|
|
+ if (returnVal == JFileChooser.APPROVE_OPTION) {
|
|
|
+ name = openDialog.getSelectedFile().getAbsolutePath();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ File file = new File(name);
|
|
|
+ if (file.exists()) {
|
|
|
+ try {
|
|
|
+ FileInputStream in = new FileInputStream(file);
|
|
|
+ params.loadFromXML(in);
|
|
|
+ in.close();
|
|
|
+ clearAllFields();
|
|
|
+ insertInFields();
|
|
|
+ } catch (IOException ioe) {
|
|
|
+ ioe.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void insertInFields () {
|
|
|
+ dbTypeCBox.setSelectedItem(params.getProperty("dbTypeCBox"));
|
|
|
+
|
|
|
+ dbHostTField.setText(params.getProperty("dbHostTField"));
|
|
|
+ dbNameTField.setText(params.getProperty("dbNameTField"));
|
|
|
+ dbPortTField.setText(params.getProperty("dbPortTField"));
|
|
|
+ dbUserTField.setText(params.getProperty("dbUserTField"));
|
|
|
+ // Load Password
|
|
|
+ dbPwdField.setText(params.getProperty("dbPwdField"));
|
|
|
+ dbDriverPTField.setText(params.getProperty("dbDriverPTField"));
|
|
|
+ pathOutputTField.setText(params.getProperty("pathOutputTField"));
|
|
|
+ sSpyPathTField.setText(params.getProperty("sSpyPathTField"));
|
|
|
+
|
|
|
+ propertiePathTField.setText(params.getProperty("propertiePathTField"));
|
|
|
+ propertiesTField.setText(params.getProperty("propertiesTField"));
|
|
|
+ metaFilePathTField.setText(params.getProperty("metaFilePathTField"));
|
|
|
+
|
|
|
+ schemaTField.setText(params.getProperty("schemaTField"));
|
|
|
+ if (params.getProperty("allSchemasCBox").equals("true")) {allSchemasCBox.setSelected(true);}
|
|
|
+ descTArea.setText(params.getProperty("descTArea"));
|
|
|
+ tNameRExTField.setText(params.getProperty("tNameRExTField"));
|
|
|
+ tNameExRExTField.setText(params.getProperty("tNameExRExTField"));
|
|
|
+ cNameRExTField.setText(params.getProperty("cNameRExTField"));
|
|
|
+ if (params.getProperty("colExRelCBox").equals("true")) {colExRelCBox.setSelected(true);}
|
|
|
+
|
|
|
+ charsetComBox.setSelectedItem(params.getProperty("charsetComBox"));
|
|
|
+ fontSizeTField.setText(params.getProperty("fontSizeTField"));
|
|
|
+ fontNameTField.setText(params.getProperty("fontNameTField"));
|
|
|
+ cssPathTField.setText(params.getProperty("cssPathTField"));
|
|
|
+
|
|
|
+ if (params.getProperty("aHTMLCBox").equals("true")) {aHTMLCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("noRowsBox").equals("true")) {noRowsBox.setSelected(true);}
|
|
|
+ if (params.getProperty("dincFKCBox").equals("true")) {dincFKCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("noHTMLCBox").equals("true")) {noHTMLCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("railsCBox").equals("true")) {railsCBox.setSelected(true);}
|
|
|
+ // TODO: Single Sign-On (-sso).
|
|
|
+ //if (params.getProperty("singleSignCBox").equals("true")) {singleSignCBox.setSelected(true);}
|
|
|
+ // Quality Images
|
|
|
+ if (params.getProperty("highQuCBox").equals("true")) {highQuCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("lowQuCBox").equals("true")) {lowQuCBox.setSelected(true);}
|
|
|
+ //---------
|
|
|
+ if (params.getProperty("noAdsCBox").equals("true")) {noAdsCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("noLogoCBox").equals("true")) {noLogoCBox.setSelected(true);}
|
|
|
+
|
|
|
+ if (params.getProperty("savePassCBox").equals("true")) {savePassCBox.setSelected(true);}
|
|
|
+ if (params.getProperty("showFinishCBox").equals("true")) {showFinishCBox.setSelected(true);}
|
|
|
+ }
|
|
|
+
|
|
|
+ private void clearAllFields() {
|
|
|
+ dbTypeCBox.setSelectedItem("");
|
|
|
+
|
|
|
+ dbHostTField.setText("");
|
|
|
+ dbNameTField.setText("");
|
|
|
+ dbPortTField.setText("");
|
|
|
+ dbUserTField.setText("");
|
|
|
+ // Password
|
|
|
+ dbPwdField.setText("");
|
|
|
+ dbDriverPTField.setText("");
|
|
|
+ pathOutputTField.setText("");
|
|
|
+ sSpyPathTField.setText("");
|
|
|
+
|
|
|
+ propertiePathTField.setText("");
|
|
|
+ propertiesTField.setText("");
|
|
|
+ metaFilePathTField.setText("");
|
|
|
+
|
|
|
+ schemaTField.setText("");
|
|
|
+ allSchemasCBox.setSelected(false);
|
|
|
+ descTArea.setText("");
|
|
|
+ tNameRExTField.setText("");
|
|
|
+ tNameExRExTField.setText("");
|
|
|
+ cNameRExTField.setText("");
|
|
|
+ colExRelCBox.setSelected(false);
|
|
|
+
|
|
|
+ charsetComBox.setSelectedIndex(0);
|
|
|
+ fontSizeTField.setText("");
|
|
|
+ fontNameTField.setText("");
|
|
|
+ cssPathTField.setText("");
|
|
|
+
|
|
|
+ aHTMLCBox.setSelected(false);
|
|
|
+ noRowsBox.setSelected(false);
|
|
|
+ dincFKCBox.setSelected(false);
|
|
|
+ noHTMLCBox.setSelected(false);
|
|
|
+ railsCBox.setSelected(false);
|
|
|
+ // TODO: Single Sign-On (-sso).
|
|
|
+ //singleSignCBox.setSelected(false);
|
|
|
+ // Quality Images
|
|
|
+ highQuCBox.setSelected(false);
|
|
|
+ lowQuCBox.setSelected(false);
|
|
|
+ //--------------------------
|
|
|
+ noAdsCBox.setSelected(false);
|
|
|
+ noLogoCBox.setSelected(false);
|
|
|
+
|
|
|
+ savePassCBox.setSelected(false);
|
|
|
+ showFinishCBox.setSelected(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String makePathUsable(String s) {
|
|
|
+ //s.replace("\\","\\\\"); // This don't work is: s = s.replace("\\","\\\\");
|
|
|
+ // Add " for directories and files with spaces
|
|
|
+
|
|
|
+ //Bug: Linux doesn't work with "s"
|
|
|
+ //Error: Unable to access jarfile
|
|
|
+ //simple hack but no support for directories with
|
|
|
+ //spaces currently under Linux
|
|
|
+ if (isWindows()) {s = "\"" + s + "\"";}
|
|
|
+ else{}
|
|
|
+ return s;
|
|
|
+ }
|
|
|
+
|
|
|
+ //TODO: copy from isWindows() of BrowserOutputStart ... pooling?
|
|
|
+ public boolean isWindows() {
|
|
|
+ String os = System.getProperty("os.name");
|
|
|
+ if ( os != null && os.startsWith("Windows")) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean checkPath() {
|
|
|
+ boolean bool = false;
|
|
|
+ File sSpyPath = new File(sSpyPathTField.getText());
|
|
|
+ File dbDriverPath = new File(dbDriverPTField.getText());
|
|
|
+ File outDirPath = new File(pathOutputTField.getText());
|
|
|
+
|
|
|
+ if (sSpyPath.exists()) {
|
|
|
+ bool = true;
|
|
|
+ } else {
|
|
|
+ setText("This is not a valid path to SchemaSpy: " + sSpyPathTField.getText()+ "\n");
|
|
|
+ if (!sSpyPath.canRead()) {
|
|
|
+ setText("Jar File ist not readable!\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dbDriverPTField.getText().equals("")) {
|
|
|
+ setText("You have not specified a driver path. SchemaSpy will try to \n" +
|
|
|
+ "use the path in internal .properties file.\n" +
|
|
|
+ "It's possible that these will not work. In this case, please specify a path.\n");
|
|
|
+ } else {
|
|
|
+ if (!dbDriverPath.exists() || !dbDriverPath.canRead()) {
|
|
|
+ if (bool) {bool = false;}
|
|
|
+ setText("This is not a valid path to the DB driver: " + dbDriverPTField.getText() + "\n");
|
|
|
+ if (!dbDriverPath.canRead()) {
|
|
|
+ setText("File ist not readable!\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // SchemaSpy Creates a directory if not exist
|
|
|
+ if (!pathOutputTField.getText().equals("") && !outDirPath.exists()) { // && !outDirPath.canWrite()) {
|
|
|
+ //if (bool){bool = false;}
|
|
|
+ setText("This is not a valid path for the output directory, but SchemaSpy will create it: " + pathOutputTField.getText() + "\n");
|
|
|
+ if (!sSpyPath.canWrite()) {
|
|
|
+ if (bool){bool = false;}
|
|
|
+ setText("SchemaSpy can not write!\n");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bool;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String buildOutputDir () {
|
|
|
+ String dirName = dbUserTField.getText() + "_" + dbNameTField.getText()
|
|
|
+ + "_" + schemaTField.getText().replace(",", "-");
|
|
|
+ File dir = new File(dirName);
|
|
|
+ if(!dir.exists()) {
|
|
|
+ dir.mkdir();
|
|
|
+ }
|
|
|
+ String dirPath = dir.getAbsolutePath();
|
|
|
+ pathOutputTField.setText(dirPath);
|
|
|
+ return dirPath;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void showOutput() {
|
|
|
+ if (!pathOutputTField.getText().equals("")) {
|
|
|
+ String url = pathOutputTField.getText() + File.separator + "index.html";
|
|
|
+ BrowserOutputStart show = new BrowserOutputStart(url);
|
|
|
+ show.launch();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Try are the Threads launched by the program are alive
|
|
|
+ * @return Alive
|
|
|
+ */
|
|
|
+ private boolean isThreadAlive() {
|
|
|
+ Boolean tAlive = false;
|
|
|
+ if (t1 != null) {
|
|
|
+ // Search into alive threads the SchemaSpy threads.
|
|
|
+ Set<Thread> set = Thread.getAllStackTraces().keySet();
|
|
|
+ for (Thread at : set) {
|
|
|
+ if (at.getName().equals("SSpy")||
|
|
|
+ at.getName().equals("terrOut") ||
|
|
|
+ at.getName().equals("tinOut")) {
|
|
|
+ if (at.isAlive()) {
|
|
|
+ tAlive = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return tAlive;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean getAutoLaunch() {
|
|
|
+ if (showFinishCBox.isSelected())
|
|
|
+ return true;
|
|
|
+ else return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void systemEnd() {
|
|
|
+ // If some alive show Warning message
|
|
|
+ if (isThreadAlive()) {
|
|
|
+ int returnVal = JOptionPane.showConfirmDialog(gui,
|
|
|
+ "SchemaSpy is Running.\n" +
|
|
|
+ "Closing SchemaSpyGUI do NOT finalize the SchemaSpy prosses.\n" +
|
|
|
+ "Do you really want close SchemaSpyGUI?\n",
|
|
|
+ "Exit SchemaSpyGUI",
|
|
|
+ JOptionPane.WARNING_MESSAGE,
|
|
|
+ JOptionPane.YES_NO_OPTION);
|
|
|
+ if (returnVal == JOptionPane.YES_OPTION) {
|
|
|
+ System.exit(0);
|
|
|
+ } // else do nothing
|
|
|
+ }
|
|
|
+ // No threads alive
|
|
|
+ else {
|
|
|
+ System.exit(0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Inner Class with Methods to build the command line for SchemaSpy
|
|
|
+ */
|
|
|
+ private class Build {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Build the commad line to launch SchemaSpy
|
|
|
+ * @param type "displ" returns the Command line without password
|
|
|
+ * @return Command line string for SchemaSpy
|
|
|
+ */
|
|
|
+ private String buildCommand (String type) {
|
|
|
+ //first the path to SchemaSpy.jar
|
|
|
+ String s = "java -jar " + operations.makePathUsable(sSpyPathTField.getText());
|
|
|
+
|
|
|
+ //second the path to the driver for the selected DB type
|
|
|
+ if (!dbDriverPTField.getText().equals("")) {
|
|
|
+ s = s + " -dp " + operations.makePathUsable(dbDriverPTField.getText());
|
|
|
+ }
|
|
|
+
|
|
|
+ //then the needed database type
|
|
|
+ if (!((String)dbTypeCBox.getSelectedItem()).equals("")) {
|
|
|
+ s = s + " -t " + (String)dbTypeCBox.getSelectedItem();
|
|
|
+ }
|
|
|
+
|
|
|
+ //and now the necessary database specific informations
|
|
|
+ //e.g. database name, schema, user, host etc.
|
|
|
+ if (!dbNameTField.getText().equals("")) {
|
|
|
+ s = s + " -db " + dbNameTField.getText();
|
|
|
+ }
|
|
|
+
|
|
|
+ // Select schemas
|
|
|
+ if (allSchemasCBox.isSelected()) {
|
|
|
+ s = s + " -all ";
|
|
|
+ } else if (!schemaTField.getText().equals("")) {
|
|
|
+ // Try remove space before coma
|
|
|
+ String sc = schemaTField.getText().replace(", ", ",");
|
|
|
+ String[] schemas = sc.split(",");
|
|
|
+ if (schemas.length == 1) {
|
|
|
+ s = s + " -s " + sc;
|
|
|
+ } else {
|
|
|
+ s = s + " -schemas \"" + sc + "\"";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!dbHostTField.getText().equals("")) {
|
|
|
+ s = s + " -host " + dbHostTField.getText();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!dbPortTField.getText().equals("")) {
|
|
|
+ s = s + " -port " + dbPortTField.getText();
|
|
|
+ }
|
|
|
+ // TODO: Single Sign-On (-sso).
|
|
|
+ if (!dbUserTField.getText().equals("")) {
|
|
|
+ s = s + " -u " + dbUserTField.getText();
|
|
|
+ }
|
|
|
+
|
|
|
+ //now the optional informations like RegEx for columns, tables, etc
|
|
|
+ // Properties database connection
|
|
|
+ if (!propertiePathTField.getText().equals("")) {
|
|
|
+ s = s + " -connprops " + operations.makePathUsable(propertiePathTField.getText());
|
|
|
+ }
|
|
|
+ if (!propertiesTField.getText().equals("")) {
|
|
|
+ s = s + " -connprops " + "\"" + propertiesTField.getText() + "\"";
|
|
|
+ }
|
|
|
+ if (!metaFilePathTField.getText().equals("")) {
|
|
|
+ s = s + " -meta " + operations.makePathUsable(metaFilePathTField.getText());
|
|
|
+ }
|
|
|
+
|
|
|
+ // Columns Exclusions
|
|
|
+ if (!cNameRExTField.getText().equals("")) {
|
|
|
+ if (colExRelCBox.isSelected()) {
|
|
|
+ s = s + " -X " + operations.makePathUsable(cNameRExTField.getText());
|
|
|
+ } else {
|
|
|
+ s = s + " -x " + operations.makePathUsable(cNameRExTField.getText());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Tables inclusions
|
|
|
+ if (!tNameRExTField.getText().equals("")) {
|
|
|
+ s = s + " -i " + operations.makePathUsable(tNameRExTField.getText());
|
|
|
+ }
|
|
|
+ // Tables Exclusions
|
|
|
+ if (!tNameExRExTField.getText().equals("")) {
|
|
|
+ s = s + " -I " + "\"" + tNameExRExTField.getText() + "\"";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!((String)charsetComBox.getSelectedItem()).equals("")) {
|
|
|
+ s = s + " -charset " + (String)charsetComBox.getSelectedItem();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!(fontSizeTField.getText().equals(""))) {
|
|
|
+ s = s + " -fontsize " + fontSizeTField.getText();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!(fontNameTField.getText().equals(""))) {
|
|
|
+ s = s + " -font " + "\"" + fontNameTField.getText() + "\"";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!(cssPathTField.getText().equals(""))) {
|
|
|
+ s = s + " -css " + operations.makePathUsable(cssPathTField.getText());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!descTArea.getText().equals("")) {
|
|
|
+ // For if someone put " instead of '
|
|
|
+ s = s + " -desc " + operations.makePathUsable(descTArea.getText().replace("\"", "'"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!pathOutputTField.getText().equals("")) {
|
|
|
+ s = s + " -o " + operations.makePathUsable(pathOutputTField.getText());
|
|
|
+ } else {
|
|
|
+ s = s + " -o " + operations.makePathUsable(operations.buildOutputDir());
|
|
|
+ }
|
|
|
+
|
|
|
+ //now we insert the flags (e.g. Allow HTML in comments) if there are
|
|
|
+ //some checked
|
|
|
+ if (aHTMLCBox.isSelected()) {
|
|
|
+ s = s + " -ahic ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (noRowsBox.isSelected()) {
|
|
|
+ s = s + " -norows ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dincFKCBox.isSelected()) {
|
|
|
+ s = s + " -noimplied ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (noHTMLCBox.isSelected()) {
|
|
|
+ s = s + " -nohtml ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (railsCBox.isSelected()) {
|
|
|
+ s = s + " -rails ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (highQuCBox.isSelected()) {
|
|
|
+ s = s + " -hq ";
|
|
|
+ }
|
|
|
+ if (lowQuCBox.isSelected()) {
|
|
|
+ s = s + " -lq ";
|
|
|
+ }
|
|
|
+
|
|
|
+ //---------------------------
|
|
|
+ if (noAdsCBox.isSelected()) {
|
|
|
+ s = s + " -noads ";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (noLogoCBox.isSelected()) {
|
|
|
+ s = s + " -nologo ";
|
|
|
+ }
|
|
|
+
|
|
|
+ //last but not least String with no password if "displ" is selected
|
|
|
+ //else String + PWD for starting SchemaSpy
|
|
|
+ if (type.equals("displ")) {
|
|
|
+ return s;
|
|
|
+ } else {
|
|
|
+ if (!String.valueOf(dbPwdField.getPassword()).equals("")) {
|
|
|
+ s = s + " -p " + String.valueOf(dbPwdField.getPassword());
|
|
|
+ }
|
|
|
+ return s;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|