[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