Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2009-08-14 22:39:56 +0000
committerspingel2009-08-14 22:39:56 +0000
commit19d8618b5fc868e6f31da526de9c399625b22bb1 (patch)
tree68c27ae08a932900479f015fe31832f2080750d3
parentdaafe78a425d384bd5fd153bf701b378e83085bd (diff)
downloadorg.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
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaCustomField.java86
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/BugzillaTaskDataHandler.java37
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxConfigurationContentHandler.java9
-rw-r--r--org.eclipse.mylyn.bugzilla.core/src/org/eclipse/mylyn/internal/bugzilla/core/SaxMultiBugReportContentHandler.java24
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;

Back to the top