User Tools

Site Tools


validators

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
validators [2017/06/15 15:05]
pawel created
validators [2019/02/13 09:10] (current)
root added cascading drop down
Line 9: Line 9:
 </code> </code>
  
 +=== Require Value in FIELD2 if FIELD1 = 'Yes' ===
 +<code java>
 +if ( cfValues['FIELD1']?.value == 'Yes') { 
 +    if ( cfValues['FIELD2'] ) {
 +        return true
 +    } 
 +    else return false
 +     }
 + else return true
 +</code>
 +
 +=== Require Value in DATEFIELD2 greater than "NOW" if FIELD1 is set ===
 +<code java>
 +Date today123 = new Date()
 +if ( cfValues['FIELD1'] ) { 
 +    if ( cfValues['DATEFIELD2'].getTime() > today123.getTime() ) {
 +        return true
 +    } 
 +    else return false
 +     }
 + else return true
 +</code>
 +
 +=== Check if field equals some string ===
 +<code java>
 +def selectedSegment = cfValues['Segment']
 +def selectedSegmentString = selectedSegment.toString()
 +if ( selectedSegmentString.equals("Some String") ){
 +    // do something here
 +
 +}
 +</code>
 +
 +=== 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 = "customfield_11700"
 +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
 +}
 +</code>
 +
 +=== 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("com.acme.CreateSubtask")
 +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, user, PagerFilter.unlimitedFilter)
 +
 +    results.issues.collect { issue -> issueManager.getIssueObject(issue.id) }
 +
 +}
 +def customFieldManager = ComponentAccessor.getCustomFieldManager()
 +def isd = cfValues['OD Start Date']
 +def ied = cfValues['OD End Date']
 +def ie = cfValues['OD Environment']
 +def inputStartDate
 +def inputEndDate
 +def inputEnvironment = ie.toString()
 +def issues
 +if (! isd || ! ied){
 +    log.debug("Input Start date or Input End Date not available")
 +}else{
 +    inputStartDate = isd.format("YYYY-MM-dd").toString()
 +    inputEndDate = ied.format("YYYY-MM-dd").toString()
 +    issues = findIssues('project = ODRSRV  AND "OD Environment" = '+ inputEnvironment +'  AND (("OD Start Date" <= '+ inputStartDate +' AND "OD End Date" >= '+ inputEndDate +') OR ("OD Start Date" <= '+ inputEndDate +' AND "OD Start Date" >= '+ inputStartDate +') OR ("OD Start Date" >= '+ inputStartDate +' AND "OD End Date" <= '+ inputEndDate +') OR ("OD Start Date" <= '+ inputStartDate +' AND "OD End Date" >= '+ inputEndDate +'))' )
 +}
 +log.debug("inputStartdate: "+inputStartDate)
 +log.debug("inputEndDate: "+inputEndDate)
 +log.debug("inputEnvironment: "+inputEnvironment)
 +log.debug("issues: "+issues+" for "+inputEnvironment)
 +
 +if ( ! issues){
 +    return true
 + log.debug("Issues is " + issues)
 +}else{
 +    return false
 +    log.debug("Issues is " + issues)
 +}
 +</code>
 +
 +=== Validate user changed the OD Environment field if it was "None" previously ===
 +<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("com.acme.CreateSubtask")
 +log.setLevel(Level.DEBUG)
 +
 +Issue issue = issue
 +
 +def customFieldManager = ComponentAccessor.getCustomFieldManager()
 +def issueManager = ComponentAccessor.getIssueManager()
 +def customField = customFieldManager.getCustomFieldObjectByName("OD Environment")
 +def originalIssue = issueManager.getIssueObject(issue.id)
 +
 +def originalValue = originalIssue.getCustomFieldValue(customField).toString()
 +def newValue = issue.getCustomFieldValue(customField).toString()
 +
 +log.debug("originalIssue ${originalValue}")
 +log.debug("newIssue ${newValue}")
 +
 +if (originalValue.equals("null") ){
 + if ( newValue != originalValue ) {
 +    log.debug("true -> User changed the field")
 +        return true
 +    }else{
 +        log.debug("false -> User must changed field")
 +        return false
 +    }    
 +}else{
 +
 + log.debug("true -> OD Environment is not null ${originalValue}")
 +    return true
 +
 +}
 +</code>
 +
 +===  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("com.acme.CreateSubtask")
 +log.setLevel(Level.DEBUG)
 +
 +Issue issue = issue
 +
 +def customFieldManager = ComponentAccessor.getCustomFieldManager()
 +def issueManager = ComponentAccessor.getIssueManager()
 +def customField = customFieldManager.getCustomFieldObjectByName("OD Environment")
 +def originalIssue = issueManager.getIssueObject(issue.id)
 +
 +def originalValue = originalIssue.getCustomFieldValue(customField).toString()
 +def newValue = issue.getCustomFieldValue(customField).toString()
 +
 +log.debug("originalIssue ${originalValue}")
 +log.debug("newIssue ${newValue}")
 +
 +if ( newValue != originalValue ) {
 +    if (! originalValue.equals("null") ){
 +    log.debug("false -> Changing from not None")
 +        return false
 +
 +    }else{
 +        log.debug("true -> changing from none")
 +        return true
 +    }
 +}else{
 +    log.debug("true -> not changing")
 +    return true
 +}
 +</code>
 +
 +=== Allow only specific users in project ABC or users in a group "JIRAGROUP" to create issues validator ===
 +
 +<code java>
 +import com.atlassian.jira.component.ComponentAccessor
 +import com.atlassian.jira.issue.Issue
 +def groupManager = ComponentAccessor.getGroupManager()
 +
 +(issue.projectObject.key == 'ABC' && issue.issueType.name == 'Bug' && currentUser.name in ["XYZ", "TEST"] ) || groupManager.isUserInGroup(currentUser, "JIRAGROUP")
 +
 +
 +</code>
 +
 +=== Only allow users in group "users" to execute this action ===
 +
 +<code java>
 +import com.atlassian.jira.component.ComponentAccessor
 +import com.atlassian.jira.issue.Issue
 +def groupManager = ComponentAccessor.getGroupManager()
 +
 +groupManager.isUserInGroup(currentUser, "users")
 +</code>
 +
 +=== Check if user is in group "users" or project role "Developers" to execute this action ===
 +
 +<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("Developers")
 +
 +def groupManager = ComponentAccessor.getGroupManager()
 +
 +if (groupManager.isUserInGroup(currentUser, "users") || projectRoleManager.isUserInProjectRole(currentUser, role, issue.getProjectObject())){
 + return true
 +}
 +</code>
 +
 +=== Check if cascading child drop down is set to "None" ===
 +The following script was found on Atlassian community here: [[https://community.atlassian.com/t5/Jira-questions/How-to-check-the-second-value-of-a-cascading-select-list-in-a/qaq-p/759808|How to check the second value of a cascading select list in a custom field]]
 +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("CascadingSelect")
 +def cfValue = issue.getCustomFieldValue(cf) as HashMap
 +
 +def parentOption = cfValue.values().getAt(0)?.value
 +def childOption = cfValue.values().getAt(1)?.value
 +
 +if (!childOption) {
 +    throw new InvalidInputException("Child option is Null")
 +}
 +</code>
validators.1497553530.txt.gz ยท Last modified: 2017/06/15 15:05 by pawel