[jboss-svn-commits] JBL Code SVN: r14743 - in labs/jbosslabs/branches/identity_integration_labs2/portal-extensions: jbwebsite-user-admin/src/web/WEB-INF/tld and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 29 15:35:35 EDT 2007


Author: szimano
Date: 2007-08-29 15:35:35 -0400 (Wed, 29 Aug 2007)
New Revision: 14743

Modified:
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/configuration/to-copy/server/default/deploy/jboss-sso.sar/conf/sso.cfg.xml
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-admin/src/web/WEB-INF/tld/forge.tld
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/etc/cactus.properties
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/java/org/jboss/website/user/migration/SyncNukesUsersTestCase.java
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/classes/nukes.cfg.xml
   labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/tld/forge.tld
Log:
bimbom

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/configuration/to-copy/server/default/deploy/jboss-sso.sar/conf/sso.cfg.xml
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/configuration/to-copy/server/default/deploy/jboss-sso.sar/conf/sso.cfg.xml	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/configuration/to-copy/server/default/deploy/jboss-sso.sar/conf/sso.cfg.xml	2007-08-29 19:35:35 UTC (rev 14743)
@@ -9,7 +9,7 @@
 		<login>
 			<provider id="si:jboss-sso:ldap:login" class="org.jboss.website.security.JBossCorpIdentityProvider">
 				<property name="connectionURL">
-					jdbc:ldap://localhost:389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&amp;secure:=false&amp;concat_atts:=true&amp;size_limit:=10000000
+					jdbc:ldap://koopa.qa.atl2.redhat.com:10389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&amp;secure:=false&amp;concat_atts:=true&amp;size_limit:=10000000
 				</property>
 				<property name="username">cn=Admin,dc=jboss,dc=com</property>
 				<property name="password">jbossrocks</property>
@@ -20,7 +20,7 @@
 		<provisioning>
 			<provider id="si:jboss-sso:ldap:login" class="org.jboss.website.security.JBossCorpIdentityProvider">
 				<property name="connectionURL">
-					jdbc:ldap://localhost:389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&amp;secure:=false&amp;concat_atts:=true&amp;size_limit:=10000000
+					jdbc:ldap://koopa.qa.atl2.redhat.com:10389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&amp;secure:=false&amp;concat_atts:=true&amp;size_limit:=10000000
 				</property>
 				<property name="username">cn=Admin,dc=jboss,dc=com</property>
 				<property name="password">jbossrocks</property>

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-admin/src/web/WEB-INF/tld/forge.tld
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-admin/src/web/WEB-INF/tld/forge.tld	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-admin/src/web/WEB-INF/tld/forge.tld	2007-08-29 19:35:35 UTC (rev 14743)
@@ -178,4 +178,10 @@
       </attribute>
    </tag>
    
+     <tag>
+      <name>htmlOut</name>
+      <tagclass>org.jboss.forge.common.taglib.HtmlOutTag</tagclass>
+       <body-content>scriptless</body-content>
+   </tag>
+   
 </taglib>

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/etc/cactus.properties
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/etc/cactus.properties	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/etc/cactus.properties	2007-08-29 19:35:35 UTC (rev 14743)
@@ -1,5 +1,5 @@
 #jbwebsite testing
-cactus.contextURL=http://localhost/migrate
+cactus.contextURL=http://localhost:8080/migrate
 #cactus.contextURL=http://169.254.25.129/jbwebsite-test
 #acl testing
 #cactus.contextURL=http://localhost:8080/jboss-acl-test

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/java/org/jboss/website/user/migration/SyncNukesUsersTestCase.java
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/java/org/jboss/website/user/migration/SyncNukesUsersTestCase.java	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/java/org/jboss/website/user/migration/SyncNukesUsersTestCase.java	2007-08-29 19:35:35 UTC (rev 14743)
@@ -16,11 +16,9 @@
 import java.text.MessageFormat;
 import java.io.OutputStream;
 
-
 import org.apache.log4j.Logger;
 import org.apache.cactus.ServletTestCase;
 
-
 import org.hibernate.*;
 
 import org.jboss.website.security.JBossIdentity;
@@ -33,12 +31,7 @@
 /**
  * users to test
  * 
- * cn=chrisi
- * cn=kristofn
- * cn=oudenaar
- * cn=jgilje
- * cn=njipp
- * cn=nbk27hi
+ * cn=chrisi cn=kristofn cn=oudenaar cn=jgilje cn=njipp cn=nbk27hi
  * 
  * 
  * 
@@ -47,572 +40,532 @@
 
 /**
  * @author Sohil Shah - sohil.shah at jboss.com
- *
+ * 
  */
