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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 9 06:05:26 EDT 2009


Author: lkrzyzanek
Date: 2009-06-09 06:05:25 -0400 (Tue, 09 Jun 2009)
New Revision: 26879

Added:
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesUserManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesUserManager.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesUserBean.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/DbNukesForumsDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsDAO.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/AdminNfmAction.java
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/plugin_i18n.properties
   labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml
Log:
Added creating Users during migration.
Implementation of user creation is taken from cs-nukes-login module

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-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesForumsManager.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -42,6 +42,7 @@
 import org.springframework.dao.EmptyResultDataAccessException;
 
 import com.jivesoftware.base.User;
+import com.jivesoftware.base.UserAlreadyExistsException;
 import com.jivesoftware.base.UserManager;
 import com.jivesoftware.base.UserNotFoundException;
 import com.jivesoftware.base.UserTemplate;
@@ -89,13 +90,13 @@
 
   private WatchManager watchManager;
 
+  private NukesUserManager nukesUserManager;
+
   /**
    * Application context. Default = "/community"
    */
   private String appContext = "/community";
 
-  private String unknownMigrationUser;
-
   private Map<Long, Long> categoryMappings = null;
 
   private Map<Long, Long> forumMappings = null;
@@ -148,6 +149,7 @@
     Map<Long, Long> forumMapping = getForumMappings();
     long topicsCount = 0;
     long postsCount = 0;
+    int newUsersCount = 0;
     for (Long forumID : forumMapping.keySet()) {
       log.error("INFO: Migrate topics for forum with ID: " + forumID);
       Long communityID = forumMapping.get(forumID);
@@ -216,16 +218,17 @@
             topicPost.getPosterEmail());
 
         if (rootMessageUser == null) {
-          // should never happen.
+          log.error("Unknkown user for topic_id: " + topic.getTopicID()
+              + " username: '" + topicPost.getPosterUsername()
+              + "'. Going to create new CS user");
           try {
-            rootMessageUser = userManager.getUser(unknownMigrationUser);
-          } catch (UserNotFoundException e1) {
-            throw new RuntimeException("User: " + unknownMigrationUser
-                + " doesn't exists.");
+            rootMessageUser = nukesUserManager.createUserFromNukes(topicPost
+                .getPosterUsername());
+          } catch (UserAlreadyExistsException e) {
+            throw new RuntimeException(
+                "User already exists, but we're sure that doesn't", e);
           }
-
-          log.error("Unknkown user for topic_id: " + topic.getTopicID()
-              + " username: '" + topicPost.getPosterUsername() + "'");
+          newUsersCount++;
         }
 
         ForumMessage rootMessage = forumManager.createMessage(community,
@@ -268,14 +271,16 @@
               .getPosterEmail());
           if (replyUser == null) {
             log.error("Unknkown user for reply_id: " + reply.getPostID()
-                + " username: '" + reply.getPosterUsername() + "'");
-            // should never happen.
+                + " username: '" + reply.getPosterUsername()
+                + "'. Going to create new CS user");
             try {
-              replyUser = userManager.getUser(unknownMigrationUser);
-            } catch (UserNotFoundException e1) {
-              throw new RuntimeException("User: " + unknownMigrationUser
-                  + " doesn't exists.");
+              replyUser = nukesUserManager.createUserFromNukes(reply
+                  .getPosterUsername());
+            } catch (UserAlreadyExistsException e) {
+              throw new RuntimeException(
+                  "User already exists, but we're sure that doesn't", e);
             }
+            newUsersCount++;
           }
           ForumMessage replyMessage = forumManager.createMessage(community,
               replyUser);
@@ -321,6 +326,7 @@
 
     result.put("topicsCount", topicsCount);
     result.put("postsCount", postsCount);
+    result.put("newUsersCount", new Long(newUsersCount));
 
     log.error("INFO: Clearing all caches.");
     CacheFactory.clearCaches();
@@ -328,6 +334,9 @@
     final long timeConsumed = (System.currentTimeMillis() - start) / 1000;
     log.error("INFO: Migration completed, time taken: " + (long) timeConsumed
         / 60 + " minutes.");
+    log.error("INFO: Count of posts migrated:  " + postsCount);
+    log.error("INFO: Count of topics migrated: " + topicsCount);
+    log.error("INFO: New users created: " + newUsersCount);
 
     return result;
   }
