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.