Version Differences for Miscellaneous Scripts

(AHPSCRIPTS-2 Added)
(AHPSCRIPTS-3)
Line 111:
  new PropertyBasedAgentVarEqualsCriteria("TechType", "TechType")    new PropertyBasedAgentVarEqualsCriteria("TechType", "TechType") 
  );</pre>    );</pre> 
       
    + = Add unknown SCM users as AHP users =  
       
    + '''AHPSCRIPTS-3'''  
       
    + Script Notes:  
    + * Automatically add users that we see in change logs to Anthill so we can send notification to them.  
    + * Needs to have the logging reworked.  
       
    + <pre>import com.urbancode.anthill3.runtime.scripting.properties.*;  
    + import com.urbancode.anthill3.runtime.scripting.session.*;  
    + import java.util.*;  
    + import java.io.*;  
       
       
    + import com.urbancode.anthill3.domain.authentication.*;  
    + import com.urbancode.anthill3.domain.project.*;  
    + import com.urbancode.anthill3.domain.persistent.PersistenceException;  
    + import com.urbancode.anthill3.domain.security.*;  
    + import com.urbancode.anthill3.domain.singleton.security.*;  
    + import com.urbancode.anthill3.domain.userprofile.UserProfile;  
       
    + import com.urbancode.commons.util.CollectionUtil;  
    + import com.urbancode.vcsdriver3.*;  
       
       
    + HashSet userSet = new HashSet();  
       
    + ChangeLog[] changelogs = ChangeLogHelper.getChangeLogArray(workflow);  
    + Long repoId = workflow.getBuildLife().getProfile().getSourceConfig().getId();  
    + userFactory = UserFactory.getInstance();  
       
    + developerRole = RoleFactory.getInstance().restoreForName("Sonata Developers");  
    + userRole = RoleFactory.getInstance().restoreForName("User");  
       
    + // Look-up the LDAP realm here  
    + AuthenticationRealm ldapRealm = AuthenticationRealmFactory.getInstance().restore("LDAP");  
       
       
    + File f = new File("/tmp/script.log");  
    + StringBuffer sb = new StringBuffer();  
    + for (int i = 0; i &lt; changelogs.length; i++){  
    + ChangeSet[] changeset = changelogs[i].getChangeSetArray();  
    + for (int j = 0; j &lt; changeset.length; j++){  
    + try {  
    + String username = changeset[j].getUser();  
    + String domain = null;  
    + String[] splitValue = username.split("\\\\");  
       
    + if(splitValue.length == 2) {  
    + domain = splitValue[0];  
    + username = splitValue[1].trim().toLowerCase();  
    + }  
       
    + sb.append("Changelog username : "+username+"\n");  
       
    + User[] tempUsers = userFactory.restoreAllForChangelogNameAndRepository(username, repoId);  
       
    + if (tempUsers.length &gt; 0) {  
    + CollectionUtil.addAll(userSet, tempUsers);  
    + } else {  
    + sb.append(username+" User does not exist. Adding User\n");  
    + User user1 = new User(true, ldapRealm);  
    + user1.setName(username);  
    + user1.setPassword("Bogus");  
       
    + Long[] roleArray = new Long[] {userRole.getId(), developerRole.getId()};  
    + user1.addRole(developerRole);  
    + user1.addRole(userRole);  
    + user1.store();  
       
    + UserProfile p = new UserProfile();  
    + p.setUser(user1);  
    + p.setEmailAddress(username+"@mycompany.com");  
    + p.setFirstName("New");  
    + p.setLastName("User");  
    + p.setNew();  
    + p.store();  
       
    + // Adding the user into the notification userset again  
    + User[] tempUsers = userFactory.restoreAllForChangelogNameAndRepository(username, repoId);  
    + CollectionUtil.addAll(userSet, tempUsers);  
    + }  
    + }  
    + catch (PersistenceException e) {  
    + throw new PersistenceRuntimeException(e);  
    + }  
    + }  
    + }  
       
       
    + User[] result = new User[userSet.size()];  
    + userSet.toArray(result);  
       
    + for(int i=0; i&lt;result.length;i++) {  
    + sb.append("user name "+result[i].toString());  
    + sb.append("realm "+result[i].getAuthenticationRealm().getName()+"\n");  
    + }  
       
    + try {  
    + BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/script.log"));  
    + out.write(sb.toString());  
    + out.close();  
    + } catch (IOException e) {  
    + }</pre>