/src/test/resources/examples/RenameDuplicateUsers.groovy
Groovy | 121 lines | 82 code | 20 blank | 19 comment | 9 complexity | c86854fe3ab38efe9083962e3075195c MD5 | raw file
- package examples
-
-
- import com.atlassian.core.ofbiz.CoreFactory
- import com.atlassian.jira.util.ErrorCollection
- import com.onresolve.jira.groovy.CannedScriptRunner
- import com.onresolve.jira.groovy.GroovyRunner
- import java.sql.Connection
- import java.sql.PreparedStatement
- import java.sql.ResultSet
- import java.sql.ResultSetMetaData
- import org.apache.log4j.Category
- import org.apache.log4j.Level
- import org.ofbiz.core.entity.ConnectionFactory
- import org.ofbiz.core.entity.GenericDelegator
- import com.onresolve.jira.groovy.canned.CannedScript
- import com.onresolve.jira.groovy.ScriptManager
- import com.atlassian.jira.ComponentManager
-
- GenericDelegator delegator = CoreFactory.getGenericDelegator()
- String helperName = delegator.getGroupHelperName("default");
- Connection conn = ConnectionFactory.getConnection(helperName);
- String sqlStmt = """
- select username
- from userbase
- where lower(username) in (
- select LOWER(username) from userbase
- group by LOWER(username)
- having count(LOWER(username)) > 1
- )
- order by lower(username)
- """
-
-
- Category log = log
- log.setLevel(Level.DEBUG)
- GroovyRunner runner = new CannedScriptRunner()
-
- PreparedStatement stmt = conn.prepareStatement(sqlStmt, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-
- ResultSet rs = stmt.executeQuery();
- log.debug rs
-
- ResultSetMetaData rsMetaData = rs.getMetaData();
- int numberOfColumns = rsMetaData.getColumnCount();
-
- List renameUsers = []
-
- if (0)
- {
- // Map<String, Object> inputs = [
- // (RenameUser.FIELD_FROM_USER_ID) : "A263251",
- // (RenameUser.FIELD_TO_USER_ID): "a263251",
- // (RenameUser.FIELD_MERGE): true,
- // ] as Map<String, Object>
- // log.debug(inputs)
-
- // RenameUser renameUser = new RenameUser()
- // renameUser.log.setLevel(Level.DEBUG)
- // ErrorCollection errorCollection = renameUser.doValidate(inputs, true)
- // if (errorCollection.hasAnyErrors()) {
- // log.error "errorCollection has errors"
- // log.error errorCollection
- // }
- // else {
- // // log.debug renameUser.getDescription(inputs, true)
- // runner.getCannedScriptHumanDesc(RenameUser.class.getName(), inputs, true)
- // }
- }
- // return
-
- while (rs.next()) {
- for (int i = 1; i < numberOfColumns + 1; i++) {
- renameUsers.add(rs.getObject(i))
- }
- }
- log.debug renameUsers
- log.debug renameUsers.size()
-
- Map<String, List> renameUserMap = [:]
- renameUsers.eachWithIndex {String s, int i ->
- if (! renameUserMap.get(s.toLowerCase())) {
- renameUserMap.put(s.toLowerCase(), [])
- }
-
- renameUserMap[s.toLowerCase()].add(s)
- }
- log.debug renameUserMap
-
- renameUserMap.each {String k, List v ->
- if (! v.contains(k)) {
- log.warn "Problem with user $k"
- }
-
- v.each {String mergeFrom ->
- if (mergeFrom != k) {
- log.debug "Merge from $mergeFrom to $k"
-
- ScriptManager scriptManager = (ScriptManager) ComponentManager.getComponentInstanceOfType(ScriptManager.class);
- GroovyClassLoader gcl = scriptManager.getGcl();
- CannedScript renameUser = (CannedScript) gcl.loadClass("com.onresolve.jira.groovy.canned.admin.RenameUser", true, false).newInstance();
-
- Map<String, Object> inputs = [
- (renameUser.FIELD_FROM_USER_ID) : mergeFrom,
- (renameUser.FIELD_TO_USER_ID): k,
- (renameUser.FIELD_MERGE): true,
- ] as Map<String, Object>
-
-
- renameUser.log.setLevel(Level.DEBUG)
- ErrorCollection errorCollection = renameUser.doValidate(inputs, true)
- if (errorCollection.hasAnyErrors()) {
- log.error errorCollection
- }
- else {
- // runner.getCannedScriptHumanDesc(RenameUser.class.getName(), inputs, true)
- runner.run(renameUser.class.getName(), inputs)
- }
- }
- }
- }