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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 1 08:39:20 EDT 2010


Author: lkrzyzanek
Date: 2010-06-01 08:39:19 -0400 (Tue, 01 Jun 2010)
New Revision: 33282

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImplTest.java
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/NukesUser.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/dao/NukesUserMapper.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml
Log:
ORG-606: Added assigning duplicate usernames

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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManager.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -27,6 +27,8 @@
 import org.acegisecurity.userdetails.UsernameNotFoundException;
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
 
+import com.jivesoftware.base.User;
+
 /**
  * Manager for Nukes Accounts
  * 
@@ -70,4 +72,19 @@
    */
   public boolean updateNukesPassword(String username, String password);
 
+  /**
+   * Update Nukes Accounts from SBS account
+   * 
+   * @param sbsUser
+   */
+  public void updateNukesAccount(User sbsUser);
+
+  /**
+   * Update Nukes Accounts and each duplicate Nukes account from SBS account
+   * 
+   * @param sbsUser
+   * @param duplicateUsernames list of duplciate 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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/NukesAccountManagerImpl.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -21,6 +21,7 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth;
 
+import java.util.LinkedList;
 import java.util.List;
 
 import org.acegisecurity.BadCredentialsException;
@@ -29,6 +30,8 @@
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUserDAO;
 
+import com.jivesoftware.base.User;
+
 /**
  * Database implementation of manager
  * 
@@ -71,6 +74,42 @@
     return nukesUserDAO.updatePassword(username, passwordHash);
   }
 
+  @Override
+  public void updateNukesAccount(User sbsUser) {
+    updateNukesAccount(sbsUser, null);
+  }
+
+  @Override
+  public void updateNukesAccount(User sbsUser, List<NukesUser> duplicateUsernames) {
+    NukesUser nukesUser = convertToNukesAccount(sbsUser);
+
+    if (duplicateUsernames != null) {
+      List<String> usernames = getUsernames(duplicateUsernames);
+      nukesUserDAO.updateNukesAccounts(nukesUser, usernames);
+    } else {
+      nukesUserDAO.updateNukesAccounts(nukesUser, null);
+    }
+  }
+
+  public NukesUser convertToNukesAccount(User sbsUser) {
+    // TODO: Implement convertToNukesAccount
+    return null;
+  }
+
+  /**
+   * Create new list with usernames
+   * 
+   * @param list
+   * @return lit of nukes usernames
+   */
+  public static List<String> getUsernames(List<NukesUser> list) {
+    List<String> usernames = new LinkedList<String>();
+    for (NukesUser nukesUser : list) {
+      usernames.add(nukesUser.getUsername());
+    }
+    return usernames;
+  }
+
   public void setNukesUserDAO(NukesUserDAO nukesUserDAO) {
     this.nukesUserDAO = nukesUserDAO;
   }

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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManager.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -21,6 +21,8 @@
  */
 package org.jboss.labs.sbs.plugin.nukesauth;
 
+import java.util.List;
+
 import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
 
 import com.jivesoftware.base.EmailAlreadyExistsException;
@@ -72,4 +74,20 @@
    */
   public void setAccountSynchronized(User user, boolean setSynchronized);
 
+  /**
+   * Set duplicate accounts for specified user.
+   * 
+   * @param user
+   * @param duplicateAccounts Duplicate nukes users
+   */
+  public void setDuplicateAccounts(User user, List<NukesUser> duplicateAccounts);
+
+  /**
+   * Get duplicate account usernames
+   * 
+   * @param user
+   * @return list of usernames
+   */
+  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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImpl.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -23,9 +23,12 @@
 
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.StringTokenizer;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
@@ -56,8 +59,12 @@
 
   private ProfileManager profileManager;
 
-  private Long accountSynchronizedFiled = new Long(5010);
+  private final Long accountSynchronizedFiled = new Long(5010);
 
+  private final Long duplicateAccountsFiled = new Long(5011);
+
+  private final String duplicateAccountsDeliminer = "::";
+
   private UserTemplate mapDetails(UserTemplate ut, NukesUser nukeUser) {
     ut.setFirstName(nukeUser.getFirstName());
     ut.setLastName(nukeUser.getLastName());
@@ -165,6 +172,47 @@
     profileManager.setProfile(user, profile.values());
   }
 
+  @Override
+  public void setDuplicateAccounts(User user, List<NukesUser> duplicateAccounts) {
+    Map<Long, ProfileFieldValue> profile = profileManager.getProfile(user);
+    ProfileFieldValue profileField = profile.get(duplicateAccountsFiled);
+    if (profileField == null) {
+      profileField = new ProfileFieldValue(duplicateAccountsFiled, ProfileField.Type.TEXT.getID());
+    }
+    String usernames = listToString(user.getUsername(), duplicateAccounts);
+    profileField.setValue(usernames);
+    profile.put(duplicateAccountsFiled, profileField);
+    profileManager.setProfile(user, profile.values());
+  }
+
+  protected String listToString(String masterUsername, List<NukesUser> list) {
+    StringBuffer sb = new StringBuffer();
+
+    for (Iterator<NukesUser> iterator = list.iterator(); iterator.hasNext();) {
+      NukesUser nukesUser = iterator.next();
+      if (!masterUsername.equals(nukesUser.getUsername())) {
+        sb.append(nukesUser.getUsername());
+        if (iterator.hasNext()) {
+          sb.append(duplicateAccountsDeliminer);
+        }
+      }
+    }
+
+    return sb.toString();
+  }
+
+  @Override
+  public List<String> getDuplicateAccountUsernames(User user) {
+    Map<Long, ProfileFieldValue> profile = profileManager.getProfile(user);
+    ProfileFieldValue profileField = profile.get(duplicateAccountsFiled);
+    StringTokenizer st = new StringTokenizer(profileField.getValue(), duplicateAccountsDeliminer);
+    List<String> usernames = new LinkedList<String>();
+    while (st.hasMoreTokens()) {
+      usernames.add(st.nextToken());
+    }
+    return usernames;
+  }
+
   public void setUserManager(UserManager userManager) {
     this.userManager = userManager;
   }

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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/DbNukesUserDAOImpl.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -54,4 +54,9 @@
     return (rows == 1);
   }
 
