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