Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2010-07-06 06:55:05 +0000
committerspingel2010-07-06 06:55:05 +0000
commitee395092b1bc9444cb92d43e25cef116ef651939 (patch)
tree6f86963766419f33f0451533c326bb457468fd79 /org.eclipse.mylyn.trac.core
parent2c42e20aa5cc8133af6d9c18ea512ddb59980031 (diff)
downloadorg.eclipse.mylyn.tasks-ee395092b1bc9444cb92d43e25cef116ef651939.tar.gz
org.eclipse.mylyn.tasks-ee395092b1bc9444cb92d43e25cef116ef651939.tar.xz
org.eclipse.mylyn.tasks-ee395092b1bc9444cb92d43e25cef116ef651939.zip
NEW - bug 318954: support stories and improve sub task creation
https://bugs.eclipse.org/bugs/show_bug.cgi?id=318954
Diffstat (limited to 'org.eclipse.mylyn.trac.core')
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java10
-rw-r--r--org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java31
2 files changed, 33 insertions, 8 deletions
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java
index 179793777..743f835ad 100644
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java
+++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracRepositoryConnector.java
@@ -59,7 +59,7 @@ import org.eclipse.mylyn.tasks.core.sync.ISynchronizationSession;
public class TracRepositoryConnector extends AbstractRepositoryConnector {
public enum TaskKind {
- DEFECT, ENHANCEMENT, TASK;
+ DEFECT, ENHANCEMENT, TASK, STORY;
public static TaskKind fromString(String type) {
if (type == null) {
@@ -74,6 +74,9 @@ public class TracRepositoryConnector extends AbstractRepositoryConnector {
if (type.equals("Task")) { //$NON-NLS-1$
return TASK;
}
+ if (type.equals("Story")) { //$NON-NLS-1$
+ return STORY;
+ }
return null;
}
@@ -90,6 +93,9 @@ public class TracRepositoryConnector extends AbstractRepositoryConnector {
if (type.equals("task")) { //$NON-NLS-1$
return TASK;
}
+ if (type.equals("story")) { //$NON-NLS-1$
+ return STORY;
+ }
return null;
}
@@ -102,6 +108,8 @@ public class TracRepositoryConnector extends AbstractRepositoryConnector {
return "Enhancement"; //$NON-NLS-1$
case TASK:
return "Task"; //$NON-NLS-1$
+ case STORY:
+ return "Story"; //$NON-NLS-1$
default:
return ""; //$NON-NLS-1$
}
diff --git a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java
index 0412194e1..eee7fa9fd 100644
--- a/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java
+++ b/org.eclipse.mylyn.trac.core/src/org/eclipse/mylyn/internal/trac/core/TracTaskDataHandler.java
@@ -17,9 +17,9 @@ import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;
-import java.util.Map.Entry;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -32,15 +32,15 @@ import org.eclipse.mylyn.internal.trac.core.model.TracAction;
import org.eclipse.mylyn.internal.trac.core.model.TracAttachment;
import org.eclipse.mylyn.internal.trac.core.model.TracComment;
import org.eclipse.mylyn.internal.trac.core.model.TracTicket;
-import org.eclipse.mylyn.internal.trac.core.model.TracTicketField;
import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key;
+import org.eclipse.mylyn.internal.trac.core.model.TracTicketField;
import org.eclipse.mylyn.internal.trac.core.util.TracUtil;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
+import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind;
import org.eclipse.mylyn.tasks.core.RepositoryStatus;
import org.eclipse.mylyn.tasks.core.TaskRepository;
-import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
import org.eclipse.mylyn.tasks.core.data.TaskAttachmentMapper;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
@@ -57,6 +57,10 @@ import org.eclipse.osgi.util.NLS;
*/
public class TracTaskDataHandler extends AbstractTaskDataHandler {
+ private static final String TASK_TYPE_TASK = "task"; //$NON-NLS-1$
+
+ public static final String TASK_TYPE_STORY = "story"; //$NON-NLS-1$
+
private static final String TASK_DATA_VERSION = "2"; //$NON-NLS-1$
public static final String ATTRIBUTE_BLOCKED_BY = "blockedby"; //$NON-NLS-1$
@@ -318,11 +322,17 @@ public class TracTaskDataHandler extends AbstractTaskDataHandler {
}
createAttribute(data, client, TracAttribute.CC);
if (existingTask) {
- data.getRoot().createAttribute(TracAttributeMapper.NEW_CC).getMetaData().setType(
- TaskAttribute.TYPE_SHORT_TEXT).setReadOnly(false);
+ data.getRoot()
+ .createAttribute(TracAttributeMapper.NEW_CC)
+ .getMetaData()
+ .setType(TaskAttribute.TYPE_SHORT_TEXT)
+ .setReadOnly(false);
data.getRoot().createAttribute(TracAttributeMapper.REMOVE_CC);
- data.getRoot().createAttribute(TaskAttribute.COMMENT_NEW).getMetaData().setType(
- TaskAttribute.TYPE_LONG_RICH_TEXT).setReadOnly(false);
+ data.getRoot()
+ .createAttribute(TaskAttribute.COMMENT_NEW)
+ .getMetaData()
+ .setType(TaskAttribute.TYPE_LONG_RICH_TEXT)
+ .setReadOnly(false);
}
// operations
data.getRoot().createAttribute(TaskAttribute.OPERATION).getMetaData().setType(TaskAttribute.TYPE_OPERATION);
@@ -488,6 +498,13 @@ public class TracTaskDataHandler extends AbstractTaskDataHandler {
if (blockedByAttribute != null) {
blockedByAttribute.clearValues();
}
+ // special handling for stories which should have tasks as subtasks
+ TaskAttribute typeAttribute = taskData.getRoot().getAttribute(TracAttribute.TYPE.getTracKey());
+ if (typeAttribute != null && TASK_TYPE_STORY.equals(typeAttribute.getValue())) {
+ if (typeAttribute.getOptions().containsKey(TASK_TYPE_TASK)) {
+ typeAttribute.setValue(TASK_TYPE_TASK);
+ }
+ }
return true;
}

Back to the top