Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 53151 Details for
Bug 139312
URL-based repesetation for custom JIRA queries
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Updated patch with resolved merge conflicts
Clipboard-attachment (text/plain), 34.72 KB, created by
Eugene Kuleshov
on 2006-11-02 13:15:58 EST
(
hide
)
Description:
Updated patch with resolved merge conflicts
Filename:
MIME Type:
Creator:
Eugene Kuleshov
Created:
2006-11-02 13:15:58 EST
Size:
34.72 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylar.tasks.ui >Index: src/org/eclipse/mylar/internal/tasks/ui/search/AbstractRepositoryQueryPage.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.tasks.ui/src/org/eclipse/mylar/internal/tasks/ui/search/AbstractRepositoryQueryPage.java,v >retrieving revision 1.4 >diff -u -r1.4 AbstractRepositoryQueryPage.java >--- src/org/eclipse/mylar/internal/tasks/ui/search/AbstractRepositoryQueryPage.java 2 Nov 2006 02:13:12 -0000 1.4 >+++ src/org/eclipse/mylar/internal/tasks/ui/search/AbstractRepositoryQueryPage.java 2 Nov 2006 18:19:07 -0000 >@@ -24,13 +24,13 @@ > import org.eclipse.search.ui.ISearchPageContainer; > import org.eclipse.search.ui.NewSearchUI; > import org.eclipse.swt.SWT; >-import org.eclipse.swt.events.KeyEvent; >-import org.eclipse.swt.events.KeyListener; >+import org.eclipse.swt.events.ModifyEvent; >+import org.eclipse.swt.events.ModifyListener; > import org.eclipse.swt.layout.GridData; > import org.eclipse.swt.layout.GridLayout; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Display; >-import org.eclipse.swt.widgets.Group; >+import org.eclipse.swt.widgets.Label; > import org.eclipse.swt.widgets.Text; > > /** >@@ -38,7 +38,7 @@ > */ > public abstract class AbstractRepositoryQueryPage extends WizardPage implements ISearchPage { > >- private static final String TITLE_QUERY_TITLE = "Query Title"; >+ private static final String TITLE_QUERY_TITLE = "Query &Title:"; > > private static final String TITLE = "Enter query parameters"; > >@@ -62,7 +62,7 @@ > > public AbstractRepositoryQueryPage(String wizardTitle, String queryTitle) { > super(wizardTitle); >- titleString = queryTitle; >+ titleString = queryTitle==null ? "" : queryTitle; > } > > public void createControl(Composite parent) { >@@ -72,46 +72,44 @@ > } > } > >- private void createTitleGroup(Composite composite) { >- if(scontainer != null) return; >- Group group = new Group(composite, SWT.NONE); >- group.setText(TITLE_QUERY_TITLE); >- GridLayout layout = new GridLayout(); >- layout.numColumns = 1; >+ private void createTitleGroup(Composite parent) { >+ Composite group = new Composite(parent, SWT.NONE); >+ >+ GridLayout layout = new GridLayout(2, false); > group.setLayout(layout); >+ > GridData gd = new GridData(GridData.FILL_HORIZONTAL); > gd.horizontalSpan = 1; > group.setLayoutData(gd); > >+ Label label = new Label(group, SWT.NONE); >+ label.setText(TITLE_QUERY_TITLE); >+ > title = new Text(group, SWT.BORDER); >- gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); >- title.setLayoutData(gd); >+ title.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL)); > title.setText(titleString); > >- title.addKeyListener(new KeyListener() { >- >- public void keyPressed(KeyEvent e) { >- // ignore >- } >- >- public void keyReleased(KeyEvent e) { >- setPageComplete(canFlipToNextPage()); >+ title.addModifyListener(new ModifyListener() { >+ public void modifyText(ModifyEvent e) { >+ setPageComplete(isPageComplete()); > } > }); > } > >- public boolean canFlipToNextPage() { >- if (getErrorMessage() != null || !isPageComplete()) >- return false; >- >- return true; >- } >+// public boolean canFlipToNextPage() { >+// if (getErrorMessage() != null || !isPageComplete()) { >+// return false; >+// } >+// return true; >+// } > > @Override > public boolean isPageComplete() { > if (title != null && !title.getText().equals("")) { >+ setErrorMessage(null); > return true; > } >+ setErrorMessage("Name is mandatory"); > return false; > } > >#P org.eclipse.mylar.jira >Index: src/org/eclipse/mylar/internal/jira/JiraRepositoryUi.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/JiraRepositoryUi.java,v >retrieving revision 1.7 >diff -u -r1.7 JiraRepositoryUi.java >--- src/org/eclipse/mylar/internal/jira/JiraRepositoryUi.java 28 Oct 2006 00:55:48 -0000 1.7 >+++ src/org/eclipse/mylar/internal/jira/JiraRepositoryUi.java 2 Nov 2006 18:19:08 -0000 >@@ -29,7 +29,7 @@ > > @Override > public WizardPage getSearchPage(TaskRepository repository, IStructuredSelection selection) { >- return new JiraQueryPage(repository, new FilterDefinition(), true); >+ return new JiraQueryPage(repository, new FilterDefinition(), true, false); > } > > public AbstractRepositorySettingsPage getSettingsPage() { >@@ -39,9 +39,8 @@ > public IWizard getQueryWizard(TaskRepository repository, AbstractRepositoryQuery query) { > if (query instanceof JiraRepositoryQuery || query instanceof JiraCustomQuery) { > return new EditJiraQueryWizard(repository, query); >- } else { >- return new NewJiraQueryWizard(repository); > } >+ return new NewJiraQueryWizard(repository); > } > > @Override >Index: src/org/eclipse/mylar/internal/jira/JiraCustomQuery.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/JiraCustomQuery.java,v >retrieving revision 1.4 >diff -u -r1.4 JiraCustomQuery.java >--- src/org/eclipse/mylar/internal/jira/JiraCustomQuery.java 28 Oct 2006 00:55:48 -0000 1.4 >+++ src/org/eclipse/mylar/internal/jira/JiraCustomQuery.java 2 Nov 2006 18:19:07 -0000 >@@ -11,27 +11,106 @@ > > package org.eclipse.mylar.internal.jira; > >+import java.io.UnsupportedEncodingException; >+import java.net.URLDecoder; >+import java.net.URLEncoder; >+import java.text.SimpleDateFormat; >+import java.util.ArrayList; >+import java.util.Collections; >+import java.util.Date; >+import java.util.HashMap; >+import java.util.List; >+import java.util.Map; >+ > import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery; > import org.eclipse.mylar.tasks.core.TaskList; >+import org.eclipse.mylar.tasks.core.TaskRepository; >+import org.tigris.jira.core.model.Component; >+import org.tigris.jira.core.model.IssueType; >+import org.tigris.jira.core.model.Priority; >+import org.tigris.jira.core.model.Project; >+import org.tigris.jira.core.model.Resolution; >+import org.tigris.jira.core.model.Status; >+import org.tigris.jira.core.model.Version; >+import org.tigris.jira.core.model.filter.ComponentFilter; >+import org.tigris.jira.core.model.filter.ContentFilter; >+import org.tigris.jira.core.model.filter.CurrentUserFilter; >+import org.tigris.jira.core.model.filter.DateFilter; >+import org.tigris.jira.core.model.filter.DateRangeFilter; > import org.tigris.jira.core.model.filter.FilterDefinition; >+import org.tigris.jira.core.model.filter.IssueTypeFilter; >+import org.tigris.jira.core.model.filter.NobodyFilter; >+import org.tigris.jira.core.model.filter.PriorityFilter; >+import org.tigris.jira.core.model.filter.ProjectFilter; >+import org.tigris.jira.core.model.filter.ResolutionFilter; >+import org.tigris.jira.core.model.filter.SpecificUserFilter; >+import org.tigris.jira.core.model.filter.StatusFilter; >+import org.tigris.jira.core.model.filter.UserFilter; >+import org.tigris.jira.core.model.filter.UserInGroupFilter; >+import org.tigris.jira.core.model.filter.VersionFilter; >+import org.tigris.jira.core.service.JiraServer; > > /** >- * A JiraFilter represents a query for issues from a Jira repository. >+ * A JiraCustomQuery represents a custom query for issues from a Jira repository. > * > * @author Mik Kersten >+ * @author Eugene Kuleshov > */ > public class JiraCustomQuery extends AbstractRepositoryQuery { > >+ private static final String PROJECT_KEY = "pid"; >+ private static final String COMPONENT_KEY = "component"; >+ private static final String TYPE_KEY = "type"; >+ private static final String PRIORITY_KEY = "priority"; >+ private static final String STATUS_KEY = "status"; >+ private static final String RESOLUTION_KEY = "resolution"; >+ >+ private static final String FIXFOR_KEY = "fixfor"; >+ private static final String VERSION_KEY = "version"; >+ >+ private static final String QUERY_KEY = "query"; >+ private static final String ENVIRONMENT_KEY = "environment"; >+ private static final String BODY_KEY = "body"; >+ private static final String DESCRIPTION_KEY = "description"; >+ private static final String SUMMARY_KEY = "summary"; >+ >+ private static final String ASSIGNEE_KEY = "assignee"; >+ private static final String REPORTER_KEY = "reporter"; >+ >+ private static final String CREATED_KEY = "created"; >+ private static final String UPDATED_KEY = "updated"; >+ private static final String DUEDATE_KEY = "duedate"; >+ >+ private static final String ISSUE_SPECIFIC_GROUP = "specificgroup"; >+ private static final String ISSUE_SPECIFIC_USER = "specificuser"; >+ private static final String ISSUE_CURRENT_USER = "issue_current_user"; >+ private static final String ISSUE_NO_REPORTER = "issue_no_reporter"; >+ > private static final int MAX_HITS = 200; >+ >+ >+ private final FilterDefinition filter; >+ private String encoding; > >- protected FilterDefinition filter = null; > >- public JiraCustomQuery(String repositoryUrl, FilterDefinition filter, TaskList taskList) { >+ public JiraCustomQuery(String repositoryUrl, FilterDefinition filter, TaskList taskList, TaskRepository taskRepository) { > super(filter.getName(), taskList); >- setMaxHits(MAX_HITS); > this.filter = filter; >- super.repositoryUrl = repositoryUrl; >- setUrl(repositoryUrl + MylarJiraPlugin.FILTER_URL_PREFIX + filter.getName()); >+ this.repositoryUrl = repositoryUrl; >+ this.encoding = taskRepository.getCharacterEncoding(); >+ this.url = repositoryUrl + MylarJiraPlugin.FILTER_URL_PREFIX + "&reset=true&mode=hide" + getQueryParams(filter); >+ this.maxHits = MAX_HITS; >+ } >+ >+ public JiraCustomQuery(String name, String queryUrl, String repositoryUrl, >+ JiraServer jiraServer, TaskList taskList, TaskRepository taskRepository) { >+ super(name, taskList); >+ this.repositoryUrl = repositoryUrl; >+ this.url = queryUrl; >+ this.encoding = taskRepository.getCharacterEncoding(); >+ this.filter = createFilter(jiraServer, queryUrl); >+ this.filter.setName(name); >+ this.maxHits = MAX_HITS; > } > > public String getRepositoryKind() { >@@ -41,6 +120,315 @@ > public FilterDefinition getFilterDefinition() { > return filter; > } >+ >+ >+ private FilterDefinition createFilter(JiraServer jiraServer, String url) { >+ FilterDefinition filter = new FilterDefinition(); >+ >+ HashMap<String, List<String>> params = new HashMap<String, List<String>>(); >+ >+ for (String pair : url.split("&\\?")) { >+ String[] tokens = pair.split("="); >+ if (tokens.length > 1) { >+ try { >+ String key = tokens[0]; >+ String value = tokens.length>1 ? null : URLDecoder.decode(tokens[1], encoding); >+ List<String> values = params.get(key); >+ if(values==null) { >+ values = new ArrayList<String>(); >+ params.put(key, values); >+ } >+ values.add(value); >+ } catch (UnsupportedEncodingException ex) { >+ // ignore >+ } >+ } >+ } >+ >+ List<String> projectIds = getIds(params, PROJECT_KEY); >+ for (String projectId : projectIds) { >+ Project project = jiraServer.getProjectById(projectId); >+ filter.setProjectFilter(new ProjectFilter(project)); >+ >+ List<String> componentIds = getIds(params, COMPONENT_KEY); >+ List<Component> components = new ArrayList<Component>(); >+ for (String componentId : componentIds) { >+ Component[] projectComponents = project.getComponents(); >+ for(Component component : projectComponents) { >+ if(component.getId().equals(componentId)) { >+ components.add(component); >+ } >+ } >+ } >+ if(!components.isEmpty()) { >+ filter.setComponentFilter(new ComponentFilter(components.toArray(new Component[components.size()]))); >+ } >+ >+ Version[] projectVersions = project.getVersions(); >+ >+ List<String> fixForIds = getIds(params, FIXFOR_KEY); >+ List<Version> fixForversions = new ArrayList<Version>(); >+ for (String fixForId : fixForIds) { >+ for (Version projectVersion : projectVersions) { >+ if(projectVersion.getId().equals(fixForId)) { >+ fixForversions.add(projectVersion); >+ } >+ } >+ } >+ if(!fixForversions.isEmpty()) { >+ filter.setFixForVersionFilter(new VersionFilter(fixForversions.toArray(new Version[fixForversions.size()]))); >+ } >+ >+ List<String> versionIds = getIds(params, VERSION_KEY); >+ List<Version> versions = new ArrayList<Version>(); >+ for (String versionId : versionIds) { >+ for (Version projectVersion : projectVersions) { >+ if(projectVersion.getId().equals(versionId)) { >+ versions.add(projectVersion); >+ } >+ } >+ } >+ if(!versions.isEmpty()) { >+ filter.setReportedInVersionFilter(new VersionFilter(versions.toArray(new Version[versions.size()]))); >+ } >+ } >+ >+ List<String> typeIds = getIds(params, TYPE_KEY); >+ List<IssueType> issueTypes = new ArrayList<IssueType>(); >+ for (String typeId : typeIds) { >+ IssueType issueType = jiraServer.getIssueTypeById(typeId); >+ if(!IssueType.MISSING_ISSUE_TYPE.equals(issueType)) { >+ issueTypes.add(issueType); >+ } >+ } >+ if(!issueTypes.isEmpty()) { >+ filter.setIssueTypeFilter(new IssueTypeFilter(issueTypes.toArray(new IssueType[issueTypes.size()]))); >+ } >+ >+ List<String> statusIds = getIds(params, STATUS_KEY); >+ List<Status> statuses = new ArrayList<Status>(); >+ for (String statusId : statusIds) { >+ Status status = jiraServer.getStatusById(statusId); >+ if(!Status.MISSING_STATUS.equals(status)) { >+ statuses.add(status); >+ } >+ } >+ if(!statuses.isEmpty()) { >+ filter.setStatusFilter(new StatusFilter(statuses.toArray(new Status[statuses.size()]))); >+ } >+ >+ List<String> resolutionIds = getIds(params, RESOLUTION_KEY); >+ List<Resolution> resolutions = new ArrayList<Resolution>(); >+ for (String resolutionId : resolutionIds) { >+ Resolution resolution = jiraServer.getResolutionById(resolutionId); >+ if(!Resolution.UNKNOWN_RESOLUTION.equals(resolution)) { >+ resolutions.add(resolution); >+ } >+ } >+ if(!resolutions.isEmpty()) { >+ filter.setResolutionFilter(new ResolutionFilter(resolutions.toArray(new Resolution[resolutions.size()]))); >+ } >+ >+ List<String> queries = getIds(params, QUERY_KEY); >+ for (String query : queries) { >+ boolean searchSummary = !getIds(params, SUMMARY_KEY).contains("true"); >+ boolean searchDescription = !getIds(params, DESCRIPTION_KEY).contains("true"); >+ boolean searchEnvironment = !getIds(params, ENVIRONMENT_KEY).contains("true"); >+ boolean searchComments = !getIds(params, BODY_KEY).contains("true"); >+ filter.setContentFilter(new ContentFilter(query, searchSummary, searchDescription, searchEnvironment, searchComments)); >+ } >+ >+ filter.setReportedByFilter(createUserFilter(params, REPORTER_KEY)); >+ filter.setAssignedToFilter(createUserFilter(params, ASSIGNEE_KEY)); >+ >+ filter.setCreatedDateFilter(createDateFilter(params, CREATED_KEY)); >+ filter.setUpdatedDateFilter(createDateFilter(params, UPDATED_KEY)); >+ filter.setDueDateFilter(createDateFilter(params, DUEDATE_KEY)); >+ >+ return filter; >+ } >+ >+ private DateFilter createDateFilter(Map<String, List<String>> params, String key) { >+ String after = getId(params, key + ":after"); >+ String before = getId(params, key + ":before"); >+ >+ SimpleDateFormat df = new SimpleDateFormat("d/MMM/yy"); >+ Date fromDate; >+ try { >+ fromDate = df.parse(after); >+ } catch (Exception ex) { >+ fromDate = null; >+ } >+ Date toDate; >+ try { >+ toDate = df.parse(before); >+ } catch (Exception ex) { >+ toDate = null; >+ } >+ >+ return fromDate==null && toDate==null ? null : new DateRangeFilter(fromDate, toDate); >+ } >+ >+ private UserFilter createUserFilter(Map<String, List<String>> params, String key) { >+ String type = getId(params, key + "Select"); >+ if(ISSUE_NO_REPORTER.equals(type)) { >+ return new NobodyFilter(); >+ } else if(ISSUE_CURRENT_USER.equals(type)) { >+ return new CurrentUserFilter(); >+ } else { >+ String reporter = getId(params, key); >+ if(reporter!=null) { >+ if(ISSUE_SPECIFIC_USER.equals(type)) { >+ return new SpecificUserFilter(reporter); >+ } else if(ISSUE_SPECIFIC_GROUP.equals(type)) { >+ return new UserInGroupFilter(reporter); >+ } >+ } >+ } >+ return null; >+ } >+ >+ private String getId(Map<String, List<String>> params, String key) { >+ List<String> ids = getIds(params, key); >+ return ids.isEmpty() ? null : ids.get(0); >+ } >+ >+ private List<String> getIds(Map<String, List<String>> params, String key) { >+ List<String> ids = params.get(key); >+ if (ids==null) { >+ return Collections.emptyList(); >+ } >+ return ids; >+ } >+ >+ >+ private String getQueryParams(FilterDefinition filter) { >+ StringBuffer sb = new StringBuffer(); >+ >+ ProjectFilter projectFilter = filter.getProjectFilter(); >+ if(projectFilter!=null) { >+ Project project = projectFilter.getProject(); >+ // TODO all projects >+ addParameter(sb, PROJECT_KEY, project.getId()); >+ } >+ >+ ComponentFilter componentFilter = filter.getComponentFilter(); >+ // TODO all components >+ if(componentFilter==null || componentFilter.hasNoComponent()) { >+ addParameter(sb, COMPONENT_KEY, "-1"); >+ } else { >+ for (Component component : componentFilter.getComponents()) { >+ addParameter(sb, COMPONENT_KEY, component.getId()); >+ } >+ } >+ >+ // TODO >+ VersionFilter fixForVersionFilter = filter.getFixForVersionFilter(); >+ if (fixForVersionFilter != null) { >+ for ( Version fixVersion : fixForVersionFilter.getVersions()) { >+ addParameter(sb, FIXFOR_KEY, fixVersion.getId()); >+ } >+ } >+ >+ // TODO >+ VersionFilter reportedInVersionFilter = filter.getReportedInVersionFilter(); >+ if (reportedInVersionFilter != null) { >+ for (Version reportedVersion : reportedInVersionFilter.getVersions()) { >+ addParameter(sb, VERSION_KEY, reportedVersion.getId()); >+ } >+ } >+ >+ // TODO >+ IssueTypeFilter issueTypeFilter = filter.getIssueTypeFilter(); >+ if (issueTypeFilter != null) { >+ for (IssueType issueType : issueTypeFilter.getIsueTypes()) { >+ addParameter(sb, TYPE_KEY, issueType.getId()); >+ } >+ } >+ >+ // TODO >+ StatusFilter statusFilter = filter.getStatusFilter(); >+ if(statusFilter!=null) { >+ for ( Status status : statusFilter.getStatuses()) { >+ addParameter(sb, STATUS_KEY, status.getId()); >+ } >+ } >+ >+ ResolutionFilter resolutionFilter = filter.getResolutionFilter(); >+ if(resolutionFilter!=null) { >+ for (Resolution resolution : resolutionFilter.getResolutions()) { >+ addParameter(sb, RESOLUTION_KEY, resolution.getId()); >+ } >+ } >+ >+ PriorityFilter priorityFilter = filter.getPriorityFilter(); >+ if(priorityFilter!=null) { >+ for ( Priority priority : priorityFilter.getPriorities()) { >+ addParameter(sb, PRIORITY_KEY, priority.getId()); >+ } >+ } >+ >+ ContentFilter contentFilter = filter.getContentFilter(); >+ if(contentFilter!=null) { >+ String queryString = contentFilter.getQueryString(); >+ if(queryString!=null) { >+ addParameter(sb, QUERY_KEY, queryString); >+ } >+ if(contentFilter.isSearchingSummary()) { >+ addParameter(sb, SUMMARY_KEY, "true"); >+ } >+ if(contentFilter.isSearchingDescription()) { >+ addParameter(sb, DESCRIPTION_KEY, "true"); >+ } >+ if(contentFilter.isSearchingComments()) { >+ addParameter(sb, BODY_KEY, "true"); >+ } >+ if(contentFilter.isSearchingEnvironment()) { >+ addParameter(sb, ENVIRONMENT_KEY, "true"); >+ } >+ } >+ >+ addUserFilter(sb, filter.getReportedByFilter(), REPORTER_KEY); >+ addUserFilter(sb, filter.getAssignedToFilter(), ASSIGNEE_KEY); >+ >+ addDateFilter(sb, filter.getCreatedDateFilter(), CREATED_KEY); >+ addDateFilter(sb, filter.getUpdatedDateFilter(), UPDATED_KEY); >+ addDateFilter(sb, filter.getDueDateFilter(), DUEDATE_KEY); >+ >+ return sb.toString(); >+ } >+ >+ private void addDateFilter(StringBuffer sb, DateFilter filter, String type) { >+ if(filter instanceof DateRangeFilter) { >+ SimpleDateFormat df = new SimpleDateFormat("d/MMM/yy"); >+ DateRangeFilter rangeFilter = (DateRangeFilter) filter; >+ addParameter(sb, type + ":after", df.format(rangeFilter.getFromDate())); >+ addParameter(sb, type + ":before", df.format(rangeFilter.getToDate())); >+ } >+ } >+ >+ private void addUserFilter(StringBuffer sb, UserFilter filter, String type) { >+ if(filter instanceof NobodyFilter) { >+ addParameter(sb, type + "Select", ISSUE_NO_REPORTER); >+ } else if(filter instanceof CurrentUserFilter) { >+ addParameter(sb, type + "Select", ISSUE_CURRENT_USER); >+ } else if(filter instanceof SpecificUserFilter) { >+ addParameter(sb, type + "Select", ISSUE_SPECIFIC_USER); >+ addParameter(sb, type, ((SpecificUserFilter) filter).getUser()); >+ } else if(filter instanceof UserInGroupFilter) { >+ addParameter(sb, type + "Select", ISSUE_SPECIFIC_GROUP); >+ addParameter(sb, type, ((UserInGroupFilter) filter).getGroup()); >+ } >+ } >+ >+ private void addParameter(StringBuffer sb, String name, String value) { >+ try { >+ sb.append('&').append(name).append('=').append(URLEncoder.encode(value, encoding)); >+ } catch (UnsupportedEncodingException ex) { >+ // ignore >+ } >+ } >+ > } > > //public void refreshHits() { >Index: src/org/eclipse/mylar/internal/jira/JiraRepositoryQuery.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/JiraRepositoryQuery.java,v >retrieving revision 1.7 >diff -u -r1.7 JiraRepositoryQuery.java >--- src/org/eclipse/mylar/internal/jira/JiraRepositoryQuery.java 20 Jul 2006 10:24:19 -0000 1.7 >+++ src/org/eclipse/mylar/internal/jira/JiraRepositoryQuery.java 2 Nov 2006 18:19:08 -0000 >@@ -16,7 +16,7 @@ > import org.tigris.jira.core.model.NamedFilter; > > /** >- * A JiraFilter represents a query for issues from a Jira repository. >+ * A JiraRepositoryQuery represents a server-side query for Jira repository. > * > * @author Mik Kersten > */ >@@ -31,7 +31,7 @@ > setMaxHits(MAX_HITS); > this.filter = filter; > super.repositoryUrl = repositoryUrl; >- setUrl(repositoryUrl + MylarJiraPlugin.FILTER_URL_PREFIX + filter.getId()); >+ setUrl(repositoryUrl + MylarJiraPlugin.FILTER_URL_PREFIX + "&requestId=" + filter.getId()); > // super.setDescription(filter.getName()); > } > >Index: src/org/eclipse/mylar/internal/jira/MylarJiraPlugin.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/MylarJiraPlugin.java,v >retrieving revision 1.11 >diff -u -r1.11 MylarJiraPlugin.java >--- src/org/eclipse/mylar/internal/jira/MylarJiraPlugin.java 24 Jul 2006 23:44:21 -0000 1.11 >+++ src/org/eclipse/mylar/internal/jira/MylarJiraPlugin.java 2 Nov 2006 18:19:08 -0000 >@@ -34,7 +34,7 @@ > public final static String ISSUE_URL_PREFIX = "/browse/"; > > /** Repository address + Filter Prefix + Issue key = the filter's web address */ >- public final static String FILTER_URL_PREFIX = "/secure/IssueNavigator.jspa?mode=hide&requestId="; >+ public final static String FILTER_URL_PREFIX = "/secure/IssueNavigator.jspa?mode=hide"; > > public MylarJiraPlugin() { > INSTANCE = this; >Index: src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryPage.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryPage.java,v >retrieving revision 1.2 >diff -u -r1.2 JiraQueryPage.java >--- src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryPage.java 31 Oct 2006 22:48:46 -0000 1.2 >+++ src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryPage.java 2 Nov 2006 18:19:08 -0000 >@@ -30,6 +30,7 @@ > import org.eclipse.jface.viewers.Viewer; > import org.eclipse.mylar.internal.jira.JiraCustomQuery; > import org.eclipse.mylar.internal.jira.JiraServerFacade; >+import org.eclipse.mylar.internal.jira.MylarJiraPlugin; > import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage; > import org.eclipse.mylar.internal.tasks.ui.views.DatePicker; > import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery; >@@ -37,12 +38,6 @@ > import org.eclipse.mylar.tasks.ui.TasksUiPlugin; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.SashForm; >-import org.eclipse.swt.events.FocusAdapter; >-import org.eclipse.swt.events.FocusEvent; >-import org.eclipse.swt.events.ModifyEvent; >-import org.eclipse.swt.events.ModifyListener; >-import org.eclipse.swt.events.SelectionAdapter; >-import org.eclipse.swt.events.SelectionEvent; > import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.graphics.Image; > import org.eclipse.swt.layout.FillLayout; >@@ -138,7 +133,7 @@ > > private final JiraServer server; > >- private Text name; >+// private Text name; > > private ListViewer project; > >@@ -188,16 +183,17 @@ > > private final boolean isNew; > >+ private final boolean namedQuery; >+ > private final FilterDefinition workingCopy; > >- private boolean namedQuery; >- >- public JiraQueryPage(TaskRepository repository, FilterDefinition workingCopy, boolean isNew) { >- super(TITLE_PAGE); >+ public JiraQueryPage(TaskRepository repository, FilterDefinition workingCopy, boolean isNew, boolean namedQuery) { >+ super(TITLE_PAGE, workingCopy==null ? "" : workingCopy.getName()); > this.repository = repository; > this.server = JiraServerFacade.getDefault().getJiraServer(repository); > this.workingCopy = workingCopy; > this.isNew = isNew; >+ this.namedQuery = namedQuery; > > setDescription("Add search filters to define query."); > setPageComplete(false); >@@ -208,20 +204,23 @@ > c.setLayout(new GridLayout(3, false)); > > if (namedQuery) { >- Label lblName = new Label(c, SWT.NONE); >- final GridData gridData = new GridData(); >- lblName.setLayoutData(gridData); >- lblName.setText("Name:"); >- >- name = new Text(c, SWT.BORDER); >- name.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1)); >- name.addModifyListener(new ModifyListener() { >- >- public void modifyText(ModifyEvent e) { >- validatePage(); >- } >- >- }); >+ >+ super.createControl(c); >+ >+// Label lblName = new Label(c, SWT.NONE); >+// final GridData gridData = new GridData(); >+// lblName.setLayoutData(gridData); >+// lblName.setText("Name:"); >+// >+// name = new Text(c, SWT.BORDER); >+// name.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1)); >+// name.addModifyListener(new ModifyListener() { >+// >+// public void modifyText(ModifyEvent e) { >+// validatePage(); >+// } >+// >+// }); > } > > SashForm sashForm = new SashForm(c, SWT.VERTICAL); >@@ -277,11 +276,11 @@ > { > SashForm cc = new SashForm(sashForm, SWT.NONE); > >- ISelectionChangedListener selectionChangeListener = new ISelectionChangedListener() { >- public void selectionChanged(SelectionChangedEvent event) { >- validatePage(); >- } >- }; >+// ISelectionChangedListener selectionChangeListener = new ISelectionChangedListener() { >+// public void selectionChanged(SelectionChangedEvent event) { >+// validatePage(); >+// } >+// }; > > { > Composite comp = new Composite(cc, SWT.NONE); >@@ -326,8 +325,7 @@ > > }); > >- issueType.addSelectionChangedListener(selectionChangeListener); >- >+// issueType.addSelectionChangedListener(selectionChangeListener); > issueType.setInput(server); > } > >@@ -374,7 +372,7 @@ > > }); > >- status.addSelectionChangedListener(selectionChangeListener); >+// status.addSelectionChangedListener(selectionChangeListener); > status.setInput(server); > } > >@@ -422,7 +420,7 @@ > > }); > >- resolution.addSelectionChangedListener(selectionChangeListener); >+// resolution.addSelectionChangedListener(selectionChangeListener); > resolution.setInput(server); > } > >@@ -468,7 +466,7 @@ > } > > }); >- priority.addSelectionChangedListener(selectionChangeListener); >+// priority.addSelectionChangedListener(selectionChangeListener); > priority.setInput(server); > } > >@@ -483,24 +481,24 @@ > queryString.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1)); > // TODO put content assist here and a label describing what is available > >- queryString.addFocusListener(new FocusAdapter() { >- >- public void focusLost(FocusEvent e) { >- validatePage(); >- } >- >- }); >+// queryString.addFocusListener(new FocusAdapter() { >+// >+// public void focusLost(FocusEvent e) { >+// validatePage(); >+// } >+// >+// }); > > Label lblFields = new Label(c, SWT.NONE); > lblFields.setText("Fields:"); > lblFields.setLayoutData(new GridData()); > > { >- SelectionAdapter selectionAdapter = new SelectionAdapter() { >- public void widgetSelected(SelectionEvent e) { >- validatePage(); >- } >- }; >+// SelectionAdapter selectionAdapter = new SelectionAdapter() { >+// public void widgetSelected(SelectionEvent e) { >+// validatePage(); >+// } >+// }; > > Composite comp = new Composite(c, SWT.NONE); > comp.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); >@@ -508,19 +506,19 @@ > > searchSummary = new Button(comp, SWT.CHECK); > searchSummary.setText("Summary"); >- searchSummary.addSelectionListener(selectionAdapter); >+// searchSummary.addSelectionListener(selectionAdapter); > > searchDescription = new Button(comp, SWT.CHECK); > searchDescription.setText("Description"); >- searchDescription.addSelectionListener(selectionAdapter); >+// searchDescription.addSelectionListener(selectionAdapter); > > searchComments = new Button(comp, SWT.CHECK); > searchComments.setText("Comments"); >- searchComments.addSelectionListener(selectionAdapter); >+// searchComments.addSelectionListener(selectionAdapter); > > searchEnvironment = new Button(comp, SWT.CHECK); > searchEnvironment.setText("Environment"); >- searchEnvironment.addSelectionListener(selectionAdapter); >+// searchEnvironment.addSelectionListener(selectionAdapter); > } > > { >@@ -559,13 +557,13 @@ > reporter.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); > reporter.setEnabled(false); > >- reporter.addModifyListener(new ModifyListener() { >- >- public void modifyText(ModifyEvent e) { >- validatePage(); >- } >- >- }); >+// reporter.addModifyListener(new ModifyListener() { >+// >+// public void modifyText(ModifyEvent e) { >+// validatePage(); >+// } >+// >+// }); > } > > { >@@ -600,33 +598,33 @@ > > }); > >- assigneeType.addSelectionChangedListener(new ISelectionChangedListener() { >- >- public void selectionChanged(SelectionChangedEvent event) { >- Object selection = ((IStructuredSelection) event.getSelection()).getFirstElement(); >- if (SPECIFIC_USER_ASSIGNEE.equals(selection) || SPECIFIC_GROUP_ASSIGNEE.equals(selection)) { >- assignee.setEnabled(true); >- } else { >- assignee.setEnabled(false); >- assignee.setText(""); //$NON-NLS-1$ >- } >- validatePage(); >- } >- >- }); >+// assigneeType.addSelectionChangedListener(new ISelectionChangedListener() { >+// >+// public void selectionChanged(SelectionChangedEvent event) { >+// Object selection = ((IStructuredSelection) event.getSelection()).getFirstElement(); >+// if (SPECIFIC_USER_ASSIGNEE.equals(selection) || SPECIFIC_GROUP_ASSIGNEE.equals(selection)) { >+// assignee.setEnabled(true); >+// } else { >+// assignee.setEnabled(false); >+// assignee.setText(""); //$NON-NLS-1$ >+// } >+// validatePage(); >+// } >+// >+// }); > > assigneeType.setInput(server); > > assignee = new Text(c, SWT.BORDER); > assignee.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); > assignee.setEnabled(false); >- assignee.addModifyListener(new ModifyListener() { >- >- public void modifyText(ModifyEvent e) { >- validatePage(); >- } >- >- }); >+// assignee.addModifyListener(new ModifyListener() { >+// >+// public void modifyText(ModifyEvent e) { >+// validatePage(); >+// } >+// >+// }); > } > > { >@@ -851,7 +849,7 @@ > } > > updateCurrentProject(selectedProject); >- validatePage(); >+// validatePage(); > } > > }); >@@ -864,16 +862,14 @@ > > } > >- void validatePage() { >- if (namedQuery && name.getText().length() == 0) { >- setErrorMessage("Name is mandatory"); >- setPageComplete(false); >- return; >- } >- >- setErrorMessage(null); >- setPageComplete(true); >- } >+// void validatePage() { >+// if (namedQuery && !isPageComplete()) { >+// setPageComplete(false); >+// return; >+// } >+// >+// setPageComplete(true); >+// } > > private void loadFromDefaults() { > project.setSelection(new StructuredSelection(new Placeholder("All Projects"))); >@@ -889,12 +885,9 @@ > } > > private void loadFromWorkingCopy() { >- if (namedQuery && workingCopy.getName() != null) { >- name.setText(workingCopy.getName()); >- } >- >- if (workingCopy.getDescription() != null) { >- } >+// if (namedQuery && workingCopy.getName() != null) { >+// name.setText(workingCopy.getName()); >+// } > > if (workingCopy.getProjectFilter() != null) { > project.setSelection(new StructuredSelection(workingCopy.getProjectFilter().getProject())); >@@ -1040,7 +1033,7 @@ > > void applyChanges() { > if (namedQuery) { >- workingCopy.setName(this.name.getText()); >+ workingCopy.setName(getQueryTitle()); > } > if (this.queryString.getText().length() > 0 || this.searchSummary.getSelection() > || this.searchDescription.getSelection() || this.searchEnvironment.getSelection() >@@ -1431,6 +1424,8 @@ > server.addLocalFilter(workingCopy); > } > >- return new JiraCustomQuery(repository.getUrl(), workingCopy, TasksUiPlugin.getTaskListManager().getTaskList()); >+ String url = repository.getUrl(); >+ return new JiraCustomQuery(url, workingCopy, TasksUiPlugin.getTaskListManager().getTaskList(), >+ TasksUiPlugin.getRepositoryManager().getRepository(MylarJiraPlugin.REPOSITORY_KIND, url)); > } > } >Index: src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryWizardPage.java >=================================================================== >RCS file: /home/technology/org.eclipse.mylar/org.eclipse.mylar.jira/src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryWizardPage.java,v >retrieving revision 1.17 >diff -u -r1.17 JiraQueryWizardPage.java >--- src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryWizardPage.java 28 Oct 2006 00:55:47 -0000 1.17 >+++ src/org/eclipse/mylar/internal/jira/ui/wizards/JiraQueryWizardPage.java 2 Nov 2006 18:19:08 -0000 >@@ -161,7 +161,7 @@ > isNew = true; > } > >- filterSummaryPage = new JiraQueryPage(repository, workingCopy, isNew); >+ filterSummaryPage = new JiraQueryPage(repository, workingCopy, isNew, true); > filterSummaryPage.setWizard(getWizard()); > } > return filterSummaryPage;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 139312
:
53123
|
53124
|
53151
|
53161
|
53438