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/26 13:34:32 UTC
svn commit: r916661 - in
/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne:
modeler/ modeler/dialog/codegen/ modeler/dialog/pref/ pref/
Author: oltka
Date: Fri Feb 26 12:34:31 2010
New Revision: 916661
URL: http://svn.apache.org/viewvc?rev=916661&view=rev
Log:
CAY-1327 Migrate HSQLDB modeler preferences to Java preferences API
* ClasspathPreferences to Preferences API
Modified:
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceCreator.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceDuplicator.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourcePreferences.java
cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.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/pref/CayennePreferenceEditor.java
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java Fri Feb 26 12:34:31 2010
@@ -23,7 +23,9 @@
import java.awt.Frame;
import java.awt.Window;
import java.io.File;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
import javax.swing.JFrame;
@@ -37,6 +39,7 @@
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.di.Module;
import org.apache.cayenne.modeler.dialog.LogConsole;
+import org.apache.cayenne.modeler.dialog.pref.ClasspathPreferences;
import org.apache.cayenne.modeler.undo.CayenneUndoManager;
import org.apache.cayenne.modeler.util.AdapterMapping;
import org.apache.cayenne.modeler.util.CayenneAction;
@@ -45,7 +48,6 @@
import org.apache.cayenne.pref.CayennePreference;
import org.apache.cayenne.pref.CayenneProjectPreferences;
import org.apache.cayenne.pref.Domain;
-import org.apache.cayenne.pref.DomainPreference;
import org.apache.cayenne.pref.HSQLEmbeddedPreferenceEditor;
import org.apache.cayenne.pref.HSQLEmbeddedPreferenceService;
import org.apache.cayenne.pref.PreferenceService;
@@ -280,18 +282,32 @@
final FileClassLoadingService classLoader = new FileClassLoadingService();
// init from preferences...
- Domain classLoaderDomain = getPreferenceDomain().getSubdomain(
- FileClassLoadingService.class);
+ Preferences classLoaderPreference = Application.getInstance().getPreferencesNode(
+ ClasspathPreferences.class,
+ "");
+
+ Collection details = new ArrayList<String>();
+ String[] keys = null;
+
+ try {
+ keys = classLoaderPreference.keys();
+ }
+ catch (BackingStoreException e) {
+ // do nothing
+ }
+
+ for (int i = 0; i < keys.length; i++) {
+ details.add(keys[i]);
+ }
- Collection details = classLoaderDomain.getPreferences();
if (details.size() > 0) {
// transform preference to file...
Transformer transformer = new Transformer() {
public Object transform(Object object) {
- DomainPreference pref = (DomainPreference) object;
- return new File(pref.getKey());
+ String pref = (String) object;
+ return new File(pref);
}
};
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/codegen/GeneratorController.java Fri Feb 26 12:34:31 2010
@@ -154,7 +154,7 @@
generator.addEmbeddables(getParentController().getSelectedEmbeddables());
generator.addQueries(getParentController().getDataMap().getQueries());
- Preferences preferences = application.getPreferencesNode(ClassGenerationAction.class, "").node(GeneralPreferences.ENCODING_PREFERENCE);
+ Preferences preferences = application.getPreferencesNode(ClassGenerationAction.class, "");
if (preferences != null) {
generator.setEncoding(preferences
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java Fri Feb 26 12:34:31 2010
@@ -23,17 +23,20 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.prefs.BackingStoreException;
+import java.util.prefs.Preferences;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.table.AbstractTableModel;
-import org.apache.cayenne.modeler.FileClassLoadingService;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.modeler.util.FileFilters;
-import org.apache.cayenne.pref.Domain;
-import org.apache.cayenne.pref.PreferenceDetail;
+import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.PreferenceEditor;
/**
@@ -41,16 +44,31 @@
public class ClasspathPreferences extends CayenneController {
protected ClasspathPreferencesView view;
- protected PreferenceEditor editor;
- protected List classPathEntries;
+ protected List<String> classPathEntries;
protected ClasspathTableModel tableModel;
+ protected CayennePreferenceEditor editor;
public ClasspathPreferences(PreferenceDialog parentController) {
super(parentController);
- this.editor = parentController.getEditor();
this.view = new ClasspathPreferencesView();
- this.classPathEntries = getClassLoaderDomain().getDetails();
+
+ PreferenceEditor editor = parentController.getEditor();
+ if (editor instanceof CayennePreferenceEditor) {
+ this.editor = (CayennePreferenceEditor) editor;
+ }
+
+ String[] arr = null;
+ try {
+ arr = getClassLoader().keys();
+ }
+ catch (BackingStoreException e) {
+ }
+ this.classPathEntries = new ArrayList<String>();
+ for (int i = 0; i < arr.length; i++) {
+ classPathEntries.add(arr[i]);
+ }
+
this.tableModel = new ClasspathTableModel();
initBindings();
@@ -60,10 +78,8 @@
return view;
}
- protected Domain getClassLoaderDomain() {
- return editor
- .editableInstance(getApplication().getPreferenceDomain())
- .getSubdomain(FileClassLoadingService.class);
+ protected Preferences getClassLoader() {
+ return getApplication().getPreferencesNode(this.getClass(), "");
}
protected void initBindings() {
@@ -111,8 +127,8 @@
return;
}
- PreferenceDetail selection = (PreferenceDetail) classPathEntries.remove(selected);
- editor.deleteDetail(getClassLoaderDomain(), selection.getKey());
+ addRemovedPreferences((String) classPathEntries.get(selected));
+ classPathEntries.remove(selected);
tableModel.fireTableRowsDeleted(selected, selected);
}
@@ -142,11 +158,30 @@
int len = classPathEntries.size();
String key = selected.getAbsolutePath();
- classPathEntries.add(editor.createDetail(getClassLoaderDomain(), key));
+ addChangedPreferences(key, "");
+ classPathEntries.add(key);
tableModel.fireTableRowsInserted(len, len);
}
}
+ public void addChangedPreferences(String key, String value) {
+ Map<String, String> map = editor.getChangedPreferences().get(getClassLoader());
+ if (map == null) {
+ map = new HashMap<String, String>();
+ }
+ map.put(key, value);
+ editor.getChangedPreferences().put(getClassLoader(), map);
+ }
+
+ public void addRemovedPreferences(String key) {
+ Map<String, String> map = editor.getRemovedPreferences().get(getClassLoader());
+ if (map == null) {
+ map = new HashMap<String, String>();
+ }
+ map.put(key, "");
+ editor.getRemovedPreferences().put(getClassLoader(), map);
+ }
+
class ClasspathTableModel extends AbstractTableModel {
public int getColumnCount() {
@@ -158,9 +193,7 @@
}
public Object getValueAt(int rowIndex, int columnIndex) {
- PreferenceDetail preference = (PreferenceDetail) classPathEntries
- .get(rowIndex);
- return preference.getKey();
+ return classPathEntries.get(rowIndex);
}
public String getColumnName(int column) {
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceCreator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceCreator.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceCreator.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceCreator.java Fri Feb 26 12:34:31 2010
@@ -31,8 +31,6 @@
import org.apache.cayenne.modeler.util.AdapterMapping;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.modeler.util.DbAdapterInfo;
-import org.apache.cayenne.pref.Domain;
-import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
/**
@@ -42,8 +40,6 @@
private static final String NO_ADAPTER = "Custom / Undefined";
protected DataSourceCreatorView view;
- protected PreferenceEditor editor;
- protected Domain domain;
protected boolean canceled;
protected Map dataSources;
@@ -51,8 +47,6 @@
super(parent);
this.view = new DataSourceCreatorView((JDialog) SwingUtilities
.getWindowAncestor(parent.getView()));
- this.editor = parent.getEditor();
- this.domain = parent.getDataSourceDomain();
this.dataSources = parent.getDataSources();
DefaultComboBoxModel model = new DefaultComboBoxModel(DbAdapterInfo
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceDuplicator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceDuplicator.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceDuplicator.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourceDuplicator.java Fri Feb 26 12:34:31 2010
@@ -26,8 +26,6 @@
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.util.CayenneController;
-import org.apache.cayenne.pref.Domain;
-import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
/**
@@ -35,8 +33,6 @@
public class DataSourceDuplicator extends CayenneController {
protected DataSourceDuplicatorView view;
- protected PreferenceEditor editor;
- protected Domain domain;
protected boolean canceled;
protected Map dataSources;
protected String prototypeKey;
@@ -46,8 +42,6 @@
this.view = new DataSourceDuplicatorView("Create a copy of \""
+ prototypeKey
+ "\"");
- this.editor = parent.getEditor();
- this.domain = parent.getDataSourceDomain();
this.dataSources = parent.getDataSources();
this.prototypeKey = prototypeKey;
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourcePreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourcePreferences.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourcePreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/DataSourcePreferences.java Fri Feb 26 12:34:31 2010
@@ -20,24 +20,33 @@
package org.apache.cayenne.modeler.dialog.pref;
import java.awt.Component;
+import java.io.File;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
+import java.util.prefs.Preferences;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import org.apache.cayenne.conn.DriverDataSource;
+import org.apache.cayenne.modeler.FileClassLoadingService;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
import org.apache.cayenne.modeler.util.CayenneController;
+import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.ChildrenMapPreference;
-import org.apache.cayenne.pref.Domain;
import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.util.Util;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Transformer;
/**
* Editor for the local DataSources configured in preferences.
@@ -46,16 +55,20 @@
public class DataSourcePreferences extends CayenneController {
protected DataSourcePreferencesView view;
- protected PreferenceEditor editor;
protected String dataSourceKey;
protected Map dataSources;
protected ChildrenMapPreference dataSourcePreferences;
+ protected CayennePreferenceEditor editor;
public DataSourcePreferences(PreferenceDialog parentController) {
super(parentController);
this.view = new DataSourcePreferencesView(this);
- this.editor = parentController.getEditor();
+
+ PreferenceEditor editor = parentController.getEditor();
+ if (editor instanceof CayennePreferenceEditor) {
+ this.editor = (CayennePreferenceEditor) editor;
+ }
// init view data
this.dataSourcePreferences = getApplication()
@@ -96,14 +109,6 @@
builder.bindToComboSelection(view.getDataSources(), "dataSourceKey");
}
- public Domain getDataSourceDomain() {
- return editor.editableInstance(getApplication().getPreferenceDomain());
- }
-
- public PreferenceEditor getEditor() {
- return editor;
- }
-
public Map getDataSources() {
return dataSources;
}
@@ -170,7 +175,6 @@
public void removeDataSourceAction() {
String key = getDataSourceKey();
if (key != null) {
- editor.deleteDetail(getDataSourceDomain(), key);
dataSourcePreferences.remove(key);
dataSources = dataSourcePreferences.getChildrenPreferences();
@@ -224,8 +228,63 @@
}
try {
- Class driverClass = getApplication().getClassLoadingService().loadClass(
- currentDataSource.getJdbcDriver());
+
+ FileClassLoadingService classLoader = new FileClassLoadingService();
+
+ List<File> oldPathFiles = ((FileClassLoadingService) getApplication()
+ .getClassLoadingService()).getPathFiles();
+
+ Collection details = new ArrayList<String>();
+ for (int i = 0; i < oldPathFiles.size(); i++) {
+ details.add(oldPathFiles.get(i).getAbsolutePath());
+ }
+
+ Preferences classPathPreferences = getApplication().getPreferencesNode(
+ ClasspathPreferences.class,
+ "");
+ if (editor.getChangedPreferences().containsKey(classPathPreferences)) {
+ Map<String, String> map = editor.getChangedPreferences().get(
+ classPathPreferences);
+
+ Iterator iterator = map.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry en = (Map.Entry) iterator.next();
+ String key = (String) en.getKey();
+ if (!details.contains(key)) {
+ details.add(key);
+ }
+ }
+ }
+
+ if (editor.getRemovedPreferences().containsKey(classPathPreferences)) {
+ Map<String, String> map = editor.getRemovedPreferences().get(
+ classPathPreferences);
+
+ Iterator iterator = map.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry en = (Map.Entry) iterator.next();
+ String key = (String) en.getKey();
+ if (details.contains(key)) {
+ details.remove(key);
+ }
+ }
+ }
+
+ if (details.size() > 0) {
+
+ // transform preference to file...
+ Transformer transformer = new Transformer() {
+
+ public Object transform(Object object) {
+ String pref = (String) object;
+ return new File(pref);
+ }
+ };
+
+ classLoader.setPathFiles(CollectionUtils.collect(details, transformer));
+ }
+
+ Class driverClass = classLoader.loadClass(currentDataSource.getJdbcDriver());
Driver driver = (Driver) driverClass.newInstance();
// connect via Cayenne DriverDataSource - it addresses some driver issues...
@@ -276,5 +335,4 @@
return;
}
}
-
}
Modified: cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java?rev=916661&r1=916660&r2=916661&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java (original)
+++ cayenne/main/trunk/framework/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/GeneralPreferences.java Fri Feb 26 12:34:31 2010
@@ -20,13 +20,14 @@
package org.apache.cayenne.modeler.dialog.pref;
import java.awt.Component;
+import java.util.HashMap;
+import java.util.Map;
import java.util.prefs.Preferences;
import org.apache.cayenne.gen.ClassGenerationAction;
import org.apache.cayenne.modeler.util.CayenneController;
import org.apache.cayenne.pref.CayennePreferenceEditor;
import org.apache.cayenne.pref.CayennePreferenceService;
-import org.apache.cayenne.pref.PrefDetail;
import org.apache.cayenne.pref.PreferenceEditor;
import org.apache.cayenne.swing.BindingBuilder;
import org.apache.cayenne.swing.ObjectBinding;
@@ -42,10 +43,11 @@
protected GeneralPreferencesView view;
protected CayennePreferenceEditor editor;
+
protected boolean autoLoadProjectPreference;
- protected PrefDetail classGeneratorPreferences;
+ protected String encoding;
protected boolean deletePromptPreference;
-
+
protected Preferences preferences;
protected ObjectBinding saveIntervalBinding;
@@ -80,10 +82,15 @@
protected void initBindings() {
// init model objects
preferences = application.getPreferencesNode(ClassGenerationAction.class, "");
-
- this.classGeneratorPreferences = new PrefDetail(preferences.node(ENCODING_PREFERENCE));
- this.autoLoadProjectPreference = preferences.getBoolean(AUTO_LOAD_PROJECT_PREFERENCE, false);
- this.deletePromptPreference = preferences.getBoolean(DELETE_PROMPT_PREFERENCE, false);
+
+ this.encoding = preferences.get(ENCODING_PREFERENCE, null);
+
+ this.autoLoadProjectPreference = preferences.getBoolean(
+ AUTO_LOAD_PROJECT_PREFERENCE,
+ false);
+ this.deletePromptPreference = preferences.getBoolean(
+ DELETE_PROMPT_PREFERENCE,
+ false);
// build child controllers...
EncodingSelector encodingSelector = new EncodingSelector(this, view
@@ -94,17 +101,21 @@
getApplication().getBindingFactory(),
this);
- this.saveIntervalBinding = builder.bindToTextField(view.getSaveInterval(),
+ this.saveIntervalBinding = builder.bindToTextField(
+ view.getSaveInterval(),
"timeInterval");
- this.encodingBinding = builder.bindToProperty(encodingSelector,
- "classGeneratorPreferences.property[\"encoding\"]",
+ this.encodingBinding = builder.bindToProperty(
+ encodingSelector,
+ "encoding",
EncodingSelector.ENCODING_PROPERTY_BINDING);
- this.autoLoadProjectBinding = builder.bindToCheckBox(view.getAutoLoadProject(),
+ this.autoLoadProjectBinding = builder.bindToCheckBox(
+ view.getAutoLoadProject(),
"autoLoadProject");
- this.deletePromptBinding = builder.bindToCheckBox(view.getDeletePrompt(),
+ this.deletePromptBinding = builder.bindToCheckBox(
+ view.getDeletePrompt(),
"deletePrompt");
}
@@ -112,6 +123,15 @@
return this.editor.getSaveInterval() / 1000.0;
}
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ addChangedPreferences(ENCODING_PREFERENCE, encoding);
+ this.encoding = encoding;
+ }
+
public void setTimeInterval(double d) {
int ms = (int) (d * 1000.0);
if (ms < CayennePreferenceService.MIN_SAVE_INTERVAL) {
@@ -124,22 +144,40 @@
}
public boolean getAutoLoadProject() {
- return preferences.getBoolean(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE, false);
+ return autoLoadProjectPreference;
}
public void setAutoLoadProject(boolean autoLoadProject) {
- preferences.putBoolean(GeneralPreferences.AUTO_LOAD_PROJECT_PREFERENCE, autoLoadProject);
+
+ addChangedBooleanPreferences(AUTO_LOAD_PROJECT_PREFERENCE, autoLoadProject);
+ this.autoLoadProjectPreference = autoLoadProject;
}
public boolean getDeletePrompt() {
- return preferences.getBoolean(GeneralPreferences.DELETE_PROMPT_PREFERENCE, false);
+ return deletePromptPreference;
}
public void setDeletePrompt(boolean deletePrompt) {
- preferences.putBoolean(GeneralPreferences.DELETE_PROMPT_PREFERENCE, deletePrompt);
+
+ addChangedBooleanPreferences(DELETE_PROMPT_PREFERENCE, deletePrompt);
+ this.deletePromptPreference = deletePrompt;
}
- public PrefDetail getClassGeneratorPreferences() {
- return classGeneratorPreferences;
+ public void addChangedBooleanPreferences(String key, boolean value) {
+ Map<String, Boolean> map = editor.getChangedBooleanPreferences().get(preferences);
+ if (map == null) {
+ map = new HashMap<String, Boolean>();
+ }
+ map.put(key, value);
+ editor.getChangedBooleanPreferences().put(preferences, map);
+ }
+
+ public void addChangedPreferences(String key, String value) {
+ Map<String, String> map = editor.getChangedPreferences().get(preferences);
+ if (map == null) {
+ map = new HashMap<String, String>();
+ }
+ map.put(key, value);
+ editor.getChangedPreferences().put(preferences, map);
}
}
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=916661&r1=916660&r2=916661&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 Fri Feb 26 12:34:31 2010
@@ -24,7 +24,6 @@
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Set;
import javax.swing.JDialog;
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=916661&r1=916660&r2=916661&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 Fri Feb 26 12:34:31 2010
@@ -19,9 +19,16 @@
package org.apache.cayenne.pref;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.prefs.Preferences;
+
import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.modeler.Application;
import org.apache.cayenne.modeler.pref.DBConnectionInfo;
+
/**
* An editor for modifying CayennePreferenceService.
*
@@ -33,8 +40,12 @@
protected boolean restartRequired;
protected int saveInterval;
protected CayenneProjectPreferences cayenneProjectPreferences;
+ private Map<Preferences, Map<String, String>> changedPreferences;
+ private Map<Preferences, Map<String, String>> removedPreferences;
+ private Map<Preferences, Map<String, Boolean>> changedBooleanPreferences;
- public CayennePreferenceEditor(CayennePreferenceService service, CayenneProjectPreferences cayenneProjectPreferences) {
+ public CayennePreferenceEditor(CayennePreferenceService service,
+ CayenneProjectPreferences cayenneProjectPreferences) {
this.service = service;
this.editingContext = service
.getDataContext()
@@ -42,6 +53,24 @@
.createDataContext();
this.saveInterval = service.getSaveInterval();
this.cayenneProjectPreferences = cayenneProjectPreferences;
+ this.changedPreferences = new HashMap<Preferences, Map<String, String>>();
+ this.removedPreferences = new HashMap<Preferences, Map<String, String>>();
+ this.changedBooleanPreferences = new HashMap<Preferences, Map<String, Boolean>>();
+ }
+
+
+
+ public Map<Preferences, Map<String, String>> getRemovedPreferences() {
+ return removedPreferences;
+ }
+
+
+ public Map<Preferences, Map<String, String>> getChangedPreferences() {
+ return changedPreferences;
+ }
+
+ public Map<Preferences, Map<String, Boolean>> getChangedBooleanPreferences() {
+ return changedBooleanPreferences;
}
protected boolean isRestartRequired() {
@@ -66,7 +95,8 @@
public PreferenceDetail createDetail(Domain domain, String key) {
domain = editableInstance(domain);
- DomainPreference preference = getEditingContext().newObject(DomainPreference.class);
+ DomainPreference preference = getEditingContext().newObject(
+ DomainPreference.class);
preference.setDomain(domain);
preference.setKey(key);
@@ -75,7 +105,8 @@
public PreferenceDetail createDetail(Domain domain, String key, Class javaClass) {
domain = editableInstance(domain);
- DomainPreference preferenceLink = getEditingContext().newObject(DomainPreference.class);
+ DomainPreference preferenceLink = getEditingContext().newObject(
+ DomainPreference.class);
preferenceLink.setDomain(domain);
preferenceLink.setKey(key);
@@ -123,6 +154,57 @@
if (restartRequired) {
restart();
}
+
+ // update boolean preferences
+ Iterator it = changedBooleanPreferences.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry entry = (Map.Entry) it.next();
+ Preferences pref = (Preferences) entry.getKey();
+ Map<String, Boolean> map = (Map<String, Boolean>) entry.getValue();
+
+ Iterator iterator = map.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry en = (Map.Entry) iterator.next();
+ String key = (String) en.getKey();
+ Boolean value = (Boolean) en.getValue();
+
+ pref.putBoolean(key, value);
+ }
+ }
+
+ // update string preferences
+ Iterator iter = changedPreferences.entrySet().iterator();
+ while (iter.hasNext()) {
+ Map.Entry entry = (Map.Entry) iter.next();
+ Preferences pref = (Preferences) entry.getKey();
+ Map<String, String> map = (Map<String, String>) entry.getValue();
+
+ Iterator iterator = map.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry en = (Map.Entry) iterator.next();
+ String key = (String) en.getKey();
+ String value = (String) en.getValue();
+
+ pref.put(key, value);
+ }
+ }
+
+ // remove string preferences
+ Iterator iterator = removedPreferences.entrySet().iterator();
+ while (iterator.hasNext()) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ Preferences pref = (Preferences) entry.getKey();
+ Map<String, String> map = (Map<String, String>) entry.getValue();
+
+ Iterator itRem = map.entrySet().iterator();
+ while (itRem.hasNext()) {
+ Map.Entry en = (Map.Entry) itRem.next();
+ String key = (String) en.getKey();
+ pref.remove(key);
+ }
+ }
+
+ Application.getInstance().initClassLoader();
}
public void revert() {