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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 25 10:43:54 EDT 2009


Author: lkrzyzanek
Date: 2009-05-25 10:43:53 -0400 (Mon, 25 May 2009)
New Revision: 26718

Added:
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/RedirectNFToCSForumAction.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/cache-config.xml
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/DbNukesForumsManagerTest.java
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/DbNukesForumsMappingDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsMappingDAO.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/struts.xml
Log:
added RedirectNFToCSForum functionality

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-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -52,8 +52,8 @@
 import com.jivesoftware.community.JiveConstants;
 import com.jivesoftware.community.QuestionManager;
 import com.jivesoftware.community.RejectedException;
-import com.jivesoftware.community.cache.CacheManager;
 import com.jivesoftware.community.stats.ViewCountManager;
+import com.jivesoftware.community.web.JiveResourceResolver;
 
 /**
  * Db implementation
@@ -82,10 +82,19 @@
 
   private ViewCountManager viewCountManager;
 
-  Map<Long, Long> categoryMappings = null;
+  /**
+   * Application context. Default = "/community"
+   */
+  private String appContext = "/community";
 
-  Map<Long, Long> forumMappings = null;
+  private Map<Long, Long> categoryMappings = null;
 
+  private Map<Long, Long> forumMappings = null;
+
+  private com.jivesoftware.community.cache.Cache<Long, Long> topicMappings;
+
+  private com.jivesoftware.community.cache.Cache<Long, Long> postMappings;
+
   private Date defaultTopicTime;
 
   public int createForumMappingFromCategories() {
@@ -163,8 +172,6 @@
         } catch (CommunityNotFoundException e) {
           throw new RuntimeException(e);
         }
-        // Caches must be cleared because we modify view count
-        // communityManager.clearCache(community);
 
         ForumMessage rootMessage = forumManager.createMessage(community,
             rootMessageUser);
@@ -174,6 +181,9 @@
         rootMessage.setModificationDate(topicPost.getTime());
         rootMessage.setSubject(topic.getTitle());
 
+        // TODO need to implement conversion from NF syntax to Wiki syntax:
+        // [quote], [quote=""] [url] [code]
+
         org.w3c.dom.Document topicBody = WikiContentHelper
             .wikiToJiveDocument(topicPost.getBody());
         rootMessage.setBody(topicBody);
@@ -293,6 +303,79 @@
     }
   }
 
+  public String getCSForumsURL(String module, String op, Long c, Long f,
+      Long t, Long p) {
+    if ("bb".equalsIgnoreCase(module)) {
+      // case /index.html?module=bb
+      if (op == null || op.trim().length() == 0) {
+        return addContext("/threads");
+      }
+
+      // case /index.html?module=bb&op=search
+      if ("search".equalsIgnoreCase(op)) {
+        return addContext("/search");
+      }
+
+      // case: /index.html?module=bb&op=main&c=15
+      // and /index.html?module=bb&op=viewforum&f=165
+      if (("main".equalsIgnoreCase(op) && c != null)
+          || ("viewforum".equalsIgnoreCase(op) && f != null)) {
+        Long communityID = getCategoryMappings().get(c);
+        if (communityID == null) {
+          return null;
+        }
+        Community community;
+        try {
+          community = communityManager.getCommunity(communityID);
+          String communityURL = JiveResourceResolver
+              .getJiveObjectURL(community)
+              + "?view=discussions";
+          return addContext(communityURL);
+        } catch (CommunityNotFoundException e) {
+          return null;
+        }
+      }
+      // case: /index.html?module=bb&op=viewtopic&t=150889
+      if ("viewtopic".equals(op) && t != null) {
+        Long threadID = getThreadID(t);
+        return addContext("/thread/" + threadID + "?tstart=0");
+      }
+
+      // case: /index.html?module=bb&op=viewtopic&p=3915981
+      if ("viewtopic".equals(op) && p != null) {
+        Long messageID = getMessageID(p);
+        return addContext("/message/" + messageID + "#" + messageID);
+      }
+    }
+    return null;
+  }
+
+  protected Long getThreadID(Long topicID) {
+    Long threadID = topicMappings.get(topicID);
+
+    if (threadID == null) {
+      threadID = nukesForumsMappingDAO.getTopicMapping(topicID);
+      topicMappings.put(topicID, threadID);
+    }
+
+    return threadID;
+  }
+
+  protected Long getMessageID(Long postID) {
+    Long messageID = postMappings.get(postID);
+
+    if (messageID == null) {
+      messageID = nukesForumsMappingDAO.getPostMapping(postID);
+      postMappings.put(postID, messageID);
+    }
+
+    return messageID;
+  }
+
+  private String addContext(String url) {
+    return appContext + url;
+  }
+
   public void setNukesForumsMappingDAO(
       NukesForumsMappingDAO nukesForumsMappingDAO) {
     this.nukesForumsMappingDAO = nukesForumsMappingDAO;
@@ -342,4 +425,30 @@
     this.viewCountManager = viewCountManager;
   }
 
