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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 12 06:28:41 EDT 2009


Author: lkrzyzanek
Date: 2009-03-12 06:28:40 -0400 (Thu, 12 Mar 2009)
New Revision: 25610

Modified:
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/DbHFURLDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/HFURLDAO.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java
   labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
Log:
changed getDocumentID return type to List.
for one HF title can be more then one document.

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManager.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -21,7 +21,9 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -31,7 +33,6 @@
 import org.jboss.labs.clearspace.plugin.hfurl.dao.HFURLDAO;
 import org.springframework.dao.EmptyResultDataAccessException;
 
-import com.jivesoftware.base.database.dao.DAOException;
 import com.jivesoftware.community.Document;
 import com.jivesoftware.community.DocumentState;
 import com.jivesoftware.community.event.DocumentEvent;
@@ -85,30 +86,30 @@
     return hfURLTitle;
   }
 
-  public String getDocumentID(String hfURLTitle) {
-    String documentID = null;
+  public List<String> getDocumentID(String hfURLTitle) {
+    List<String> docIds = new ArrayList<String>();
     if (hfURLCache.containsValue(hfURLTitle)) {
       Iterator<Entry<String, String>> it = hfURLCache.entrySet().iterator();
       while (it.hasNext()) {
         Entry<String, String> pairs = it.next();
 
         if (hfURLTitle.equals(pairs.getValue())) {
-          documentID = pairs.getKey();
-          break;
+          docIds.add(pairs.getKey());
         }
       }
     } else {
-      HFURLBean bean;
       try {
-        bean = hfURLDAO.getByHfURLTitle(hfURLTitle);
-        documentID = bean.getDocumentID();
-        hfURLCache.put(documentID, hfURLTitle);
+        List<HFURLBean> beans = hfURLDAO.getByHfURLTitle(hfURLTitle);
+        for (HFURLBean dbbean : beans) {
+          docIds.add(dbbean.getDocumentID());
+          hfURLCache.put(dbbean.getDocumentID(), hfURLTitle);
+        }
       } catch (EmptyResultDataAccessException e) {
-        documentID = "DOC-"; // non existing document
+        docIds.add("DOC-"); // non existing document
       }
     }
 
-    return documentID;
+    return docIds;
   }
 
   // DOCUMENT LISTENER METHODS
@@ -160,6 +161,7 @@
       bean.setHfTitle(hfURLTitle);
 
       hfURLDAO.updateHFURL(bean);
+      hfURLCache.put(doc.getDocumentID(), hfURLTitle);
     }
 
     // User delete - it's not Administrator delete that fire documentDeleted
@@ -195,7 +197,7 @@
       log.debug("documentUndeleted: " + event.getDocument().getDocumentID());
     }
     Document doc = event.getDocument();
