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