diff options
author | spingel | 2009-08-14 22:39:56 +0000 |
---|---|---|
committer | spingel | 2009-08-14 22:39:56 +0000 |
commit | 19d8618b5fc868e6f31da526de9c399625b22bb1 (patch) | |
tree | 68c27ae08a932900479f015fe31832f2080750d3 | |
parent | daafe78a425d384bd5fd153bf701b378e83085bd (diff) | |
download | org.eclipse.mylyn.tasks-19d8618b5fc868e6f31da526de9c399625b22bb1.tar.gz org.eclipse.mylyn.tasks-19d8618b5fc868e6f31da526de9c399625b22bb1.tar.xz org.eclipse.mylyn.tasks-19d8618b5fc868e6f31da526de9c399625b22bb1.zip |
ASSIGNED - bug 279357: add custom fields in New Task Editor
https://bugs.eclipse.org/bugs/show_bug.cgi?id=279357
4 files changed, 108 insertions, 48 deletions
diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCustomField.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCustomField.java index 62f4a2f2d..d906e8c8c 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCustomField.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCustomField.java @@ -24,10 +24,59 @@ import java.util.List; public class BugzillaCustomField implements Serializable { // old version private static final long serialVersionUID = 5703683576871326128L; - private static final long serialVersionUID = 7273310489883205486L; + // private static final long serialVersionUID = 7273310489883205486L; + + private static final long serialVersionUID = 8268371206426652131L; public static final String CUSTOM_FIELD_PREFIX = "cf_"; //$NON-NLS-1$ + public static enum FieldType { + UNKNOWN, FreeText, DropDown, MultipleSelection, LargeText, DateTime; + + private static int parseInt(String type) { + try { + return Integer.parseInt(type); + } catch (NumberFormatException e) { + return -1; + } + } + + @Override + public String toString() { + switch (this.ordinal()) { + case 1: + return "Free Text"; //$NON-NLS-1$ + case 2: + return "Drop Down"; //$NON-NLS-1$ + case 3: + return "Multiple-Selection Box"; //$NON-NLS-1$ + case 4: + return "Large Text Box"; //$NON-NLS-1$ + case 5: + return "Date/Time"; //$NON-NLS-1$ + default: + return super.toString(); + } + } + + public static FieldType convert(String change) { + switch (parseInt(change)) { + case 1: + return FreeText; + case 2: + return DropDown; + case 3: + return MultipleSelection; + case 4: + return LargeText; + case 5: + return DateTime; + default: + return UNKNOWN; + } + } + } + private final String name; private final String description; @@ -36,16 +85,15 @@ public class BugzillaCustomField implements Serializable { final private int type; - final private String typeDesc; + final private FieldType fieldType; final private boolean enterBug; - public BugzillaCustomField(String description, String name, String type, String typeDesc, String enterBug) { + public BugzillaCustomField(String description, String name, String type, String enterBug) { this.description = description; this.name = name; - this.type = parseInt(type); - this.typeDesc = typeDesc; + this.fieldType = FieldType.convert(type); this.enterBug = "1".equals(enterBug); //$NON-NLS-1$ } @@ -77,25 +125,33 @@ public class BugzillaCustomField implements Serializable { this.options.add(option); } - /* - * @since 3.0.2 - */ + /** + * @since 3.0.2 + * @deprecated use {@link #getFieldType()} instead + */ + @Deprecated public int getType() { return type; } - /* - * @since 3.0.2 - */ + /** + * @since 3.0.2 + * @deprecated use {@link #getFieldType().toString()} instead + */ + @Deprecated public String getTypeDesc() { - return typeDesc; + return getFieldType().toString(); } - /* - * @since 3.0.2 - */ + /** + * @since 3.0.2 + */ public boolean isEnterBug() { return enterBug; } + public FieldType getFieldType() { + return fieldType; + } + } diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java index 9d6cec1a5..2a55f1714 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java @@ -172,20 +172,20 @@ public class BugzillaTaskDataHandler extends AbstractTaskDataHandler { attribute.getMetaData().defaults().setLabel(desc).setReadOnly(false); attribute.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); attribute.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); - switch (customField.getType()) { - case 1: // Free Text + switch (customField.getFieldType()) { + case FreeText: attribute.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); break; - case 2: // Drop Down + case DropDown: attribute.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); break; - case 3: // Multiple-Selection Box + case MultipleSelection: attribute.getMetaData().setType(TaskAttribute.TYPE_MULTI_SELECT); break; - case 4: // Large Text Box + case LargeText: attribute.getMetaData().setType(TaskAttribute.TYPE_LONG_TEXT); break; - case 5: // Date/Time + case DateTime: attribute.getMetaData().setType(TaskAttribute.TYPE_DATETIME); break; @@ -576,25 +576,26 @@ public class BugzillaTaskDataHandler extends AbstractTaskDataHandler { attribute.getMetaData().defaults().setLabel(bugzillaCustomField.getDescription()); attribute.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); - switch (bugzillaCustomField.getType()) { - case 1: // Free Text + List<String> options = bugzillaCustomField.getOptions(); + + switch (bugzillaCustomField.getFieldType()) { + case FreeText: attribute.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); break; - case 2: // Drop Down + case DropDown: attribute.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); break; - case 3: // Multiple-Selection Box + case MultipleSelection: attribute.getMetaData().setType(TaskAttribute.TYPE_MULTI_SELECT); break; - case 4: // Large Text Box + case LargeText: attribute.getMetaData().setType(TaskAttribute.TYPE_LONG_TEXT); break; - case 5: // Date/Time + case DateTime: attribute.getMetaData().setType(TaskAttribute.TYPE_DATETIME); break; default: - List<String> options = bugzillaCustomField.getOptions(); if (options.size() > 0) { attribute.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); } else { @@ -602,6 +603,16 @@ public class BugzillaTaskDataHandler extends AbstractTaskDataHandler { } } attribute.getMetaData().setReadOnly(false); + + for (String option : options) { + attribute.putOption(option, option); + } + + if (bugzillaCustomField.getFieldType() == BugzillaCustomField.FieldType.DropDown + && options.size() > 0) { + attribute.setValue(options.get(0)); + } + } } } diff --git a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java index 2ae42a08b..d13d9646a 100644 --- a/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java +++ b/org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java @@ -87,8 +87,6 @@ public class SaxConfigurationContentHandler extends DefaultHandler { private static final String ELEMENT_TYPE = "type"; //$NON-NLS-1$ - private static final String ELEMENT_TYPE_DESC = "type_desc"; //$NON-NLS-1$ - private static final String ELEMENT_ENTER_BUG = "enter_bug"; //$NON-NLS-1$ private static final String ELEMENT_REQUESTABLE = "requestable"; //$NON-NLS-1$ @@ -171,8 +169,6 @@ public class SaxConfigurationContentHandler extends DefaultHandler { private int currentId; - private String currentTypeDesc = ""; //$NON-NLS-1$ - private String currentEnterBug = ""; //$NON-NLS-1$ private StringBuffer characters = new StringBuffer(); @@ -269,7 +265,6 @@ public class SaxConfigurationContentHandler extends DefaultHandler { currentName = ""; //$NON-NLS-1$ currentDescription = ""; //$NON-NLS-1$ currentType = ""; //$NON-NLS-1$ - currentTypeDesc = ""; //$NON-NLS-1$ currentEnterBug = ""; //$NON-NLS-1$ currentId = -1; } else if (localName.equals(ELEMENT_FLAG_TYPES)) { @@ -401,7 +396,7 @@ public class SaxConfigurationContentHandler extends DefaultHandler { } else if (localName.equals(ELEMENT_FIELD)) { if (currentName.startsWith(BugzillaCustomField.CUSTOM_FIELD_PREFIX)) { BugzillaCustomField newField = new BugzillaCustomField(currentDescription, currentName, currentType, - currentTypeDesc, currentEnterBug); + currentEnterBug); List<String> customOptionList = customOption.get(currentName); if (customOptionList != null && !customOptionList.isEmpty()) { newField.setOptions(customOptionList); @@ -415,8 +410,6 @@ public class SaxConfigurationContentHandler extends DefaultHandler { currentType = characters.toString(); } else if (localName.equals(ELEMENT_ID)) { currentId = Integer.parseInt(characters.toString()); - } else if (localName.equals(ELEMENT_TYPE_DESC)) { - currentTypeDesc = characters.toString(); } else if (localName.equals(ELEMENT_ENTER_BUG)) { currentEnterBug = characters.toString(); } else if (localName.equals(ELEMENT_REQUESTABLE)) { 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 76c7532e7..a52bba58e 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 @@ -234,20 +234,20 @@ public class SaxMultiBugReportContentHandler extends DefaultHandler { atr.getMetaData().defaults().setLabel(desc).setReadOnly(false); atr.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); atr.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); - switch (customField.getType()) { - case 1: // Free Text + switch (customField.getFieldType()) { + case FreeText: atr.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); break; - case 2: // Drop Down + case DropDown: atr.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); break; - case 3: // Multiple-Selection Box + case MultipleSelection: atr.getMetaData().setType(TaskAttribute.TYPE_MULTI_SELECT); break; - case 4: // Large Text Box + case LargeText: atr.getMetaData().setType(TaskAttribute.TYPE_LONG_TEXT); break; - case 5: // Date/Time + case DateTime: atr.getMetaData().setType(TaskAttribute.TYPE_DATETIME); break; @@ -475,20 +475,20 @@ public class SaxMultiBugReportContentHandler extends DefaultHandler { atr.getMetaData().defaults().setLabel(bugzillaCustomField.getDescription()); atr.getMetaData().setKind(TaskAttribute.KIND_DEFAULT); - switch (bugzillaCustomField.getType()) { - case 1: // Free Text + switch (bugzillaCustomField.getFieldType()) { + case FreeText: atr.getMetaData().setType(TaskAttribute.TYPE_SHORT_TEXT); break; - case 2: // Drop Down + case DropDown: atr.getMetaData().setType(TaskAttribute.TYPE_SINGLE_SELECT); break; - case 3: // Multiple-Selection Box + case MultipleSelection: atr.getMetaData().setType(TaskAttribute.TYPE_MULTI_SELECT); break; - case 4: // Large Text Box + case LargeText: atr.getMetaData().setType(TaskAttribute.TYPE_LONG_TEXT); break; - case 5: // Date/Time + case DateTime: atr.getMetaData().setType(TaskAttribute.TYPE_DATETIME); break; |