-    
+
     try {
       hfURLDAO.getByDocumentId(doc.getDocumentID());
       // document HF URL founded - should not happen but rather check it

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/HFURLManager.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -21,6 +21,8 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl;
 
+import java.util.List;
+
 /**
  * Manager for handling with Human friendly URLs.
  * 
@@ -33,11 +35,11 @@
    * 
    * @param hfURLTitle
    *          HF URL title.
-   * @return ID of document i.e. DOC-1234 or null if document is not founded
+   * @return set of ID of document i.e. DOC-1234 or empty set if no document is founded
    * @see #createHFURLTitle(String)
    * @see com.jivesoftware.community.impl.dao.DocumentBean#getDocumentID()
    */
-  public String getDocumentID(String hfURLTitle);
+  public List<String> getDocumentID(String hfURLTitle);
 
   /**
    * Create HF URL title

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/DbHFURLDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/DbHFURLDAOImpl.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/DbHFURLDAOImpl.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -23,6 +23,7 @@
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.List;
 
 import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
 import org.springframework.transaction.annotation.Transactional;
@@ -45,30 +46,29 @@
 
   private static final String LOAD_HFURL_BY_HFTITLE = SELECT_FIELDS
       + " FROM humanFriendlyURLMap WHERE hfTitle=?";
-  
+
   private static final String LOAD_HFURL_BY_DOCUMENT_ID = SELECT_FIELDS
-  + " FROM humanFriendlyURLMap WHERE documentID=?";
+      + " FROM humanFriendlyURLMap WHERE documentID=?";
 
   private static final String INSERT_HFURL_ENTRY = "INSERT INTO humanFriendlyURLMap (id, hfTitle, documentID) VALUES (?, ?, ?)";
 
   private static final String UPDATE_HFURL_ENTRY = "UPDATE humanFriendlyURLMap SET hfTitle=?, documentID=? WHERE id=?";
 
   private static final String DELETE_HFURL_ENTRY_BY_ID = "DELETE FROM humanFriendlyURLMap WHERE id=?";
-  
+
   private static final String DELETE_HFURL_ENTRY_BY_DOCUMENT_ID = "DELETE FROM humanFriendlyURLMap WHERE documentID=?";
 
   private static final HfURLMapMapper mapper = new HfURLMapMapper();
 
-  public HFURLBean getByHfURLTitle(String hfURLTitle) throws DAOException {
-    return this.getSimpleJdbcTemplate().queryForObject(LOAD_HFURL_BY_HFTITLE,
-        mapper, hfURLTitle);
+  public List<HFURLBean> getByHfURLTitle(String hfURLTitle) throws DAOException {
+    return this.getSimpleJdbcTemplate().query(LOAD_HFURL_BY_HFTITLE, mapper,
+        hfURLTitle);
   }
-  
+
   public HFURLBean getByDocumentId(String documentId) throws DAOException {
-    return this.getSimpleJdbcTemplate().queryForObject(LOAD_HFURL_BY_DOCUMENT_ID,
-        mapper, documentId);
+    return this.getSimpleJdbcTemplate().queryForObject(
+        LOAD_HFURL_BY_DOCUMENT_ID, mapper, documentId);
   }
-  
 
   @Transactional
   public HFURLBean createHFURL(HFURLBean bean) throws DAOException {
@@ -93,9 +93,10 @@
   }
 
   public void deleteHFURL(String documentId) throws DAOException {
-    getSimpleJdbcTemplate().update(DELETE_HFURL_ENTRY_BY_DOCUMENT_ID, documentId);
+    getSimpleJdbcTemplate().update(DELETE_HFURL_ENTRY_BY_DOCUMENT_ID,
+        documentId);
   }
-  
+
   static final class HfURLMapMapper implements
       ParameterizedRowMapper<HFURLBean> {
     public HFURLBean mapRow(ResultSet rs, int rowNum) throws SQLException {

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/HFURLDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/HFURLDAO.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/dao/HFURLDAO.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -21,6 +21,8 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl.dao;
 
+import java.util.List;
+
 import org.springframework.dao.EmptyResultDataAccessException;
 
 import com.jivesoftware.base.database.dao.DAOException;
@@ -36,10 +38,10 @@
    * Get by HF URL Title
    * 
    * @param hfURLTitle
-   * @return HF URL Bean
+   * @return set of HF URL Bean
    * @throws EmptyResultDataAccessException if document HF URL not found
    */
-  public HFURLBean getByHfURLTitle(String hfURLTitle) throws EmptyResultDataAccessException;
+  public List<HFURLBean> getByHfURLTitle(String hfURLTitle) throws EmptyResultDataAccessException;
   
   /**
    * Get by documentId

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/main/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMapping.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -21,6 +21,10 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl.struts.mapping;
 
+import java.util.List;
+
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.jboss.labs.clearspace.plugin.hfurl.HFURLManager;
 
@@ -35,8 +39,10 @@
  */
 public class HFURLMapping extends DocURLMapping {
 
+  private static final Logger log = LogManager.getLogger(HFURLMapping.class);
+
   private HFURLManager hfURLManager;
-  
+
   public void process(String uri, ActionMapping mapping) {
     uri = convertHFURL2StandardURL(uri);
     super.process(uri, mapping);
@@ -44,6 +50,7 @@
 
   /**
    * Converts HF URL to standard CS URL
+   * 
    * @param uri
    * @return
    */
@@ -58,21 +65,27 @@
       } else {
         hfURLTitle = uriElements[2];
       }
-      String documentID = hfURLManager.getDocumentID(hfURLTitle);
+      List<String> documentIDs = hfURLManager.getDocumentID(hfURLTitle);
 
-      if (documentID == null) {
-        // TODO document not found
-      } else {
-        final int hfURLTitleEndIndex = uri.indexOf(hfURLTitle) + hfURLTitle.length();
+      if (documentIDs.size() == 1) {
+        final int hfURLTitleEndIndex = uri.indexOf(hfURLTitle)
+            + hfURLTitle.length();
         StringBuilder sb = new StringBuilder("/docs/");
-        sb.append(documentID);
-        
+        sb.append(documentIDs.get(0));
+
         if (hfURLTitleEndIndex < uri.length()) {
           sb.append(uri.substring(hfURLTitleEndIndex, uri.length()));
         }
         uri = sb.toString();
+      } else {
+        if (log.isDebugEnabled()) {
+          log.debug("More than one page is founded for title: " + hfURLTitle);
+        }
+        // TODO redirect to page with links to each document
+
+        // at now non existing page is returned.
+        uri = "/docs/DOC-";
       }
-
     }
     return uri;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/DbHFURLManagerTest.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -24,6 +24,7 @@
 import static org.junit.Assert.assertEquals;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.jboss.labs.clearspace.plugin.hfurl.dao.HFURLBean;
@@ -76,7 +77,7 @@
       return null;
     }
 
-    public HFURLBean getByHfURLTitle(String hfURLTitle)
+    public List<HFURLBean> getByHfURLTitle(String hfURLTitle)
         throws EmptyResultDataAccessException {
       if ("not-existing".equals(hfURLTitle)) {
         throw new EmptyResultDataAccessException("non existing document", 1);
@@ -93,7 +94,6 @@
   /**
    * Test method for
    * {@link org.jboss.labs.clearspace.plugin.hfurl.DbHFURLManager#createHFURLTitle(java.lang.String)}
-   * .
    */
   @Test
   public void testCreateHFURLTitle() {
@@ -121,16 +121,15 @@
   /**
    * Test method for
    * {@link org.jboss.labs.clearspace.plugin.hfurl.DbHFURLManager#getDocumentID(java.lang.String)}
-   * .
    */
   @Test
   public void testGetDocumentID() {
-    assertEquals("DOC-1234", hfURLManager
-        .getDocumentID("documentwithfriendlyurl"));
-    assertEquals("DOC-2345", hfURLManager
-        .getDocumentID("documentwithfriendlyurl2"));
+    assertEquals("DOC-1234", hfURLManager.getDocumentID(
+        "documentwithfriendlyurl").get(0));
+    assertEquals("DOC-2345", hfURLManager.getDocumentID(
+        "documentwithfriendlyurl2").get(0));
 
-    assertEquals("DOC-", hfURLManager.getDocumentID("not-existing"));
+    assertEquals("DOC-", hfURLManager.getDocumentID("not-existing").get(0));
   }
 
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-03-12 09:46:57 UTC (rev 25609)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-hfurl/src/test/java/org/jboss/labs/clearspace/plugin/hfurl/struts/mapping/HFURLMappingTest.java	2009-03-12 10:28:40 UTC (rev 25610)
@@ -21,21 +21,25 @@
  */
 package org.jboss.labs.clearspace.plugin.hfurl.struts.mapping;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.jboss.labs.clearspace.plugin.hfurl.HFURLManager;
 import org.junit.Before;
 import org.junit.Test;
 
 /**
  * Tests of HFURLMapping
+ * 
  * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
- *
+ * 
  */
 public class HFURLMappingTest {
 
   private HFURLMapping actionMapping;
-  
+
   @Before
   public void setupHFURLMapping() {
     actionMapping = new HFURLMapping();
@@ -45,32 +49,49 @@
         return null;
       }
 
-      public String getDocumentID(String hfURLTitle) {
-        return "DOC-1234";
+      public List<String> getDocumentID(String hfURLTitle) {
+        List<String> docIds = new ArrayList<String>();
+        docIds.add("DOC-1234");
+        return docIds;
       }
-      
+
     });
   }
-  
+
   /**
-   * Test method for {@link org.jboss.labs.clearspace.plugin.hfurl.struts.mapping.HFURLMapping#convertHFURL2StandardURL(java.lang.String)}.
+   * Test method for
+   * {@link org.jboss.labs.clearspace.plugin.hfurl.struts.mapping.HFURLMapping#convertHFURL2StandardURL(java.lang.String)}
+   * .
    */
   @Test
   public void testConvertHFURL2StandardURL() {
-    assertEquals("/docs/DOC-1234", actionMapping.convertHFURL2StandardURL("/doc/JDKs"));
-    assertEquals("/docs/DOC-1234.pdf", actionMapping.convertHFURL2StandardURL("/doc/JDKs.pdf"));
-    
-    assertEquals("/docs/DOC-1234/collaborate", actionMapping.convertHFURL2StandardURL("/doc/JDKs/collaborate"));
-    assertEquals("/docs/DOC-1234/edit", actionMapping.convertHFURL2StandardURL("/doc/JDKs/edit"));
-    assertEquals("/docs/DOC-1234/upload", actionMapping.convertHFURL2StandardURL("/doc/JDKs/upload"));
-    assertEquals("/docs/DOC-1234/diff", actionMapping.convertHFURL2StandardURL("/doc/JDKs/diff"));
-    assertEquals("/docs/DOC-1234/restore", actionMapping.convertHFURL2StandardURL("/doc/JDKs/restore"));
-    assertEquals("/docs/DOC-1234/deleteVersion", actionMapping.convertHFURL2StandardURL("/doc/JDKs/deleteVersion"));
-    assertEquals("/docs/DOC-1234/authors", actionMapping.convertHFURL2StandardURL("/doc/JDKs/authors"));
-    assertEquals("/docs/DOC-1234/version", actionMapping.convertHFURL2StandardURL("/doc/JDKs/version"));
-    assertEquals("/docs/DOC-1234/version/5", actionMapping.convertHFURL2StandardURL("/doc/JDKs/version/5"));
-    assertEquals("/docs/DOC-1234/diff/", actionMapping.convertHFURL2StandardURL("/doc/JDKs/diff/"));
-    assertEquals("/docs/DOC-1234/delete", actionMapping.convertHFURL2StandardURL("/doc/JDKs/delete"));
+    assertEquals("/docs/DOC-1234", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs"));
+    assertEquals("/docs/DOC-1234.pdf", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs.pdf"));
+
+    assertEquals("/docs/DOC-1234/collaborate", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/collaborate"));
+    assertEquals("/docs/DOC-1234/edit", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/edit"));
+    assertEquals("/docs/DOC-1234/upload", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/upload"));
+    assertEquals("/docs/DOC-1234/diff", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/diff"));
+    assertEquals("/docs/DOC-1234/restore", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/restore"));
+    assertEquals("/docs/DOC-1234/deleteVersion", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/deleteVersion"));
+    assertEquals("/docs/DOC-1234/authors", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/authors"));
+    assertEquals("/docs/DOC-1234/version", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/version"));
+    assertEquals("/docs/DOC-1234/version/5", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/version/5"));
+    assertEquals("/docs/DOC-1234/diff/", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/diff/"));
+    assertEquals("/docs/DOC-1234/delete", actionMapping
+        .convertHFURL2StandardURL("/doc/JDKs/delete"));
   }
 
 }




More information about the jboss-svn-commits mailing list