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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 2 07:10:05 EDT 2010


Author: lkrzyzanek
Date: 2010-06-02 07:10:04 -0400 (Wed, 02 Jun 2010)
New Revision: 33300

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/SbsAccountManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.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/NukesUserDAO.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/listener/SyncUserWithNukesListener.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml
Log:
ORG-606 Added updating Nukes profile and lastLoggedIn

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 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth;
 
+import java.util.Date;
 import java.util.List;
 
 import org.acegisecurity.BadCredentialsException;
@@ -73,6 +74,14 @@
   public boolean updateNukesPassword(String username, String password);
 
   /**
+   * Update last logged in
+   * 
+   * @param username
+   * @param date
+   */
+  public void updateLastLoggedIn(String username, Date date);
+
+  /**
    * Update Nukes Accounts from SBS account
    * 
    * @param sbsUser
@@ -88,4 +97,14 @@
    */
   public void updateNukesAccount(User sbsUser, List<NukesUser> duplicateUsernames);
 
+  /**
+   * 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 duplicate nukes accounts
+   * @see SbsAccountManager#getDuplicateAccountUsernames(User)
+   */
+  public void updateNukesAccounts(User sbsUser, List<String> 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 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth;
 
+import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -29,6 +30,8 @@
 import org.acegisecurity.BadCredentialsException;
 import org.acegisecurity.providers.encoding.PasswordEncoder;
 import org.acegisecurity.userdetails.UsernameNotFoundException;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 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;
@@ -44,6 +47,8 @@
  */
 public class NukesAccountManagerImpl implements NukesAccountManager {
 
+  private static final Logger log = LogManager.getLogger(NukesAccountManagerImpl.class);
+
   private NukesUserDAO nukesUserDAO;
 
   /** Nukes password encoder */
@@ -83,17 +88,31 @@
   }
 
   @Override
+  public void updateLastLoggedIn(String username, Date date) {
+    nukesUserDAO.updateLastLoggedIn(username, date);
+  }
+
+  @Override
   public void updateNukesAccount(User sbsUser) {
     updateNukesAccount(sbsUser, null);
   }
 
   @Override
   public void updateNukesAccount(User sbsUser, List<NukesUser> duplicateUsernames) {
+    List<String> usernames = getUsernames(duplicateUsernames);
+    updateNukesAccounts(sbsUser, usernames);
+  }
+
+  @Override
+  public void updateNukesAccounts(User sbsUser, List<String> duplicateUsernames) {
+    if (log.isInfoEnabled()) {
+      log.info("Update Nukes Account. SBS User: " + sbsUser);
+      log.info("Duplicate usernames: " + duplicateUsernames);
+    }
+
     NukesUser nukesUser = convertToNukesAccount(sbsUser);
-
     if (duplicateUsernames != null) {
-      List<String> usernames = getUsernames(duplicateUsernames);
-      nukesUserDAO.updateNukesAccounts(nukesUser, usernames);
+      nukesUserDAO.updateNukesAccounts(nukesUser, duplicateUsernames);
     } else {
       nukesUserDAO.updateNukesAccounts(nukesUser, null);
     }
@@ -142,10 +161,13 @@
   /**
    * Create new list with usernames
    * 
-   * @param list
-   * @return lit of nukes usernames
+   * @param list can be null
+   * @return lit of nukes usernames or null if list is null
    */
   public static List<String> getUsernames(List<NukesUser> list) {
+    if (list == null) {
+      return null;
+    }
     List<String> usernames = new LinkedList<String>();
     for (NukesUser nukesUser : list) {
       usernames.add(nukesUser.getUsername());

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-06-02 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -86,7 +86,7 @@
    * Get duplicate account usernames
    * 
    * @param user
-   * @return list of usernames
+   * @return list of usernames or null if account has no duplicate accounts
    */
   public List<String> getDuplicateAccountUsernames(User user);
 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-06-02 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -51,7 +51,9 @@
  * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
  */
 public class SbsAccountManagerImpl implements SbsAccountManager {
+
   private static final Logger log = LogManager.getLogger(SbsAccountManagerImpl.class);
+
   private UserManager userManager;
 
   private ProfileFieldManager profileFieldManager;
@@ -205,6 +207,9 @@
   public List<String> getDuplicateAccountUsernames(User user) {
     Map<Long, ProfileFieldValue> profile = profileManager.getProfile(user);
     ProfileFieldValue profileField = profile.get(duplicateAccountsFiled);
+    if (profileField == null) {
+      return null;
+    }
     StringTokenizer st = new StringTokenizer(profileField.getValue(), duplicateAccountsDeliminer);
     List<String> usernames = new LinkedList<String>();
     while (st.hasMoreTokens()) {

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 09:56:05 UTC (rev 33299)
+++ 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 11:10:04 UTC (rev 33300)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth.dao;
 
+import java.util.Date;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +41,8 @@
 
   private static final String UPDATE_PASSWORD = "UPDATE nuke_users SET pn_pass = ? WHERE pn_uname = ?";
 
+  private static final String UPDATE_LAST_LOGGEDIN = "UPDATE nuke_users SET pn_last_visit = ? 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 = ?";
@@ -92,4 +95,9 @@
 
   }
 
+  @Override
+  public void updateLastLoggedIn(String username, Date date) {
+    getSimpleJdbcTemplate().update(UPDATE_LAST_LOGGEDIN, date, username);
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java	2010-06-02 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth.dao;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -56,6 +57,14 @@
   public boolean updatePassword(String username, String passwordHash);
 
   /**
+   * Update last logged in property in Nukes
+   * 
+   * @param username
+   * @param date
+   */
+  public void updateLastLoggedIn(String username, Date date);
+
+  /**
    * Update nukes account and his duplicates accounts.<br>
    * Password is not updated.
    * 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/listener/SyncUserWithNukesListener.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/listener/SyncUserWithNukesListener.java	2010-06-02 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/listener/SyncUserWithNukesListener.java	2010-06-02 11:10:04 UTC (rev 33300)
@@ -21,9 +21,13 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth.listener;
 
+import java.util.Date;
+import java.util.List;
+
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.jboss.labs.sbs.plugin.nukesauth.NukesAccountManager;
+import org.jboss.labs.sbs.plugin.nukesauth.SbsAccountManager;
 
 import com.jivesoftware.base.User;
 import com.jivesoftware.base.event.UserEvent;
@@ -40,10 +44,21 @@
 
   private NukesAccountManager nukesAccountManager;
 
+  private SbsAccountManager sbsAccountManager;
+
   @Override
   public void handle(UserEvent e) {
     if (UserEvent.Type.MODIFIED.compareTo(e.getType()) == 0) {
+      if (log.isDebugEnabled()) {
+        log.debug("params: " + e.getParams());
+      }
+
       User user = e.getPayload();
+
+      if ("admin".equals(user.getUsername())) {
+        return;
+      }
+
       Object password = e.getParams().get(UserEvent.USER_MODIFIED_PASSWORD);
       if (password != null) {
         if (log.isInfoEnabled()) {
@@ -53,7 +68,20 @@
         if (!success) {
           log.fatal("Cannot update nukes password for username: " + user.getUsername());
         }
+        return;
       }
+      Object lastLoggedIn = e.getParams().get(UserEvent.USER_MODIFIED_LAST_LOGGED_IN);
+      if (lastLoggedIn != null && e.getParams().size() == 1) {
+        // lastLoggedIn is not correct :-/ ... have to use actual date
+        nukesAccountManager.updateLastLoggedIn(user.getUsername(), new Date());
+        return;
+      }
+
+      if (log.isDebugEnabled()) {
+        log.debug("SBS user changed. Username: " + user.getUsername());
+      }
+      List<String> duplicateUsernames = sbsAccountManager.getDuplicateAccountUsernames(user);
+      nukesAccountManager.updateNukesAccounts(user, duplicateUsernames);
     }
 
   }
@@ -62,4 +90,8 @@
     this.nukesAccountManager = nukesAccountManager;
   }
 
+  public void setSbsAccountManager(SbsAccountManager sbsAccountManager) {
+    this.sbsAccountManager = sbsAccountManager;
+  }
+
 }

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 09:56:05 UTC (rev 33299)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml	2010-06-02 11:10:04 UTC (rev 33300)
@@ -47,6 +47,7 @@
   <bean id="syncUserWithNukesListener"
     class="org.jboss.labs.sbs.plugin.nukesauth.listener.SyncUserWithNukesListener">
     <property name="nukesAccountManager" ref="nukesAccountManager" />
+    <property name="sbsAccountManager" ref="sbsAccountManager" />
   </bean>
 
 </beans>



More information about the jboss-svn-commits mailing list