Revision: 3316
Author: [email protected]
Date: Sun Feb 21 04:10:12 2010
Log: Make Liquibase XML an explicit option in the DDL generation dialog and Compare DM dialog
http://code.google.com/p/power-architect/source/detail?r=3316

Modified:
 /trunk/pl.regression.ini
 /trunk/src/ca/sqlpower/architect/swingui/CompareDMPanel.java
 /trunk/src/ca/sqlpower/architect/swingui/CompareDMSettings.java
 /trunk/src/ca/sqlpower/architect/swingui/DDLExportPanel.java
 /trunk/src/ca/sqlpower/architect/swingui/action/ExportDDLAction.java
 /trunk/src/ca/sqlpower/architect/swingui/messages.properties
 /trunk/src/ca/sqlpower/architect/swingui/messages_de.properties

=======================================
--- /trunk/pl.regression.ini    Thu Aug  9 08:12:00 2007
+++ /trunk/pl.regression.ini    Sun Feb 21 04:10:12 2010
@@ -36,3 +36,39 @@
 DSN=
 JDBC URL=jdbc:hsqldb:mem:architest
 UID=sa
+[Databases_2]
+Logical=Testing data source
+Connection Type
+[Databases_3]
+Logical=new Testing data source
+Connection Type
+[Databases_4]
+Logical=new new Testing data source
+Connection Type
+[Databases_5]
+Logical=new new new Testing data source
+Connection Type
+[Databases_6]
+Logical=new new new new Testing data source
+Connection Type
+[Databases_7]
+Logical=new new new new new Testing data source
+Connection Type
+[Databases_8]
+Logical=new new new new new new Testing data source
+Connection Type
+[Databases_9]
+Logical=new new new new new new new Testing data source
+Connection Type
+[Databases_10]
+Logical=new new new new new new new new Testing data source
+Connection Type
+[Databases_11]
+Logical=new new new new new new new new new Testing data source
+Connection Type
+[Databases_12]
+Logical=new new new new new new new new new new Testing data source
+Connection Type
+[Databases_13]
+Logical=new new new new new new new new new new new Testing data source
+Connection Type
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/CompareDMPanel.java Fri Feb 12 15:21:05 2010 +++ /trunk/src/ca/sqlpower/architect/swingui/CompareDMPanel.java Sun Feb 21 04:10:12 2010
@@ -154,6 +154,8 @@

        private static final String OUTPUT_SQL = "OUTPUT_SQL"; //$NON-NLS-1$

+ private static final String OUTPUT_LIQUIBASE = "OUTPUT_LIQUIBASE"; //$NON-NLS-1$
+
public static final String DBCS_DIALOG_TITLE = Messages.getString("CompareDMPanel.dbcsDialogTitle"); //$NON-NLS-1$

        private JProgressBar progressBar;
@@ -169,6 +171,8 @@
        private JRadioButton sqlButton;

        private JRadioButton englishButton;
+
+       private JRadioButton liquibaseButton;

     private JCheckBox showNoChanges;

@@ -790,6 +794,11 @@
                        builder.nextLine();

                }
