You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by to...@apache.org on 2008/01/16 14:45:25 UTC

svn commit: r612454 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db: MergerOptions.java MergerTokenSelectorController.java MergerTokenTableModel.java

Author: torehalset
Date: Wed Jan 16 05:45:24 2008
New Revision: 612454

URL: http://svn.apache.org/viewvc?rev=612454&view=rev
Log:
CAY-885: merge changes between model and db
 * mark model as unsaved if model is changed
 * generics

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenTableModel.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java?rev=612454&r1=612453&r2=612454&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerOptions.java Wed Jan 16 05:45:24 2008
@@ -38,6 +38,7 @@
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.merge.DbMerger;
 import org.apache.cayenne.merge.ExecutingMergerContext;
+import org.apache.cayenne.merge.MergeDirection;
 import org.apache.cayenne.merge.MergerContext;
 import org.apache.cayenne.merge.MergerToken;
 import org.apache.cayenne.modeler.Application;
@@ -45,6 +46,7 @@
 import org.apache.cayenne.modeler.dialog.ValidationResultBrowser;
 import org.apache.cayenne.modeler.pref.DBConnectionInfo;
 import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.project.Project;
 import org.apache.cayenne.swing.BindingBuilder;
 import org.apache.cayenne.swing.ObjectBinding;
 import org.apache.cayenne.validation.ValidationResult;
@@ -148,7 +150,7 @@
                     .getClassLoadingService());
             tokens.setMergerFactory(adapter.mergerFactory());
             merger = new DbMerger();
-            List mergerTokens = merger.createMergeTokens(adapter, connectionInfo
+            List<MergerToken> mergerTokens = merger.createMergeTokens(adapter, connectionInfo
                     .makeDataSource(getApplication().getClassLoadingService()), dataMap);
             tokens.setTokens(mergerTokens);
         }
@@ -164,7 +166,7 @@
         // convert them to string representation for display
         final StringBuffer buf = new StringBuffer();
 
-        Iterator it = tokens.getSelectedTokens().iterator();
+        Iterator<MergerToken> it = tokens.getSelectedTokens().iterator();
         String batchTerminator = adapter.getBatchTerminator();
 
         final String lineEnd = (batchTerminator != null) ? "\n"
@@ -193,7 +195,7 @@
         };
 
         while (it.hasNext()) {
-            MergerToken token = (MergerToken) it.next();
+            MergerToken token = it.next();
             token.execute(context);
             // buf.append(token.createSql(adapter)).append(lineEnd);
         }
@@ -249,7 +251,7 @@
         refreshGeneratorAction();
 
         // sanity check...
-        List tokensToMigrate = tokens.getSelectedTokens();
+        List<MergerToken> tokensToMigrate = tokens.getSelectedTokens();
         if (tokensToMigrate.isEmpty()) {
             JOptionPane.showMessageDialog(getView(), "Nothing to migrate.");
             return;
@@ -264,10 +266,27 @@
                     dataMap,
                     dataSource,
                     adapter);
-            for (Iterator it = tokensToMigrate.iterator(); it.hasNext();) {
-                MergerToken tok = (MergerToken) it.next();
+            boolean modelChanged = false;
+            for (Iterator<MergerToken> it = tokensToMigrate.iterator(); it.hasNext();) {
+                MergerToken tok = it.next();
                 tok.execute(mergerContext);
+                if (!modelChanged && tok.getDirection().equals(MergeDirection.TO_MODEL)) {
+                    modelChanged = true;
+                }
+            }
+            
+            if (modelChanged) {
+                // mark the model as unsaved
+                Project project = Application.getProject();
+                project.setModified(true);
+
+                ProjectController projectController = Application
+                        .getInstance()
+                        .getFrameController()
+                        .getProjectController();
+                projectController.setDirty(true);
             }
+            
             ValidationResult failures = mergerContext.getValidationResult();
 
             if (failures == null || !failures.hasFailures()) {

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java?rev=612454&r1=612453&r2=612454&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenSelectorController.java Wed Jan 16 05:45:24 2008
@@ -47,15 +47,15 @@
 
     protected MergerToken token;
     protected int permanentlyExcludedCount;
-    protected Set excludedTokens;
-    protected List selectableTokensList;
+    protected Set<MergerToken> excludedTokens;
+    protected List<MergerToken> selectableTokensList;
     protected MergerFactory mergerFactory;
 
     public MergerTokenSelectorController(CayenneController parent) {
         super(parent);
         this.view = new MergerTokenSelectorView();
-        this.excludedTokens = new HashSet();
-        this.selectableTokensList = new ArrayList();
+        this.excludedTokens = new HashSet<MergerToken>();
+        this.selectableTokensList = new ArrayList<MergerToken>();
         initController();
     }
 
@@ -63,19 +63,19 @@
         this.mergerFactory = mergerFactory;
     }
 
-    public void setTokens(List tokens) {
+    public void setTokens(List<MergerToken> tokens) {
         selectableTokensList.clear();
         selectableTokensList.addAll(tokens);
         excludedTokens.addAll(tokens);
     }
 
-    public List getSelectedTokens() {
-        List t = new ArrayList(selectableTokensList);
+    public List<MergerToken> getSelectedTokens() {
+        List<MergerToken> t = new ArrayList<MergerToken>(selectableTokensList);
         t.removeAll(excludedTokens);
         return Collections.unmodifiableList(t);
     }
 
-    public List getSelectableTokens() {
+    public List<MergerToken> getSelectableTokens() {
         return Collections.unmodifiableList(selectableTokensList);
     }
 

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenTableModel.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenTableModel.java?rev=612454&r1=612453&r2=612454&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenTableModel.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/MergerTokenTableModel.java Wed Jan 16 05:45:24 2008
@@ -34,7 +34,7 @@
 
     private MergerTokenSelectorController controller;
 
-    private List tokens;
+    private List<MergerToken> tokens;
 
     public MergerTokenTableModel(MergerTokenSelectorController controller) {
         this.controller = controller;