@@ -575,8 +584,8 @@
     this.watchManager = watchManager;
   }
 
-  public void setUnknownMigrationUser(String unknownMigrationUser) {
-    this.unknownMigrationUser = unknownMigrationUser;
+  public void setNukesUserManager(NukesUserManager nukesUserManager) {
+    this.nukesUserManager = nukesUserManager;
   }
 
 }

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesUserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesUserManager.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/DbNukesUserManager.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -0,0 +1,163 @@
+/*
+ * 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;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.acegisecurity.userdetails.UserDetails;
+import org.acegisecurity.userdetails.UserDetailsService;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.jboss.labs.clearspace.plugin.nfm.dao.NukesForumsDAO;
+import org.jboss.labs.clearspace.plugin.nfm.dao.NukesUserBean;
+
+import com.jivesoftware.base.User;
+import com.jivesoftware.base.UserAlreadyExistsException;
+import com.jivesoftware.base.UserManager;
+import com.jivesoftware.base.UserNotFoundException;
+import com.jivesoftware.base.UserTemplate;
+import com.jivesoftware.community.user.profile.ProfileField;
+import com.jivesoftware.community.user.profile.ProfileFieldManager;
+import com.jivesoftware.community.user.profile.ProfileFieldValue;
+import com.jivesoftware.community.user.profile.ProfileManager;
+
+/**
+ * DB Implementation of manager
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class DbNukesUserManager implements NukesUserManager {
+
+  private static final Logger log = LogManager
+      .getLogger(DbNukesUserManager.class);
+
+  private NukesForumsDAO nukesForumsDAO;
+
+  private UserManager userManager;
+
+  private UserDetailsService userDetailsService;
+
+  private ProfileManager profileManager;
+
+  private ProfileFieldManager profileFieldManager;
+
+  public User createUserFromNukes(String username)
+      throws UserAlreadyExistsException {
+    NukesUserBean nukeUser = nukesForumsDAO.getNukesUser(username);
+
+    // Implementation taken from UserImporter service in cs-nukes-login module
+    UserTemplate ut = new UserTemplate(username);
+    ut.setFederated(true);
+
+    ut = mapDetails(ut, nukeUser);
+    userManager.createApplicationUser(ut);
+
+    // try again to load the user from the details
+    // service, this time it should work
+//    UserDetails ud = userDetailsService.loadUserByUsername(username);
+
+    // update profile
+    User u;
+    try {
+      u = userManager.getUser(nukeUser.getUsername());
+    } catch (UserNotFoundException e) {
+      throw new RuntimeException(
+          "Cannot get user which has been just created. Username: " + username,
+          e);
+    }
+    Set<ProfileFieldValue> pfvSet = new HashSet<ProfileFieldValue>();
+
+    Map<String, String> profile = nukeUser.getProfile();
+    // map default fields
+    mapProfile(profile, pfvSet, profileFieldManager.getDefaultFields());
+
+    // map custom fields
+    mapProfile(profile, pfvSet, profileFieldManager.getCustomFields());
+
+    // create unexisting fields
+    if (!profile.isEmpty()) {
+
+      for (String key : profile.keySet()) {
+        log.info("Couldn't set profile field: " + key);
+      }
+    }
+
+    if (!pfvSet.isEmpty()) {
+      profileManager.setProfile(u, pfvSet);
+    }
+
+    return nukeUser;
+  }
+
+  private void mapProfile(Map<String, String> profile,
+      Collection<ProfileFieldValue> pfvSet, List<ProfileField> fields) {
+    for (ProfileField pf : fields) {
+
+      if (profile.get(pf.getName()) != null) {
+        ProfileFieldValue pfv = new ProfileFieldValue(pf);
+        pfv.setValue(profile.get(pf.getName()));
+
+        pfvSet.add(pfv);
+
+        // remove field as added (or not if it was null)
+        profile.remove(pf.getName());
+      }
+    }
+  }
+
+  private UserTemplate mapDetails(UserTemplate ut, NukesUserBean nukeUser) {
+    ut.setEmail(nukeUser.getEmail());
+    ut.setFirstName(nukeUser.getFirstName());
+    ut.setLastName(nukeUser.getLastName());
+    ut.setName(nukeUser.getName());
+    ut.setPasswordHash(nukeUser.getPasswordHash());
+    ut.setProperties(nukeUser.getProperties());
+    ut.setCreationDate(nukeUser.getCreationDate());
+
+    return ut;
+  }
+
+  public void setNukesForumsDAO(NukesForumsDAO nukesForumsDAO) {
+    this.nukesForumsDAO = nukesForumsDAO;
+  }
+
+  public void setUserManager(UserManager userManager) {
+    this.userManager = userManager;
+  }
+
+  public void setUserDetailsService(UserDetailsService userDetailsService) {
+    this.userDetailsService = userDetailsService;
+  }
+
+  public void setProfileManager(ProfileManager profileManager) {
+    this.profileManager = profileManager;
+  }
+
+  public void setProfileFieldManager(ProfileFieldManager profileFieldManager) {
+    this.profileFieldManager = profileFieldManager;
+  }
+
+}


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

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-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesForumsManager.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -43,9 +43,10 @@
   public int createForumMappingFromCategories();
 
   /**
-   * Migrate forums to clearspace
+   * Migrate forums to Clearspace
    * 
-   * @return statistics. Map contains these keys: topicsCount, postsCount
+   * @return statistics. Map contains these keys: topicsCount, postsCount,
+   *         newUsersCount
    */
   public Map<String, Long> migrateForums2Clearspace();
 
@@ -62,7 +63,7 @@
    * @return
    */
   public int getCategoryCount();
-  
+
   /**
    * Flush cache
    * 

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesUserManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesUserManager.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/NukesUserManager.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+import com.jivesoftware.base.User;
+import com.jivesoftware.base.UserAlreadyExistsException;
+
+/**
+ * Manager of handling Nukes Users
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public interface NukesUserManager {
+
+  /**
+   * Create CS user from nukes user defined by username
+   * 
+   * @param username
+   * @return CS user
+   * @throws UserAlreadyExistsException
+   */
+  public User createUserFromNukes(String username)
+      throws UserAlreadyExistsException;
+
+}


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

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsDAOImpl.java	2009-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/DbNukesForumsDAOImpl.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -59,6 +59,8 @@
       + "from phpbb_forums_watch w join nuke_users u on u.pn_uid = w.user_id "
       + "where forum_id = ?";
 
+  private static final String SELECT_NUKES_USER_BY_USERNAME = "SELECT * FROM nuke_users WHERE pn_uname = ?";
+
   public List<NukesForumsForumBean> getAllForumsByCategoryID(Long categoryID) {
     return getSimpleJdbcTemplate().query(SELECT_FORUMS_BY_CATEGORYID,
         new NukesForumsForumBeanMapper(categoryID), categoryID);
@@ -96,6 +98,24 @@
         }, forumID);
   }
 
+  public NukesUserBean getNukesUser(String username) {
+    return getSimpleJdbcTemplate().queryForObject(
+        SELECT_NUKES_USER_BY_USERNAME, new NukesUserBeanMapper(), username);
+  }
+
+  /**
+   * Mapper for {@link NukesUserBean} bean
+   */
+  class NukesUserBeanMapper implements ParameterizedRowMapper<NukesUserBean> {
+    public NukesUserBean mapRow(ResultSet rs, int rowNum) throws SQLException {
+      return new NukesUserBean(rs);
+    }
+
+  }
+
+  /**
+   * Mapper for {@link NukesForumsPostBean} bean
+   */
   class NukesForumsPostBeanMapper implements
       ParameterizedRowMapper<NukesForumsPostBean> {
 
@@ -115,9 +135,7 @@
   }
 
   /**
-   * Mapping for forum bean
-   * 
-   * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+   * Mapping for {@link NukesForumsForumBean} bean
    */
   class NukesForumsForumBeanMapper implements
       ParameterizedRowMapper<NukesForumsForumBean> {
@@ -143,9 +161,7 @@
   }
 
   /**
-   * Mapping for Topic Bean
-   * 
-   * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+   * Mapping for {@link NukesForumsTopicBean} Bean
    */
   class NukesForumsTopicBeanMapper implements
       ParameterizedRowMapper<NukesForumsTopicBean> {

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsDAO.java	2009-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesForumsDAO.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -74,4 +74,12 @@
    */
   public List<String> getForumWatchingUses(Long forumID);
 
+  /**
+   * Get nukes user.
+   * 
+   * @param username
+   * @return
+   */
+  public NukesUserBean getNukesUser(String username);
+
 }

Added: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesUserBean.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesUserBean.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/dao/NukesUserBean.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -0,0 +1,434 @@
+package org.jboss.labs.clearspace.plugin.nfm.dao;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.jivesoftware.base.AuthToken;
+import com.jivesoftware.base.UnauthorizedException;
+import com.jivesoftware.base.User;
+import com.jivesoftware.community.Permissions;
+import com.jivesoftware.community.cache.Cacheable;
+import com.jivesoftware.community.webservices.WSUser;
+
+/**
+ * Nukes User bean. Implementation taken from cs-nukes-login module.<br>
+ * Nothing is changed. See org.jboss.labs.clearspace.LabsUser in
+ * org.jboss.labs:cs-nukes-login:1.0-SNAPSHOT artifact
+ */
+public class NukesUserBean implements User, Cacheable {
+
+	private static final String CLICK_HERE_FOR_JBOSS_NEWSLETTER = "Click here for JBoss Newsletter";
+
+	private static final String ADDRESS = "Address";
+
+	private static final String TYPE_OF_COMPANY = "Type of Company";
+
+	private static final String BIOGRAPHY = "Biography";
+
+	private static final String URL = "URL";
+
+	private static final String COMPANY_SIZE = "Company size";
+
+	private static final String TITLE = "Title";
+
+	private static final String COMPANY_NAME = "Company name";
+
+	private static final String EXPERTISE = "Expertise";
+
+	private static final String OCCUPATION = "Occupation";
+
+	private static final String YOUR_MSN_MESSANGER = "Your MSN Messanger";
+
+	private static final String YOUR_YIM_NUMBER = "Your YIM Number";
+
+	private static final String YOUR_AIM_ADDRESS = "Your AIM Address";
+
+	private static final String YOUR_ICQ_NUMBER = "Your ICQ Number";
+
+	private static final String ALTERNATIVE_EMAIL = "Alternative Email";
+
+	private static final String PHONE_NUMBER = "Phone Number";
+
+	private static final String HOME_ADDRESS = "Home Address";
+
+	private static final String TIME_ZONE = "Time Zone";
+	
+	private static final String OPT_OUT = "Click here to opt-out of ALL communication";
+	
+	private static final String CONTACTED = "Click here if you wish to be contacted";
+
+	private final static Permissions perms = new Permissions(Permissions.NONE);;
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	private Date creationDate;
+	private String email;
+	private long uID;
+	private Date lastLoggedIn;
+	private Date modifDate;
+	private String name;
+	private String passHash;
+	private String username;
+	private String firstName;
+	private String lastName;
+	private Map<String, String> profile;
+	private boolean emailVisible;
+	private static Map<String, Map<String, String>> profileDict;
+
+	static {
+		profileDict = new HashMap<String, Map<String, String>>();
+		addDict(CLICK_HERE_FOR_JBOSS_NEWSLETTER, "0", "No", "1", "Yes");
+		addDict(CONTACTED, "0", "No", "1", "Yes");
+		addDict(OPT_OUT, "0", "No", "1", "Yes");
+		addDict(COMPANY_SIZE, "100_999", "100-999", "_20", "-20", "21_100",
+				"21-100", "1000_", "1000-");
+		addDict(
+				TIME_ZONE,
+				"0",
+				"(GMT -12:00 hours) Eniwetok, Kwajalein",
+				"2",
+				"(GMT -11:00 hours) Midway Island, Samoa",
+				"4",
+				"(GMT -10:00 hours) Hawaii",
+				"6",
+				"(GMT -9:00 hours) Alaska",
+				"8",
+				"(GMT -8:00 hours) Pacific Time (US ",
+				"10",
+				"(GMT -7:00 hours) Mountain Time (US ",
+				"12",
+				"(GMT -6:00 hours) Central Time (US ",
+				"14",
+				"(GMT -5:00 hours) Eastern Time (US ",
+				"16",
+				"(GMT -4:00 hours) Atlantic Time (Canada), Caracas, La Paz",
+				"17",
+				"(GMT -3:30 hours) Newfoundland",
+				"18",
+				"(GMT -3:00 hours) Brazil, Buenos Aires, Georgetown",
+				"20",
+				"(GMT -2:00 hours) Mid-Atlantic",
+				"22",
+				"(GMT -1:00 hours) Azores, Cape Verde Islands",
+				"24",
+				"(GMT) Western Europe Time, London, Lisbon, Casablanca, Monrovia",
+				"26",
+				"selected",
+				"28",
+				"(GMT +2:00 hours) EET(Eastern Europe Time), Kaliningrad, South Africa",
+				"30",
+				"(GMT +3:00 hours) Baghdad, Kuwait, Riyadh, Moscow, St",
+				"31",
+				"(GMT +3:30 hours) Tehran",
+				"32",
+				"(GMT +4:00 hours) Abu Dhabi, Muscat, Baku, Tbilisi",
+				"33",
+				"(GMT +4:30 hours) Kabul",
+				"34",
+				"(GMT +5:00 hours) Ekaterinburg, Islamabad, Karachi, Tashkent",
+				"35",
+				"(GMT +5:30 hours) Bombay, Calcutta, Madras, New Delhi",
+				"36",
+				"(GMT +6:00 hours) Almaty, Dhaka, Colombo",
+				"38",
+				"(GMT +7:00 hours) Bangkok, Hanoi, Jakarta",
+				"40",
+				"(GMT +8:00 hours) Beijing, Perth, Singapore, Hong Kong, Chongqing, Urumqi, Taipei",
+				"42",
+				"(GMT +9:00 hours) Tokyo, Seoul, Osaka, Sapporo, Yakutsk",
+				"43", "(GMT +9:30 hours) Adelaide, Darwin", "44",
+				"(GMT +10:00 hours) EAST(East Australian Standard)", "46",
+				"(GMT +11:00 hours) Magadan, Solomon Islands, New Caledonia",
+				"48",
+				"(GMT +12:00 hours) Auckland, Wellington, Fiji, Kamchatka, Marshall Island");
+	}
+
+	private static void addDict(String field, String... fields) {
+		if (fields.length % 2 == 1) {
+			throw new IllegalArgumentException(
+					"Wrong nomber of fields for dict (must be even): "
+							+ fields.length);
+		}
+
+		Map<String, String> oneDict = new HashMap<String, String>();
+		for (int i = 0; i < fields.length; i += 2) {
+			oneDict.put(fields[i], fields[i + 1]);
+		}
+
+		profileDict.put(field, oneDict);
+	}
+
+	private boolean empty(String s) {
+		return s == null || s.trim().length() == 0;
+	}
+
+	public NukesUserBean(ResultSet rs) throws SQLException {
+		creationDate = rs.getDate("pn_user_regdate");
+		email = rs.getString("pn_email");
+		// uID = rs.getLong("pn_uid");
+		lastLoggedIn = rs.getDate("pn_last_visit");
+		modifDate = creationDate;
+		username = rs.getString("pn_uname");
+		name = rs.getString("pn_name");
+		passHash = rs.getString("pn_pass");
+		firstName = rs.getString("pn_fname");
+		lastName = rs.getString("pn_lname");
+		emailVisible = rs.getBoolean("pn_user_viewemail");
+
+		if (empty(firstName) || empty(lastName)) {
+			String realName = rs.getString("pn_name");
+
+			if (!empty(realName)) {
+				String[] tokens = realName.split("\\s");
+
+				if (empty(firstName)) {
+					firstName = tokens[0];
+				}
+
+				if (empty(lastName)) {
+					lastName = tokens[tokens.length - 1];
+				}
+			}
+		}
+		
+		if (empty(name)) {
+			name = firstName + " " + lastName;
+		}
+
+		profile = new HashMap<String, String>();
+
+		profile.put(PHONE_NUMBER, rs.getString("pn_phone"));
+
+		profile.put(ALTERNATIVE_EMAIL, rs.getString("pn_femail"));
+		profile.put(YOUR_ICQ_NUMBER, rs.getString("pn_user_icq"));
+		profile.put(YOUR_AIM_ADDRESS, rs.getString("pn_user_aim"));
+		profile.put(YOUR_YIM_NUMBER, rs.getString("pn_user_yim"));
+		profile.put(YOUR_MSN_MESSANGER, rs.getString("pn_user_msnm"));
+		profile.put(HOME_ADDRESS, rs.getString("pn_user_from"));
+
+		profile.put(OCCUPATION, rs.getString("pn_user_occ"));
+		profile.put(EXPERTISE, rs.getString("pn_user_intrest"));
+
+		profile.put(COMPANY_NAME, rs.getString("pn_cname"));
+		profile.put(TITLE, rs.getString("pn_title"));
+
+		profile.put(COMPANY_SIZE, rs.getString("pn_companysize"));
+
+		profile.put(URL, rs.getString("pn_url"));
+
+		profile.put(BIOGRAPHY, rs.getString("pn_bio"));
+
+		profile.put(TYPE_OF_COMPANY, rs.getString("pn_usertype"));
+
+		profile.put(ADDRESS, "street1:" + rs.getString("pn_street")
+				+ ",street2:,city:" + rs.getString("pn_city") + ",state:"
+				+ rs.getString("pn_state") + ",country:"
+				+ rs.getString("pn_country") + ",zip:" + rs.getString("pn_zip")
+				+ ",type:WORK");
+
+		profile.put(CLICK_HERE_FOR_JBOSS_NEWSLETTER, rs
+				.getString("pn_newsletter"));
+
+		profile.put(TIME_ZONE, rs.getString("pn_timezone_offset"));
+		
+		profile.put(CONTACTED, rs.getString("pn_supportcontact"));
+		
+		profile.put(OPT_OUT, rs.getString("pn_salescontact"));
+
+		Map<String, String> profileIt = new HashMap<String, String>(profile);
+
+		// remove all null values associated to keys
+		for (String key : profileIt.keySet()) {
+			if (profile.get(key) == null) {
+				profile.remove(key);
+			}
+		}
+
+		profile = translateProfileFields(profile);
+
+	}
+
+	private Map<String, String> translateProfileFields(
+			Map<String, String> profile) {
+		Map<String, String> newProfile = new HashMap<String, String>();
+
+		for (String key : profile.keySet()) {
+			String translatedField;
+			if (profileDict.get(key) != null
+					&& ((translatedField = profileDict.get(key).get(
+							profile.get(key))) != null)) {
+
+				newProfile.put(key, translatedField);
+			} else {
+				newProfile.put(key, profile.get(key));
+			}
+		}
+
+		return newProfile;
+	}
+
+	public Map<String, String> getProfile() {
+		return profile;
+	}
+
+	public NukesUserBean(String username) {
+		this.username = username;
+	}
+
+	public Date getCreationDate() {
+		return creationDate;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public long getID() {
+		return uID;
+	}
+
+	public Date getLastLoggedIn() {
+		return lastLoggedIn;
+	}
+
+	public Date getModificationDate() {
+		return modifDate;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public String getPassword() throws UnauthorizedException {
+		return null;
+	}
+
+	public String getPasswordHash() throws UnauthorizedException {
+		return passHash;
+	}
+
+	public Permissions getPermissions(AuthToken token) {
+		// TODO Auto-generated method stub
+		return perms;
+	}
+
+	public Map<String, String> getProperties() {
+		// TODO Auto-generated method stub
+		return new HashMap<String, String>();
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public boolean isAuthorized(long permissionType) {
+		return true;
+	}
+
+	public boolean isEmailVisible() {
+		return emailVisible;
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isExternal() {
+		return false;
+	}
+
+	public boolean isFederated() {
+		return true;
+	}
+
+	public boolean isGetPasswordHashSupported() {
+		return true;
+	}
+
+	public boolean isNameVisible() {
+		return true;
+	}
+
+	public boolean isPropertyEditSupported() {
+		return false;
+	}
+
+	public boolean isSetEmailSupported() {
+		return false;
+	}
+
+	public boolean isSetEmailVisibleSupported() {
+		return false;
+	}
+
+	public boolean isSetNameSupported() {
+		return false;
+	}
+
+	public boolean isSetNameVisibleSupported() {
+		return false;
+	}
+
+	public boolean isSetPasswordHashSupported() {
+		return false;
+	}
+
+	public boolean isSetPasswordSupported() {
+		return false;
+	}
+
+	public boolean isSetUsernameSupported() {
+		return false;
+	}
+
+	public int getObjectType() {
+		// TODO wth is it ?
+		return 1;
+	}
+
+	public int getCachedSize() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public WSUser getWSUser() {
+		WSUser u = new WSUser();
+		u.setCreationDate(getCreationDate());
+		u.setEmail(getEmail());
+		u.setEmailVisible(false);
+		u.setEnabled(true);
+		u.setID(getID());
+		u.setModificationDate(getModificationDate());
+		u.setName(getName());
+		u.setNameVisible(true);
+		u.setPassword(getPasswordHash());
+		u.setUsername(getUsername());
+
+		return u;
+	}
+
+	public void setID(long id) {
+		this.uID = id;
+	}
+
+	public String getFirstName() {
+		return firstName;
+	}
+
+	public String getLastName() {
+		return lastName;
+	}
+
+	public Status getStatus() {
+		return Status.registered;
+	}
+
+	public boolean isAnonymous() {
+		return false;
+	}
+}


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

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/AdminNfmAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/AdminNfmAction.java	2009-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/java/org/jboss/labs/clearspace/plugin/nfm/struts/AdminNfmAction.java	2009-06-09 10:05:25 UTC (rev 26879)
@@ -72,7 +72,8 @@
 
     addActionMessage(getText("plugin.nfm.admin.nfm.migration.sucess",
         new String[] { Long.toString(result.get("topicsCount")),
-            Long.toString(result.get("postsCount")) }));
+            Long.toString(result.get("postsCount")),
+            Long.toString(result.get("newUsersCount")) }));
 
     return SUCCESS;
   }

