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;
+    }
 }