[jboss-svn-commits] JBL Code SVN: r33298 - in labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main: java/org/jboss/labs/sbs/plugin/nukesauth/dao and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 2 04:17:27 EDT 2010


Author: lkrzyzanek
Date: 2010-06-02 04:17:26 -0400 (Wed, 02 Jun 2010)
New Revision: 33298

Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserMapper.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml
Log:
ORG-606 - Added implementation of updateNukesUser

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-02 01:01:12 UTC (rev 33297)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-02 08:17:26 UTC (rev 33298)
@@ -68,7 +68,7 @@
    * 
    * @param username
    * @param password
-   * @param true if password has been successfuly updated.
+   * @param true if password has been successfully updated.
    */
   public boolean updateNukesPassword(String username, String password);
 
@@ -80,10 +80,11 @@
   public void updateNukesAccount(User sbsUser);
 
   /**
-   * Update Nukes Accounts and each duplicate Nukes account from SBS account
+   * Update Nukes Accounts and each duplicate Nukes account from SBS account<br>
+   * Important note: implementation can update only certain fields
    * 
    * @param sbsUser
-   * @param duplicateUsernames list of duplciate nukes accounts
+   * @param duplicateUsernames list of duplicate nukes accounts
    */
   public void updateNukesAccount(User sbsUser, List<NukesUser> duplicateUsernames);
 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-02 01:01:12 UTC (rev 33297)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-02 08:17:26 UTC (rev 33298)
@@ -21,16 +21,21 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth;
 
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import org.acegisecurity.BadCredentialsException;
 import org.acegisecurity.providers.encoding.PasswordEncoder;
 import org.acegisecurity.userdetails.UsernameNotFoundException;
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUserDAO;
+import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUserMapper;
 
 import com.jivesoftware.base.User;
+import com.jivesoftware.community.user.profile.ProfileFieldValue;
+import com.jivesoftware.community.user.profile.ProfileManager;
 
 /**
  * Database implementation of manager
@@ -41,8 +46,11 @@
 
   private NukesUserDAO nukesUserDAO;
 
+  /** Nukes password encoder */
   private PasswordEncoder passwordEncoder;
 
+  private ProfileManager profileManager;
+
   @Override
   public void authenticateNukesUser(String username, String password) throws UsernameNotFoundException,
       BadCredentialsException {
@@ -91,11 +99,46 @@
     }
   }
 
+  /**
+   * Converts SBS User to Nukes account<br>
+   * all fields are copied except password hash and translated fields - check
+   * {@link NukesUserMapper#isTranslatedField(Long)}
+   * 
+   * @param sbsUser
+   * @return
+   * @see NukesUserMapper#isTranslatedField(Long)
+   */
   public NukesUser convertToNukesAccount(User sbsUser) {
-    // TODO: Implement convertToNukesAccount
-    return null;
+    NukesUser bean = new NukesUser(sbsUser.getUsername());
+    bean.setEmail(sbsUser.getEmail());
+
+    bean.setCreationDate(sbsUser.getCreationDate());
+    bean.setLastLoggedIn(sbsUser.getLastLoggedIn());
+    bean.setModifDate(sbsUser.getModificationDate());
+    bean.setEmailVisible(sbsUser.isEmailVisible());
+
+    bean.setFirstName(sbsUser.getFirstName());
+    bean.setLastName(sbsUser.getLastName());
+
+    Map<Long, ProfileFieldValue> profile = profileManager.getProfile(sbsUser);
+
+    bean.setProfile(convertToValues(profile));
+
+    return bean;
   }
 