Modified: labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/plugin_i18n.properties
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/plugin_i18n.properties	2009-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/plugin_i18n.properties	2009-06-09 10:05:25 UTC (rev 26879)
@@ -16,4 +16,4 @@
 plugin.nfm.admin.nfm.migration.name=Topics and Posts migration
 plugin.nfm.admin.nfm.migration.description=Lunch migration of topics and their posts for each mapped forum
 plugin.nfm.admin.nfm.migration.submit=Migrate!
-plugin.nfm.admin.nfm.migration.sucess=Migration has been successull. Count of topics: {0}. Count of Posts: {1}.
+plugin.nfm.admin.nfm.migration.sucess=Migration has been successull. Count of topics: {0}. Count of Posts: {1}. Count of created new users: {2}. 

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-06-09 08:47:36 UTC (rev 26878)
+++ labs/jbosslabs/labs-3.0-build/integration/cs-nfm/trunk/src/main/resources/spring.xml	2009-06-09 10:05:25 UTC (rev 26879)
@@ -31,7 +31,7 @@
     <property name="topicMappings" ref="topicMappings" />
     <property name="postMappings" ref="postMappings" />
 
-    <property name="unknownMigrationUser" value="unknownForumsMigrationUser" />
+    <property name="nukesUserManager" ref="nukesUserManager" />
 
     <property name="converters">
       <list>
