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<? extends DDLGenerator></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: