Confluence has been updated to version 6.15.9

Page tree
Skip to end of metadata
Go to start of metadata


Delete Rows
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.security.JiraAuthenticationContext
import com.atlassian.plugin.PluginAccessor
import com.atlassian.jira.user.ApplicationUser;
  
// get an issue
IssueManager issueManager = ComponentAccessor.getOSGiComponentInstanceOfType(IssueManager.class);
Issue issue = issueManager.getIssueObject("TEST-1");
  
// find TGE custom fields
PluginAccessor pluginAccessor = ComponentAccessor.getPluginAccessor();
Class tgeConfigManagerClass = pluginAccessor.getClassLoader().findClass("com.idalko.jira.plugins.igrid.api.config.grid.TGEGridConfigManager");
def tgeConfigManager = ComponentAccessor.getOSGiComponentInstanceOfType(tgeConfigManagerClass);
List<Long> tgeCustomFieldIds = tgeConfigManager.getGridCustomFieldIds();
  
// get current user
JiraAuthenticationContext jiraAuthenticationContext = ComponentAccessor.getOSGiComponentInstanceOfType(JiraAuthenticationContext.class);
Object userObject = jiraAuthenticationContext.getLoggedInUser();
User user = userObject instanceof ApplicationUser ? ((ApplicationUser) userObject).getDirectoryUser() : (User) userObject;
  
// get TGE custom field
CustomFieldManager customFieldManager = ComponentAccessor.getOSGiComponentInstanceOfType(CustomFieldManager.class);
CustomField tgeCustomField = customFieldManager.getCustomFieldObjectsByName("TGE_TEST").get(0);
Long tgeCustomFieldId = tgeCustomField.getIdAsLong();
  
// read the data from the first grid
Class dataManagerClass = pluginAccessor.getClassLoader().findClass("com.idalko.jira.plugins.igrid.api.data.TGEGridTableDataManager");
def tgeGridDataManager = ComponentAccessor.getOSGiComponentInstanceOfType(dataManagerClass);
def rows = tgeGridDataManager.readGridData(issue.getId(), tgeCustomFieldId, null, null, 0, 100, user);
def values = rows.getValues()
  
StringBuilder returnResult = new StringBuilder();
returnResult.append("Grid rows: " + values + "\n");
  
if (!values.isEmpty()) {
  
    Map<String, Object> lastRow = values.get(values.size() - 1);
    Set<Long> rowIdsToDelete = new HashSet<Long>();
  
    def lastRowId = lastRow.get("id")
    rowIdsToDelete.add(lastRowId);
    tgeGridDataManager.deleteRows(issue.getId(), tgeCustomFieldId, rowIdsToDelete, user);
    returnResult.append("Deleted row # " + lastRowId + "\n")
  
    rows = tgeGridDataManager.readGridData(issue.getId(), tgeCustomFieldId, null, null, 0, 100, user);
    values = rows.getValues()
    returnResult.append("Grid rows after deletion: " + values + "\n");
  
} else {
  
    returnResult.append("There are no rows to delete in this grid\n");
}
  
println(returnResult.toString());
return returnResult.toString();
  • No labels