I want to get all gadgets in a particular dashboard and the filter in all gadgets and the query in the filter.
Does JIRA-API-Model support that way of accessing a query like shown below?
Dashboard -> Gadget -> Filter -> Query
Via PortletConfigurationManager I've already tried to get from my dashboard to its gadgets and from the gadgets to their filter.
But the only method when I get a particular PortletConfiguration is getGadgetUri() to get somehow to a gadget. It always leads me like the method's name already says to
rest/gadgets/1.0/g/com.atlassian.jira.gadgets:filter-results-gadget/gadgets/filter-results-gadget.xml
From this point I don't know how to go on in order to get to that filter that is saved in the gadget.
Ok, finally I found a solution how to resolve that Problem.
With the PortletPageService you can get the PortletConfigurations. Every PortletConfiguration in the PortletConfiguerartions allocates a Map with UserPrefs. And profoundly hidden in this Map, you can find the filterId as a String. With SearchRequestService you are able to find a filter by id.
Unfortunatley, there were no further detailed infos on the JIRA API when it comes to the getUserPrefs()-Method
Here is the method how you get all Queries from a Dashboard:
public List<Query> getAllQueriesFromDashboard(PortalPage dashboard)
{
PortalPageService pps = ComponentAccessor.getComponent(PortalPageService.class);
SearchRequestService srs = ComponentAccessor.getComponent(SearchRequestService.class);
Set<String> filterIds = new HashSet<String>();
List<Query> queries = new ArrayList<Query>();
// get dashboard by id
List<List<PortletConfiguration>> portletConfigurations = pps.getPortletConfigurations(getJiraServiceContext(), dashboard.getId());
//get all gadgets
for(int i = 0; i<portletConfigurations.size(); i++)
{
List<PortletConfiguration> lpc = portletConfigurations.get(i);
for(int j = 0; j<lpc.size(); j++)
{
PortletConfiguration pc = lpc.get(j);
Map<String, String> userPrefs = pc.getUserPrefs();
for(Entry<String, String> x : userPrefs.entrySet())
{
if(x.getKey().equalsIgnoreCase("filterId"))
{
filterIds.add(x.getValue().replace("filter-", ""));
}
}
}
}
// get all filters by Id --> get all Queries
Iterator<String> it = filterIds.iterator();
while(it.hasNext())
{
Long id = Long.parseLong(it.next());
SearchRequest sr = srs.getFilter(getJiraServiceContext(), id);
Query q = sr.getQuery();
queries.add(q);
}
return queries;
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.