[jboss-svn-commits] JBL Code SVN: r28851 - in labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src: main/java/org/jboss/labs/clearspace/plugin/nfm/dao and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 6 03:27:11 EDT 2009


Author: lkrzyzanek
Date: 2009-08-06 03:27:10 -0400 (Thu, 06 Aug 2009)
New Revision: 28851

Added:
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/communities.properties
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/resources/communities-test.properties
Modified:
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/CommunityDefBean.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManagerTest.java
Log:
Added implementation for loading community layout.
Added junit test

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java	2009-08-06 02:21:04 UTC (rev 28850)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java	2009-08-06 07:27:10 UTC (rev 28851)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.clearspace.plugin.nfm;
 
+import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -28,9 +29,12 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
+import java.util.StringTokenizer;
 import java.util.concurrent.LinkedBlockingQueue;
 
 import org.apache.log4j.LogManager;
@@ -807,12 +811,75 @@
     return appContext + url;
   }
 
-  protected Set<CommunityDefBean> loadCommunityLayout() {
-    HashSet<CommunityDefBean> communities = new HashSet<CommunityDefBean>();
-    
+  public void createInitialCommunitiesLayout() {
+    Properties layoutDef = new Properties();
+    try {
+      layoutDef.load(DbNukesForumsManager.class
+          .getResourceAsStream("/communities.properties"));
+    } catch (IOException e) {
+      throw new RuntimeException("Cannot load communities layout definition", e);
+    }
+    //Set<CommunityDefBean> communities = loadCommunityLayout(layoutDef);
+
+    // TODO create communities and mappings
+  }
+
+  protected Set<CommunityDefBean> loadCommunityLayout(Properties layoutDef) {
+    Set<CommunityDefBean> communities = new LinkedHashSet<CommunityDefBean>();
+    final String rootPrefix = "community.";
+
+    int i = 1;
+
+    while (true) {
+      String prefix = rootPrefix + i + ".";
+
+      String communityName = layoutDef.getProperty(prefix + "name");
+      String communityForumIDsStr = layoutDef.getProperty(prefix + "forumIDs");
+      if (communityName == null || communityForumIDsStr == null) {
+        log.info("No definition for '" + prefix + "name' or '" + prefix
+            + "forumIDs'. Probably no more community definition.");
+        break;
+      }
+
+      CommunityDefBean communityDef = createCommunityDef(communityName,
+          communityForumIDsStr);
+
+      int j = 1;
+      Set<CommunityDefBean> subCommunities = new LinkedHashSet<CommunityDefBean>();
+      while (true) {
+        String subCommunityName = layoutDef.getProperty(prefix + j + ".name");
+        String subCcommunityForumIDsStr = layoutDef.getProperty(prefix + j
+            + ".forumIDs");
+        if (subCommunityName == null || subCcommunityForumIDsStr == null) {
+          break;
+        }
+        CommunityDefBean subCommunityDef = createCommunityDef(subCommunityName,
+            subCcommunityForumIDsStr);
+        subCommunities.add(subCommunityDef);
+        j++;
+      }
+      communityDef.setSubCommunityDefBeans(subCommunities);
+
+      communities.add(communityDef);
+
+      i++;
+    }
+
     return communities;
   }
-  
+
+  private CommunityDefBean createCommunityDef(String communityName,
+      String communityForumIDsStr) {
+    StringTokenizer forumIdsTokenizer = new StringTokenizer(
+        communityForumIDsStr, ",");
+    Set<Long> forumIds = new HashSet<Long>();
+    while (forumIdsTokenizer.hasMoreTokens()) {
+      forumIds.add(Long.parseLong(forumIdsTokenizer.nextToken()));
+    }
+
+    return new CommunityDefBean(communityName, forumIds);
+  }
+
   public void setNukesForumsMappingDAO(
       NukesForumsMappingDAO nukesForumsMappingDAO) {
     this.nukesForumsMappingDAO = nukesForumsMappingDAO;

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java	2009-08-06 02:21:04 UTC (rev 28850)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java	2009-08-06 07:27:10 UTC (rev 28851)
@@ -92,4 +92,10 @@
   public String getCSForumsURL(String module, String op, Long c, Long f,
       Long t, Long p);
 
+  /**
+   * Create initial communities layout. Definition of communities are in
+   * /communities.properties
+   */
+  public void createInitialCommunitiesLayout();
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/CommunityDefBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/CommunityDefBean.java	2009-08-06 02:21:04 UTC (rev 28850)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/CommunityDefBean.java	2009-08-06 07:27:10 UTC (rev 28851)
@@ -21,6 +21,12 @@
  */
 package org.jboss.labs.clearspace.plugin.nfm.dao;
 
+import java.util.Set;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+
 /**
  * Community definition for initial communities layout
  * 
@@ -30,8 +36,58 @@
 
   private String name;
 
-  private Long forumID;
+  private Set<Long> forumIDs;
 
-  private CommunityDefBean subCommunityDefBean;
+  private Set<CommunityDefBean> subCommunityDefBeans;
 
+  public CommunityDefBean(String name, Set<Long> forumIDs) {
+    super();
+    this.name = name;
+    this.forumIDs = forumIDs;
+  }
+
+  public String getName() {
+    return name;
+  }
+
+  public void setName(String name) {
+    this.name = name;
+  }
+
+  public Set<Long> getForumIDs() {
+    return forumIDs;
+  }
+
+  public void setForumIDs(Set<Long> forumIDs) {
+    this.forumIDs = forumIDs;
+  }
+
+  public Set<CommunityDefBean> getSubCommunityDefBeans() {
+    return subCommunityDefBeans;
+  }
+
+  public void setSubCommunityDefBeans(Set<CommunityDefBean> subCommunityDefBeans) {
+    this.subCommunityDefBeans = subCommunityDefBeans;
+  }
+
+  public boolean equals(Object object) {
+    if (!(object instanceof CommunityDefBean)) {
+      return false;
+    }
+    CommunityDefBean rhs = (CommunityDefBean) object;
+    return new EqualsBuilder().append(this.name, rhs.name).append(
+        this.forumIDs, rhs.forumIDs).isEquals();
+  }
+
+  public int hashCode() {
+    return new HashCodeBuilder(742143201, -1803403465).append(this.forumIDs)
+        .append(this.name).toHashCode();
+  }
+
+  public String toString() {
+    return new ToStringBuilder(this).append("name", this.name).append(
+        "forumIDs", this.getForumIDs()).append("subCommunityDefBeans",
+        this.subCommunityDefBeans).toString();
+  }
+
 }

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/communities.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/communities.properties	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/communities.properties	2009-08-06 07:27:10 UTC (rev 28851)
@@ -0,0 +1,11 @@
+community.1.name=JBoss AS
+community.1.forumIDs=1,2,3,4
+community.1.1.name=JBoss AS Developers
+community.1.1.forumIDs=5,6,7,8
+community.1.2.name=Another sub community
+community.1.2.forumIDs=101
+
+community.2.name=Portal
+community.2.forumIDs=9
+community.2.1.name=Portal Developers
+community.2.1.forumIDs=10
\ No newline at end of file


Property changes on: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/communities.properties
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManagerTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManagerTest.java	2009-08-06 02:21:04 UTC (rev 28850)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManagerTest.java	2009-08-06 07:27:10 UTC (rev 28851)
@@ -21,11 +21,16 @@
  */
 package org.jboss.labs.clearspace.plugin.nfm;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
 
+import java.io.IOException;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
 
+import org.jboss.labs.clearspace.plugin.nfm.dao.CommunityDefBean;
 import org.jboss.labs.clearspace.plugin.nfm.dao.NukesForumsMappingDAO;
 import org.junit.Before;
 import org.junit.Test;
@@ -87,6 +92,44 @@
 
   }
 
+  @Test
+  public void testLoadCommunityLayout() {
+    Properties layoutDef = new Properties();
+    try {
+      layoutDef.load(DbNukesForumsManager.class
+          .getResourceAsStream("/communities-test.properties"));
+    } catch (IOException e) {
+      throw new RuntimeException("Cannot load communities layout definition", e);
+    }
+    
+    Set<CommunityDefBean> layoutSet = dbNukesForumsManager.loadCommunityLayout(layoutDef);
+    Iterator<CommunityDefBean> layoutIt = layoutSet.iterator();
+
+    CommunityDefBean jbossAS = layoutIt.next();
+    assertEquals("JBoss AS", jbossAS.getName());
+    assertArrayEquals(new Long[] {1l, 2l, 3l, 4l}, jbossAS.getForumIDs().toArray());
+    
+    Iterator<CommunityDefBean> jbossASSubs = jbossAS.getSubCommunityDefBeans().iterator();
+    CommunityDefBean jbossASDev = jbossASSubs.next();
+    assertEquals("JBoss AS Developers", jbossASDev.getName());
+    assertArrayEquals(new Long[] {5l, 6l, 7l, 8l}, jbossASDev.getForumIDs().toArray());
+    
+    CommunityDefBean jbossASSub = jbossASSubs.next();
+    assertEquals("Another sub community", jbossASSub.getName());
+    assertArrayEquals(new Long[] {101l}, jbossASSub.getForumIDs().toArray());
+
+    
+    CommunityDefBean portal = layoutIt.next();
+    assertEquals("Portal", portal.getName());
+    assertArrayEquals(new Long[] {9l}, portal.getForumIDs().toArray());
+    
+    Iterator<CommunityDefBean> portalubs = portal.getSubCommunityDefBeans().iterator();
+    CommunityDefBean portalDev = portalubs.next();
+    assertEquals("Portal Developers", portalDev.getName());
+    assertArrayEquals(new Long[] {10l}, portalDev.getForumIDs().toArray());
+    
+  }
+  
   class DummyNukesForumsMappingDAO implements NukesForumsMappingDAO {
 
     Map<Long, Long> categoryMappings = null;

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/resources/communities-test.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/resources/communities-test.properties	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/resources/communities-test.properties	2009-08-06 07:27:10 UTC (rev 28851)
@@ -0,0 +1,11 @@
+community.1.name=JBoss AS
+community.1.forumIDs=1,2,3,4
+community.1.1.name=JBoss AS Developers
+community.1.1.forumIDs=5,6,7,8
+community.1.2.name=Another sub community
+community.1.2.forumIDs=101
+
+community.2.name=Portal
+community.2.forumIDs=9
+community.2.1.name=Portal Developers
+community.2.1.forumIDs=10
\ No newline at end of file


Property changes on: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/resources/communities-test.properties
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the jboss-svn-commits mailing list