-public class SyncNukesUsersTestCase extends ServletTestCase 
-{
-    private static Logger log = Logger.getLogger(SyncNukesUsersTestCase.class);
-        
-    private FileOutputStream ldifos = null;
-    private Collection usersAdded = new ArrayList();
-    
-    /**
-     * 
-     */
-    public void setUp() throws Exception
-    { 
-        File file = new File("/migration/nukes.ldif");
-        file.createNewFile();
-        this.ldifos = new FileOutputStream(file,false); //overwrite mode
-    }
-             
-    /**
-     * 
-     */
-    protected void tearDown() throws Exception 
-    {        
-        if(this.ldifos!=null)
-        {
-            this.ldifos.flush();
-            this.ldifos.close();
-        }
-    }
+public class SyncNukesUsersTestCase extends ServletTestCase {
+	private static Logger log = Logger.getLogger(SyncNukesUsersTestCase.class);
 
+	private FileOutputStream ldifos = null;
+	private Collection usersAdded = new ArrayList();
 
+	/**
+	 * 
+	 */
+	public void setUp() throws Exception {
+		File file = new File("/Users/tomek/migration/nukes.ldif");
+		file.createNewFile();
+		this.ldifos = new FileOutputStream(file, false); // overwrite mode
+	}
 
+	/**
+	 * 
+	 */
+	protected void tearDown() throws Exception {
+		if (this.ldifos != null) {
+			this.ldifos.flush();
+			this.ldifos.close();
+		}
+	}
 
-    /**
-     * 
-     */
-    public void testStartSync() throws Exception
-    {
-       System.out.println("User Migration tool successfully called.........");
-        //initialize the ldif file
-        this.initLDIF(this.ldifos);
-        
-        this.performUserSync();
-        
-        this.performRoleSync();
-    }
-    
-    //------user sync-------------------------------------------------------------------------------------------------------------------------------------
-    /**
-     * 
-     * @throws Exception
-     */
-    private void performUserSync() throws Exception
-    {
-        StringBuffer buffer = new StringBuffer();
-        SimpleDateFormat format = new SimpleDateFormat();
-        Session session = null;
-        try
-        {
-            log.info("Starting synchronization from NukesUsers to PortalUsers...."); 
-            long start = System.currentTimeMillis();
-            
-            //testing the Hibernate setup to look into the Nukes database
-            session = Tools.getOpenSession();        
-            session.beginTransaction();
-            
-            //read a NukeUserBean            
-            Query query = session.createQuery("from NukeUserBean as u");
-            
-            int counter = 1;            
-            for(Iterator itr=query.iterate();itr.hasNext();)
-            {                
-                /*if(counter == 20)
-                {
-                    break;
-                }*/
-                
-                NukeUserBean user = (NukeUserBean)itr.next();
-                            
-                log.info("Synchronizing........"+user.getUserName()+" ("+counter+++")");
-                
-                /*Transaction userReadTx = org.jboss.website.hibernate.Tools.getOpenSession().beginTransaction(); 
-                try
-                {
-                    if(UserBean.readByUserName(user.getUserName().trim())!=null)
-                    {
-                        //the user already exists....no need to migrate
-                        continue;
-                    }
-                }
-                catch(Exception e)
-                {
-                    buffer.append("-----------------------------\n");
-                    buffer.append("User="+user.getUserName()+"\n");
-                    buffer.append("RegisteredOn="+format.format(user.getRegDate())+"\n");
-                    buffer.append("Exception="+e.toString()+"\n");
-                    buffer.append("-----------------------------\n");
-                    continue;
-                }
-                finally
-                {
-                    if(userReadTx != null)
-                    {
-                        userReadTx.rollback();
-                    }
-                }*/
-                if(this.usersAdded.contains(user.getUserName().trim()))
-                {
-                    //the user already exists....no need to migrate
-                    continue;
-                }
-                
-                if( 
-                        Util.isEmpty(user.getUserName()) ||
-                        user.getUserName().contains("--") ||
-                        user.getUserName().contains(",")  ||                        
-                        user.getUserName().contains("=") ||                        
-                        user.getUserName().contains("&#") ||
-                        user.getUserName().contains("#") ||
-                        user.getUserName().contains(";") ||
-                        user.getUserName().contains("+") ||
-                        user.getUserName().startsWith("-") ||
-                        user.getUserName().endsWith("-")
-                )
-                {
-                    buffer.append("-----------------------------\n");
-                    buffer.append("User="+user.getUserName()+"\n");
-                    buffer.append("RegisteredOn="+format.format(user.getRegDate())+"\n");
-                    buffer.append("Exception=Illegal UserName.....This account will not be synched\n");
-                    buffer.append("-----------------------------\n");
-                    continue;
-                }
-                
-                
-                //now for testing purpose setup this user into the new Portal system
-                UserBean portalUser = new UserBean();
-                ProfileBean profile = new ProfileBean();
-                JBossIdentity identity = new JBossIdentity();
-                
-                portalUser.setIdentity(identity);
-                portalUser.setProfile(profile);
-                
-                
-                //setup the portalUser
-                portalUser.setUserName(user.getUserName().trim());
-                portalUser.setForceResetEnabled(false);
-                portalUser.setOldNukesPass(user.getPass());
-                
-                
-                //setup the identity
-                identity.setUserName(user.getUserName().trim());
-                identity.setPassword(user.getPass().getBytes());
-                identity.setEmail(user.getEmail().trim());
-                if(user.getEnabled()>0)
-                {
-                    identity.setActive(true);
-                }
-                else
-                {
-                    identity.setActive(false);
-                }
-                
-                
-                identity.setFullName(user.getFname().trim()+" "+user.getLname().trim());
-                identity.setRegistrationDate(user.getRegDate());
-                identity.setSecretQuestion(user.getQuestion().trim());
-                identity.setSecretAnswer(user.getAnswer().trim());
-                
-                //other emails
-                //identity.addEmail(user.getFemail());
-                
-                //phone numbers
-                //if(user.getPhone()!=null && user.getPhone().trim().length()>0 && 
-                //   ( user.getPhone().startsWith("+")|| Character.isDigit(user.getPhone().charAt(0)) )
-                //)
-                //{
-                //    identity.addPhoneNumber(user.getPhone());
-                //}
-                
-                
-                //company
-                Address companyAddress = new Address();
-                identity.setCompanyAddress(companyAddress);
-                companyAddress.setStreet(user.getStreet().trim());
-                companyAddress.setCity(user.getCity().trim());
-                companyAddress.setState(user.getState().trim());                
-                companyAddress.setPostalCode(user.getZip().trim());
-                companyAddress.setCountry(user.getCountry().trim());
-                
-                                
-                identity.setCompanyRole(user.getRole().trim());
-                identity.setCompanyName(user.getCname().trim());
-                identity.setCompanyTitle(user.getTitle().trim());
-                
-                
-                //setup the profile
-                profile.setCompanySize(user.getCompanySize());
-                profile.setCompanyType(user.getUserType());
-                profile.setInterestType(user.getInterestInJboss());
-                if(user.getNewsletter()>0)
-                {
-                    profile.setNewsLetter(true);
-                }
-                else
-                {
-                    profile.setNewsLetter(false);
-                }
-                if(user.getSalesContact()>0)
-                {
-                    profile.setSalesContact(true);
-                }
-                else
-                {
-                    profile.setSalesContact(false);
-                }
-                if(user.getSupportContact()>0)
-                {
-                    profile.setSupportContact(true);
-                }
-                else
-                {
-                    profile.setSupportContact(false);
-                }
-                
-                //perform the user add operation
-                Transaction tx = org.jboss.website.hibernate.Tools.getOpenSession().beginTransaction();
-                boolean success = false;
-                try
-                {
-                    this.register(portalUser);
-                    success = true;
-                }
-                catch(Exception e)
-                {
-                    success = false;
-                    //log this error
-                    buffer.append("-----------------------------\n");
-                    buffer.append("User="+user.getUserName()+"\n");
-                    buffer.append("RegisteredOn="+format.format(user.getRegDate())+"\n");
-                    buffer.append("Exception="+e.toString()+"\n");
-                    buffer.append("-----------------------------\n");
-                }
-                finally
-                {
-                    if(success)
-                    {
-                        tx.commit();
-                        this.usersAdded.add(identity.getUserName().trim());
-                    }
-                    else
-                    {
-                        tx.rollback();
-                    }
-                }                               
-            }                                                
-            log.info("Synchronization from NukesUsers to PortalUsers successfully finished....");
-            long stop = System.currentTimeMillis();
-            long duration = stop - start;
-            log.info("Sync finished in..."+duration+"ms");
-        }
-        catch(Exception e)
-        {
-            e.printStackTrace();
-            throw e;
-        }
-        finally
-        {
-            Tools.closeSession(session);            
-            //log
-            //spit it out to a log file
-            File file = new File("/migration/synctoolusers.log");
-            file.createNewFile();
-            FileOutputStream fos = new FileOutputStream(file,false); //truncates if an older file exists
-            fos.write(buffer.toString().getBytes());
-            fos.close();
-        }
-    }
-    
-    /**
-     * 
-     *
-     */
-    private void register(UserBean user)
-    {
-        boolean success = false;        
-        try
-        {                                                        
-            //save the user to the database, this saves the user to the portal database,
-            user.save();
-            
-            //add this user to the core portal data....without this the portal will break,
-            //this should be fixed in 2.4
-            //UserModule userModule = JBossPortalUtil.getUserModule();
-            //userModule.createUser(user.getUserName(),null,null);
-                                                                                            
-            //tag success, so that the profile can be created in the JBoss Corp Identity system
-            success = true;                     
-        }        
-        catch(Exception e)
-        {
-            log.error(this,e);
-            throw new RuntimeException(e);
-        }
-        finally
-        {
-            if(success)
-            {
-                try{this.saveLDIF(user,this.ldifos);}catch(Exception e){throw new RuntimeException(e);}
-            }
-        }                
-    }
-    
-    /**
-     * 
-     * @param user
-     * @param os
-     * @throws Exception
-     */
-    private void saveLDIF(UserBean user,OutputStream os) throws Exception
-    {
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-DD");
-        StringBuffer template = new StringBuffer();
-        template.append("dn: cn={0},ou=jbosssso,dc=jboss,dc=com\n");
-        template.append("cn: {1}\n");
-        template.append("sn: {2}\n");
-        template.append("o: {3}\n");        
-        template.append("objectClass: jbossIdentity\n");
-        template.append("secretQuestion: {4}\n");
-        template.append("secretAnswer: {5}\n");        
-        template.append("registrationDate: {6}\n");
-        template.append("employeeType: {7}\n");
-        template.append("title: {8}\n");
-        template.append("givenName: {9}\n");
-        template.append("displayName: {10}\n");
-        template.append("userPassword: {11}\n");
-        
-        //multivalue telephoneNumber
-        template.append("telephoneNumber: missing\n");                
-        
-        //multivalue mail
-        Collection allEmails = new ArrayList();
-        allEmails.add(user.getIdentity().getEmail());
-        allEmails.addAll(user.getIdentity().getOtherEmails());
-        if(!Util.isEmpty(allEmails))
-        {
-            int count = 0;
-            for(Iterator itr=allEmails.iterator();itr.hasNext();)
-            {
-                if(count == 0)
-                {
-                    template.append("mail: primary="+itr.next()+"\n");
-                }
-                else
-                {
-                    template.append("mail: "+itr.next()+"\n");
-                }
-                count++;
-            }
-        }
-        else
-        {
-            template.append("mail: null\n");
-        }
-        
-        //multivalue postalAddress
-        if(!Util.isEmpty(user.getIdentity().getCompanyAddress().getStreet()))
-        {
-            template.append("postalAddress: street="+user.getIdentity().getCompanyAddress().getStreet()+"\n");
-        }
-        else
-        {
-            template.append("postalAddress: street=null\n");
-        }
-        if(!Util.isEmpty(user.getIdentity().getCompanyAddress().getCity()))
-        {
-            template.append("postalAddress: city="+user.getIdentity().getCompanyAddress().getCity()+"\n");
-        }
-        else
-        {
-            template.append("postalAddress: city=null\n");
-        }
-        if(!Util.isEmpty(user.getIdentity().getCompanyAddress().getState()))
-        {
-            template.append("postalAddress: state="+user.getIdentity().getCompanyAddress().getState()+"\n");
-        }
-        else
-        {
-            template.append("postalAddress: state=null\n");
-        }
-        if(!Util.isEmpty(user.getIdentity().getCompanyAddress().getPostalCode()))
-        {
-            template.append("postalAddress: postalCode="+user.getIdentity().getCompanyAddress().getPostalCode()+"\n");
-        }
-        else
-        {
-            template.append("postalAddress: postalCode=null\n");
-        }
-        if(!Util.isEmpty(user.getIdentity().getCompanyAddress().getCountry()))
-        {
-            template.append("postalAddress: country="+user.getIdentity().getCompanyAddress().getCountry()+"\n");
-        }
-        else
-        {
-            template.append("postalAddress: country=null\n");
-        }
-        
-        template.append("\n");
-        
-        String userObject = MessageFormat.format(template.toString(),
-        new Object[]{
-            user.getIdentity().getUserName(),
-            user.getIdentity().getUserName(),
-            user.getIdentity().isActive(),
-            !Util.isEmpty(user.getIdentity().getCompanyName())?user.getIdentity().getCompanyName():"null",
-            !Util.isEmpty(user.getIdentity().getSecretQuestion())?user.getIdentity().getSecretQuestion():"null",
-            !Util.isEmpty(user.getIdentity().getSecretAnswer())?user.getIdentity().getSecretAnswer():"null",
-            user.getIdentity().getRegistrationDate()!=null?simpleDateFormat.format(user.getIdentity().getRegistrationDate()):simpleDateFormat.format(new Date()),
-            !Util.isEmpty(user.getIdentity().getCompanyRole())?user.getIdentity().getCompanyRole():"null",
-            !Util.isEmpty(user.getIdentity().getCompanyTitle())?user.getIdentity().getCompanyTitle():"null",
-            !Util.isEmpty(user.getIdentity().getFullName())?user.getIdentity().getFullName():"null",
-            !Util.isEmpty(user.getIdentity().getFullName())?user.getIdentity().getFullName():"null",
-            new String(user.getIdentity().getPassword())
-        }
-        );
-        
-        os.write(userObject.getBytes());
-        os.flush();
-    }
-    //----------role sync------------------------------------------------------------------------------------------------------------------------------
-    /**
-     * 
-     */
-    private void performRoleSync() throws Exception
-    {
-        log.info("Starting synchronization from NukesRoles to PortalRoles....");
-        
-        //add the defaultRoles
-        this.createDefaultRoles(this.ldifos);
-        
-        //testing the Hibernate setup to look into the Nukes database
-        Session session = Tools.getCurrentSession();
-        
-        session.beginTransaction();
-        
-        //read a NukeRoleBean
-        Query query = session.createQuery("from NukeRoleBean as u");        
-        
-        int counter = 1;
-        for(Iterator itr=query.iterate();itr.hasNext();)
-        {
-            NukeRoleBean role = (NukeRoleBean)itr.next();
-            Role portalRole = new Role();
-            
-            //skip the specified roles
-            if(
-                    role.getName().equalsIgnoreCase("users") ||
-                    role.getName().equalsIgnoreCase("admins") ||
-                    role.getName().equalsIgnoreCase("jboss-html") ||
-                    role.getName().equalsIgnoreCase("jboss-blog") ||
-                    role.getName().equalsIgnoreCase("jbosside") ||
-                    role.getName().equalsIgnoreCase("nukes") ||
-                    role.getName().equalsIgnoreCase("memberplus")
-            )
-            {
-                continue;
-            }
-                                    
-            System.out.println("Synchronizing........"+role.getName()+" ("+counter+")");
-            portalRole.setName("jboss.com_"+role.getName().toLowerCase());
-            
-            for(Iterator userItr=role.getUsers().iterator();userItr.hasNext();)
-            {
-                NukeUserBean user = (NukeUserBean)userItr.next();
-                System.out.println("User="+user.getId()+","+user.getUserName());
-                portalRole.getIdentities().add(user.getUserName());
-            }                        
-            
-            
-            //now persist the portalRole into the LDAP repo
-            this.saveLDIF(portalRole,this.ldifos);
-            
-            counter++;
-        }                
-        log.info("Synchronization from NukesRoles to PortalRoles successfully finished....");
-    }  
-    
-    /**
-     * 
-     * @param role
-     * @param os
-     */
-    private void saveLDIF(Role role,OutputStream os) throws Exception
-    {
-        StringBuffer buffer = new StringBuffer();
-        
-        buffer.append("dn: cn="+role.getName()+",ou=role,dc=jboss,dc=com\n");
-        buffer.append("cn: "+role.getName()+"\n");
-        buffer.append("objectClass: groupOfUniqueNames\n");
-        if(!Util.isEmpty(role.getIdentities()))
-        {
-            for(Iterator itr=role.getIdentities().iterator();itr.hasNext();)
-            {
-                String identity = (String)itr.next();
-                buffer.append("uniqueMember: cn="+identity+"\n");
-            }
-        }
-        else
-        {
-            buffer.append("uniqueMember: cn=null\n");
-        }
-        buffer.append("\n");
-        
-        os.write(buffer.toString().getBytes());
-        os.flush();
-    }
-    
-    /**
-     * 
-     * @param os
-     * @throws Exception
-     */
-    private void createDefaultRoles(OutputStream os) throws Exception
-    {
-        StringBuffer buffer = new StringBuffer();
-        
-        buffer.append("dn: cn=Admin,ou=role,dc=jboss,dc=com\n");
-        buffer.append("cn: Admin\n");
-        buffer.append("uniqueMember: cn=admin\n");
-        buffer.append("objectClass: groupOfUniqueNames\n");
-        buffer.append("\n");
-        
-        buffer.append("dn: cn=User,ou=role,dc=jboss,dc=com\n");
-        buffer.append("cn: User\n");
-        buffer.append("uniqueMember: cn=null\n");
-        buffer.append("objectClass: groupOfUniqueNames\n");
-        buffer.append("\n");
-        
-        os.write(buffer.toString().getBytes());
-        os.flush();
-    }
-    //-------------------------------------------------------------------------------------------------------------------------------------------------
-    /**
-     * 
-     * @throws Exception
-     */
-    private void initLDIF(OutputStream os) throws Exception
-    {
-        StringBuffer buffer = new StringBuffer();
-        
-        buffer.append("dn: dc=jboss,dc=com\n");
-        buffer.append("dc: jboss\n");
-        buffer.append("objectClass: dcObject\n");
-        buffer.append("objectClass: organizationalUnit\n");
-        buffer.append("ou: JBoss Dot Com\n");
-        buffer.append("\n");
-        buffer.append("dn: ou=role,dc=jboss,dc=com\n");
-        buffer.append("ou: role\n");
-        buffer.append("objectClass: organizationalUnit\n");
-        buffer.append("\n");
-        buffer.append("dn: ou=jbosssso,dc=jboss,dc=com\n");
-        buffer.append("ou: jbosssso\n");
-        buffer.append("objectClass: organizationalUnit\n");
-        buffer.append("\n");
-        
-        os.write(buffer.toString().getBytes());
-        os.flush();
-    }
+	/**
+	 * 
+	 */
+	public void testStartSync() throws Exception {
+		System.out.println("User Migration tool successfully called.........");
+		// initialize the ldif file
+		this.initLDIF(this.ldifos);
+
+		this.performUserSync();
+
+		this.performRoleSync();
+	}
+
+	// ------user
+	// sync-------------------------------------------------------------------------------------------------------------------------------------
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	private void performUserSync() throws Exception {
+		StringBuffer buffer = new StringBuffer();
+		SimpleDateFormat format = new SimpleDateFormat();
+		Session session = null;
+		try {
+			log
+					.info("Starting synchronization from NukesUsers to PortalUsers....");
+			long start = System.currentTimeMillis();
+
+			// testing the Hibernate setup to look into the Nukes database
+			session = Tools.getOpenSession();
+			session.beginTransaction();
+
+			// read a NukeUserBean
+			Query query = session.createQuery("from NukeUserBean as u");
+
+			int counter = 1;
+			for (Iterator itr = query.iterate(); itr.hasNext();) {
+				/*
+				 * if(counter == 20) { break; }
+				 */
+
+				NukeUserBean user = (NukeUserBean) itr.next();
+
+				log.info("Synchronizing........" + user.getUserName() + " ("
+						+ counter++ + ")");
+
+				/*
+				 * Transaction userReadTx =
+				 * org.jboss.website.hibernate.Tools.getOpenSession().beginTransaction();
+				 * try {
+				 * if(UserBean.readByUserName(user.getUserName().trim())!=null) {
+				 * //the user already exists....no need to migrate continue; } }
+				 * catch(Exception e) {
+				 * buffer.append("-----------------------------\n");
+				 * buffer.append("User="+user.getUserName()+"\n");
+				 * buffer.append("RegisteredOn="+format.format(user.getRegDate())+"\n");
+				 * buffer.append("Exception="+e.toString()+"\n");
+				 * buffer.append("-----------------------------\n"); continue; }
+				 * finally { if(userReadTx != null) { userReadTx.rollback(); } }
+				 */
+				if (this.usersAdded.contains(user.getUserName().trim())) {
+					// the user already exists....no need to migrate
+					continue;
+				}
+
+				if (Util.isEmpty(user.getUserName())
+						|| user.getUserName().contains("--")
+						|| user.getUserName().contains(",")
+						|| user.getUserName().contains("=")
+						|| user.getUserName().contains("&#")
+						|| user.getUserName().contains("#")
+						|| user.getUserName().contains(";")
+						|| user.getUserName().contains("+")
+						|| user.getUserName().startsWith("-")
+						|| user.getUserName().endsWith("-")) {
+					buffer.append("-----------------------------\n");
+					buffer.append("User=" + user.getUserName() + "\n");
+					buffer.append("RegisteredOn="
+							+ format.format(user.getRegDate()) + "\n");
+					buffer
+							.append("Exception=Illegal UserName.....This account will not be synched\n");
+					buffer.append("-----------------------------\n");
+					continue;
+				}
+
+				// now for testing purpose setup this user into the new Portal
+				// system
+				UserBean portalUser = new UserBean();
+				ProfileBean profile = new ProfileBean();
+				JBossIdentity identity = new JBossIdentity();
+
+				portalUser.setIdentity(identity);
+				portalUser.setProfile(profile);
+
+				// setup the portalUser
+				portalUser.setUserName(user.getUserName().trim());
+				portalUser.setForceResetEnabled(false);
+				portalUser.setOldNukesPass(user.getPass());
+
+				// setup the identity
+				identity.setUserName(user.getUserName().trim());
+				identity.setPassword(user.getPass().getBytes());
+				identity.setEmail(user.getEmail().trim());
+				if (user.getEnabled() > 0) {
+					identity.setActive(true);
+				} else {
+					identity.setActive(false);
+				}
+
+				identity.setFullName(user.getFname().trim() + " "
+						+ user.getLname().trim());
+				identity.setRegistrationDate(user.getRegDate());
+				identity.setSecretQuestion(user.getQuestion().trim());
+				identity.setSecretAnswer(user.getAnswer().trim());
+
+				// other emails
+				// identity.addEmail(user.getFemail());
+
+				// phone numbers
+				// if(user.getPhone()!=null && user.getPhone().trim().length()>0
+				// &&
+				// ( user.getPhone().startsWith("+")||
+				// Character.isDigit(user.getPhone().charAt(0)) )
+				// )
+				// {
+				// identity.addPhoneNumber(user.getPhone());
+				// }
+
+				// company
+				Address companyAddress = new Address();
+				identity.setCompanyAddress(companyAddress);
+				companyAddress.setStreet(user.getStreet().trim());
+				companyAddress.setCity(user.getCity().trim());
+				companyAddress.setState(user.getState().trim());
+				companyAddress.setPostalCode(user.getZip().trim());
+				companyAddress.setCountry(user.getCountry().trim());
+
+				identity.setCompanyRole(user.getRole().trim());
+				identity.setCompanyName(user.getCname().trim());
+				identity.setCompanyTitle(user.getTitle().trim());
+
+				// setup the profile
+				profile.setCompanySize(user.getCompanySize());
+				profile.setCompanyType(user.getUserType());
+				profile.setInterestType(user.getInterestInJboss());
+				if (user.getNewsletter() > 0) {
+					profile.setNewsLetter(true);
+				} else {
+					profile.setNewsLetter(false);
+				}
+				if (user.getSalesContact() > 0) {
+					profile.setSalesContact(true);
+				} else {
+					profile.setSalesContact(false);
+				}
+				if (user.getSupportContact() > 0) {
+					profile.setSupportContact(true);
+				} else {
+					profile.setSupportContact(false);
+				}
+
+				// perform the user add operation
+				Transaction tx = org.jboss.website.hibernate.Tools
+						.getOpenSession().beginTransaction();
+				boolean success = false;
+				try {
+					this.register(portalUser);
+					success = true;
+				} catch (Exception e) {
+					success = false;
+					// log this error
+					buffer.append("-----------------------------\n");
+					buffer.append("User=" + user.getUserName() + "\n");
+					buffer.append("RegisteredOn="
+							+ format.format(user.getRegDate()) + "\n");
+					buffer.append("Exception=" + e.toString() + "\n");
+					buffer.append("-----------------------------\n");
+				} finally {
+					if (success) {
+						tx.commit();
+						this.usersAdded.add(identity.getUserName().trim());
+					} else {
+						tx.rollback();
+					}
+				}
+			}
+			log
+					.info("Synchronization from NukesUsers to PortalUsers successfully finished....");
+			long stop = System.currentTimeMillis();
+			long duration = stop - start;
+			log.info("Sync finished in..." + duration + "ms");
+		} catch (Exception e) {
+			e.printStackTrace();
+			throw e;
+		} finally {
+			Tools.closeSession(session);
+			// log
+			// spit it out to a log file
+			File file = new File("/Users/tomek/migration/synctoolusers.log");
+			file.createNewFile();
+			FileOutputStream fos = new FileOutputStream(file, false); // truncates
+																		// if an
+																		// older
+																		// file
+																		// exists
+			fos.write(buffer.toString().getBytes());
+			fos.close();
+		}
+	}
+
+	/**
+	 * 
+	 * 
+	 */
+	private void register(UserBean user) {
+		boolean success = false;
+		try {
+			// save the user to the database, this saves the user to the portal
+			// database,
+			user.save();
+
+			// add this user to the core portal data....without this the portal
+			// will break,
+			// this should be fixed in 2.4
+			// UserModule userModule = JBossPortalUtil.getUserModule();
+			// userModule.createUser(user.getUserName(),null,null);
+
+			// tag success, so that the profile can be created in the JBoss Corp
+			// Identity system
+			success = true;
+		} catch (Exception e) {
+			log.error(this, e);
+			throw new RuntimeException(e);
+		} finally {
+			if (success) {
+				try {
+					this.saveLDIF(user, this.ldifos);
+				} catch (Exception e) {
+					throw new RuntimeException(e);
+				}
+			}
+		}
+	}
+
+	/**
+	 * 
+	 * @param user
+	 * @param os
+	 * @throws Exception
+	 */
+	private void saveLDIF(UserBean user, OutputStream os) throws Exception {
+		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-DD");
+		StringBuffer template = new StringBuffer();
+		template.append("dn: cn={0},ou=jbosssso,dc=jboss,dc=com\n");
+		template.append("cn: {1}\n");
+		template.append("sn: {2}\n");
+		template.append("o: {3}\n");
+		template.append("objectClass: jbossIdentity\n");
+		template.append("secretQuestion: {4}\n");
+		template.append("secretAnswer: {5}\n");
+		template.append("registrationDate: {6}\n");
+		template.append("employeeType: {7}\n");
+		template.append("title: {8}\n");
+		template.append("givenName: {9}\n");
+		template.append("displayName: {10}\n");
+		template.append("userPassword: {11}\n");
+
+		// multivalue telephoneNumber
+		template.append("telephoneNumber: missing\n");
+
+		// multivalue mail
+		Collection allEmails = new ArrayList();
+		allEmails.add(user.getIdentity().getEmail());
+		allEmails.addAll(user.getIdentity().getOtherEmails());
+		if (!Util.isEmpty(allEmails)) {
+			int count = 0;
+			for (Iterator itr = allEmails.iterator(); itr.hasNext();) {
+				if (count == 0) {
+					template.append("mail: primary=" + itr.next() + "\n");
+				} else {
+					template.append("mail: " + itr.next() + "\n");
+				}
+				count++;
+			}
+		} else {
+			template.append("mail: null\n");
+		}
+
+		// multivalue postalAddress
+		if (!Util.isEmpty(user.getIdentity().getCompanyAddress().getStreet())) {
+			template
+					.append("postalAddress: street="
+							+ user.getIdentity().getCompanyAddress()
+									.getStreet() + "\n");
+		} else {
+			template.append("postalAddress: street=null\n");
+		}
+		if (!Util.isEmpty(user.getIdentity().getCompanyAddress().getCity())) {
+			template.append("postalAddress: city="
+					+ user.getIdentity().getCompanyAddress().getCity() + "\n");
+		} else {
+			template.append("postalAddress: city=null\n");
+		}
+		if (!Util.isEmpty(user.getIdentity().getCompanyAddress().getState())) {
+			template.append("postalAddress: state="
+					+ user.getIdentity().getCompanyAddress().getState() + "\n");
+		} else {
+			template.append("postalAddress: state=null\n");
+		}
+		if (!Util.isEmpty(user.getIdentity().getCompanyAddress()
+				.getPostalCode())) {
+			template.append("postalAddress: postalCode="
+					+ user.getIdentity().getCompanyAddress().getPostalCode()
+					+ "\n");
+		} else {
+			template.append("postalAddress: postalCode=null\n");
+		}
+		if (!Util.isEmpty(user.getIdentity().getCompanyAddress().getCountry())) {
+			template.append("postalAddress: country="
+					+ user.getIdentity().getCompanyAddress().getCountry()
+					+ "\n");
+		} else {
+			template.append("postalAddress: country=null\n");
+		}
+
+		template.append("\n");
+
+		String userObject = MessageFormat
+				.format(
+						template.toString(),
+						new Object[] {
+								user.getIdentity().getUserName(),
+								user.getIdentity().getUserName(),
+								user.getIdentity().isActive(),
+								!Util.isEmpty(user.getIdentity()
+										.getCompanyName()) ? user.getIdentity()
+										.getCompanyName() : "null",
+								!Util.isEmpty(user.getIdentity()
+										.getSecretQuestion()) ? user
+										.getIdentity().getSecretQuestion()
+										: "null",
+								!Util.isEmpty(user.getIdentity()
+										.getSecretAnswer()) ? user
+										.getIdentity().getSecretAnswer()
+										: "null",
+								user.getIdentity().getRegistrationDate() != null ? simpleDateFormat
+										.format(user.getIdentity()
+												.getRegistrationDate())
+										: simpleDateFormat.format(new Date()),
+								!Util.isEmpty(user.getIdentity()
+										.getCompanyRole()) ? user.getIdentity()
+										.getCompanyRole() : "null",
+								!Util.isEmpty(user.getIdentity()
+										.getCompanyTitle()) ? user
+										.getIdentity().getCompanyTitle()
+										: "null",
+								!Util.isEmpty(user.getIdentity().getFullName()) ? user
+										.getIdentity().getFullName()
+										: "null",
+								!Util.isEmpty(user.getIdentity().getFullName()) ? user
+										.getIdentity().getFullName()
+										: "null",
+								new String(user.getIdentity().getPassword()) });
+
+		os.write(userObject.getBytes());
+		os.flush();
+	}
+
+	// ----------role
+	// sync------------------------------------------------------------------------------------------------------------------------------
+	/**
+	 * 
+	 */
+	private void performRoleSync() throws Exception {
+		log.info("Starting synchronization from NukesRoles to PortalRoles....");
+
+		// add the defaultRoles
+		this.createDefaultRoles(this.ldifos);
+
+		// testing the Hibernate setup to look into the Nukes database
+		Session session = Tools.getCurrentSession();
+
+		session.beginTransaction();
+
+		// read a NukeRoleBean
+		Query query = session.createQuery("from NukeRoleBean as u");
+
+		int counter = 1;
+		for (Iterator itr = query.iterate(); itr.hasNext();) {
+			NukeRoleBean role = (NukeRoleBean) itr.next();
+			Role portalRole = new Role();
+
+			// skip the specified roles
+			if (role.getName().equalsIgnoreCase("users")
+					|| role.getName().equalsIgnoreCase("admins")
+					|| role.getName().equalsIgnoreCase("jboss-html")
+					|| role.getName().equalsIgnoreCase("jboss-blog")
+					|| role.getName().equalsIgnoreCase("jbosside")
+					|| role.getName().equalsIgnoreCase("nukes")
+					|| role.getName().equalsIgnoreCase("memberplus")) {
+				continue;
+			}
+
+			System.out.println("Synchronizing........" + role.getName() + " ("
+					+ counter + ")");
+			portalRole.setName("jboss.com_" + role.getName().toLowerCase());
+
+			for (Iterator userItr = role.getUsers().iterator(); userItr
+					.hasNext();) {
+				NukeUserBean user = (NukeUserBean) userItr.next();
+				System.out.println("User=" + user.getId() + ","
+						+ user.getUserName());
+				portalRole.getIdentities().add(user.getUserName());
+			}
+
+			// now persist the portalRole into the LDAP repo
+			this.saveLDIF(portalRole, this.ldifos);
+
+			counter++;
+		}
+		log
+				.info("Synchronization from NukesRoles to PortalRoles successfully finished....");
+	}
+
+	/**
+	 * 
+	 * @param role
+	 * @param os
+	 */
+	private void saveLDIF(Role role, OutputStream os) throws Exception {
+		StringBuffer buffer = new StringBuffer();
+
+		buffer
+				.append("dn: cn=" + role.getName()
+						+ ",ou=role,dc=jboss,dc=com\n");
+		buffer.append("cn: " + role.getName() + "\n");
+		buffer.append("objectClass: groupOfUniqueNames\n");
+		if (!Util.isEmpty(role.getIdentities())) {
+			for (Iterator itr = role.getIdentities().iterator(); itr.hasNext();) {
+				String identity = (String) itr.next();
+				buffer.append("uniqueMember: cn=" + identity + "\n");
+			}
+		} else {
+			buffer.append("uniqueMember: cn=null\n");
+		}
+		buffer.append("\n");
+
+		os.write(buffer.toString().getBytes());
+		os.flush();
+	}
+
+	/**
+	 * 
+	 * @param os
+	 * @throws Exception
+	 */
+	private void createDefaultRoles(OutputStream os) throws Exception {
+		StringBuffer buffer = new StringBuffer();
+
+		buffer.append("dn: cn=Admin,ou=role,dc=jboss,dc=com\n");
+		buffer.append("cn: Admin\n");
+		buffer.append("uniqueMember: cn=admin\n");
+		buffer.append("objectClass: groupOfUniqueNames\n");
+		buffer.append("\n");
+
+		buffer.append("dn: cn=User,ou=role,dc=jboss,dc=com\n");
+		buffer.append("cn: User\n");
+		buffer.append("uniqueMember: cn=null\n");
+		buffer.append("objectClass: groupOfUniqueNames\n");
+		buffer.append("\n");
+
+		os.write(buffer.toString().getBytes());
+		os.flush();
+	}
+
+	// -------------------------------------------------------------------------------------------------------------------------------------------------
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	private void initLDIF(OutputStream os) throws Exception {
+		StringBuffer buffer = new StringBuffer();
+
+		buffer.append("dn: dc=jboss,dc=com\n");
+		buffer.append("dc: jboss\n");
+		buffer.append("objectClass: dcObject\n");
+		buffer.append("objectClass: organizationalUnit\n");
+		buffer.append("ou: JBoss Dot Com\n");
+		buffer.append("\n");
+		buffer.append("dn: ou=role,dc=jboss,dc=com\n");
+		buffer.append("ou: role\n");
+		buffer.append("objectClass: organizationalUnit\n");
+		buffer.append("\n");
+		buffer.append("dn: ou=jbosssso,dc=jboss,dc=com\n");
+		buffer.append("ou: jbosssso\n");
+		buffer.append("objectClass: organizationalUnit\n");
+		buffer.append("\n");
+
+		os.write(buffer.toString().getBytes());
+		os.flush();
+	}
 }

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/classes/nukes.cfg.xml
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/classes/nukes.cfg.xml	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/classes/nukes.cfg.xml	2007-08-29 19:35:35 UTC (rev 14743)
@@ -6,23 +6,23 @@
    <session-factory name="java:jbwebsite/NukesSessionFactory">
          
       <!--  properties when deployed in J2EE app server) -->     
