Author: cziegeler
Date: Mon Jan 17 00:32:27 2005
New Revision: 125402

URL: http://svn.apache.org/viewcvs?view=rev&rev=125402
Log:
Fix copying of profile
Modified:
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
   
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
       (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/components/modules/input/SkinModule.java
       Mon Jan 17 00:32:27 2005
@@ -25,10 +25,11 @@
 import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.cocoon.components.modules.input.InputModule;
 import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.layout.Layout;
 import org.apache.cocoon.portal.layout.SkinDescription;
 
 /**
- * FIXME We can use the module chaining!
+ * This input module provides information about the current selected skin
  * 
  * @version CVS $Id: SkinModule.java,v 1.4 2005/01/07 10:21:46 cziegeler Exp $
  */
@@ -77,11 +78,21 @@
 
             portalService = 
(PortalService)this.manager.lookup(PortalService.ROLE);
 
+            String skinName = null;
             // get the current skin
-            // TODO
-            String skinName = (String)this.globalModule.getAttribute("skin", 
modeConf, objectModel);
+            // the skin is stored as a parameter on the root layout
+            // if not, the global module is used
+            // fallback is: common
+            final Layout rootLayout = 
portalService.getComponentManager().getProfileManager().getPortalLayout(null, 
null);
+            if ( rootLayout != null ) {
+                skinName = (String)rootLayout.getParameters().get("skin");
+            }
+            // use the global module
             if ( skinName == null ) {
-                skinName = "basic";
+                skinName = (String)this.globalModule.getAttribute("skin", 
modeConf, objectModel);
+                if ( skinName == null ) {
+                    skinName = "common";
+                }
             }
             
             // find the correct skin
@@ -100,6 +111,14 @@
                     return desc.getBasePath();
                 } else if ( "skin.thumbnailpath".equals(name) ) {
                     return desc.getThumbnailPath();
+                } else if ( name.startsWith("skin.thumbnailuri.") ) {
+                    String selectedSkinName = 
name.substring(name.lastIndexOf(".")+ 1, name.length());
+                    for(Iterator it = 
portalService.getSkinDescriptions().iterator(); it.hasNext();) {
+                        SkinDescription selected = (SkinDescription) it.next();
+                        if(selected.getName().equals(selectedSkinName)) {
+                            return selected.getBasePath() + "/"  + 
selected.getThumbnailPath(); 
+                        }
+                    }
                 }
             }
             return null;

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java
        (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/event/impl/PageLabelEventConverter.java
        Mon Jan 17 00:32:27 2005
@@ -122,6 +122,7 @@
     * @see org.apache.cocoon.portal.event.EventConverter#finish()
     */
     public void finish() {
+        // nothing to do         
     }
 
     /* (non-Javadoc)
@@ -131,4 +132,4 @@
         return this.labelManager.isMarshallEvents();
     }
 
-}
\ No newline at end of file
+}

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
   (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/impl/DefaultLinkService.java
   Mon Jan 17 00:32:27 2005
@@ -141,8 +141,7 @@
             if (!comparableEvent || !current.equalsEvent((ComparableEvent) 
event)) {
                 if (hasParams) {
                     buffer.append('&');
-                }
-                else {
+                } else {
                     buffer.append('?');
                 }
                 buffer.append((String) 
objects[1]).append('=').append(SourceUtil.encode((String) objects[2]));
@@ -208,8 +207,7 @@
             if (!found) {
                 if (hasParams) {
                     buffer.append('&');
-                }
-                else {
+                } else {
                     buffer.append('?');
                 }
                 buffer.append((String) 
objects[1]).append('=').append(SourceUtil.encode((String) objects[2]));
@@ -223,12 +221,10 @@
             final Object current = iter.next();
             if (current instanceof Event) {
                 hasParams = this.addEvent(buffer, (Event) current, hasParams);
-            }
-            else if (current instanceof ParameterDescription) {
+            } else if ( current instanceof ParameterDescription ) {
                 if (hasParams) {
                     buffer.append('&');
-                }
-                else {
+                } else {
                     buffer.append('?');
                     hasParams = true;
                 }
@@ -388,4 +384,4 @@
         }
         return parameterName;
     }
-}
\ No newline at end of file
+}

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
     (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
     Mon Jan 17 00:32:27 2005
@@ -42,13 +42,6 @@
     
     protected Map parameters = new LinkedMap();
 
-    /*
-     * Default constructor
-     */
-    public AbstractLayout() {
-        
-    }
-
     /* (non-Javadoc)
      * @see org.apache.cocoon.portal.layout.Parameters#getParameters()
      */

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
       (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/Item.java
       Mon Jan 17 00:32:27 2005
@@ -43,7 +43,9 @@
         */
        public final void setLayout(Layout layout) {
                this.layout = layout;
+               if(layout != null) {
                layout.setParent(this);
+       }
        }
     
     public final CompositeLayout getParent() {
@@ -71,6 +73,7 @@
             Item clone = (Item)this.clone();
             if ( this.layout != null ) {
                 clone.layout = this.layout.copy();
+                clone.layout.setParent(clone);
             }
             clone.parentLayout = parent;
             return clone;

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
       (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
       Mon Jan 17 00:32:27 2005
@@ -40,7 +40,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
  * 
- * @version CVS $Id: AbstractCompositeAspect.java,v 1.7 2004/04/25 20:09:34 
haul Exp $
+ * @version CVS $Id$
  */
 public abstract class AbstractCompositeAspect
     extends AbstractAspect {
@@ -81,9 +81,11 @@
      * renderer for a layout to render it.
      */
     protected void processLayout(Layout layout, PortalService service, 
ContentHandler handler) throws SAXException {
-        final String rendererName = layout.getRendererName();
-        final Renderer renderer = 
service.getComponentManager().getRenderer(rendererName);
-        renderer.toSAX(layout, service, handler);
+        if ( layout != null ) {
+            final String rendererName = layout.getRendererName();
+            final Renderer renderer = 
service.getComponentManager().getRenderer(rendererName);
+            renderer.toSAX(layout, service, handler);
+        }
     }
 
 }

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
    (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/ProfileManager.java
    Mon Jan 17 00:32:27 2005
@@ -117,14 +117,6 @@
     Collection getCopletDatas();
     
     /**
-     * Copy the current (default) layout and store it under
-     * the provided key.
-     * The copy includes copying of layout objects (with attached
-     * items) and coplet instance datas.
-     */
-    Layout copyProfile(String layoutKey);
-    
-    /**
      * Store the provided profile under the layoutKey.
      * This method can be used to overwrite a profile with another
      * one.

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
       (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
       Mon Jan 17 00:32:27 2005
@@ -108,17 +108,4 @@
         // overwrite in subclass
     }
 
-    /* (non-Javadoc)
-     * @see 
org.apache.cocoon.portal.profile.ProfileManager#copyProfile(java.lang.String)
-     */
-    public Layout copyProfile(String layoutKey) {
-        throw new RuntimeException("Copy profile is not implemented.");
-    }
-
-    /* (non-Javadoc)
-     * @see 
org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout,
 java.lang.String)
-     */
-    public void storeProfile(Layout rootLayout, String layoutKey) {
-        throw new RuntimeException("Store profile is not implemented.");
-    }
 }

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java
   (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractUserProfileManager.java
   Mon Jan 17 00:32:27 2005
@@ -411,4 +411,25 @@
         }
     }
     
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout,
 java.lang.String)
+     */
+    public void storeProfile(Layout rootLayout, String layoutKey) {
+        PortalService service = null;
+        
+        try {
+            service = (PortalService) this.manager.lookup(PortalService.ROLE);
+            if ( null == layoutKey ) {
+                layoutKey = service.getDefaultLayoutKey();
+            }
+
+            final String layoutAttributeKey = "Layout:" + layoutKey;
+            
+            service.setAttribute(layoutAttributeKey, rootLayout);
+        } catch (Exception ce) {
+            throw new CascadingRuntimeException("Exception during loading of 
profile.", ce);
+        } finally {
+            this.manager.release(service);
+        }
+    }
 }

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
     (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
     Mon Jan 17 00:32:27 2005
@@ -591,4 +591,31 @@
         return key;
     }
     
+    
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout,
 java.lang.String)
+     */
+    public void storeProfile(Layout rootLayout, String layoutKey) {
+        PortalService service = null;
+
+        try {
+            UserProfile oldProfile = this.getUserProfile(null);
+            service = (PortalService) this.manager.lookup(PortalService.ROLE);
+            if ( null == layoutKey ) {
+                layoutKey = service.getDefaultLayoutKey();
+            }
+            // FIXME for now we just copy the root profile, except the root 
layout
+            UserProfile newProfile = new UserProfile();
+            newProfile.setCopletBaseDatas(oldProfile.getCopletBaseDatas());
+            newProfile.setCopletDatas(oldProfile.getCopletDatas());
+            
newProfile.setCopletInstanceDatas(oldProfile.getCopletInstanceDatas());
+            newProfile.setRootLayout(rootLayout);
+            
+            this.storeUserProfile(layoutKey, service, newProfile);
+        } catch (Exception ce) {
+            throw new CascadingRuntimeException("Exception during loading of 
profile.", ce);
+        } finally {
+            this.manager.release(service);
+        }
+    }
 }

Modified: 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
Url: 
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?view=diff&rev=125402&p1=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r1=125401&p2=cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java&r2=125402
==============================================================================
--- 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
 (original)
+++ 
cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
 Mon Jan 17 00:32:27 2005
@@ -364,4 +364,12 @@
             this.manager.release(service);
         }
     }
+    
+    
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.profile.ProfileManager#storeProfile(org.apache.cocoon.portal.layout.Layout,
 java.lang.String)
+     */
+    public void storeProfile(Layout rootLayout, String layoutKey) {
+        throw new RuntimeException("The static profile manager does not 
support the storeProfile() method.");
+    }
 }

Reply via email to