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/03/03 14:19:48 UTC
svn commit: r918463 - in
/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne:
modeler/ modeler/dialog/pref/ modeler/pref/ modeler/util/ pref/
Author: oltka
Date: Wed Mar 3 13:19:48 2010
New Revision: 918463
URL: http://svn.apache.org/viewvc?rev=918463&view=rev
Log:
CAY-1327 Migrate HSQLDB modeler preferences to Java preferences API
* FSPath to Java preferences API
Removed:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/_FSPath.java
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/FSPath.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NamingStrategyPreferences.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayenneProjectPreferences.java
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java Wed Mar 3 13:19:48 2010
@@ -42,6 +42,7 @@
import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog;
import org.apache.cayenne.modeler.editor.EditorView;
import org.apache.cayenne.modeler.pref.ComponentGeometry;
+import org.apache.cayenne.modeler.pref.DataMapDefaults;
import org.apache.cayenne.modeler.pref.FSPath;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.project2.Project;
@@ -78,8 +79,11 @@
public FSPath getLastEOModelDirectory() {
// find start directory in preferences
- FSPath path = (FSPath) getViewDomain()
- .getDetail("lastEOMDir", FSPath.class, true);
+ FSPath path = (FSPath) application
+ .getCayenneProjectPreferences()
+ .getProjectDetailObject(
+ DataMapDefaults.class,
+ getViewPreferences().node("lastEOMDir"));
if (path.getPath() == null) {
path.setPath(getLastDirectory().getPath());
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java Wed Mar 3 13:19:48 2010
@@ -23,11 +23,14 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.gen.ClientClassGenerationAction;
import org.apache.cayenne.modeler.pref.FSPath;
-import org.apache.cayenne.pref.Domain;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* Manages code generation templates.
@@ -38,7 +41,7 @@
public static final String STANDARD_SERVER_SUBCLASS = "Standard Server Subclass";
static final String STANDARD_CLIENT_SUPERCLASS = "Standard Client Superclass";
static final String STANDARD_CLIENT_SUBCLASS = "Standard Client Subclass";
-
+
static final String LIGHT_SERVER_SUPERCLASS = "Light Server Superclass";
protected List<String> standardSubclassTemplates;
@@ -46,8 +49,10 @@
protected Map<String, String> customTemplates;
protected Map<String, String> standardTemplates;
- public static Domain getTemplateDomain(Application application) {
- return application.getPreferenceDomain().getSubdomain(CodeTemplateManager.class);
+ private static Log logger = LogFactory.getLog(CodeTemplateManager.class);
+
+ public static Preferences getTemplatePreferences(Application application) {
+ return application.getMainPreferenceForProject().node("CodeTemplateManager");
}
public CodeTemplateManager(Application application) {
@@ -61,7 +66,7 @@
standardSubclassTemplates.add(STANDARD_SERVER_SUBCLASS);
standardSubclassTemplates.add(STANDARD_CLIENT_SUBCLASS);
- updateCustomTemplates(getTemplateDomain(application));
+ updateCustomTemplates(getTemplatePreferences(application));
standardTemplates = new HashMap<String, String>();
standardTemplates.put(
@@ -84,13 +89,19 @@
/**
* Updates custom templates from preferences.
*/
- public void updateCustomTemplates(Domain preferenceDomain) {
- Map<String, FSPath> templates = preferenceDomain.getDetailsMap(FSPath.class);
- this.customTemplates = new HashMap<String, String>(templates.size(), 1);
-
- for (Map.Entry<String, FSPath> entry : templates.entrySet()) {
- FSPath path = entry.getValue();
- customTemplates.put(entry.getKey(), path.getPath());
+ public void updateCustomTemplates(Preferences preference) {
+ String[] keys = null;
+ try {
+ keys = preference.childrenNames();
+ }
+ catch (BackingStoreException e) {
+ logger.warn("Error reading preferences");
+ }
+ this.customTemplates = new HashMap<String, String>(keys.length, 1);
+
+ for (int j = 0; j < keys.length; j++) {
+ FSPath path = new FSPath(preference.node(keys[j]));
+ customTemplates.put(keys[j], path.getPath());
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplateCreator.java Wed Mar 3 13:19:48 2010
@@ -25,6 +25,7 @@
import java.io.File;
import java.util.HashSet;
import java.util.Set;
+import java.util.prefs.Preferences;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
@@ -32,7 +33,7 @@
import org.apache.cayenne.modeler.pref.FSPath;
import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.Domain;
+import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.control.FileChooser;
@@ -43,8 +44,8 @@
protected TemplateCreatorView view;
protected boolean canceled;
protected Set existingNames;
- protected PreferenceEditor editor;
- protected Domain domain;
+ protected CayennePreferenceEditor editor;
+ protected Preferences preferences;
public TemplateCreator(TemplatePreferences parent) {
super(parent);
@@ -54,8 +55,11 @@
parent.getView());
this.view = new TemplateCreatorView(parentDialog);
this.existingNames = new HashSet();
- this.editor = parent.getEditor();
- this.domain = parent.getTemplateDomain();
+ PreferenceEditor editor = parent.getEditor();
+ if (editor instanceof CayennePreferenceEditor) {
+ this.editor = (CayennePreferenceEditor) editor;
+ }
+ this.preferences = parent.getTemplatePreferences();
for (FSPath path : parent.getTemplateEntries()) {
existingNames.add(path.getKey());
@@ -70,10 +74,11 @@
FSPath getLastTemplateDirectory() {
// find start directory in preferences
- FSPath path = (FSPath) getViewDomain().getDetail(
- "lastTemplate",
- FSPath.class,
- true);
+ FSPath path = (FSPath) application
+ .getCayenneProjectPreferences()
+ .getProjectDetailObject(
+ FSPath.class,
+ getViewPreferences().node("lastTemplate"));
if (path.getPath() == null) {
path.setPath(getLastDirectory().getPath());
@@ -162,7 +167,11 @@
String key = view.getTemplateName().getText();
File file = view.getTemplateChooser().getFile();
- FSPath path = (FSPath) editor.createDetail(domain, key, FSPath.class);
+ Preferences newNode = preferences.node(key);
+ FSPath path = (FSPath) application
+ .getCayenneProjectPreferences()
+ .getProjectDetailObject(FSPath.class, newNode);
+ editor.getAddedNode().add(newNode);
path.setPath(file != null ? file.getAbsolutePath() : null);
return path;
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/TemplatePreferences.java Wed Mar 3 13:19:48 2010
@@ -22,32 +22,54 @@
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
import javax.swing.table.AbstractTableModel;
import org.apache.cayenne.modeler.CodeTemplateManager;
import org.apache.cayenne.modeler.pref.FSPath;
import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.Domain;
-import org.apache.cayenne.pref.PreferenceDetail;
+import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
import org.apache.cayenne.swing.TableBindingBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
public class TemplatePreferences extends CayenneController {
protected TemplatePreferencesView view;
- protected PreferenceEditor editor;
+ protected CayennePreferenceEditor editor;
protected List<FSPath> templateEntries;
protected ObjectBinding tableBinding;
+
+ private static Log logger = LogFactory.getLog(TemplatePreferences.class);
public TemplatePreferences(PreferenceDialog parent) {
super(parent);
this.view = new TemplatePreferencesView();
- this.editor = parent.getEditor();
- this.templateEntries = new ArrayList(getTemplateDomain().getDetails(FSPath.class));
+ PreferenceEditor editor = parent.getEditor();
+ if (editor instanceof CayennePreferenceEditor) {
+ this.editor = (CayennePreferenceEditor) editor;
+ }
+ this.templateEntries = new ArrayList<FSPath>();
+
+ try {
+ String[] keys = getTemplatePreferences().childrenNames();
+ for (int i = 0; i < keys.length; i++) {
+ templateEntries.add((FSPath) application
+ .getCayenneProjectPreferences()
+ .getProjectDetailObject(
+ FSPath.class,
+ getTemplatePreferences().node(keys[i])));
+ }
+ }
+ catch (BackingStoreException e) {
+ logger.warn("Error reading preferences");
+ }
initBindings();
}
@@ -56,9 +78,10 @@
return view;
}
- protected Domain getTemplateDomain() {
- Domain domain = CodeTemplateManager.getTemplateDomain(getApplication());
- return editor.editableInstance(domain);
+ protected Preferences getTemplatePreferences() {
+ Preferences preferences = CodeTemplateManager
+ .getTemplatePreferences(getApplication());
+ return preferences;
}
protected void initBindings() {
@@ -115,10 +138,16 @@
return;
}
- PreferenceDetail selection = (PreferenceDetail) templateEntries.remove(selected);
- editor.deleteDetail(getTemplateDomain(), selection.getKey());
+ Object key = ((AbstractTableModel) view.getTable().getModel()).getValueAt(
+ selected,
+ 0);
+
+ editor.getRemovedNode().add(getTemplatePreferences().node((String) key));
+ templateEntries.remove(selected);
+
((AbstractTableModel) view.getTable().getModel()).fireTableRowsDeleted(
selected,
selected);
+
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/FSPath.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/FSPath.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/FSPath.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/FSPath.java Wed Mar 3 13:19:48 2010
@@ -20,15 +20,25 @@
package org.apache.cayenne.modeler.pref;
import java.io.File;
+import java.util.prefs.Preferences;
import javax.swing.JFileChooser;
+import org.apache.cayenne.pref.CayennePreference;
+
+
/**
* Represents a preferred directory or file.
*
*/
-public class FSPath extends _FSPath {
+public class FSPath extends CayennePreference {
+ public static final String PATH_PROPERTY = "path";
+
+ public FSPath(Preferences preferences) {
+ setCurrentPreference(preferences);
+ }
+
public void updateFromChooser(JFileChooser chooser) {
File file = chooser.getSelectedFile();
if (file != null) {
@@ -74,5 +84,16 @@
return null;
}
+
+ public void setPath(String path) {
+ getCurrentPreference().put(PATH_PROPERTY, path);
+ }
+ public String getPath() {
+ return getCurrentPreference().get(PATH_PROPERTY, null);
+ }
+
+ public String getKey() {
+ return getCurrentPreference().name();
+ }
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/CayenneController.java Wed Mar 3 13:19:48 2010
@@ -38,7 +38,6 @@
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.FSPath;
-import org.apache.cayenne.pref.Domain;
import org.apache.cayenne.swing.BoundComponent;
import org.apache.cayenne.util.Util;
import org.apache.commons.logging.Log;
@@ -84,7 +83,11 @@
*/
public FSPath getLastDirectory() {
// find start directory in preferences
- FSPath path = (FSPath) getViewDomain().getDetail("lastDir", FSPath.class, true);
+ FSPath path = (FSPath) application
+ .getCayenneProjectPreferences()
+ .getProjectDetailObject(
+ FSPath.class,
+ getViewPreferences().node("lastDir"));
if (path.getPath() == null) {
@@ -98,13 +101,6 @@
}
/**
- * Returns preference domain for this component view.
- */
- protected Domain getViewDomain() {
- return getApplication().getPreferenceDomain().getSubdomain(getView().getClass());
- }
-
- /**
* Returns preference for this component view.
*/
protected Preferences getViewPreferences() {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NamingStrategyPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NamingStrategyPreferences.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NamingStrategyPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/NamingStrategyPreferences.java Wed Mar 3 13:19:48 2010
@@ -24,6 +24,7 @@
import org.apache.cayenne.configuration.DataChannelDescriptor;
import org.apache.cayenne.modeler.Application;
+
import org.apache.cayenne.pref.CayennePreference;
/**
@@ -47,6 +48,7 @@
public static NamingStrategyPreferences getInstance() {
return instance;
}
+
Preferences getPreference() {
return Application.getMainPreferenceForProject();
@@ -57,6 +59,7 @@
*/
public Vector<String> getLastUsedStrategies() {
String prop = getPreference().get(STRATEGIES_PREFERENCE, null);
+
if (prop == null) {
return PREDEFINED_STRATEGIES;
}
@@ -81,7 +84,7 @@
if (strategies.size() > 0) {
res.deleteCharAt(res.length() - 1);
}
-
+
getPreference().put(STRATEGIES_PREFERENCE, res.toString());
}
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayennePreferenceEditor.java Wed Mar 3 13:19:48 2010
@@ -19,14 +19,19 @@
package org.apache.cayenne.pref;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import org.apache.cayenne.access.DataContext;
import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
@@ -43,6 +48,10 @@
private Map<Preferences, Map<String, String>> changedPreferences;
private Map<Preferences, Map<String, String>> removedPreferences;
private Map<Preferences, Map<String, Boolean>> changedBooleanPreferences;
+ private List<Preferences> removedNode;
+ private List<Preferences> addedNode;
+
+ private static Log logger = LogFactory.getLog(CayennePreferenceEditor.class);
public CayennePreferenceEditor(CayennePreferenceService service,
CayenneProjectPreferences cayenneProjectPreferences) {
@@ -56,10 +65,19 @@
this.changedPreferences = new HashMap<Preferences, Map<String, String>>();
this.removedPreferences = new HashMap<Preferences, Map<String, String>>();
this.changedBooleanPreferences = new HashMap<Preferences, Map<String, Boolean>>();
+ this.removedNode = new ArrayList<Preferences>();
+ this.addedNode = new ArrayList<Preferences>();
}
-
+ public List<Preferences> getAddedNode() {
+ return addedNode;
+ }
+
+ public List<Preferences> getRemovedNode() {
+ return removedNode;
+ }
+
public Map<Preferences, Map<String, String>> getRemovedPreferences() {
return removedPreferences;
}
@@ -204,10 +222,35 @@
}
}
+ // remove preferences node
+ Iterator<Preferences> iteratorNode = removedNode.iterator();
+ while (iteratorNode.hasNext()) {
+ Preferences pref = iteratorNode.next();
+ try {
+ pref.removeNode();
+ }
+ catch (BackingStoreException e) {
+ logger.warn("Error removing preferences");
+ }
+ }
+
Application.getInstance().initClassLoader();
}
public void revert() {
+
+ // remove added preferences node
+ Iterator<Preferences> iteratorNode = addedNode.iterator();
+ while (iteratorNode.hasNext()) {
+ Preferences pref = iteratorNode.next();
+ try {
+ pref.removeNode();
+ }
+ catch (BackingStoreException e) {
+ // do nothing
+ }
+ }
+
cayenneProjectPreferences.getDetailObject(DBConnectionInfo.class).cancel();
editingContext.rollbackChanges();
restartRequired = false;
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayenneProjectPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayenneProjectPreferences.java?rev=918463&r1=918462&r2=918463&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayenneProjectPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/pref/CayenneProjectPreferences.java Wed Mar 3 13:19:48 2010
@@ -40,6 +40,7 @@
cayennePreferences = new HashMap<Class, Object>();
cayennePreferences.put(DBConnectionInfo.class, new ChildrenMapPreference(
new DBConnectionInfo()));
+
projectCayennePreferences = new HashMap<Preferences, Object>();
initPreference();
}