Skip to main content
summaryrefslogtreecommitdiffstats
path: root/gerrit
diff options
context:
space:
mode:
authorSimon Kaufmann2011-01-20 15:48:54 +0000
committerSimon Kaufmann2011-01-20 15:48:54 +0000
commitd306e3e399fd25a1db39bf7818b8676e1381d2ef (patch)
tree0b0106599a6b54304cff714cf58c19b4e77d7d01 /gerrit
parent63e4cf867d9cab3a43225f2bfb7dd15bac9c4237 (diff)
downloadorg.eclipse.mylyn.reviews-d306e3e399fd25a1db39bf7818b8676e1381d2ef.tar.gz
org.eclipse.mylyn.reviews-d306e3e399fd25a1db39bf7818b8676e1381d2ef.tar.xz
org.eclipse.mylyn.reviews-d306e3e399fd25a1db39bf7818b8676e1381d2ef.zip
added query by project
Diffstat (limited to 'gerrit')
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java9
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritQuery.java10
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java13
-rw-r--r--gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/wizards/GerritCustomQueryPage.java74
4 files changed, 89 insertions, 17 deletions
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
index dd69ca7f7..6d34e8abf 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritConnector.java
@@ -161,10 +161,13 @@ public class GerritConnector extends AbstractRepositoryConnector {
monitor.beginTask("Executing query", IProgressMonitor.UNKNOWN);
GerritClient client = getClient(repository);
List<ChangeInfo> result = null;
- if (GerritQuery.ALL_OPEN_CHANGES.equals(query.getAttribute("gerrit query type"))) {
+ if (GerritQuery.ALL_OPEN_CHANGES.equals(query.getAttribute(GerritQuery.TYPE))) {
result = client.queryAllReviews(monitor);
- } else if (GerritQuery.MY_OPEN_CHANGES.equals(query.getAttribute("gerrit query type"))) {
+ } else if (GerritQuery.MY_OPEN_CHANGES.equals(query.getAttribute(GerritQuery.TYPE))) {
result = client.queryMyReviews(monitor);
+ } else if (GerritQuery.OPEN_CHANGES_BY_PROJECT.equals(query.getAttribute(GerritQuery.TYPE))) {
+ String project = query.getAttribute(GerritQuery.PROJECT);
+ result = client.queryByProject(monitor, project);
}
if (result != null) {
@@ -177,7 +180,7 @@ public class GerritConnector extends AbstractRepositoryConnector {
return Status.OK_STATUS;
} else {
return new Status(IStatus.ERROR, GerritCorePlugin.PLUGIN_ID, NLS.bind("Unknows query type: {0}",
- query.getAttribute("gerrit query type")));
+ query.getAttribute(GerritQuery.PROJECT)));
}
} catch (GerritException e) {
return toStatus(repository, e);
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritQuery.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritQuery.java
index 63bcd585c..a5936b5ab 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritQuery.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/GerritQuery.java
@@ -33,4 +33,14 @@ public class GerritQuery {
*/
public static final String ALL_OPEN_CHANGES = "all open changes";
+ /**
+ * query type: all open changes
+ */
+ public static final String OPEN_CHANGES_BY_PROJECT = "open changes by project"; //$NON-NLS-1$
+
+ /**
+ * Key for the project attribute
+ */
+ public static final String PROJECT = "gerrit query project"; //$NON-NLS-1$
+
}
diff --git a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
index e38ba565a..786bfe0e9 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient.java
@@ -174,10 +174,21 @@ public class GerritClient {
* Returns the latest 25 reviews.
*/
public List<ChangeInfo> queryAllReviews(IProgressMonitor monitor) throws GerritException {
+ return executeQuery(monitor, "status:open"); //$NON-NLS-1$
+ }
+
+ /**
+ * Returns the latest 25 reviews for the given project.
+ */
+ public List<ChangeInfo> queryByProject(IProgressMonitor monitor, final String project) throws GerritException {
+ return executeQuery(monitor, "status:open project:" + project); //$NON-NLS-1$
+ }
+
+ private List<ChangeInfo> executeQuery(IProgressMonitor monitor, final String queryString) throws GerritException {
SingleListChangeInfo sl = execute(monitor, new GerritOperation<SingleListChangeInfo>() {
@Override
public void execute(IProgressMonitor monitor) throws GerritException {
- getChangeListService().allQueryNext("status:open", "z", 25, this);
+ getChangeListService().allQueryNext(queryString, "z", 25, this); //$NON-NLS-1$
}
});
return sl.getChanges();
diff --git a/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/wizards/GerritCustomQueryPage.java b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/wizards/GerritCustomQueryPage.java
index 72cb44df6..32074577c 100644
--- a/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/wizards/GerritCustomQueryPage.java
+++ b/gerrit/org.eclipse.mylyn.gerrit.ui/src/org/eclipse/mylyn/internal/gerrit/ui/wizards/GerritCustomQueryPage.java
@@ -17,6 +17,8 @@ import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -36,8 +38,12 @@ public class GerritCustomQueryPage extends AbstractRepositoryQueryPage {
private Button allOpenChangesButton;
+ private Button byProjectButton;
+
private Text titleText;
+ private Text projectText;
+
/**
* Constructor.
*
@@ -58,14 +64,7 @@ public class GerritCustomQueryPage extends AbstractRepositoryQueryPage {
GridLayout layout = new GridLayout(3, false);
control.setLayout(layout);
- Label titleLabel = new Label(control, SWT.NONE);
- titleLabel.setText("Query Title :");
-
- titleText = new Text(control, SWT.BORDER);
- GridData gd2 = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- gd2.horizontalSpan = 2;
- titleText.setLayoutData(gd2);
- titleText.addKeyListener(new KeyListener() {
+ KeyListener keyListener = new KeyListener() {
public void keyPressed(KeyEvent e) {
// ignore
}
@@ -73,32 +72,75 @@ public class GerritCustomQueryPage extends AbstractRepositoryQueryPage {
public void keyReleased(KeyEvent e) {
getContainer().updateButtons();
}
- });
+ };
+
+ Label titleLabel = new Label(control, SWT.NONE);
+ titleLabel.setText("Query Title:");
+
+ titleText = new Text(control, SWT.BORDER);
+ GridData gd2 = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+ gd2.horizontalSpan = 2;
+ titleText.setLayoutData(gd2);
+ titleText.addKeyListener(keyListener);
Label typeLabel = new Label(control, SWT.NONE);
- typeLabel.setText("Query type :");
+ typeLabel.setText("Query type:");
// radio button to select query type
myOpenChangesButton = new Button(control, SWT.RADIO);
myOpenChangesButton.setText("My open changes");
+ myOpenChangesButton.setLayoutData(gd2);
+ new Label(control, SWT.NONE);
allOpenChangesButton = new Button(control, SWT.RADIO);
allOpenChangesButton.setText("All open changes");
+ allOpenChangesButton.setLayoutData(gd2);
+
+ new Label(control, SWT.NONE);
+ byProjectButton = new Button(control, SWT.RADIO);
+ byProjectButton.setText("Open changes by project");
+
+ projectText = new Text(control, SWT.BORDER);
+ projectText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
+ projectText.addKeyListener(keyListener);
if (query != null) {
titleText.setText(query.getSummary());
if (GerritQuery.MY_OPEN_CHANGES.equals(query.getAttribute(GerritQuery.TYPE))) {
myOpenChangesButton.setSelection(true);
+ } else if (GerritQuery.OPEN_CHANGES_BY_PROJECT.equals(query.getAttribute(GerritQuery.TYPE))) {
+ byProjectButton.setSelection(true);
} else {
allOpenChangesButton.setSelection(true);
}
+ if (query.getAttribute(GerritQuery.PROJECT) != null) {
+ projectText.setText(query.getAttribute(GerritQuery.PROJECT));
+ }
+ } else {
+ myOpenChangesButton.setSelection(true);
}
+ SelectionListener buttonSelectionListener = new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ projectText.setEnabled(byProjectButton.getSelection());
+ getContainer().updateButtons();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ };
+ buttonSelectionListener.widgetSelected(null);
+ byProjectButton.addSelectionListener(buttonSelectionListener);
+
setControl(control);
}
@Override
public boolean isPageComplete() {
- return (titleText != null && titleText.getText().length() > 0);
+ boolean ret = (titleText != null && titleText.getText().length() > 0);
+ if (byProjectButton != null && byProjectButton.getSelection()) {
+ ret &= (projectText != null && projectText.getText().length() > 0);
+ }
+ return ret;
}
@Override
@@ -106,8 +148,14 @@ public class GerritCustomQueryPage extends AbstractRepositoryQueryPage {
// TODO: set URL ????
// query.setUrl(getQueryUrl());
query.setSummary(getTitleText());
- query.setAttribute(GerritQuery.TYPE, myOpenChangesButton.getSelection() ? GerritQuery.MY_OPEN_CHANGES
- : GerritQuery.ALL_OPEN_CHANGES);
+ if (myOpenChangesButton.getSelection()) {
+ query.setAttribute(GerritQuery.TYPE, GerritQuery.MY_OPEN_CHANGES);
+ } else if (byProjectButton.getSelection()) {
+ query.setAttribute(GerritQuery.TYPE, GerritQuery.OPEN_CHANGES_BY_PROJECT);
+ } else {
+ query.setAttribute(GerritQuery.TYPE, GerritQuery.ALL_OPEN_CHANGES);
+ }
+ query.setAttribute(GerritQuery.PROJECT, projectText.getText());
}
private String getTitleText() {

Back to the top