This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
validators [2017/06/15 15:10] pawel added check |
validators [2019/02/13 09:10] (current) root added cascading drop down |
||
---|---|---|---|
Line 18: | Line 18: | ||
} | } | ||
else return true | else return true | ||
+ | </ | ||
+ | |||
+ | === Require Value in DATEFIELD2 greater than " | ||
+ | <code java> | ||
+ | Date today123 = new Date() | ||
+ | if ( cfValues[' | ||
+ | if ( cfValues[' | ||
+ | return true | ||
+ | } | ||
+ | else return false | ||
+ | } | ||
+ | else return true | ||
+ | </ | ||
+ | |||
+ | === Check if field equals some string === | ||
+ | <code java> | ||
+ | def selectedSegment = cfValues[' | ||
+ | def selectedSegmentString = selectedSegment.toString() | ||
+ | if ( selectedSegmentString.equals(" | ||
+ | // do something here | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Verify if custom field value is 5 characters long === | ||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor; | ||
+ | import com.atlassian.jira.issue.CustomFieldManager; | ||
+ | import com.atlassian.jira.issue.IssueManager; | ||
+ | |||
+ | def customfield_ID = " | ||
+ | def issueManager = ComponentAccessor.getIssueManager() | ||
+ | def customFieldManager = ComponentAccessor.getCustomFieldManager() | ||
+ | def cField = customFieldManager.getCustomFieldObject(customfield_ID) | ||
+ | def cFieldValue = issue.getCustomFieldValue(cField).toString() | ||
+ | |||
+ | |||
+ | if (cFieldValue.size() != 5){ | ||
+ | return false | ||
+ | } | ||
+ | else{ | ||
+ | return true | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Verify if any other tickets have the same dates as requested === | ||
+ | |||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.search.SearchProvider | ||
+ | import com.atlassian.jira.jql.parser.JqlQueryParser | ||
+ | import com.atlassian.jira.web.bean.PagerFilter | ||
+ | import com.atlassian.jira.datetime.DateTimeFormatUtils | ||
+ | import org.apache.commons.lang.time.DateUtils | ||
+ | import java.text.SimpleDateFormat | ||
+ | import java.util.Date.* | ||
+ | import java.lang.String.* | ||
+ | //logging | ||
+ | import org.apache.log4j.Logger | ||
+ | import org.apache.log4j.Level | ||
+ | def log = Logger.getLogger(" | ||
+ | log.setLevel(Level.DEBUG) | ||
+ | // this function returns list of issues for JQL | ||
+ | |||
+ | def findIssues(String jqlQuery) { | ||
+ | def issueManager = ComponentAccessor.issueManager | ||
+ | def user = ComponentAccessor.jiraAuthenticationContext.user | ||
+ | def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser.class) | ||
+ | def searchProvider = ComponentAccessor.getComponent(SearchProvider.class) | ||
+ | def query = jqlQueryParser.parseQuery(jqlQuery) | ||
+ | def results = searchProvider.search(query, | ||
+ | |||
+ | results.issues.collect { issue -> issueManager.getIssueObject(issue.id) } | ||
+ | |||
+ | } | ||
+ | def customFieldManager = ComponentAccessor.getCustomFieldManager() | ||
+ | def isd = cfValues[' | ||
+ | def ied = cfValues[' | ||
+ | def ie = cfValues[' | ||
+ | def inputStartDate | ||
+ | def inputEndDate | ||
+ | def inputEnvironment = ie.toString() | ||
+ | def issues | ||
+ | if (! isd || ! ied){ | ||
+ | log.debug(" | ||
+ | }else{ | ||
+ | inputStartDate = isd.format(" | ||
+ | inputEndDate = ied.format(" | ||
+ | issues = findIssues(' | ||
+ | } | ||
+ | log.debug(" | ||
+ | log.debug(" | ||
+ | log.debug(" | ||
+ | log.debug(" | ||
+ | |||
+ | if ( ! issues){ | ||
+ | return true | ||
+ | log.debug(" | ||
+ | }else{ | ||
+ | return false | ||
+ | log.debug(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Validate user changed the OD Environment field if it was " | ||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.Issue | ||
+ | import org.apache.log4j.Logger | ||
+ | import org.apache.log4j.Level | ||
+ | def log = Logger.getLogger(" | ||
+ | log.setLevel(Level.DEBUG) | ||
+ | |||
+ | Issue issue = issue | ||
+ | |||
+ | def customFieldManager = ComponentAccessor.getCustomFieldManager() | ||
+ | def issueManager = ComponentAccessor.getIssueManager() | ||
+ | def customField = customFieldManager.getCustomFieldObjectByName(" | ||
+ | def originalIssue = issueManager.getIssueObject(issue.id) | ||
+ | |||
+ | def originalValue = originalIssue.getCustomFieldValue(customField).toString() | ||
+ | def newValue = issue.getCustomFieldValue(customField).toString() | ||
+ | |||
+ | log.debug(" | ||
+ | log.debug(" | ||
+ | |||
+ | if (originalValue.equals(" | ||
+ | if ( newValue != originalValue ) { | ||
+ | log.debug(" | ||
+ | return true | ||
+ | }else{ | ||
+ | log.debug(" | ||
+ | return false | ||
+ | } | ||
+ | }else{ | ||
+ | |||
+ | log.debug(" | ||
+ | return true | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Validate if user is allowed to change the OD Environment field === | ||
+ | |||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.Issue | ||
+ | import org.apache.log4j.Logger | ||
+ | import org.apache.log4j.Level | ||
+ | def log = Logger.getLogger(" | ||
+ | log.setLevel(Level.DEBUG) | ||
+ | |||
+ | Issue issue = issue | ||
+ | |||
+ | def customFieldManager = ComponentAccessor.getCustomFieldManager() | ||
+ | def issueManager = ComponentAccessor.getIssueManager() | ||
+ | def customField = customFieldManager.getCustomFieldObjectByName(" | ||
+ | def originalIssue = issueManager.getIssueObject(issue.id) | ||
+ | |||
+ | def originalValue = originalIssue.getCustomFieldValue(customField).toString() | ||
+ | def newValue = issue.getCustomFieldValue(customField).toString() | ||
+ | |||
+ | log.debug(" | ||
+ | log.debug(" | ||
+ | |||
+ | if ( newValue != originalValue ) { | ||
+ | if (! originalValue.equals(" | ||
+ | log.debug(" | ||
+ | return false | ||
+ | |||
+ | }else{ | ||
+ | log.debug(" | ||
+ | return true | ||
+ | } | ||
+ | }else{ | ||
+ | log.debug(" | ||
+ | return true | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Allow only specific users in project ABC or users in a group " | ||
+ | |||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.Issue | ||
+ | def groupManager = ComponentAccessor.getGroupManager() | ||
+ | |||
+ | (issue.projectObject.key == ' | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | === Only allow users in group " | ||
+ | |||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.Issue | ||
+ | def groupManager = ComponentAccessor.getGroupManager() | ||
+ | |||
+ | groupManager.isUserInGroup(currentUser, | ||
+ | </ | ||
+ | |||
+ | === Check if user is in group " | ||
+ | |||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.Issue | ||
+ | import com.atlassian.jira.security.roles.ProjectRoleManager | ||
+ | |||
+ | def projectManager = ComponentAccessor.projectManager | ||
+ | def projectRoleManager = ComponentAccessor.getComponent(ProjectRoleManager) | ||
+ | def role = projectRoleManager.getProjectRole(" | ||
+ | |||
+ | def groupManager = ComponentAccessor.getGroupManager() | ||
+ | |||
+ | if (groupManager.isUserInGroup(currentUser, | ||
+ | return true | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Check if cascading child drop down is set to " | ||
+ | The following script was found on Atlassian community here: [[https:// | ||
+ | Use the **Custom Validator** for this script-runner script. | ||
+ | <code java> | ||
+ | import com.atlassian.jira.component.ComponentAccessor | ||
+ | import com.atlassian.jira.issue.MutableIssue | ||
+ | import com.opensymphony.workflow.InvalidInputException | ||
+ | |||
+ | def issue = issue as MutableIssue | ||
+ | def cf = ComponentAccessor.customFieldManager.getCustomFieldObjectByName(" | ||
+ | def cfValue = issue.getCustomFieldValue(cf) as HashMap | ||
+ | |||
+ | def parentOption = cfValue.values().getAt(0)? | ||
+ | def childOption = cfValue.values().getAt(1)? | ||
+ | |||
+ | if (!childOption) { | ||
+ | throw new InvalidInputException(" | ||
+ | } | ||
</ | </ |