Using scripted fields to extract information from the grid (old)
Warning
This is a deprecated approach! Inaccurate work with database connections can cause to JIRA crash. Please use recommended approach that relies on safe TGE Java API.
Introduction
Using a simple script, you can retrieve the values from the grid table and reuse these values in JQL and so on.
This script is implemented by using Scripted Fields. (This is functionality provided by the Script Runner )
import groovy.sql.Sql;
import groovy.sql.GroovyRowResult;
import java.sql.SQLException;
import java.sql.Connection;
import org.apache.log4j.Logger;
import org.ofbiz.core.entity.ConnectionFactory;
import org.ofbiz.core.entity.DelegatorInterface;
import com.atlassian.jira.ofbiz.OfBizDelegator;
import com.atlassian.jira.component.ComponentAccessor;
OfBizDelegator delegator = ComponentAccessor.getOfBizDelegator();
DelegatorInterface delegatorInterface = delegator.getDelegatorInterface();
String helperName = delegatorInterface.getGroupHelperName("default");
Connection connection = ConnectionFactory.getConnection(helperName);
Sql sql = new Sql(connection);
List<GroovyRowResult> resultRows = sql.rows("select count(*) countRow from EmployeeList_c10546 where issueid = ${issue.getId()}");
sql.close();
if (resultRows == null || resultRows.size() == 0) {
log.debug("No result found");
return;
}
// close the connection
Double result = (Double) resultRows.get(0).get("countRow")
return result;
About the connection to the database
The code block allows to connect to the JIRA database.
OfBizDelegator delegator = ComponentAccessor.getOfBizDelegator();
DelegatorInterface delegatorInterface = delegator.getDelegatorInterface();
String helperName = delegatorInterface.getGroupHelperName("default");
Connection connection = ConnectionFactory.getConnection(helperName);
Sql sql = new Sql(connection);
Â
About the table name
Â
gridtable_c12344 Â is the name of the table in the database.
The table name is generated by the addon using the base name and the context id so if you have in the gridconfiguration
gd.tablename = invoice
then the table in the database will be called
invoice_c12345
Where 12345 is the unique context id of the customfield.
Check connecting the grid to a database for more details