You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ol...@apache.org on 2010/02/09 16:34:51 UTC

svn commit: r908075 - in /cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne: modeler/action/SaveAction.java modeler/editor/DataDomainView.java pref/CayennePreferenceForProject.java

Author: oltka
Date: Tue Feb  9 15:34:50 2010
New Revision: 908075

URL: http://svn.apache.org/viewvc?rev=908075&view=rev
Log:
CAY-1327 Migrate HSQLDB modeler preferences to Java preferences API

*  if name of DataDomain changed  - node name of Preferences need to change

Modified:
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAction.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainView.java
    cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceForProject.java

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAction.java?rev=908075&r1=908074&r2=908075&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/SaveAction.java Tue Feb  9 15:34:50 2010
@@ -21,9 +21,11 @@
 
 import java.awt.Toolkit;
 import java.awt.event.KeyEvent;
+import java.util.prefs.Preferences;
 
 import javax.swing.KeyStroke;
 
+import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.modeler.Application;
 import org.apache.cayenne.pref.CayennePreferenceForProject;
 import org.apache.cayenne.pref.Domain;
@@ -75,6 +77,17 @@
 
         CayennePreferenceForProject.removeOldPreferences();
         
+        // if change DataChanelDescriptor name - as result change name of xml file
+        // we will need change preferences path 
+        String[] path = oldPath.split("/");
+        String[] newPath = p.getConfigurationResource().getURL().getPath().split("/");
+        
+        if(!path[path.length -1].equals(newPath[newPath.length -1])){
+            String newName = newPath[newPath.length -1].replace(".xml", "");
+            CayennePreferenceForProject.copyPreferences(newName, getProjectController().getPreferenceForProject());
+            CayennePreferenceForProject.removeOldPreferences();
+        }
+        
         getApplication().getFrameController().changePathInLastProjListAction(oldPath, 
                 p.getConfigurationResource().getURL().getPath());
         Application.getFrame().fireRecentFileListChanged();

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainView.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainView.java?rev=908075&r1=908074&r2=908075&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainView.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/DataDomainView.java Tue Feb  9 15:34:50 2010
@@ -23,7 +23,6 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.util.Map;
-import java.util.prefs.BackingStoreException;
 import java.util.prefs.Preferences;
 
 import javax.swing.DefaultComboBoxModel;
@@ -33,7 +32,6 @@
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
-import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataRowStore;
 import org.apache.cayenne.cache.MapQueryCacheFactory;
@@ -48,7 +46,7 @@
 import org.apache.cayenne.modeler.util.CayenneWidgetFactory;
 import org.apache.cayenne.modeler.util.ProjectUtil;
 import org.apache.cayenne.modeler.util.TextAdapter;
-import org.apache.cayenne.pref.Domain;
+import org.apache.cayenne.pref.CayennePreferenceForProject;
 import org.apache.cayenne.util.Util;
 import org.apache.cayenne.validation.ValidationException;
 
@@ -363,24 +361,9 @@
                 dataChannelDescriptor.getName());
         ProjectUtil.setDataDomainName(dataChannelDescriptor, newName);
 
-        // rename preference
-        
+        // copy all old preference to new preferences 
         Preferences oldPref = prefs;
-        try {
-            String[] names = oldPref.keys();
-            
-            Preferences parent = oldPref.parent();
-            Preferences newPref = parent.node(newName);
-            for(int i=0; i<names.length; i++){
-                newPref.put(names[i], oldPref.get(names[i], ""));
-            }
-          
-          
-            oldPref.removeNode();
-        }
-        catch (BackingStoreException ex) {
-           new CayenneRuntimeException("Error remane preferences");
-        }
+        CayennePreferenceForProject.copyPreferences(newName, oldPref);
         
         projectController.fireDomainEvent(e);
     }

Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceForProject.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceForProject.java?rev=908075&r1=908074&r2=908075&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceForProject.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceForProject.java Tue Feb  9 15:34:50 2010
@@ -36,8 +36,11 @@
     }
 
     public void copyPreferences(String newName) {
+        setCurrentPreference(copyPreferences(newName, getCurrentPreference()));
+    }
+
+    public static Preferences copyPreferences(String newName, Preferences oldPref) {
 
-        Preferences oldPref = getCurrentPreference();
         try {
             
             // copy all preferences in this node
@@ -48,12 +51,10 @@
                 newPref.put(names[i], oldPref.get(names[i], ""));
             }
 
-            String[] children = oldPref.childrenNames();
             String oldPath = oldPref.absolutePath();
             String newPath = newPref.absolutePath();
 
             // copy children nodes and its preferences
-
             ArrayList<Preferences> childrenOldPref = childrenCopy(oldPref, oldPath, newPath);
 
             while (childrenOldPref.size() > 0) {
@@ -81,14 +82,16 @@
 
             newNode.add(newPref);
             oldNode.add(oldPref);
-            setCurrentPreference(newPref);
+            
+            return newPref;
         }
         catch (BackingStoreException e) {
             new CayenneRuntimeException("Error remane preferences");
         }
+        return oldPref;
     }
-
-    private ArrayList<Preferences> childrenCopy(Preferences pref, String oldPath, String newPath) {
+      
+    private static ArrayList<Preferences> childrenCopy(Preferences pref, String oldPath, String newPath) {
 
         try {
             String[] children = pref.childrenNames();
@@ -107,7 +110,7 @@
                 String[] names = childNode.keys();
                 Preferences newPref = Preferences.userRoot().node(path);
                 for (int i = 0; i < names.length; i++) {
-                    newPref.put(names[i], pref.get(names[i], ""));
+                    newPref.put(names[i], childNode.get(names[i], ""));
                 }
                 prefChild.add(childNode);
             }