Update of 
/var/cvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/util
In directory 
james.mmbase.org:/tmp/cvs-serv32203/subsite/src/java/com/finalist/cmsc/subsite/util

Modified Files:
      Tag: b1_4
        SubSiteUtil.java 
Log Message:
CMSC-617 Personal Pages module
Backport to 1.4


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/util
See also: http://www.mmbase.org/jira/browse/CMSC-617


Index: SubSiteUtil.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/subsite/src/java/com/finalist/cmsc/subsite/util/SubSiteUtil.java,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -b -r1.3 -r1.3.2.1
--- SubSiteUtil.java    1 Feb 2008 12:55:56 -0000       1.3
+++ SubSiteUtil.java    25 Feb 2008 16:26:15 -0000      1.3.2.1
@@ -1,49 +1,72 @@
 package com.finalist.cmsc.subsite.util;
 
+import java.util.List;
+
+import net.sf.mmapps.commons.util.StringUtil;
+
 import org.mmbase.bridge.Cloud;
+import org.mmbase.bridge.Field;
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.NodeQuery;
 import org.mmbase.bridge.util.SearchUtil;
 
-import com.finalist.cmsc.mmbase.TreeUtil;
 import com.finalist.cmsc.navigation.NavigationUtil;
 import com.finalist.cmsc.navigation.PagesUtil;
 import com.finalist.cmsc.repository.RepositoryUtil;
 
 public class SubSiteUtil {
+
    public static final String SUBSITE = "subsite";
    public static final String PERSONALPAGE = "personalpage";
+
    public static final String ALIAS_SUBSITE = "repository.subsite";
 
-   public static NodeList getOrderedChildren(Node parentNode) {
-      return SearchUtil.findRelatedOrderedNodeList(parentNode, 
SubSiteUtil.SUBSITE, NavigationUtil.NAVREL,
-            PagesUtil.FRAGMENT_FIELD);
-   }
+   public static final String USERID = "userid";
 
-   public static int getChildCount(Node node) {
-      return TreeUtil.getChildCount(node, 
node.getCloud().getNodeManager(SUBSITE), NavigationUtil.NAVREL);
-   }
+   public static final String PERSONAL_PAGE_ID = "personalPageId";
 
    public static boolean isSubSiteType(Node node) {
       return node.getNodeManager().getName().equals(SUBSITE);
    }
    
+   public static boolean isPersonalPageType(Node node) {
+      return node.getNodeManager().getName().equals(PERSONALPAGE);
+   }
+
    public static Node createSubSiteContentChannel(Node subsite) {
       Node subsiteRootChannel = getRepositoryRoot(subsite.getCloud());
       return createContentChannel(subsite, subsiteRootChannel);
    }
 
    public static Node createPersonalPageContentChannel(Node personalpage) {
+      return createPersonalPageContentChannel(personalpage, null);
+   }
+
+   public static Node createPersonalPageContentChannel(Node personalpage, 
List<String> childChannels) {
       Node personalpageChannel = getSubsiteChannel(personalpage);
-      return createContentChannel(personalpage, personalpageChannel);
+      return createContentChannel(personalpage, personalpageChannel, 
childChannels);
    }
 
    private static Node createContentChannel(Node page, Node parentChannel) {
-      //create channel in the Content Repository
+      return createContentChannel(page, parentChannel, null);
+   }
+
+   private static Node createContentChannel(Node page, Node parentChannel, 
List<String> childChannelNames) {
+      // create channel in the Content Repository
       Cloud cloud = page.getCloud();
       String fragment = page.getStringValue(PagesUtil.FRAGMENT_FIELD);
       Node channel = RepositoryUtil.createChannel(cloud, 
page.getStringValue(PagesUtil.TITLE_FIELD), fragment);
       RepositoryUtil.appendChild(parentChannel, channel);
+
+      if (childChannelNames != null) {
+         for (String childChannelName : childChannelNames) {
+            Node childChannel = RepositoryUtil.createChannel(cloud, 
childChannelName);
+            RepositoryUtil.appendChild(channel, childChannel);
+         }
+      }
+
       return channel;
    }
    
@@ -55,9 +78,38 @@
       return RepositoryUtil.getChild(repositoryRootChannel, fragment);
    }
 
+   public static Node getPersonalpageChannel(Node personalpage) {
+      Node ppChannel = getSubsiteChannel(personalpage);
+      String fragment = personalpage.getStringValue(PagesUtil.FRAGMENT_FIELD);
+      return RepositoryUtil.getChild(ppChannel, fragment);
+   }
+
+   public static Node getPersonalpageNodeByUserId(Cloud cloud, String userId) {
+      if (userId == null || StringUtil.isEmpty(userId)) {
+         return null;
+      }
+
+      NodeManager personalPageNodeManager = cloud.getNodeManager(PERSONALPAGE);
+      NodeQuery query = personalPageNodeManager.createQuery();
+      Field userIdField = personalPageNodeManager.getField(USERID);
+      SearchUtil.addEqualConstraint(query, userIdField, userId);
+      SearchUtil.addLimitConstraint(query, 0, 1);
+
+      NodeList nodeList = personalPageNodeManager.getList(query);
+
+      return nodeList.isEmpty() ? null : (Node) nodeList.get(0);
+   }
+
    public static Node getRepositoryRoot(Cloud cloud) {
       Node repositoryRootChannel = cloud.getNode(ALIAS_SUBSITE);
       return repositoryRootChannel;
    }
 
+   public static Node createPersonalPage(Cloud cloud, String name, Node 
layout, String personalPageId) {
+      Node personalPage = PagesUtil.createPage(cloud, name, layout, 
PERSONALPAGE);
+      personalPage.setStringValue(USERID, personalPageId);
+      personalPage.commit();
+
+      return personalPage;
+   }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to