diff options
author | relves | 2008-06-18 02:14:08 +0000 |
---|---|---|
committer | relves | 2008-06-18 02:14:08 +0000 |
commit | 89758c7cefcd69281ea0fdcd66b78bc1e8cdc0dd (patch) | |
tree | 77ae772d23634ce7bf627534d5e4ba7fed1c0d7b /org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java | |
parent | 15c4d031ac1a5da49e7d4a1ca80505a422015a8a (diff) | |
download | org.eclipse.mylyn.tasks-89758c7cefcd69281ea0fdcd66b78bc1e8cdc0dd.tar.gz org.eclipse.mylyn.tasks-89758c7cefcd69281ea0fdcd66b78bc1e8cdc0dd.tar.xz org.eclipse.mylyn.tasks-89758c7cefcd69281ea0fdcd66b78bc1e8cdc0dd.zip |
NEW - bug 237566: port custom attribute support
https://bugs.eclipse.org/bugs/show_bug.cgi?id=237566
Diffstat (limited to 'org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java')
-rw-r--r-- | org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java index a2c3ae0c9..2ef30ffbd 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java @@ -173,14 +173,22 @@ public class SaxMultiBugReportContentHandler extends DefaultHandler { TaskAttribute endAttribute = repositoryTaskData.getRoot().getAttribute(localName); if (endAttribute == null) { String desc = "???"; + BugzillaCustomField customField = null; for (BugzillaCustomField bugzillaCustomField : customFields) { if (localName.equals(bugzillaCustomField.getName())) { - desc = bugzillaCustomField.getDescription(); + customField = bugzillaCustomField; + break; } } - TaskAttribute atr = repositoryTaskData.getRoot().createAttribute(localName); - atr.getMetaData().defaults().setLabel(desc).setReadOnly(true); - atr.setValue(parsedText); + if (customField != null) { + TaskAttribute atr = repositoryTaskData.getRoot().createAttribute(localName); + desc = customField.getDescription(); + atr.getMetaData().defaults().setLabel(desc).setReadOnly(false); + atr.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); + atr.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); + atr.getMetaData().setReadOnly(true); + atr.setValue(parsedText); + } } else { endAttribute.addValue(parsedText); } @@ -311,6 +319,9 @@ public class SaxMultiBugReportContentHandler extends DefaultHandler { updateAttachmentMetaData(); TaskAttribute attrCreation = repositoryTaskData.getRoot().getAttribute( BugzillaAttribute.CREATION_TS.getKey()); + + updateCustomFields(repositoryTaskData); + // Guard against empty data sets if (attrCreation != null && !attrCreation.equals("")) { collector.accept(repositoryTaskData); @@ -346,6 +357,33 @@ public class SaxMultiBugReportContentHandler extends DefaultHandler { } + private void updateCustomFields(TaskData taskData) { + RepositoryConfiguration config = BugzillaCorePlugin.getRepositoryConfiguration(repositoryTaskData.getRepositoryUrl()); + if (config != null) { + for (BugzillaCustomField bugzillaCustomField : config.getCustomFields()) { + + TaskAttribute atr = taskData.getRoot().getAttribute(bugzillaCustomField.getName()); + if (atr == null) { + atr = taskData.getRoot().createAttribute(bugzillaCustomField.getName()); + } + + if (atr != null) { + atr.getMetaData().defaults().setLabel(bugzillaCustomField.getDescription()); + atr.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); + + List<String> options = bugzillaCustomField.getOptions(); + if (options.size() > 0) { + atr.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); + } else { + atr.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); + } + atr.getMetaData().setReadOnly(false); + } + } + } + + } + private void updateAttachmentMetaData() { List<TaskAttribute> taskAttachments = repositoryTaskData.getAttributeMapper().getAttributesByType( repositoryTaskData, TaskAttribute.TYPE_ATTACHMENT); |