Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java94
-rw-r--r--org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java29
2 files changed, 119 insertions, 4 deletions
diff --git a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java
index 3af4571c7..918237e3d 100644
--- a/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java
+++ b/org.eclipse.mylyn.bugzilla.tests/src/org/eclipse/mylyn/bugzilla/tests/ui/BugzillaTaskHyperlinkDetectorTest.java
@@ -23,6 +23,7 @@ import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.editors.TaskHyperlinkDetector;
import org.eclipse.mylyn.tasks.core.TaskRepository;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.ui.TaskHyperlink;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Shell;
@@ -37,6 +38,12 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
private static final String DUPLICATE = "duplicate of " + DUPLICATE_NUMBER;
+ private static final String ATTACHMENT_NUMBER = "445566";
+
+ private static final String ATTACHMENT_OLD = "Created an attachment (id=" + ATTACHMENT_NUMBER + ")";
+
+ private static final String ATTACHMENT_NEW = "Created attachment" + ATTACHMENT_NUMBER;
+
private final String TASK_FORMAT_1 = "task#1";
private final String TASK_FORMAT_2 = "task# 1";
@@ -55,6 +62,38 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
private final String BUG_FORMAT_1_2 = "bug# 2";
+ private final String TASK_FORMAT_1_COMMENT_1 = "task#123c#44556677";
+
+ private final String TASK_FORMAT_2_COMMENT_1 = "task# 1c#44556677";
+
+ private final String TASK_FORMAT_3_COMMENT_1 = "task1c#44556677";
+
+ private final String TASK_FORMAT_4_COMMENT_1 = "task #1c#44556677";
+
+ private final String BUG_FORMAT_1_COMMENT_1 = "bug# 1c#44556677";
+
+ private final String BUG_FORMAT_2_COMMENT_1 = "bug # 1c#44556677";
+
+ private final String BUG_FORMAT_3_COMMENT_1 = "bug1c#44556677";
+
+ private final String BUG_FORMAT_4_COMMENT_1 = "bug #1c#44556677";
+
+ private final String TASK_FORMAT_1_COMMENT_2 = "task#123 comment #44556677";
+
+ private final String TASK_FORMAT_2_COMMENT_2 = "task# 1 comment #44556677";
+
+ private final String TASK_FORMAT_3_COMMENT_2 = "task1 comment #44556677";
+
+ private final String TASK_FORMAT_4_COMMENT_2 = "task #1 comment #44556677";
+
+ private final String BUG_FORMAT_1_COMMENT_2 = "bug# 1 comment #44556677";
+
+ private final String BUG_FORMAT_2_COMMENT_2 = "bug # 1 comment #44556677";
+
+ private final String BUG_FORMAT_3_COMMENT_2 = "bug1 comment #44556677";
+
+ private final String BUG_FORMAT_4_COMMENT_2 = "bug #1 comment #44556677";
+
//private BugzillaTaskHyperlinkDetector detector = new BugzillaTaskHyperlinkDetector();
private TaskHyperlinkDetector detector;
@@ -66,6 +105,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
private String[] formats;
+ private String[] commentFormats;
+
private TaskRepositoryManager repositoryManager;
private Shell shell;
@@ -97,6 +138,11 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
formats = new String[] { TASK_FORMAT_1, TASK_FORMAT_2, TASK_FORMAT_3, TASK_FORMAT_4, BUG_FORMAT_1,
BUG_FORMAT_2, BUG_FORMAT_3, BUG_FORMAT_4 };
+ commentFormats = new String[] { TASK_FORMAT_1_COMMENT_1, TASK_FORMAT_2_COMMENT_1, TASK_FORMAT_3_COMMENT_1,
+ TASK_FORMAT_4_COMMENT_1, BUG_FORMAT_1_COMMENT_1, BUG_FORMAT_2_COMMENT_1, BUG_FORMAT_3_COMMENT_1,
+ BUG_FORMAT_4_COMMENT_1, TASK_FORMAT_1_COMMENT_2, TASK_FORMAT_2_COMMENT_2, TASK_FORMAT_3_COMMENT_2,
+ TASK_FORMAT_4_COMMENT_2, BUG_FORMAT_1_COMMENT_2, BUG_FORMAT_2_COMMENT_2, BUG_FORMAT_3_COMMENT_2,
+ BUG_FORMAT_4_COMMENT_2 };
}
private void setRepository(final TaskRepository repository) {
@@ -122,6 +168,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -134,6 +182,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -146,6 +196,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -158,6 +210,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -171,6 +225,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(i, links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -184,6 +240,8 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertNotNull(links);
assertEquals(1, links.length);
assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNull(comment);
}
}
@@ -322,4 +380,40 @@ public class BugzillaTaskHyperlinkDetectorTest extends TestCase {
assertEquals("345", ((TaskHyperlink) links[0]).getTaskId());
}
+ public void testAttachmentOld() {
+ String testString = ATTACHMENT_OLD;
+ viewer.setDocument(new Document(testString));
+ int i = testString.indexOf(ATTACHMENT_NUMBER);
+ Region region = new Region(0, testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(ATTACHMENT_NUMBER), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testAttachmentNew() {
+ String testString = ATTACHMENT_NEW;
+ viewer.setDocument(new Document(testString));
+ int i = testString.indexOf(ATTACHMENT_NUMBER);
+ Region region = new Region(0, testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(ATTACHMENT_NUMBER), links[0].getHyperlinkRegion().getOffset());
+ }
+
+ public void testBugWithComment() {
+ for (String format : commentFormats) {
+ String testString = "First line\n:" + format + " is at the beginning";
+ viewer.setDocument(new Document(testString));
+ Region region = new Region(0, testString.length());
+ IHyperlink[] links = detector.detectHyperlinks(viewer, region, false);
+ assertNotNull(links);
+ assertEquals(1, links.length);
+ assertEquals(testString.indexOf(format), links[0].getHyperlinkRegion().getOffset());
+ Object comment = ((TaskHyperlink) links[0]).getSelection();
+ assertNotNull(comment);
+ assertEquals(TaskAttribute.PREFIX_COMMENT + "44556677", comment);
+ }
+ }
}
diff --git a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java
index dfb6486d8..1046e1a3f 100644
--- a/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java
+++ b/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/tasklist/BugzillaConnectorUi.java
@@ -38,6 +38,7 @@ import org.eclipse.mylyn.tasks.core.ITaskComment;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskAttachmentModel;
+import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
import org.eclipse.mylyn.tasks.ui.LegendElement;
import org.eclipse.mylyn.tasks.ui.TaskHyperlink;
@@ -52,9 +53,19 @@ public class BugzillaConnectorUi extends AbstractRepositoryConnectorUi {
private static final int TASK_NUM_GROUP = 5;
- private static final int ATTACHMENT_NUM_GROUP = 6;
+ private static final int COMMENT_NUM_GROUP = 10;
- private static final String regexp = "(?:(duplicate of|(\\W||^)+bug|(\\W|^)+task)( ?#? ?)(\\d+))|(?:Created an attachment\\s*\\(id=(\\d+)\\))"; //$NON-NLS-1$
+ private static final int ATTACHMENT_NUM_GROUP = 14;
+
+// private static final String regexp = "(?:(duplicate of|(\\W||^)+bug|(\\W|^)+task)( ?#? ?)(\\d+)((\\s)*(comment|c)(\\s#|#|#\\s|\\s|)(\\s\\d+|\\d+))?)|(?:Created an attachment\\s*\\(id=(\\d+)\\))"; //$NON-NLS-1$
+
+ private static final String regexp = "(?:(duplicate of|(\\W||^)+bug|(\\W|^)+task)( ?#? ?)(\\d+)((\\s)*(comment|c)(\\s#|#|#\\s|\\s|)(\\s\\d+|\\d+))?)|(?:(Created (an )?attachment\\s*(\\(id=)?(\\d+)))"; //$NON-NLS-1$
+//
+// private static final String regexp = "(?:(duplicate of|(\\W||^)+bug|(\\W|^)+task)( ?#? ?)(\\d+))|(?:(Created (an )?attachment\\s*(\\(id=)?(\\d+)))"; //$NON-NLS-1$
+//
+//
+// private static final String regexp = "(duplicate of|bug|task)( ?#? ?)(\\d+)"; //$NON-NLS-1$
+// private static final String regexp = "(duplicate of|bug|task)( ?#? ?)(\\d+)((\\s)*(comment|c)(\\s#|#|#\\s|\\s|)(\\s\\d+|\\d+))?"; //$NON-NLS-1$
private static final Pattern PATTERN = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
@@ -192,6 +203,8 @@ public class BugzillaConnectorUi extends AbstractRepositoryConnectorUi {
int start = -1;
+ int a = m.groupCount();
+
if (m.group().startsWith("duplicate")) { //$NON-NLS-1$
start = m.start() + m.group().indexOf(m.group(TASK_NUM_GROUP));
} else {
@@ -209,17 +222,25 @@ public class BugzillaConnectorUi extends AbstractRepositoryConnectorUi {
try {
start += regionOffset;
end += regionOffset;
- IRegion sregion = new Region(start, end - start);
String bugId = m.group(TASK_NUM_GROUP);
if (bugId == null) {
String attachmentId = m.group(ATTACHMENT_NUM_GROUP);
if (attachmentId != null) {
+ start = start + m.group().indexOf(m.group(ATTACHMENT_NUM_GROUP));
+
+ IRegion sregion = new Region(start, end - start);
return new TaskAttachmentHyperlink(sregion, repository, attachmentId);
}
} else {
bugId.trim();
- return new TaskHyperlink(sregion, repository, bugId);
+ IRegion sregion = new Region(start, end - start);
+ TaskHyperlink taskHyperLink = new TaskHyperlink(sregion, repository, bugId);
+ String commentId = m.group(COMMENT_NUM_GROUP);
+ if (commentId != null) {
+ taskHyperLink.setSelection(TaskAttribute.PREFIX_COMMENT + commentId);
+ }
+ return taskHyperLink;
}
} catch (NumberFormatException e) {

Back to the top