+  public void setAppContext(String appContext) {
+    this.appContext = appContext;
+  }
+
+  public String getAppContext() {
+    return appContext;
+  }
+
+  public void setTopicMappings(
+      com.jivesoftware.community.cache.Cache<Long, Long> topicMappings) {
+    this.topicMappings = topicMappings;
+  }
+
+  public com.jivesoftware.community.cache.Cache<Long, Long> getTopicMappings() {
+    return topicMappings;
+  }
+
+  public void setPostMappings(
+      com.jivesoftware.community.cache.Cache<Long, Long> postMappings) {
+    this.postMappings = postMappings;
+  }
+
+  public com.jivesoftware.community.cache.Cache<Long, Long> getPostMappings() {
+    return postMappings;
+  }
+
 }

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-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -62,7 +62,7 @@
    * @return
    */
   public int getCategoryCount();
-
+  
   /**
    * Flush cache
    * 
@@ -70,4 +70,25 @@
    */
   public void flushCache(CacheName cacheName);
 
+  /**
+   * Get Clearspace Forums URL based on Nukes Forums Parameters
+   * 
+   * @param module
+   *          NF parameter module
+   * @param op
+   *          NF parameter operation
+   * @param c
+   *          NF parameter category
+   * @param f
+   *          NF parameter forum
+   * @param t
+   *          NF parameter topic
+   * @param p
+   *          NF parameter post
+   * @return CS forums URL like <code>community/jbossas?view=discussions</code>
+   *         or NULL if no CS forum was founded
+   */
+  public String getCSForumsURL(String module, String op, Long c, Long f,
+      Long t, Long p);
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsMappingDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsMappingDAOImpl.java	2009-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsMappingDAOImpl.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -27,6 +27,7 @@
 import java.util.Map;
 
 import org.springframework.dao.DataAccessException;
+import org.springframework.dao.EmptyResultDataAccessException;
 import org.springframework.jdbc.core.ResultSetExtractor;
 
 import com.jivesoftware.base.database.dao.JiveJdbcDaoSupport;
@@ -44,6 +45,10 @@
 
   private static final String SELECT_ALL_FORUMS_MAPPINGS = "SELECT forum_id, communityID FROM nukesForumsForumMapping";
 
+  private static final String SELECT_TOPIC_MAPPINGS = "SELECT threadID FROM nukesForumsTopicMapping WHERE topic_id = ?";
+
+  private static final String SELECT_POST_MAPPINGS = "SELECT messageID FROM nukesForumsPostMapping WHERE post_id = ?";
+
   private static final String INSERT_FORUM_MAPPING = "INSERT INTO nukesForumsForumMapping (forum_id, communityID) VALUES (?, ?)";
 
   private static final String INSERT_TOPIC_MAPPING = "INSERT INTO nukesForumsTopicMapping (topic_id, threadID) VALUES (?, ?)";
@@ -62,6 +67,17 @@
         SELECT_ALL_FORUMS_MAPPINGS, new TwoColumnsAsMapExtractor());
   }
 
