[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&secure:=false&concat_atts:=true&size_limit:=10000000
+ jdbc:ldap://koopa.qa.atl2.redhat.com:10389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&secure:=false&concat_atts:=true&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&secure:=false&concat_atts:=true&size_limit:=10000000
+ jdbc:ldap://koopa.qa.atl2.redhat.com:10389/dc=jboss,dc=com?SEARCH_SCOPE:=subTreeScope&secure:=false&concat_atts:=true&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&maintainTimeStats=false&cacheResultSetMetaData=true&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