+
+
+               public boolean isModelWithUUID() {
+                       return playPenRadio.isSelected() || 
loadRadio.isSelected();
+               }

                /**
                 * Figures out which SQLObject holds the tables we want to 
compare, and
@@ -1015,7 +1024,13 @@
                englishButton.setActionCommand(OUTPUT_ENGLISH);
                englishButton.setSelected(true);
                englishButton.addActionListener(listener);
-
+
+               liquibaseButton = new JRadioButton();
+               liquibaseButton.setName(OUTPUT_LIQUIBASE); //$NON-NLS-1$
+               liquibaseButton.setActionCommand(OUTPUT_LIQUIBASE);
+               liquibaseButton.setSelected(false);
+               liquibaseButton.addActionListener(listener);
+
         showNoChanges = new JCheckBox();
         showNoChanges.setName("showNoChanges"); //$NON-NLS-1$
         showNoChanges.setSelected(false);
@@ -1024,6 +1039,7 @@
                ButtonGroup outputGroup = new ButtonGroup();
                outputGroup.add(sqlButton);
                outputGroup.add(englishButton);
+               outputGroup.add(liquibaseButton);

                startCompareAction = new StartCompareAction();
                startCompareAction.setEnabled(false);
@@ -1089,6 +1105,13 @@
ddlTypePanel.add(new JLabel(Messages.getString("CompareDMPanel.makeOlderLookLikeNewer")), BorderLayout.EAST); //$NON-NLS-1$
                builder.append(ddlTypePanel, 3);

+               builder.appendRow(builder.getLineGapSpec());
+               builder.appendRow("pref"); //$NON-NLS-1$
+               builder.nextLine(2);
+               builder.nextColumn(2);
+               builder.append(liquibaseButton);
+ builder.append(Messages.getString("CompareDMPanel.liqubaseScript")); //$NON-NLS-1$
+
                builder.appendRow(builder.getLineGapSpec());
                builder.appendRow("pref"); //$NON-NLS-1$
                builder.nextLine(2);
@@ -1153,6 +1176,9 @@
                        if (e.getActionCommand().equals(OUTPUT_SQL)) {
                                cb.setEnabled(true);
                 showNoChanges.setEnabled(false);
+                       } else if 
(e.getActionCommand().equals(OUTPUT_LIQUIBASE)) {
+                               cb.setEnabled(false);
+                showNoChanges.setEnabled(false);
                        } else {
                                cb.setEnabled(false);
                 showNoChanges.setEnabled(true);
@@ -1176,6 +1202,7 @@
                        startCompareAction.setEnabled(false);
                        sqlButton.setEnabled(false);
                        englishButton.setEnabled(false);
+                       liquibaseButton.setEnabled(false);
                        if (sqlButton.isSelected()) {
                            sqlTypeDropdown.setEnabled(false);
                        } else {
@@ -1205,6 +1232,7 @@
                                        targetTables = new 
ArrayList<SQLTable>();
                                }

+                               boolean useUUID = source.isModelWithUUID() && 
target.isModelWithUUID();
                                sourceComp = new CompareSQL(sourceTables,
                                                targetTables);
                                targetComp = new CompareSQL(targetTables,
@@ -1290,6 +1318,7 @@
                private void reenableGUIComponents() {
                    sqlButton.setEnabled(true);
             englishButton.setEnabled(true);
+                       liquibaseButton.setEnabled(true);
             if (sqlButton.isSelected()) {
                 sqlTypeDropdown.setEnabled(true);
             } else {
@@ -1307,7 +1336,13 @@
        public void copySettingsToProject() {
                CompareDMSettings s = session.getCompareDMSettings();
                s.setSaveFlag(true);
- s.setOutputFormat(englishButton.isSelected()?CompareDMSettings.OutputFormat.ENGLISH:CompareDMSettings.OutputFormat.SQL);
+               if (englishButton.isSelected()) {
+                       
s.setOutputFormat(CompareDMSettings.OutputFormat.ENGLISH);
+               } else if (sqlButton.isSelected()) {
+                       s.setOutputFormat(CompareDMSettings.OutputFormat.SQL);
+               } else if (liquibaseButton.isSelected()) {
+                       
s.setOutputFormat(CompareDMSettings.OutputFormat.LIQUIBASE);
+               }
                s.setSuppressSimilarities(showNoChanges.isSelected());

         Class<? extends DDLGenerator> selectedGenerator =
@@ -1368,7 +1403,10 @@

                if ( s.getOutputFormat() == CompareDMSettings.OutputFormat.SQL)
                        sqlButton.doClick();
-
+
+               if ( s.getOutputFormat() == 
CompareDMSettings.OutputFormat.LIQUIBASE)
+                       liquibaseButton.doClick();
+
         showNoChanges.setSelected(s.getSuppressSimilarities());

         sqlTypeDropdown.setSelectedItem(s.getDdlGenerator());
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/CompareDMSettings.java Tue Mar 25 07:38:28 2008 +++ /trunk/src/ca/sqlpower/architect/swingui/CompareDMSettings.java Sun Feb 21 04:10:12 2010
@@ -24,7 +24,7 @@
 public class CompareDMSettings {

        public enum DatastoreType { PROJECT, DATABASE, FILE; }
-       public enum OutputFormat { SQL, ENGLISH; }
+       public enum OutputFormat { SQL, ENGLISH, LIQUIBASE; }

     /**
      * The DDL Generator class the user has chosen.  This option
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/DDLExportPanel.java Fri Jun 12 14:03:43 2009 +++ /trunk/src/ca/sqlpower/architect/swingui/DDLExportPanel.java Sun Feb 21 04:10:12 2010
@@ -36,11 +36,14 @@
 import ca.sqlpower.architect.ddl.DDLGenerator;
 import ca.sqlpower.architect.ddl.DDLUtils;
 import ca.sqlpower.architect.ddl.GenericDDLGenerator;
+import ca.sqlpower.architect.ddl.LiquibaseDDLGenerator;
 import ca.sqlpower.sql.DataSourceCollection;
 import ca.sqlpower.sql.DatabaseListChangeEvent;
 import ca.sqlpower.sql.DatabaseListChangeListener;
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.swingui.DataEntryPanel;
+import javax.swing.JCheckBox;
+import javax.swing.JRadioButton;


 public class DDLExportPanel implements DataEntryPanel {
@@ -58,7 +61,7 @@
      * are all of type <tt>Class&lt;? extends DDLGenerator&gt;</tt>.
      */
     private JComboBox dbType;
