[jboss-svn-commits] JBL Code SVN: r32271 - in labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src: main/java/org/jboss/labs/sbs/plugin/bm/dao and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 29 08:40:07 EDT 2010


Author: lkrzyzanek
Date: 2010-03-29 08:40:05 -0400 (Mon, 29 Mar 2010)
New Revision: 32271

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/resources/oldBlogUsersMap.properties
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/OldBlogsManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/dao/OldBlogEntryBean.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/struts/AdminBlogsMigrationAction.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/plugin/spring.xml
   labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/test/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManagerTest.java
Log:
Added implementation of blogs migration

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManager.java	2010-03-29 12:40:05 UTC (rev 32271)
@@ -22,14 +22,26 @@
 package org.jboss.labs.sbs.plugin.bm;
 
 import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Date;
 import java.util.Properties;
 
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 import org.jboss.labs.sbs.plugin.bm.dao.OldBlogEntryBean;
 
+import com.jivesoftware.base.User;
+import com.jivesoftware.base.UserManager;
+import com.jivesoftware.base.UserNotFoundException;
+import com.jivesoftware.base.wiki.WikiContentHelper;
+import com.jivesoftware.community.Blog;
+import com.jivesoftware.community.BlogManager;
+import com.jivesoftware.community.BlogPost;
+
 /**
  * DB Implementation of DbOldBlogsManager
  * 
@@ -37,27 +49,147 @@
  * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
  */
 public class DbOldBlogsManager implements OldBlogsManager {
+
+  private static final Logger log = LogManager.getLogger(DbOldBlogsManager.class);
+
   /**
+   * Old blogs encoding
+   */
+  private String encoding = "UTF-8";
+
+  /**
    * Line separator for the system
    */
-  public static final String LINE_SEPARATOR = System
-      .getProperty("line.separator");
+  public static final String LINE_SEPARATOR = System.getProperty("line.separator");
 
+  private UserManager userManager;
+
+  private BlogManager blogManager;
+
+  private Properties oldBlogUsersMap = null;
+
+  /**
+   * Filter only directories
+   */
+  private static final FileFilter DIRECTORY_FILTER = new FileFilter() {
+
+    @Override
+    public boolean accept(File pathname) {
+      return pathname.isDirectory();
+    }
+
+  };
+
+  private FileFilter createExtensionFilter(final String extension) {
+    return new FileFilter() {
+
+      @Override
+      public boolean accept(File pathname) {
+        if (pathname.isDirectory()) {
+          return false;
+        }
+        if (pathname.getName().endsWith(extension)) {
+          return true;
+        }
+        return false;
+      }
+    };
+  }
+
   @Override
+  public String getSBSUsername(String oldBlogUser) {
+    return oldBlogUsersMap.getProperty(oldBlogUser);
+  }
+
+  @Override
   public long migrateBlogs(String repositoryPath) {
-    // TODO Auto-generated method stub
-    return 0;
+    File repo = new File(repositoryPath);
+
+    // categories in blogs.jboss.org is used for authors name
+    // (each author has one category called by his name)
+    File[] categories = repo.listFiles(DIRECTORY_FILTER);
+    long count = 0;
+
+    if (categories != null) {
+      FileFilter txtFilter = createExtensionFilter(".txt");
+
+      for (int i = 0; i < categories.length; i++) {
+        File category = categories[i];
+
+        final String authorName = category.getName();
+        Blog userBlog;
+        try {
+          userBlog = createUserBlog(authorName);
+        } catch (Exception e) {
+          log.error("Cannot create user blog for user: " + authorName, e);
+          continue;
+        }
+
+        File[] entries = category.listFiles(txtFilter);
+        for (File entry : entries) {
+          try {
+            File meta = new File(getMetaPathFromEntry(entry.getAbsolutePath()));
+            OldBlogEntryBean oldBlogEntry = loadOldBlogPost(entry, meta, encoding);
+
+            log.debug("Set author to be same as category");
+            oldBlogEntry.setAuthor(authorName);
+
+            if (oldBlogEntry.getCreated() == null) {
+              log.info("Created date cannot be parsed from metadata. Last modified of file is set. Blog Entry: "
+                  + entry.getAbsolutePath());
+              oldBlogEntry.setCreated(new Date(entry.lastModified()));
+            }
+
+            insertBlogEntry(userBlog, oldBlogEntry);
+
+            count++;
+          } catch (Exception e) {
+            log.error("Cannot process blog entry: " + entry.getAbsolutePath(), e);
+          }
+        }
+      }
+    }
+
+    return count;
   }
 
+  private Blog createUserBlog(String oldBlogUsername) throws UserNotFoundException {
+    String sbsUsername = getSBSUsername(oldBlogUsername);
+    User u = userManager.getUser(sbsUsername);
+    Blog b = blogManager.createBlog(u);
+    b.setName(u.getName() + "'s Blog");
+    b.setDisplayName(u.getUsername());
+    blogManager.addBlog(b);
+
+    return b;
+  }
+
+  private void insertBlogEntry(Blog b, OldBlogEntryBean oldBlogEntry) {
+    if (log.isDebugEnabled()) {
+      log.debug("Insert Blog entry '" + oldBlogEntry.getTitle() + "' from author: " + oldBlogEntry.getAuthor());
+    }
+    BlogPost post = b.createBlogPost(b.getUser());
+    post.setSubject(oldBlogEntry.getTitle());
+    post.setBody(WikiContentHelper.unknownContentToJiveDoc(oldBlogEntry.getTitle()));
+    post.setCreationDate(oldBlogEntry.getCreated());
+    post.setModificationDate(oldBlogEntry.getCreated());
+    post.setPublishDate(oldBlogEntry.getCreated());
+
+    b.addBlogPost(post);
+
+  }
+
+  protected String getMetaPathFromEntry(String entryPath) {
+    return entryPath.substring(0, entryPath.length() - 4) + ".meta";
+  }
+
   @Override
-  public OldBlogEntryBean loadOldBlogPost(InputStream data, InputStream meta,
-      String encoding) throws IOException {
+  public OldBlogEntryBean loadOldBlogPost(File data, File meta, String encoding) throws IOException {
     OldBlogEntryBean bean = new OldBlogEntryBean();
 
     boolean hasLoadedTitle = false;
 
-    BufferedReader br = new BufferedReader(
-        new InputStreamReader(data, encoding));
+    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(data), encoding));
     String line;
     StringBuffer description = new StringBuffer();
     while ((line = br.readLine()) != null) {
@@ -72,23 +204,41 @@
     bean.setBody(description.toString());
     br.close();
 
-    Properties metaData = new Properties();
-    metaData.load(meta);
-    meta.close();
+    if (meta != null && meta.exists()) {
+      Properties metaData = new Properties();
+      FileInputStream metaFIS = new FileInputStream(meta);
+      metaData.load(metaFIS);
+      metaFIS.close();
 
-    bean.setAuthor(metaData
-        .getProperty(OldBlogEntryBean.BLOG_ENTRY_METADATA_AUTHOR));
-    try {
-      String timeStamp = metaData
-          .getProperty(OldBlogEntryBean.BLOG_ENTRY_METADATA_TIMESTAMP);
-      if (timeStamp != null) {
-        bean.setCreated(new Date(Long.parseLong(timeStamp)));
+      bean.setAuthor(metaData.getProperty(OldBlogEntryBean.BLOG_ENTRY_METADATA_AUTHOR));
+      try {
+        String timeStamp = metaData.getProperty(OldBlogEntryBean.BLOG_ENTRY_METADATA_TIMESTAMP);
+        if (timeStamp != null) {
+          bean.setCreated(new Date(Long.parseLong(timeStamp)));
+        }
+      } catch (NumberFormatException e) {
+        log.error("Cannot parse blog entry cration date", e);
+        // timeStamp is not a number.
       }
-    } catch (NumberFormatException e) {
-      // timeStamp is not a number.
     }
 
     return bean;
   }
 
+  public void setEncoding(String encoding) {
+    this.encoding = encoding;
+  }
+
+  public void setUserManager(UserManager userManager) {
+    this.userManager = userManager;
+  }
+
+  public void setBlogManager(BlogManager blogManager) {
+    this.blogManager = blogManager;
+  }
+
+  public void setOldBlogUsersMap(Properties oldBlogUsersMap) {
+    this.oldBlogUsersMap = oldBlogUsersMap;
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/OldBlogsManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/OldBlogsManager.java	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/OldBlogsManager.java	2010-03-29 12:40:05 UTC (rev 32271)
@@ -21,8 +21,8 @@
  */
 package org.jboss.labs.sbs.plugin.bm;
 
+import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 
 import org.jboss.labs.sbs.plugin.bm.dao.OldBlogEntryBean;
 
@@ -45,11 +45,18 @@
    * Load old blog and create blog value object
    * 
    * @param data data
-   * @param meta metadata
-   * @param encoding encoding of those input streamds
+   * @param meta metadata - can be non existing file or null
+   * @param encoding encoding of those input streams
    * @return
    */
-  public OldBlogEntryBean loadOldBlogPost(InputStream data, InputStream meta,
-      String encoding) throws IOException;
+  public OldBlogEntryBean loadOldBlogPost(File data, File meta, String encoding) throws IOException;
 
+  /**
+   * Gets SBS username based on old blog user
+   * 
+   * @param oldBlogUser
+   * @return SBS username
+   */
+  public String getSBSUsername(String oldBlogUser);
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/dao/OldBlogEntryBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/dao/OldBlogEntryBean.java	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/dao/OldBlogEntryBean.java	2010-03-29 12:40:05 UTC (rev 32271)
@@ -48,9 +48,6 @@
   /** Date of creation. */
   private Date created;
 
-  /** Date of last modification. */
-  private Date modified;
-
   /** Author of this blog entry. */
   private String author;
 
@@ -109,24 +106,6 @@
   }
 
   /**
-   * Gets the date of last modification.
-   * 
-   * @return the date of last modification
-   */
-  public Date getModified() {
-    return modified;
-  }
-
-  /**
-   * Sets the date of last modification.
-   * 
-   * @param modified the new date of last modification
-   */
-  public void setModified(Date modified) {
-    this.modified = modified;
-  }
-
-  /**
    * Sets the author of this blog entry.
    * 
    * @param author the new author of this blog entry

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/struts/AdminBlogsMigrationAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/struts/AdminBlogsMigrationAction.java	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/java/org/jboss/labs/sbs/plugin/bm/struts/AdminBlogsMigrationAction.java	2010-03-29 12:40:05 UTC (rev 32271)
@@ -33,7 +33,7 @@
 
   private OldBlogsManager oldBlogsManager;
 
-  private String repositoryPath;
+  private String repositoryPath = "/usr/local/jive/blogs-migration";
 
   /**
    * Start migration of blogs into SBS

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/plugin/spring.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/plugin/spring.xml	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/plugin/spring.xml	2010-03-29 12:40:05 UTC (rev 32271)
@@ -11,6 +11,13 @@
   </bean>
 
   <bean id="oldBlogsManager" class="org.jboss.labs.sbs.plugin.bm.DbOldBlogsManager">
+    <property name="userManager" ref="userManager" />
+    <property name="blogManager" ref="blogManager" />
+
+    <property name="oldBlogUsersMap">
+      <value>classpath:oldBlogUsersMap.properties</value>
+    </property>
+
   </bean>
 
 </beans>

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/resources/oldBlogUsersMap.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/resources/oldBlogUsersMap.properties	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/resources/oldBlogUsersMap.properties	2010-03-29 12:40:05 UTC (rev 32271)
@@ -0,0 +1,48 @@
+acoliver=acoliver at jboss.org
+adarcy=
+aguizar=alex.guizar at jboss.com
+alesj=alesj
+arubinger=ALRubinger
+asaldhana=anil.saldhana at jboss.com
+asoldano=alessio.soldano at jboss.com
+bbickel=mbbickel
+bburke=bill.burke at jboss.com
+bela=bela at jboss.com
+bwang=ben.wang at jboss.com
+clebert=clebert.suconic at jboss.com
+cmuzilla=
+dimitris=dimitris at jboss.org
+dsicore=damon.sicore at jboss.com
+gzamarreno=galder.zamarreno at jboss.com
+jgreene=jason.greene at jboss.com
+jviet=julien_viet
+kaers=koen.aers at jboss.com
+kjohnson=
+kkhan=kabir.khan at jboss.com
+mandersen=max.andersen at jboss.com
+manik=manik.surtani at jboss.com
+mazz=mazz
+mculpepper=
+mfleury=marcf
+mlittle=mark.little at jboss.com
+mturk=mladen.turk at jboss.com
+myuan=juntao
+nfleury=
+nrichards=norman.richards at jboss.com
+ovidiue=ovidiu.feodorov at jboss.com
+pfricke=pfricke
+rgreathouse=
+rrusso=roy.russo at jboss.com
+rsharples=richsharples
+sconnolly=
+slabourey=sacha.labourey at jboss.com
+smstark=scott.stark at jboss.org
+SSatyamoorthy=
+sshah=sohil.shah at jboss.com
+Stan\ Silvert=stan.silvert at jboss.com
+tbaeyens=tom.baeyens at jboss.com
+tdiesler=thomas.diesler at jboss.com
+telrod=tom.elrod at jboss.com
+tfox=timfox
+theute=thomas.heute at jboss.com
+wprice=


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/main/resources/oldBlogUsersMap.properties
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/test/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManagerTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/test/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManagerTest.java	2010-03-29 11:09:39 UTC (rev 32270)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-blogs-migration/trunk/src/test/java/org/jboss/labs/sbs/plugin/bm/DbOldBlogsManagerTest.java	2010-03-29 12:40:05 UTC (rev 32271)
@@ -23,6 +23,7 @@
 
 import static org.junit.Assert.assertEquals;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.Date;
 
@@ -40,16 +41,28 @@
   public void testLoadOldBlogPost() throws IOException {
     OldBlogsManager manager = new DbOldBlogsManager();
 
-    OldBlogEntryBean bean = manager.loadOldBlogPost(DbOldBlogsManagerTest.class
-        .getResourceAsStream("/user1/entry1.txt"), DbOldBlogsManagerTest.class
-        .getResourceAsStream("/user1/entry1.meta"), "UTF-8");
+    String repoPath = DbOldBlogsManagerTest.class.getResource("/").getFile();
 
+    OldBlogEntryBean bean = manager.loadOldBlogPost(new File(repoPath + "user1/entry1.txt"), new File(repoPath
+        + "user1/entry1.meta"), "UTF-8");
+
     assertEquals(new Date(1269610718469l), bean.getCreated());
     assertEquals("admin", bean.getAuthor());
     assertEquals("Title of blog entry", bean.getTitle());
-    assertEquals("<p>Data</p>" + DbOldBlogsManager.LINE_SEPARATOR
-        + "<p>other line</p>" + DbOldBlogsManager.LINE_SEPARATOR + "etc."
-        + DbOldBlogsManager.LINE_SEPARATOR, bean.getBody());
+    assertEquals("<p>Data</p>" + DbOldBlogsManager.LINE_SEPARATOR + "<p>other line</p>"
+        + DbOldBlogsManager.LINE_SEPARATOR + "etc." + DbOldBlogsManager.LINE_SEPARATOR, bean.getBody());
+
+    bean = manager.loadOldBlogPost(new File(repoPath + "user1/entry1.txt"), new File(repoPath
+        + "user1/entry1-nonexisting.meta"), "UTF-8");
+    assertEquals(null, bean.getAuthor());
+    assertEquals(null, bean.getCreated());
   }
 
+  @Test
+  public void testGetMetaPathFromEntry() {
+    DbOldBlogsManager manager = new DbOldBlogsManager();
+    String metaPath = manager.getMetaPathFromEntry("/some/path/entry1.txt");
+    assertEquals("/some/path/entry1.meta", metaPath);
+  }
+
 }



More information about the jboss-svn-commits mailing list