+  public Long getPostMapping(Long postID) throws EmptyResultDataAccessException {
+    return this.getSimpleJdbcTemplate().queryForLong(SELECT_POST_MAPPINGS,
+        postID);
+  }
+
+  public Long getTopicMapping(Long topicID)
+      throws EmptyResultDataAccessException {
+    return this.getSimpleJdbcTemplate().queryForLong(SELECT_TOPIC_MAPPINGS,
+        topicID);
+  }
+
   public void saveForumMapping(Long forumID, Long communityID) {
     this.getSimpleJdbcTemplate().update(INSERT_FORUM_MAPPING, forumID,
         communityID);

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsMappingDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsMappingDAO.java	2009-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsMappingDAO.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -23,6 +23,8 @@
 
 import java.util.Map;
 
+import org.springframework.dao.EmptyResultDataAccessException;
+
 /**
  * Interface for Nukes Forums category, forum, topic and post mapping
  * 
@@ -46,6 +48,25 @@
   public Map<Long, Long> getAllForumMappings();
 
   /**
+   * Get topic mapping for specified topicID
+   * 
+   * @param topicID
+   * @return threadID
+   * @throws EmptyResultDataAccessException
+   */
+  public Long getTopicMapping(Long topicID)
+      throws EmptyResultDataAccessException;
+
+  /**
+   * Get post mapping for specified postID
+   * 
+   * @param postID
+   * @return mesageID
+   * @throws EmptyResultDataAccessException
+   */
+  public Long getPostMapping(Long postID) throws EmptyResultDataAccessException;
+
+  /**
    * Insert new forum mapping
    * 
    * @param forumID

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/RedirectNFToCSForumAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/RedirectNFToCSForumAction.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/RedirectNFToCSForumAction.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -0,0 +1,133 @@
+/*
+ * JBoss.org http://jboss.org/
+ *
+ * Copyright (c) 2009  Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.clearspace.plugin.nfm.struts;
+
+import org.jboss.labs.clearspace.plugin.nfm.NukesForumsManager;
+
+import com.jivesoftware.community.action.JiveActionSupport;
+
+/**
+ * Action redirects from NF URL to Clearspace forum based on mapping between
+ * those systems
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ * 
+ */
+public class RedirectNFToCSForumAction extends JiveActionSupport {
+
+  /**
+   * URL to redirect
+   */
+  private String url = null;
+
+  private String module = null;
+
+  private String op = null;
+
+  private Long c = null;
+
+  private Long f = null;
+
+  private Long t = null;
+
+  private Long p = null;
+
+  private NukesForumsManager nukesForumsManager;
+
+  public static final String URL_NOT_DEFINED = "urlNotDefined";
+
+  @Override
+  public String execute() {
+    url = nukesForumsManager.getCSForumsURL(module, op, c, f, t, p);
+
+    if (url == null) {
+      return URL_NOT_DEFINED;
+    }
+
+    return SUCCESS;
+  }
+
+  public String getUrl() {
+    return url;
+  }
+
+  public void setUrl(String url) {
+    this.url = url;
+  }
+
+  public String getModule() {
+    return module;
+  }
+
+  public void setModule(String module) {
+    this.module = module;
+  }
+
+  public String getOp() {
+    return op;
+  }
+
+  public void setOp(String op) {
+    this.op = op;
+  }
+
+  public Long getC() {
+    return c;
+  }
+
+  public void setC(Long c) {
+    this.c = c;
+  }
+
+  public Long getF() {
+    return f;
+  }
+
+  public void setF(Long f) {
+    this.f = f;
+  }
+
+  public Long getT() {
+    return t;
+  }
+
+  public void setT(Long t) {
+    this.t = t;
+  }
+
+  public Long getP() {
+    return p;
+  }
+
+  public void setP(Long p) {
+    this.p = p;
+  }
+
+  public NukesForumsManager getNukesForumsManager() {
+    return nukesForumsManager;
+  }
+
+  public void setNukesForumsManager(NukesForumsManager nukesForumsManager) {
+    this.nukesForumsManager = nukesForumsManager;
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/RedirectNFToCSForumAction.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/cache-config.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/cache-config.xml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/cache-config.xml	2009-05-25 14:43:53 UTC (rev 26718)
@@ -0,0 +1,39 @@
+<cache-config>
+  <cache-mapping>
+    <cache-name>Nukes Forums Topic mapping</cache-name>
+    <scheme-name>default-near</scheme-name>
+    <init-params>
+      <init-param>
+        <param-name>back-size-high</param-name>
+        <param-value>131072</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-expiry</param-name>
+        <param-value>6h</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-size-low</param-name>
+        <param-value>117965</param-value>
+      </init-param>
+    </init-params>
+  </cache-mapping>
+  <cache-mapping>
+    <cache-name>Nukes Forums Post mapping</cache-name>
+    <scheme-name>default-near</scheme-name>
+    <init-params>
+      <init-param>
+        <param-name>back-size-high</param-name>
+        <param-value>131072</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-expiry</param-name>
+        <param-value>6h</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-size-low</param-name>
+        <param-value>117965</param-value>
+      </init-param>
+    </init-params>
+  </cache-mapping>
+
+</cache-config>


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

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml	2009-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml	2009-05-25 14:43:53 UTC (rev 26718)
@@ -5,6 +5,16 @@
 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
 
+
+  <bean id="topicMappings" parent="cacheBean" depends-on="cacheFactoryManager">
+    <constructor-arg value="Nukes Forums Topic mapping" />
+  </bean>
+
+  <bean id="postMappings" parent="cacheBean" depends-on="cacheFactoryManager">
+    <constructor-arg value="Nukes Forums Post mapping" />
+  </bean>
+
+
   <bean id="nukesForumsManager"
     class="org.jboss.labs.clearspace.plugin.nfm.DbNukesForumsManager">
     <property name="nukesForumsMappingDAO" ref="nukesForumsMappingDAO" />
@@ -16,6 +26,9 @@
     <property name="viewCountManager" ref="viewCountManager" />
     <property name="questionManager" ref="questionManager" />
     <property name="defaultTopicTimeStr" value="2002-01-01" />
+    
+    <property name="topicMappings" ref="topicMappings" />
+    <property name="postMappings" ref="postMappings" />
   </bean>
 
   <bean id="nukesForumsMappingDAO"

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/struts.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/struts.xml	2009-05-25 11:42:06 UTC (rev 26717)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/struts.xml	2009-05-25 14:43:53 UTC (rev 26718)
@@ -44,7 +44,19 @@
         /plugins/nukes-forums-migration/admin/nukes-forums-migration.ftl
       </result>
     </action>
-
   </package>
+  
+  <package name="nfm-actions" namespace="/nfm" extends="community-actions">
+    <action name="redirectToCSForum"
+      class="org.jboss.labs.clearspace.plugin.nfm.struts.RedirectNFToCSForumAction">
+      <result name="success" type="httpheader">
+        <param name="status">301</param>
+        <param name="headers.Location">${url}</param>
+        <param name="parse">true</param>
+      </result>
+      <result name="input" type="redirect">/</result>
+      <result name="urlNotDefined" type="redirect">/</result>
+    </action>
+  </package>
 
 </struts>

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/DbNukesForumsManagerTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/DbNukesForumsManagerTest.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/DbNukesForumsManagerTest.java	2009-05-25 14:43:53 UTC (rev 26718)
@@ -0,0 +1,119 @@
+/*
+ * JBoss.org http://jboss.org/
+ *
+ * Copyright (c) 2009  Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.clearspace.plugin.nfm.struts;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.labs.clearspace.plugin.nfm.DbNukesForumsManager;
+import org.jboss.labs.clearspace.plugin.nfm.dao.NukesForumsMappingDAO;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.dao.EmptyResultDataAccessException;
+
+import com.jivesoftware.community.cache.CoherenceCache;
+
+/**
+ * Test of {@link DbNukesForumsManager}
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ * 
+ */
+public class DbNukesForumsManagerTest {
+
+  private DbNukesForumsManager dbNukesForumsManager;
+
+  private static final String MODULE_BB = "bb";
+
+  @Before
+  public void setupDbNukesForumsManagerTest() {
+    dbNukesForumsManager = new DbNukesForumsManager();
+    dbNukesForumsManager
+        .setNukesForumsMappingDAO(new DummyNukesForumsMappingDAO());
+    dbNukesForumsManager.setTopicMappings(new CoherenceCache());
+    dbNukesForumsManager.setPostMappings(new CoherenceCache());
+  }
+
+  /**
+   * Test method for
+   * {@link org.jboss.labs.clearspace.plugin.nfm.DbNukesForumsManager#getCSForumsURL(java.lang.String, java.lang.String, java.lang.Long, java.lang.Long, java.lang.Long, java.lang.Long)}
+   */
+  @Test
+  public void testGetCSForumsURL() {
+
+    assertEquals("/community/threads", dbNukesForumsManager.getCSForumsURL(
+        MODULE_BB, null, null, null, null, null));
+
+    // assertEquals("community/community/jbossas?view=discussions",
+    // dbNukesForumsManager.getCSForumsURL(MODULE_BB, "main", new Long(5),
+    // null, null, null));
+
+    assertEquals("/community/thread/1001?tstart=0", dbNukesForumsManager
+        .getCSForumsURL(MODULE_BB, "viewtopic", null, null, new Long(16549),
+            null));
+
+    assertEquals("/community/message/1058#1058", dbNukesForumsManager
+        .getCSForumsURL(MODULE_BB, "viewtopic", null, null, null, new Long(
+            18465)));
+
+  }
+
+  class DummyNukesForumsMappingDAO implements NukesForumsMappingDAO {
+
+    Map<Long, Long> categoryMappings = null;
+
+    public Map<Long, Long> getAllCategoryMappings() {
+      if (categoryMappings == null) {
+        categoryMappings = new HashMap<Long, Long>();
+        categoryMappings.put(new Long(5), new Long(2005));
+      }
+      return null;
+    }
+
+    public Long getPostMapping(Long postID)
+        throws EmptyResultDataAccessException {
+      return new Long(1058);
+    }
+
+    public Long getTopicMapping(Long topicID)
+        throws EmptyResultDataAccessException {
+      return new Long(1001);
+    }
+
+    public Map<Long, Long> getAllForumMappings() {
+      return null;
+    }
+
+    public void saveForumMapping(Long forumID, Long communityID) {
+    }
+
+    public void savePostMapping(Long postID, Long messageID) {
+    }
+
+    public void saveTopicMapping(Long topicID, Long threadID) {
+    }
+
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/test/java/org/jboss/labs/clearspace/plugin/nfm/struts/DbNukesForumsManagerTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain




More information about the jboss-svn-commits mailing list