You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/03/14 21:45:09 UTC

svn commit: r385883 - in /cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal: pluto/ pluto/om/ profile/impl/

Author: cziegeler
Date: Tue Mar 14 12:45:07 2006
New Revision: 385883

URL: http://svn.apache.org/viewcvs?rev=385883&view=rev
Log:
Continue work on preferences

Modified:
    cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java
    cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
    cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
    cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java

Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProvider.java Tue Mar 14 12:45:07 2006
@@ -25,5 +25,5 @@
 
     PreferenceSet getPreferenceSet(CopletInstanceData cid);
 
-    void storePreferenceSet(CopletInstanceData cid);
+    void storePreferenceSet(CopletInstanceData cid, PreferenceSet prefs);
 }

Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/PortletPreferencesProviderImpl.java Tue Mar 14 12:45:07 2006
@@ -15,26 +15,51 @@
  */
 package org.apache.cocoon.portal.pluto;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.portal.coplet.CopletInstanceData;
 import org.apache.cocoon.portal.impl.AbstractComponent;
 import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl;
 import org.apache.cocoon.portal.profile.ProfileLS;
+import org.apache.commons.collections.map.LinkedMap;
 import org.apache.pluto.om.common.PreferenceSet;
 
 /**
- * FIXME - We will use the ProfileLS for this with our own type: 
+ * FIXME - Configure this component and test it.
+ * This component manages the portlet preferences for a user.
+ * The default implementation will read/write one xml document
+ * for all instances of a portlet (TODO).
+ * In future version we will provide different implementations
+ * based on the coplet configuration: the preferences can then
+ * either be per instance or per user!
+ *
  * $Id$
  */
 public class PortletPreferencesProviderImpl
     extends AbstractComponent
-    implements PortletPreferencesProvider {
+    implements Parameterizable, PortletPreferencesProvider {
 
     protected static final String PROFILETYPE_PREFERENCES = "portletpreferences";
 
+    /** The component for loading/saving the profiles. */
     protected ProfileLS loader;
 
+    /** The configuration for this component. */
+    protected Parameters configuration;
+
+    /**
+     * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+     */
+    public void parameterize(Parameters params) throws ParameterException {
+        this.configuration = params;
+    }
+
     /**
      * @see org.apache.cocoon.portal.impl.AbstractComponent#dispose()
      */
@@ -54,22 +79,54 @@
         this.loader = (ProfileLS)this.manager.lookup(ProfileLS.ROLE);
     }
 
+    protected Map buildKey(boolean load, String copletId)
+    throws ParameterException {
+        final StringBuffer config = new StringBuffer(PROFILETYPE_PREFERENCES);
+        config.append('-');
+        config.append("user");
+        config.append('-');
+        if ( load ) {
+            config.append("load");
+        } else {
+            config.append("save");            
+        }
+        final String uri = this.configuration.getParameter(config.toString());
+
+        final Map key = new LinkedMap();
+        key.put("baseuri", uri);
+        key.put("separator", "?");
+        key.put("portal", this.portalService.getPortalName());
+        key.put("type", "user");
+        key.put("instance", "copletId");
+        key.put("user", this.portalService.getProfileManager().getUser().getUserName());
+
+        return key;
+    }
+
     /**
      * @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#getPreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData)
      */
     public PreferenceSet getPreferenceSet(CopletInstanceData cid) {
-        //final Map parameters = new HashMap();
-        //parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
-        //this.loader.loadProfile(key, parameters);
+        final Map parameters = new HashMap();
+        parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
+        try {
+            return (PreferenceSet)this.loader.loadProfile(this.buildKey(true, cid.getId()), parameters);
+        } catch (Exception ignore) {
+            // we ignore all exceptions for now (TODO)
+        }
         return new PreferenceSetImpl();
     }
 
     /**
-     * @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#storePreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData)
+     * @see org.apache.cocoon.portal.pluto.PortletPreferencesProvider#storePreferenceSet(org.apache.cocoon.portal.coplet.CopletInstanceData, org.apache.pluto.om.common.PreferenceSet)
      */
-    public void storePreferenceSet(CopletInstanceData cid) {
-        //final Map parameters = new HashMap();
-        //parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
-        //this.loader.loadProfile(key, parameters);
+    public void storePreferenceSet(CopletInstanceData cid, PreferenceSet prefs) {
+        final Map parameters = new HashMap();
+        parameters.put(ProfileLS.PARAMETER_PROFILETYPE, PROFILETYPE_PREFERENCES);
+        try {
+             this.loader.saveProfile(this.buildKey(false, cid.getId()), parameters, prefs);
+        } catch (Exception ignore) {
+             // we ignore all exceptions for now (TODO)
+        }
     }
 }

Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/pluto/om/PortletEntityImpl.java Tue Mar 14 12:45:07 2006
@@ -45,6 +45,8 @@
     protected final PortalService service;
     protected final PortletPreferencesProvider prefProvider;
 
+    protected static final String ATTR_PREFERENCES = PortletEntityImpl.class.getName() + "/Preferences";
+
     /**
      * Constructor.
      */
@@ -101,7 +103,12 @@
      * @see org.apache.pluto.om.entity.PortletEntity#getPreferenceSet()
      */
     public PreferenceSet getPreferenceSet() {
-        return this.prefProvider.getPreferenceSet(this.coplet);
+        PreferenceSet prefs = (PreferenceSet)this.coplet.getTemporaryAttribute(ATTR_PREFERENCES);
+        if ( prefs == null ) {
+            prefs = this.prefProvider.getPreferenceSet(this.coplet);
+            this.coplet.setTemporaryAttribute(ATTR_PREFERENCES, prefs);
+        }
+        return prefs;
     }
 
     /**
@@ -137,7 +144,7 @@
      * @see org.apache.pluto.om.entity.PortletEntityCtrl#store()
      */
     public void store() throws IOException {
-        this.prefProvider.storePreferenceSet(this.coplet);
+        this.prefProvider.storePreferenceSet(this.coplet, (PreferenceSet)this.coplet.getTemporaryAttribute(ATTR_PREFERENCES));
     }
 
 }

Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=385883&r1=385882&r2=385883&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Tue Mar 14 12:45:07 2006
@@ -562,7 +562,7 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserCopletInstanceDatas(java.lang.String)
+     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#saveUserCopletInstanceDatas(java.lang.String)
      */
     public void saveUserCopletInstanceDatas(String layoutKey) {
         try {
@@ -588,7 +588,7 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserLayout(java.lang.String)
+     * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#saveUserLayout(java.lang.String)
      */
     public void saveUserLayout(String layoutKey) {
         try {