blob: 62ba1bbde3eb214ba6bdda04b7c11b49b7974f80 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2014 Frank Becker and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Frank Becker - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.bugzilla.core;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Class describing a custom Fields for a given Bugzilla installation.
*
* @author Frank Becker
* @since 2.3
*/
public class BugzillaCustomField implements Serializable {
// old version private static final long serialVersionUID = 5703683576871326128L;
// 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, BugId;
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$
case 6:
return "Bug ID"; //$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;
case 6:
return BugId;
default:
return UNKNOWN;
}
}
}
private final String name;
private final String description;
private List<String> options = new ArrayList<String>();
final private int type;
final private FieldType fieldType;
final private boolean enterBug;
public BugzillaCustomField(String description, String name, String type, String enterBug) {
this.description = description;
this.name = name;
this.type = parseInt(type);
this.fieldType = FieldType.convert(type);
this.enterBug = "1".equals(enterBug); //$NON-NLS-1$
}
private int parseInt(String type) {
try {
return Integer.parseInt(type);
} catch (NumberFormatException e) {
return -1;
}
}
public String getName() {
return name;
}
public String getDescription() {
return description;
}
public List<String> getOptions() {
return options;
}
public void setOptions(List<String> options) {
this.options = options;
}
public void addOption(String option) {
this.options.add(option);
}
/**
* @since 3.0.2
* @deprecated use {@link #getFieldType()} instead
*/
@Deprecated
public int getType() {
return type;
}
/**
* @since 3.0.2
* @deprecated use {@link #getFieldType().toString()} instead
*/
@Deprecated
public String getTypeDesc() {
return getFieldType().toString();
}
/**
* @since 3.0.2
*/
public boolean isEnterBug() {
return enterBug;
}
public FieldType getFieldType() {
return fieldType;
}
}