+  @Override
+  public void updateNukesAccounts(NukesUser user, List<String> duplicateUsernames) {
+    // TODO Auto-generated method stub
+  }
+
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUser.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUser.java	2010-06-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUser.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -51,6 +51,10 @@
 
   private boolean emailVisible;
 
+  public NukesUser(String username) {
+    this.username = username;
+  }
+
   public String getUsername() {
     return 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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserDAO.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -55,4 +55,13 @@
    */
   public boolean updatePassword(String username, String passwordHash);
 
+  /**
+   * Update nukes account and his duplicates accounts.<br>
+   * Password is not updated.
+   * 
+   * @param user
+   * @param duplicateUsernames if null then only user is updated
+   */
+  public void updateNukesAccounts(NukesUser user, List<String> duplicateUsernames);
+
 }

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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/dao/NukesUserMapper.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -162,9 +162,7 @@
 
   @Override
   public NukesUser mapRow(ResultSet rs, int rowNum) throws SQLException {
-    NukesUser bean = new NukesUser();
-
-    bean.setUsername(rs.getString("pn_uname"));
+    NukesUser bean = new NukesUser(rs.getString("pn_uname"));
     bean.setEmail(rs.getString("pn_email"));
     bean.setPasswordHash(rs.getString("pn_pass"));
 

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java	2010-06-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/java/org/jboss/labs/sbs/plugin/nukesauth/filter/NukesSyncFilter.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -125,8 +125,12 @@
           List<NukesUser> nukesAccounts = nukesAccountManager.getNukesAccountsByEmail(user.getEmail());
 
           if (nukesAccounts.size() > 1) {
-
-            // TODO: update Nukes duplicate accounts
+            log.info("One SBS account, dulicate nukes accounts");
+            sbsAccountManager.setDuplicateAccounts(user, nukesAccounts);
+            nukesAccountManager.updateNukesAccount(user, nukesAccounts);
+          } else {
+            log.info("One SBS account, one nukes account");
+            nukesAccountManager.updateNukesAccount(user);
           }
           sbsAccountManager.updatePassword(username, password);
         } else {
@@ -136,6 +140,7 @@
           List<NukesUser> dupliciteAccounts = nukesAccountManager.getNukesAccountsByEmail(nukesUser.getEmail());
           // TODO: Check if we don't have SBS accounts without Nukes account
           if (dupliciteAccounts.size() > 1) {
+            log.info("No SBS account, duplicate nukes accounts");
             // TODO: Handle No SBS account and duplicate Nukes accounts.
           } else {
             log.info("No SBS account and one nukes account. Going to create SBS account");

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-01 11:44:15 UTC (rev 33281)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/main/plugin/spring.xml	2010-06-01 12:39:19 UTC (rev 33282)
@@ -14,7 +14,7 @@
     class="org.jboss.labs.sbs.plugin.nukesauth.filter.NukesSyncFilter">
     <property name="nukesAccountManager" ref="nukesAccountManager" />
     <property name="sbsAccountManager" ref="sbsAccountManager" />
-    <property name="userManager" ref="userManager" />
+    <property name="userManager" ref="userManagerImpl" />
     <property name="filterProcessesUrl">
       <value>/cs_login</value>     <!-- Must be exactly same like in formAuthenticationFilter -->
     </property>

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImplTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImplTest.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImplTest.java	2010-06-01 12:39:19 UTC (rev 33282)
@@ -0,0 +1,56 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 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.sbs.plugin.nukesauth;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.jboss.labs.sbs.plugin.nukesauth.dao.NukesUser;
+import org.junit.Test;
+
+/**
+ * 
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class SbsAccountManagerImplTest {
+
+  /**
+   * Test method for
+   * {@link org.jboss.labs.sbs.plugin.nukesauth.SbsAccountManagerImpl#listToString(java.util.List)}
+   * .
+   */
+  @Test
+  public void testListToString() {
+    SbsAccountManagerImpl sbsAccountManager = new SbsAccountManagerImpl();
+    List<NukesUser> nukes = new LinkedList<NukesUser>();
+    nukes.add(new NukesUser("account1"));
+    nukes.add(new NukesUser("account2"));
+    nukes.add(new NukesUser("account3"));
+    nukes.add(new NukesUser("account4"));
+
+    assertEquals("account2::account3::account4", sbsAccountManager.listToString("account1", nukes));
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-nukesauthentication/trunk/src/test/java/org/jboss/labs/sbs/plugin/nukesauth/SbsAccountManagerImplTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the jboss-svn-commits mailing list