Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejava
titlereadFieldDataInEditMode usage example
collapsetrue
// This script checks that Grid custom field named "API Sample" contains at least one row.
// Can be used only as scripted validator of issue transition. Cannot be run from the Script Console.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.opensymphony.workflow.InvalidInputException
@WithPlugin("tge.cloud")
import com.idalko.tgng.jira.server.api.GridFieldData
import com.idalko.tgng.jira.server.api.GridService

// Get TGNG custom field id
String tgngCustomFieldName = "API Sample"
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField tgngCustomField = customFieldManager.getCustomFieldObjectsByName(tgngCustomFieldName).iterator().next()
Long tgngCustomFieldId = tgngCustomField.getIdAsLong()

// Get user
ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

// Get GridService
GridService gridService = ComponentAccessor.getOSGiComponentInstanceOfType(GridService)
 
// Read field data
GridFieldData fieldData = gridService.readFieldDataInEditMode(issue, tgngCustomFieldId, user)
 
// Check if the grid is empty
if (fieldData.rows.size() == 0) {
    // Throw an exception with the field id and an error message for TGNG field
    // it will prevent transition with the noted error, user will stay on the transition screen.
    throw new InvalidInputException(tgngCustomField.id, "Add at least one record to grid to proceed")
}

...