[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