blob: 43adf025704e9b5d5dc37c2d922f5ae7b0ad1707 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2011 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.bugzilla.core;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMetaData;
import org.eclipse.mylyn.tasks.core.data.TaskData;
/**
* @author Frank Becker
* @since 3.1
*/
public class BugzillaFlagMapper {
private String requestee;
private String setter;
private String state;
private String flagId;
private int number;
private final BugzillaRepositoryConnector connector;
public BugzillaFlagMapper(BugzillaRepositoryConnector connector) {
this.connector = connector;
}
public String getRequestee() {
return requestee;
}
public void setRequestee(String requestee) {
this.requestee = requestee;
}
public String getSetter() {
return setter;
}
public void setSetter(String setter) {
this.setter = setter;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getFlagId() {
return flagId;
}
public void setFlagId(String flagId) {
this.flagId = flagId;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
private String description;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public void applyTo(TaskAttribute taskAttribute) {
Assert.isNotNull(taskAttribute);
TaskData taskData = taskAttribute.getTaskData();
TaskAttributeMapper mapper = taskData.getAttributeMapper();
TaskAttributeMetaData meta = taskAttribute.getMetaData().defaults();
meta.setType(IBugzillaConstants.EDITOR_TYPE_FLAG);
meta.setLabel(description);
BugzillaVersion bugzillaVersion = null;
RepositoryConfiguration repositoryConfiguration;
try {
repositoryConfiguration = connector.getRepositoryConfiguration(mapper.getTaskRepository(), false,
new NullProgressMonitor());
bugzillaVersion = repositoryConfiguration.getInstallVersion();
} catch (CoreException e) {
bugzillaVersion = BugzillaVersion.MIN_VERSION;
}
if (bugzillaVersion.compareTo(BugzillaVersion.BUGZILLA_3_2) >= 0) {
meta.setKind(BugzillaAttribute.KIND_FLAG);
}
meta.setReadOnly(false);
if (getNumber() != 0) {
TaskAttribute child = taskAttribute.createMappedAttribute("number"); //$NON-NLS-1$
child.getMetaData().defaults().setType(TaskAttribute.TYPE_INTEGER);
mapper.setIntegerValue(child, getNumber());
}
if (getRequestee() != null) {
TaskAttribute child = taskAttribute.createMappedAttribute("requestee"); //$NON-NLS-1$
child.getMetaData().defaults().setType(TaskAttribute.TYPE_SHORT_TEXT);
mapper.setValue(child, getRequestee());
}
if (getSetter() != null) {
TaskAttribute child = taskAttribute.createMappedAttribute("setter"); //$NON-NLS-1$
child.getMetaData().defaults().setType(TaskAttribute.TYPE_SHORT_TEXT);
mapper.setValue(child, getSetter());
}
if (getState() != null) {
TaskAttribute child = taskAttribute.createMappedAttribute("state"); //$NON-NLS-1$
child.getMetaData().defaults().setType(TaskAttribute.TYPE_SINGLE_SELECT);
child.getMetaData().setLabel(flagId);
child.getMetaData().setReadOnly(false);
mapper.setValue(child, getState());
taskAttribute.getMetaData().putValue(TaskAttribute.META_ASSOCIATED_ATTRIBUTE_ID, "state"); //$NON-NLS-1$
}
}
}