-      <!--property name="connection.datasource">java:PortalDS</property>      
-      <property name="show_sql">true</property>      
+      <property name="connection.datasource">java:JBossDS</property>      
+      <property name="show_sql">false</property>      
       <property name="hibernate.transaction.flush_before_completion">true</property>
       <property name="hibernate.transaction.auto_close_session">true</property>
       <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
-      <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property-->
+      <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
             
       <!--  properties for testing stuff locally -->        
-      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
-      <property name="connection.url">jdbc:mysql://localhost:3306/nukes3?autoReconnectForPools=true&amp;maintainTimeStats=false&amp;cacheResultSetMetaData=true&amp;zeroDateTimeBehavior=convertToNull</property>
-      <property name="connection.username">nukes3</property>
-      <property name="connection.password">nukes3</property>  
+      <!--<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+      <property name="connection.url">jdbc:mysql://localhost:3306/nukes3?useServerPrepStmts=false</property>
+      <property name="connection.username">portal</property>
+      <property name="connection.password">portalpassword</property>  
       <property name="hibernate.current_session_context_class">thread</property>      
       <property name="show_sql">true</property>
       <property name="cache.use_second_level_cache">false</property>
       <property name="cache.use_query_cache">false</property>
-      <property name="hibernate.cglib.use_reflection_optimizer">false</property>
+      <property name="hibernate.cglib.use_reflection_optimizer">false</property-->
                  
       
       <!--  caching properties -->

Modified: labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/tld/forge.tld
===================================================================
--- labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/tld/forge.tld	2007-08-29 19:26:41 UTC (rev 14742)
+++ labs/jbosslabs/branches/identity_integration_labs2/portal-extensions/jbwebsite-user-migration/src/web/WEB-INF/tld/forge.tld	2007-08-29 19:35:35 UTC (rev 14743)
@@ -178,4 +178,10 @@
       </attribute>
    </tag>
    
+     <tag>
+      <name>htmlOut</name>
+      <tagclass>org.jboss.forge.common.taglib.HtmlOutTag</tagclass>
+       <body-content>scriptless</body-content>
+   </tag>
+   
 </taglib>




More information about the jboss-svn-commits mailing list