diff options
author | spingel | 2009-06-13 07:04:31 +0000 |
---|---|---|
committer | spingel | 2009-06-13 07:04:31 +0000 |
commit | 4baf499d7c56f0b535f5a251bbf702000d25257f (patch) | |
tree | 2acdbab13a9f2ff26fc07641fc67dbe4b13f3b11 /org.eclipse.mylyn.trac.core | |
parent | 835e522a4e7c4d4876c529127ed73c422a469747 (diff) | |
download | org.eclipse.mylyn.tasks-4baf499d7c56f0b535f5a251bbf702000d25257f.tar.gz org.eclipse.mylyn.tasks-4baf499d7c56f0b535f5a251bbf702000d25257f.tar.xz org.eclipse.mylyn.tasks-4baf499d7c56f0b535f5a251bbf702000d25257f.zip |
RESOLVED - bug 268427: query only returns first 100 matches
https://bugs.eclipse.org/bugs/show_bug.cgi?id=268427
Diffstat (limited to 'org.eclipse.mylyn.trac.core')
-rw-r--r-- | org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/client/TracXmlRpcClient.java | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/client/TracXmlRpcClient.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/client/TracXmlRpcClient.java index 9533e0b18..0a57eb27e 100644 --- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/client/TracXmlRpcClient.java +++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/client/TracXmlRpcClient.java @@ -442,7 +442,9 @@ public class TracXmlRpcClient extends AbstractTracClient implements ITracWikiCli private boolean isAPIVersionOrHigher(int epoch, int major, int minor, IProgressMonitor monitor) throws TracException { updateAPIVersion(monitor); - return (epochAPIVersion > epoch || (epochAPIVersion == epoch && majorAPIVersion > major || (majorAPIVersion == major && minorAPIVersion >= minor))); + return epochAPIVersion > epoch // + || epochAPIVersion == epoch && (majorAPIVersion > major // + || majorAPIVersion == major && minorAPIVersion >= minor); } public TracTicket getTicket(int id, IProgressMonitor monitor) throws TracException { @@ -516,10 +518,21 @@ public class TracXmlRpcClient extends AbstractTracClient implements ITracWikiCli return tickets; } + public void searchForTicketIds(TracSearch query, List<Integer> tickets, IProgressMonitor monitor) + throws TracException { + // an empty query string is not valid, therefore prepend order + Object[] result = (Object[]) call(monitor, + "ticket.query", "order=id" + query.toQuery(supportsMaxSearchResults(monitor))); //$NON-NLS-1$ //$NON-NLS-2$ + for (Object item : result) { + tickets.add((Integer) item); + } + } + @SuppressWarnings("unchecked") public void search(TracSearch query, List<TracTicket> tickets, IProgressMonitor monitor) throws TracException { // an empty query string is not valid, therefore prepend order - Object[] result = (Object[]) call(monitor, "ticket.query", "order=id" + query.toQuery()); //$NON-NLS-1$ //$NON-NLS-2$ + Object[] result = (Object[]) call(monitor, + "ticket.query", "order=id" + query.toQuery(supportsMaxSearchResults(monitor))); //$NON-NLS-1$ //$NON-NLS-2$ Map<String, Object>[] calls = new Map[result.length]; for (int i = 0; i < calls.length; i++) { @@ -533,6 +546,14 @@ public class TracXmlRpcClient extends AbstractTracClient implements ITracWikiCli } } + private boolean supportsWorkFlow(IProgressMonitor monitor) throws TracException { + return isAPIVersionOrHigher(2, 0, 0, monitor); + } + + private boolean supportsMaxSearchResults(IProgressMonitor monitor) throws TracException { + return isAPIVersionOrHigher(2, 0, 0, monitor); + } + private TracTicket parseTicket(Object[] ticketResult) throws InvalidTicketException { TracTicket ticket = new TracTicket((Integer) ticketResult[0]); ticket.setCreated(parseDate(ticketResult[1])); @@ -595,14 +616,18 @@ public class TracXmlRpcClient extends AbstractTracClient implements ITracWikiCli Collections.sort(data.severities); advance(monitor, 1); - boolean trac011 = isAPIVersionOrHigher(1, 0, 0, monitor); - attributes = getTicketAttributes("ticket.status", trac011, monitor); //$NON-NLS-1$ - data.ticketStatus = new ArrayList<TracTicketStatus>(result.length); - for (TicketAttributeResult attribute : attributes) { - data.ticketStatus.add(new TracTicketStatus(attribute.name, attribute.value)); + if (supportsWorkFlow(monitor)) { + data.ticketStatus = new ArrayList<TracTicketStatus>(); + } else { + boolean assignValues = isAPIVersionOrHigher(1, 0, 0, monitor); + attributes = getTicketAttributes("ticket.status", assignValues, monitor); //$NON-NLS-1$ + data.ticketStatus = new ArrayList<TracTicketStatus>(result.length); + for (TicketAttributeResult attribute : attributes) { + data.ticketStatus.add(new TracTicketStatus(attribute.name, attribute.value)); + } + Collections.sort(data.ticketStatus); + advance(monitor, 1); } - Collections.sort(data.ticketStatus); - advance(monitor, 1); attributes = getTicketAttributes("ticket.type", monitor); //$NON-NLS-1$ data.ticketTypes = new ArrayList<TracTicketType>(result.length); |