@@ -40,13 +40,27 @@
     </property>
   </bean>
 
-  <!-- Lazy init is due we not sure that admin put porta-format-lib.jar to classpath  -->
+  <bean id="nukesUserManager"
+    class="org.jboss.labs.clearspace.plugin.nfm.DbNukesUserManager">
+    <property name="userManager" ref="userManagerImpl" />
+    <property name="userDetailsService" ref="jiveUserDetailsService" />
+    <property name="profileManager" ref="profileManagerImpl" />
+    <property name="profileFieldManager" ref="profileFieldManagerImpl" />
+    <property name="nukesForumsDAO" ref="nukesForumsDAO" />
+  </bean>
+
+
+  <!--
+    Lazy init is due we not sure that admin put porta-format-lib.jar to
+    classpath
+  -->
   <bean id="bbCodeConverter"
     class="org.jboss.labs.clearspace.plugin.nfm.converter.BBCodeConverter">
-    <property name="codeParser" ref="bbCodeParser"/>
+    <property name="codeParser" ref="bbCodeParser" />
   </bean>
 
-  <bean id="bbCodeParser" class="org.jboss.portal.format.parser.bbcode.BBCodeParser" lazy-init="true">
+  <bean id="bbCodeParser" class="org.jboss.portal.format.parser.bbcode.BBCodeParser"
+    lazy-init="true">
     <property name="handler" ref="bbCode2CSHTMLParseEventHandler" />
   </bean>
 




More information about the jboss-svn-commits mailing list