+  private Map<Long, String> convertToValues(Map<Long, ProfileFieldValue> profile) {
+    Map<Long, String> values = new HashMap<Long, String>();
+    for (Long key : profile.keySet()) {
+      if (NukesUserMapper.isTranslatedField(key)) {
+        continue;
+      }
+      values.put(key, profile.get(key).getSimpleValue());
+    }
+
+    return values;
+  }
+
   /**
    * Create new list with usernames
    * 
@@ -118,4 +161,8 @@
     this.passwordEncoder = passwordEncoder;
   }
 
+  public void setProfileManager(ProfileManager profileManager) {
+    this.profileManager = profileManager;
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java	2010-06-02 01:01:12 UTC (rev 33297)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java	2010-06-02 08:17:26 UTC (rev 33298)
@@ -21,7 +21,9 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth.dao;
 
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
 
@@ -38,6 +40,10 @@
 
   private static final String UPDATE_PASSWORD = "UPDATE nuke_users SET pn_pass = ? WHERE pn_uname = ?";
 
+  private static final String UPDATE_USER = "UPDATE nuke_users SET "
+      + "pn_email = ?, pn_last_visit = ?, pn_fname = ?, pn_lname = ?, pn_name = ?, pn_phone = ?"
+      + " WHERE pn_uname = ?";
+
   @Override
   public NukesUser getNukesUser(String username) {
     return getSimpleJdbcTemplate().queryForObject(SELECT_USER_BY_USERNAME, new NukesUserMapper(), username);
@@ -56,7 +62,34 @@
 
   @Override
   public void updateNukesAccounts(NukesUser user, List<String> duplicateUsernames) {
-    // TODO Auto-generated method stub
+    String updateQuery = UPDATE_USER;
+    List<Object> args = new LinkedList<Object>();
+
+    args.add(user.getEmail());
+    args.add(user.getLastLoggedIn());
+    args.add(user.getFirstName());
+    args.add(user.getLastName());
+    args.add(""); // pn_name
+
+    // TODO Add profile fields
+    Map<Long, String> profile = user.getProfile();
+    args.add(profile.get(NukesUserMapper.PHONE_NUMBER));
+    // TODO CHeck nullability of nukes columns with SBS nullability
+
+    // WHERE part
+    args.add(user.getUsername());
+
+    if (duplicateUsernames != null) {
+      StringBuffer sb = new StringBuffer(updateQuery);
+
+      for (String username : duplicateUsernames) {
+        sb.append(" or pn_uname = ?");
+        args.add(username);
+      }
+      updateQuery = sb.toString();
+    }
+    getJdbcTemplate().update(updateQuery, args.toArray());
+
   }
 
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserMapper.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserMapper.java	2010-06-02 01:01:12 UTC (rev 33297)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserMapper.java	2010-06-02 08:17:26 UTC (rev 33298)
@@ -118,6 +118,27 @@
     profileDict.put(field, oneDict);
   }
 
+  /**
+   * 
+   * @param fieldId SBS profile field ID
+   * @return true if profile key is translated between Nukes and SBS
+   * @see #ADDRESS
+   * @see #CLICK_HERE_FOR_JBOSS_NEWSLETTER
+   * 
+   */
+  public static boolean isTranslatedField(Long fieldId) {
+    if (fieldId == ADDRESS) {
+      return true;
+    }
+    return profileDict.containsKey(fieldId);
+  }
+
+  /**
+   * Translate profile fields from Nukes values to SBS's values
+   * 
+   * @param profile
+   * @return SBS profile fields
+   */
   private Map<Long, String> translateProfileFields(Map<Long, String> profile) {
     Map<Long, String> newProfile = new HashMap<Long, String>();
 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml	2010-06-02 01:01:12 UTC (rev 33297)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml	2010-06-02 08:17:26 UTC (rev 33298)
@@ -28,6 +28,7 @@
     class="org.jboss.labs.sbs.plugin.nukesauth.NukesAccountManagerImpl">
     <property name="nukesUserDAO" ref="nukesUserDAO" />
     <property name="passwordEncoder" ref="nukesPasswordEncoder" />
+    <property name="profileManager" ref="profileManagerImpl" />
   </bean>
 
   <bean id="sbsAccountManager"



More information about the jboss-svn-commits mailing list