Skip to main content
summaryrefslogtreecommitdiffstats
blob: a4f6447528361695823d9934b5ba5bd0d93053e4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/*******************************************************************************
 * Copyright (c) 2013 Frank Becker and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Frank Becker - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.bugzilla.rest.core;

import org.eclipse.mylyn.tasks.core.data.AbstractTaskSchema;
import org.eclipse.mylyn.tasks.core.data.DefaultTaskSchema;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskData;

import com.google.common.collect.ImmutableMap;

public class BugzillaRestTaskSchema extends AbstractTaskSchema {

	private static final BugzillaRestTaskSchema instance = new BugzillaRestTaskSchema();

	private static ImmutableMap<String, String> field2AttributeFieldMapper = new ImmutableMap.Builder<String, String>()
			.put("summary", getDefault().SUMMARY.getKey()) //$NON-NLS-1$
			.put("description", getDefault().DESCRIPTION.getKey()) //$NON-NLS-1$
			.put("status", getDefault().STATUS.getKey()) //$NON-NLS-1$
			.put("product", getDefault().PRODUCT.getKey()) //$NON-NLS-1$
			.put("component", getDefault().COMPONENT.getKey()) //$NON-NLS-1$
			.put("cc", getDefault().CC.getKey()) //$NON-NLS-1$
			.put("severity", getDefault().SEVERITY.getKey()) //$NON-NLS-1$
			.put("priority", getDefault().PRIORITY.getKey()) //$NON-NLS-1$
			.put("assigned_to", getDefault().ASSIGNED_TO.getKey()) //$NON-NLS-1$
			.put("op_sys", getDefault().OS.getKey()) //$NON-NLS-1$
			.put("resolution", getDefault().RESOLUTION.getKey()) //$NON-NLS-1$
			.put("version", getDefault().VERSION.getKey()) //$NON-NLS-1$
			.put("dup_id", getDefault().DUPE_OF.getKey()) //$NON-NLS-1$
			.build();

	private static ImmutableMap<String, String> attribute2FieldMapper = new ImmutableMap.Builder<String, String>()
			.put(getDefault().SUMMARY.getKey(), "summary") //$NON-NLS-1$
			.put(getDefault().DESCRIPTION.getKey(), "description") //$NON-NLS-1$
			.put(getDefault().OPERATION.getKey(), "status") //$NON-NLS-1$
			.put(getDefault().PRODUCT.getKey(), "product") //$NON-NLS-1$
			.put(getDefault().COMPONENT.getKey(), "component") //$NON-NLS-1$
			.put(getDefault().CC.getKey(), "cc") //$NON-NLS-1$
			.put(getDefault().SEVERITY.getKey(), "severity") //$NON-NLS-1$
			.put(getDefault().PRIORITY.getKey(), "priority") //$NON-NLS-1$
			.put(getDefault().ASSIGNED_TO.getKey(), "assigned_to") //$NON-NLS-1$
			.put(getDefault().OS.getKey(), "op_sys") //$NON-NLS-1$
			.put(getDefault().VERSION.getKey(), "version") //$NON-NLS-1$
			.put(getDefault().RESOLUTION.getKey(), "resolution") //$NON-NLS-1$
			.put(getDefault().DUPE_OF.getKey(), "dup_id") //$NON-NLS-1$
			.put("resolutionInput", "resolution") //$NON-NLS-1$  //$NON-NLS-2$
			.build();

	public static String getAttributeNameFromFieldName(String fieldName) {
		String result = field2AttributeFieldMapper.get(fieldName);
		if (result == null) {
			result = fieldName;
		}
		return result;
	}

	public static String getFieldNameFromAttributeName(String attributeName) {
		String result = attribute2FieldMapper.get(attributeName);
		if (result == null) {
			result = attributeName;
		}
		return result;
	}

	public static BugzillaRestTaskSchema getDefault() {
		return instance;
	}

	private final DefaultTaskSchema parent = DefaultTaskSchema.getInstance();

	public final Field BUG_ID = createField("bug_id", "ID:", TaskAttribute.TYPE_SHORT_TEXT, Flag.REQUIRED);

	public final Field PRODUCT = inheritFrom(parent.PRODUCT).addFlags(Flag.REQUIRED).create();

	public final Field COMPONENT = inheritFrom(parent.COMPONENT).addFlags(Flag.REQUIRED)
			.dependsOn(PRODUCT.getKey())
			.create();

	public final Field SUMMARY = inheritFrom(parent.SUMMARY).addFlags(Flag.REQUIRED).create();

	public final Field VERSION = createField(TaskAttribute.VERSION, "Version", TaskAttribute.TYPE_SINGLE_SELECT, null,
			PRODUCT.getKey(), Flag.ATTRIBUTE, Flag.REQUIRED);

	public final Field DESCRIPTION = inheritFrom(parent.DESCRIPTION).addFlags(Flag.REQUIRED, Flag.READ_ONLY).create();

	public final Field OS = createField("os", "OS", TaskAttribute.TYPE_SINGLE_SELECT, Flag.ATTRIBUTE);

	public final Field PLATFORM = createField("platform", "Platform", TaskAttribute.TYPE_SINGLE_SELECT, Flag.ATTRIBUTE);

	public final Field PRIORITY = inheritFrom(parent.PRIORITY).create();

	public final Field SEVERITY = inheritFrom(parent.SEVERITY).create();

	public final Field STATUS = inheritFrom(parent.STATUS).create();

	public final Field ALIAS = createField("alias", "Alias", TaskAttribute.TYPE_SHORT_TEXT, Flag.ATTRIBUTE);

	public final Field ASSIGNED_TO = inheritFrom(parent.USER_ASSIGNED).label("Assigned to")
			.dependsOn(COMPONENT.getKey())
			.create();

	public final Field ADD_CC = createField("addCC", "Add CC", TaskAttribute.TYPE_PERSON, Flag.PEOPLE);

	public final Field CC = createField(TaskAttribute.USER_CC, "Remove CC\n(Selet to remove)",
			IBugzillaRestConstants.EDITOR_TYPE_CC, Flag.PEOPLE);

	public final Field REMOVE_CC = createField("removeCC", "CC selected for remove",
			IBugzillaRestConstants.EDITOR_TYPE_CC);

	public final Field ADD_SELF_CC = inheritFrom(parent.ADD_SELF_CC).addFlags(Flag.PEOPLE).create();

	public final Field COMMENT_ISPRIVATE = inheritFrom(parent.COMMENT_ISPRIVATE).addFlags(Flag.ATTRIBUTE).create();

	public final Field COMMENT_NUMBER = inheritFrom(parent.COMMENT_NUMBER).addFlags(Flag.ATTRIBUTE).create();

	public final Field QA_CONTACT = createField("qa_contact", "QA Contact", TaskAttribute.TYPE_PERSON, null,
			COMPONENT.getKey(), Flag.PEOPLE);

	public final Field TARGET_MILESTONE = createField("target_milestone", "Target milestone",
			TaskAttribute.TYPE_SINGLE_SELECT, null, PRODUCT.getKey(), Flag.ATTRIBUTE, Flag.REQUIRED);

	public final Field RESOLUTION = inheritFrom(parent.RESOLUTION).removeFlags(Flag.READ_ONLY).create();

	public final Field OPERATION = createField(TaskAttribute.OPERATION, "Operation", TaskAttribute.TYPE_OPERATION);

	public final Field NEW_COMMENT = inheritFrom(parent.NEW_COMMENT).create();

	public final Field DUPE_OF = createField("dupe_of", "Dup", TaskAttribute.META_ASSOCIATED_ATTRIBUTE_ID);

	public final Field DEPENDS_ON = createField("depends_on", "Depends on:", TaskAttribute.TYPE_TASK_DEPENDENCY,
			Flag.ATTRIBUTE);

	public final Field BLOCKS = createField("blocks", "Blocks:", TaskAttribute.TYPE_TASK_DEPENDENCY, Flag.ATTRIBUTE);

	@Override
	public void initialize(TaskData taskData) {
		for (Field field : getFields()) {
			if (field.equals(COMMENT_ISPRIVATE) || field.equals(COMMENT_NUMBER)) {
				continue;
			}
			TaskAttribute newField = field.createAttribute(taskData.getRoot());
			if (field.equals(DESCRIPTION)) {
				COMMENT_ISPRIVATE.createAttribute(newField);
				COMMENT_NUMBER.createAttribute(newField);
			}
		}
	}

}

Back to the top