You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2011/07/25 14:01:19 UTC
svn commit: r1150650 - in /cayenne/main/trunk: docs/doc/src/main/resources/
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/
modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/
Author: dkazimirchyk
Date: Mon Jul 25 12:01:18 2011
New Revision: 1150650
URL: http://svn.apache.org/viewvc?rev=1150650&view=rev
Log:
CAY-1590 DDL generation without a live datasource
added adapter selection to DB schema generation options dialog to generate SQL without connecting to data source
Modified:
cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java
cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptions.java
cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptionsView.java
Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1150650&r1=1150649&r2=1150650&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Mon Jul 25 12:01:18 2011
@@ -25,6 +25,7 @@ CAY-1553 cayenne-lifecycle: @SortWeight
CAY-1573 QueryLogger to DI JdbcEventLogger migration
CAY-1584 Improve Cayenne modeler re-ordering named query in the cayenne map xml
CAY-1586 New extension point: a strategy for retaining objects in the ObjectStore
+CAY-1590 DDL generation without a live datasource
Bug Fixes Since 3.1M2:
Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java?rev=1150650&r1=1150649&r2=1150650&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GenerateDBAction.java Mon Jul 25 12:01:18 2011
@@ -24,8 +24,6 @@ import java.awt.event.ActionEvent;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.dialog.db.DBGeneratorOptions;
-import org.apache.cayenne.modeler.dialog.db.DataSourceWizard;
-import org.apache.cayenne.modeler.pref.DBConnectionInfo;
/**
* Action that generates database tables from a DataMap.
@@ -42,20 +40,6 @@ public class GenerateDBAction extends DB
public void performAction(ActionEvent e) {
- DBConnectionInfo nodeInfo = preferredDataSource();
- String nodeKey = preferredDataSourceLabel(nodeInfo);
-
- DataSourceWizard connectWizard = new DataSourceWizard(
- getProjectController(),
- "Generate DB Schema: Connect to Database",
- nodeKey,
- nodeInfo);
-
- if (!connectWizard.startupAction()) {
- // canceled
- return;
- }
-
DataMap map = getProjectController().getCurrentDataMap();
// sanity check
@@ -67,7 +51,6 @@ public class GenerateDBAction extends DB
new DBGeneratorOptions(
getProjectController(),
"Generate DB Schema: Options",
- connectWizard.getConnectionInfo(),
map).startupAction();
}
}
Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptions.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptions.java?rev=1150650&r1=1150649&r2=1150650&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptions.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptions.java Mon Jul 25 12:01:18 2011
@@ -27,6 +27,7 @@ import java.io.PrintWriter;
import java.util.Iterator;
import javax.sql.DataSource;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;
@@ -41,6 +42,7 @@ import org.apache.cayenne.modeler.dialog
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.pref.DBGeneratorDefaults;
import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.modeler.util.DbAdapterInfo;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
import org.apache.cayenne.validation.ValidationResult;
@@ -52,6 +54,7 @@ public class DBGeneratorOptions extends
protected DBGeneratorOptionsView view;
protected ObjectBinding[] optionBindings;
protected ObjectBinding sqlBinding;
+ protected ObjectBinding adapterBinding;
protected DBConnectionInfo connectionInfo;
protected DataMap dataMap;
@@ -62,19 +65,20 @@ public class DBGeneratorOptions extends
protected TableSelectorController tables;
public DBGeneratorOptions(ProjectController parent, String title,
- DBConnectionInfo connectionInfo, DataMap dataMap) {
+ DataMap dataMap) {
super(parent);
this.dataMap = dataMap;
this.tables = new TableSelectorController(parent);
this.view = new DBGeneratorOptionsView(tables.getView());
- this.connectionInfo = connectionInfo;
+ this.connectionInfo = new DBConnectionInfo();
this.generatorDefaults = new DBGeneratorDefaults(parent
.getPreferenceForProject()
.node("DbGenerator"));
this.view.setTitle(title);
initController();
+ connectionInfo.setDbAdapter((String)view.getAdapters().getSelectedItem());
tables.updateTables(dataMap);
prepareGenerator();
@@ -97,11 +101,21 @@ public class DBGeneratorOptions extends
protected void initController() {
+ DefaultComboBoxModel adapterModel = new DefaultComboBoxModel(DbAdapterInfo
+ .getStandardAdapters());
+ view.getAdapters().setModel(adapterModel);
+ view.getAdapters().setSelectedIndex(0);
+
BindingBuilder builder = new BindingBuilder(
getApplication().getBindingFactory(),
this);
sqlBinding = builder.bindToTextArea(view.getSql(), "textForSQL");
+ adapterBinding = builder.bindToComboSelection(
+ view.getAdapters(),
+ "connectionInfo.dbAdapter",
+ "refreshSQLAction()",
+ "org.apache.cayenne.dba.JdbcAdapter");
optionBindings = new ObjectBinding[5];
optionBindings[0] = builder.bindToStateChangeAndAction(
@@ -177,6 +191,7 @@ public class DBGeneratorOptions extends
}
protected void refreshView() {
+ getView().setEnabled(connectionInfo != null);
for (ObjectBinding optionBinding : optionBindings) {
optionBinding.updateView();
@@ -211,6 +226,9 @@ public class DBGeneratorOptions extends
*/
public void refreshSQLAction() {
// sync generator with defaults, make SQL, then sync the view...
+ adapterBinding.updateView();
+ connectionInfo.setDbAdapter((String)view.getAdapters().getSelectedItem());
+ prepareGenerator();
generatorDefaults.configureGenerator(generator);
createSQL();
sqlBinding.updateView();
@@ -220,6 +238,20 @@ public class DBGeneratorOptions extends
* Performs configured schema operations via DbGenerator.
*/
public void generateSchemaAction() {
+
+ DataSourceWizard connectWizard = new DataSourceWizard(
+ this.getParent(),
+ "Generate DB Schema: Connect to Database",
+ null,
+ null);
+
+ if (!connectWizard.startupAction()) {
+ // canceled
+ return;
+ }
+
+ this.connectionInfo = connectWizard.getConnectionInfo();
+
refreshGeneratorAction();
// sanity check...
@@ -229,6 +261,7 @@ public class DBGeneratorOptions extends
}
try {
+
DataSource dataSource = connectionInfo.makeDataSource(getApplication()
.getClassLoadingService());
generator.runGenerator(dataSource);
@@ -289,4 +322,13 @@ public class DBGeneratorOptions extends
public void closeAction() {
view.dispose();
}
+
+ public DBConnectionInfo getConnectionInfo() {
+ return this.connectionInfo;
+ }
+
+ public void setConnectionInfo(DBConnectionInfo connectionInfo) {
+ this.connectionInfo = connectionInfo;
+ refreshView();
+ }
}
Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptionsView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptionsView.java?rev=1150650&r1=1150649&r2=1150650&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptionsView.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DBGeneratorOptionsView.java Mon Jul 25 12:01:18 2011
@@ -29,6 +29,7 @@ import java.awt.GridLayout;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
@@ -58,6 +59,7 @@ public class DBGeneratorOptionsView exte
protected JCheckBox dropPK;
protected Component tables;
protected JTabbedPane tabs;
+ protected JComboBox adapters;
public DBGeneratorOptionsView(Component tables) {
// create widgets
@@ -71,6 +73,8 @@ public class DBGeneratorOptionsView exte
this.dropPK = new JCheckBox("Drop Primary Key Support");
this.tables = tables;
this.tabs = new JTabbedPane(SwingConstants.TOP);
+ this.adapters = new JComboBox();
+ adapters.setEditable(true);
this.sql = new JTextArea();
sql.setEditable(false);
sql.setLineWrap(true);
@@ -90,16 +94,21 @@ public class DBGeneratorOptionsView exte
sql,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED), BorderLayout.CENTER);
+
+ JPanel adapterPanel = new JPanel(new BorderLayout());
+ adapterPanel.add(adapters);
CellConstraints cc = new CellConstraints();
PanelBuilder builder = new PanelBuilder(new FormLayout(
"fill:min(50dlu;pref):grow",
- "p, 3dlu, p, 9dlu, p, 3dlu, fill:40dlu:grow"));
+ "p, 3dlu, p, 9dlu, p, 3dlu, p, 3dlu, p, 3dlu, fill:40dlu:grow"));
builder.setDefaultDialogBorder();
builder.addSeparator("Options", cc.xywh(1, 1, 1, 1));
builder.add(optionsPane, cc.xy(1, 3, "left,fill"));
- builder.addSeparator("Generated SQL", cc.xywh(1, 5, 1, 1));
- builder.add(sqlTextPanel, cc.xy(1, 7));
+ builder.addSeparator("Adapter", cc.xywh(1, 5, 1, 1));
+ builder.add(adapterPanel, cc.xy(1, 7));
+ builder.addSeparator("Generated SQL", cc.xywh(1, 9, 1, 1));
+ builder.add(sqlTextPanel, cc.xy(1, 11));
tabs.addTab("SQL Options", builder.getPanel());
tabs.addTab("Tables", new JScrollPane(
@@ -109,7 +118,7 @@ public class DBGeneratorOptionsView exte
// we need the right preferred size so that dialog "pack()" produces decent
// default size...
- tabs.setPreferredSize(new Dimension(450, 350));
+ tabs.setPreferredSize(new Dimension(450, 500));
JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttons.add(saveSqlButton);
@@ -162,4 +171,8 @@ public class DBGeneratorOptionsView exte
public JTextArea getSql() {
return sql;
}
+
+ public JComboBox getAdapters() {
+ return adapters;
+ }
}