-
+       private JCheckBox liquibaseCheckbox;
        private JLabel catalogLabel;
        private JTextField catalogField;

@@ -90,6 +93,7 @@
        private void setup() {
         panel.setLayout(new FormLayout());
         JPanel panelProperties = new JPanel(new FormLayout());
+
panelProperties.add(new JLabel(Messages.getString("DDLExportPanel.createInLabel"))); //$NON-NLS-1$

         panelProperties.add(targetDB = new JComboBox());
@@ -136,16 +140,28 @@
                                                setUpCatalogAndSchemaFields();
                                }
                        });
-
+
panelProperties.add(catalogLabel = new JLabel(Messages.getString("DDLExportPanel.targetCatalog"))); //$NON-NLS-1$ panelProperties.add(catalogField = new JTextField(ddlg.getTargetCatalog())); panelProperties.add(schemaLabel = new JLabel(Messages.getString("DDLExportPanel.targetSchema"))); //$NON-NLS-1$ panelProperties.add(schemaField = new JTextField(ddlg.getTargetSchema()));
         panel.add(panelProperties);
         panel.add(newTargetDB);
-
+
+ panel.add(liquibaseCheckbox = new JCheckBox(Messages.getString("DDLExportPanel.liqubaseScript"))); //$NON-NLS-1$
+               panel.add(new JPanel()); //dummy component to keep the 
two-column layout
+
+
+               liquibaseCheckbox.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               setUpCatalogAndSchemaFields();
+                               
dbType.setEnabled(!liquibaseCheckbox.isSelected());
+                               
targetDB.setEnabled(!liquibaseCheckbox.isSelected());
+                               
newTargetDB.setEnabled(!liquibaseCheckbox.isSelected());
+                       }
+               });
+
                setUpCatalogAndSchemaFields();
-
        }

     /**
@@ -157,7 +173,8 @@
        private void setUpCatalogAndSchemaFields() {
                Class<? extends DDLGenerator> selectedGeneratorClass = null;
                try {
- selectedGeneratorClass = (Class<? extends DDLGenerator>) dbType.getSelectedItem();
+                       selectedGeneratorClass = getSelectedGeneratorClass();
+
                        DDLGenerator newGen = 
selectedGeneratorClass.newInstance();
                        if (newGen.getCatalogTerm() != null) {
                                catalogLabel.setText(newGen.getCatalogTerm());
@@ -189,14 +206,31 @@
                        ASUtils.showExceptionDialogNoReport(panel, message, ex);
                }
        }
+
+       private Class<? extends DDLGenerator> getSelectedGeneratorClass() {
+               if (liquibaseCheckbox.isSelected()) {
+                       return LiquibaseDDLGenerator.class;
+               } else {
+                       return (Class<? extends DDLGenerator>) 
dbType.getSelectedItem();
+               }
+       }
+
+       public DDLGenerator getGenerator() {
+               Class<? extends DDLGenerator> genClass = 
getSelectedGeneratorClass();
+               try {
+                       return genClass.newInstance();
+               } catch (Exception ex) {
+ logger.error("Problem creating user-selected DDL generator", ex); //$NON-NLS-1$ + throw new RuntimeException(Messages.getString("DDLExportPanel.couldNotCreateDdlGenerator"), ex); //$NON-NLS-1$
+               }
+       }

// ------------------------ Architect Panel Stuff -------------------------
        public boolean applyChanges() {
            disconnect();
                DDLGenerator ddlg = session.getDDLGenerator();
-               Class<? extends DDLGenerator> selectedGeneratorClass =
-            (Class<? extends DDLGenerator>) dbType.getSelectedItem();
-               if (ddlg.getClass() != selectedGeneratorClass) {
+ Class<? extends DDLGenerator> selectedGeneratorClass = getSelectedGeneratorClass(); + if (ddlg.getClass() != selectedGeneratorClass && selectedGeneratorClass != LiquibaseDDLGenerator.class) {
                        try {
                                ddlg = selectedGeneratorClass.newInstance();
                                session.setDDLGenerator(ddlg);
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/action/ExportDDLAction.java Mon Dec 21 08:27:43 2009 +++ /trunk/src/ca/sqlpower/architect/swingui/action/ExportDDLAction.java Sun Feb 21 04:10:12 2010
@@ -82,7 +82,7 @@
                 try {
                     if (ddlPanel.applyChanges()) {

-                        DDLGenerator ddlg = session.getDDLGenerator();
+                        DDLGenerator ddlg = ddlPanel.getGenerator();
ddlg.setTargetSchema(ddlPanel.getSchemaField().getText());

                         boolean done = false;
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/messages.properties Thu Jan 28 07:24:21 2010 +++ /trunk/src/ca/sqlpower/architect/swingui/messages.properties Sun Feb 21 04:10:12 2010
@@ -102,6 +102,7 @@
 CompareDMPanel.dbcsDialogTitle=New Database Connection
CompareDMPanel.doNotKnowWhichSourceToCompare=Do not know which source to compare from
 CompareDMPanel.englishDescriptions=English descriptions
+CompareDMPanel.liqubaseScript=Liquibase XML
 CompareDMPanel.fromFileLabel=From File:
CompareDMPanel.incompleteSelection={0} physical database selection incomplete
 CompareDMPanel.makeOlderLookLikeNewer=\ to make Older look like Newer
@@ -177,6 +178,7 @@
 DDLExportPanel.propertiesButton=Properties...
 DDLExportPanel.provideValidCatalog=Please provide a valid database catalog.
 DDLExportPanel.provideValidSchema=Please provide a valid schema name.
+DDLExportPanel.liqubaseScript=Generate Liquibase XML
 DDLExportPanel.targetCatalog=Target Catalog
 DDLExportPanel.targetDatabase=(Target Database)
 DDLExportPanel.targetSchema=Target Schema
=======================================
--- /trunk/src/ca/sqlpower/architect/swingui/messages_de.properties Thu Jan 28 07:24:21 2010 +++ /trunk/src/ca/sqlpower/architect/swingui/messages_de.properties Sun Feb 21 04:10:12 2010
@@ -166,6 +166,7 @@
 DBTree.setAsTargetDbActionName=Als Zieldatenbank festlegen
 DBTree.showExceptionDetails=Zeige Details des Fehlers
 DBTree.showInPlaypenAction=Im Playpen anzeigen
+DDLExportPanel.liqubaseScript=Erzeuge Liquibase XML
DDLExportPanel.couldNotCreateDdlGenerator=Konnte keinen DDL Generator erzeugen
 DDLExportPanel.createInLabel=Anlegen in:
 DDLExportPanel.generateDDLForDbType=Generiere DDL f\u00FCr Datenbank:

Reply via email to