Author: cziegeler
Date: Tue Aug 31 04:29:10 2004
New Revision: 37251

Modified:
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
Log:
Improving group based profile manager

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
     (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/components/persistence/CastorSourceConverter.java
     Tue Aug 31 04:29:10 2004
@@ -51,13 +51,13 @@
  * In order to work properly the methods provided by this interface require 
some 
  * parameters:
  * objectmap : containing a map of objects for resolving references during load
- * profiletype: specifying the mapping (this is one of layout, 
copletinstancedata, copletdata or copletbasedate
+ * profiletype: specifying the mapping (this is one of layout, 
copletinstancedata, copletdata or copletbasedata
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Bj&ouml;rn L&uuml;tkemeier</a>
  * 
- * @version CVS $Id: CastorSourceConverter.java,v 1.4 2004/03/05 13:02:07 
bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class CastorSourceConverter
     extends AbstractLogEnabled
@@ -65,19 +65,22 @@
         
     public static final String ROLE = CastorSourceConverter.class.getName();
 
+    public static final String PARAMETER_OBJECTMAP = "objectmap";
+    public static final String PARAMETER_PROFILETYPE = "profiletype";
+    
     private Map mappingSources = new HashMap();
     private ServiceManager manager;
     private Map mappings = new HashMap();
 
     public Object getObject(InputStream stream, Map parameters) throws 
ConverterException {
         try {
-            
ReferenceFieldHandler.setObjectMap((Map)parameters.get("objectmap"));
-            Unmarshaller unmarshaller = new 
Unmarshaller((Mapping)this.mappings.get(parameters.get("profiletype")));
+            
ReferenceFieldHandler.setObjectMap((Map)parameters.get(PARAMETER_OBJECTMAP));
+            Unmarshaller unmarshaller = new 
Unmarshaller((Mapping)this.mappings.get(parameters.get(PARAMETER_PROFILETYPE)));
             Object result = unmarshaller.unmarshal(new InputSource(stream));
             stream.close();
             return result;
         } catch (MappingException e) {
-            throw new ConverterException("can't create Unmarshaller", e);
+            throw new ConverterException("Can't create Unmarshaller", e);
         } catch (Exception e) {
             throw new ConverterException(e.getMessage(), e);
         }
@@ -87,11 +90,11 @@
         Writer writer = new OutputStreamWriter(stream);
                try {
                        Marshaller marshaller = new Marshaller( writer );
-                       
marshaller.setMapping((Mapping)this.mappings.get(parameters.get("profiletype")));
+                       
marshaller.setMapping((Mapping)this.mappings.get(parameters.get(PARAMETER_PROFILETYPE)));
                        marshaller.marshal(object);
                        writer.close();
                } catch (MappingException e) {
-                       throw new ConverterException("can't create 
Unmarshaller", e);
+                       throw new ConverterException("Can't create 
Unmarshaller", e);
                } catch (Exception e) {
                        throw new ConverterException(e.getMessage(), e);
                }

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
 (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileLS.java
 Tue Aug 31 04:29:10 2004
@@ -20,21 +20,20 @@
 import org.apache.excalibur.source.SourceValidity;
 
 /**
- *
+ * This component is used for loading/saving of a profile.
+ * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Bj&ouml;rn L&uuml;tkemeier</a>
  * 
- * @version CVS $Id: ProfileLS.java,v 1.5 2004/03/05 13:02:16 bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public interface ProfileLS {
     
     String ROLE = ProfileLS.class.getName();
     
-    //  TODO define ExceptionType later
     Object loadProfile(Object key, Map parameters) throws Exception;  
     
-    //TODO define ExceptionType later
     void saveProfile(Object key, Map parameters, Object profile) throws 
Exception;  
     
     SourceValidity getValidity(Object key, Map parameters);

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
     (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
     Tue Aug 31 04:29:10 2004
@@ -197,7 +197,7 @@
     /* (non-Javadoc)
      * @see 
org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(java.lang.String,
 java.lang.String)
      */
-    public Layout getPortalLayout(String layoutKey, String layoutID) {
+    public Layout getPortalLayout(String layoutKey, String layoutId) {
         PortalService service = null;
 
         try {
@@ -210,8 +210,18 @@
             if ( null != l) {
                 return l;
             }
-            final UserProfile profile = this.getUserProfile(layoutKey);
-            return (Layout)profile.getLayouts().get(layoutID);
+            
+            UserProfile profile = this.getUserProfile(layoutKey);
+            if ( profile == null ) {
+                profile = this.loadProfile(layoutKey, service);
+            }
+            if ( profile == null ) {
+                throw new RuntimeException("Unable to load profile: " + 
layoutKey);
+            }
+            if ( layoutId != null ) {
+                return (Layout)profile.getLayouts().get(layoutId);
+            }
+            return profile.getRootLayout();
         } catch (Exception ce) {
             throw new CascadingRuntimeException("Exception during loading of 
profile.", ce);
         } finally {
@@ -267,5 +277,12 @@
         }
     }
         
-    
+    /**
+     * Load the profile
+     */
+    protected UserProfile loadProfile(final String layoutKey, final 
PortalService service) {
+        final UserProfile profile = new UserProfile();
+        
+        return profile;
+    }
 }

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
 (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/MapProfileLS.java
 Tue Aug 31 04:29:10 2004
@@ -42,9 +42,11 @@
 import org.w3c.dom.Element;
 
 /**
+ * This implementation uses Castor to load/save the profiles.
+ * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: MapProfileLS.java,v 1.7 2004/03/05 13:02:16 bdelacretaz 
Exp $
+ * @version CVS $Id$
  */
 public class MapProfileLS
     extends AbstractLogEnabled

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
  (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/UserProfile.java
  Tue Aug 31 04:29:10 2004
@@ -17,6 +17,8 @@
 
 import java.util.Map;
 
+import org.apache.cocoon.portal.layout.Layout;
+
 /**
  * This data object holds all information about the current user:
  * - references to the configuration
@@ -36,6 +38,8 @@
     
     protected Map layouts;
     
+    protected Layout rootLayout;
+    
     /**
      * @return Returns the copletBaseDatas.
      */
@@ -90,5 +94,19 @@
      */
     public void setLayouts(Map layouts) {
         this.layouts = layouts;
+    }
+    
+    /**
+     * @return Returns the rootLayout.
+     */
+    public Layout getRootLayout() {
+        return rootLayout;
+    }
+    
+    /**
+     * @param rootLayout The rootLayout to set.
+     */
+    public void setRootLayout(Layout rootLayout) {
+        this.rootLayout = rootLayout;
     }
 }

Reply via email to