cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ol...@apache.org
Subject 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/
Date Wed, 03 Mar 2010 13:19:48 GMT
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();
     }



Mime
View raw message