/*******************************************************************************
* Copyright (c) 2004, 2008 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.core.data;
import org.eclipse.core.runtime.Assert;
/**
* @author Rob Elves
* @author Steffen Pingel
* @since 3.0
*/
public class TaskOperation {
/**
* @since 3.0
*/
public static void applyTo(TaskAttribute taskAttribute, String operationId, String label) {
TaskData taskData = taskAttribute.getTaskData();
taskData.getAttributeMapper().setValue(taskAttribute, operationId);
taskAttribute.getMetaData().defaults().setType(TaskAttribute.TYPE_OPERATION).setLabel(label).setDisabled(false);
}
/**
* @since 3.0
*/
public static TaskOperation createFrom(TaskAttribute taskAttribute) {
Assert.isNotNull(taskAttribute);
TaskData taskData = taskAttribute.getTaskData();
TaskOperation operation = new TaskOperation(taskData.getConnectorKind(), taskData.getRepositoryUrl(),
taskData.getTaskId(), taskAttribute.getValue());
operation.setLabel(taskAttribute.getMetaData().getLabel());
operation.setTaskAttribute(taskAttribute);
return operation;
}
private final String connectorKind;
private String label;
private final String operationId;
private final String repositoryUrl;
private TaskAttribute taskAttribute;
private final String taskId;
/**
* @since 3.0
*/
public TaskOperation(String connectorKind, String repositoryUrl, String taskId, String operationId) {
Assert.isNotNull(connectorKind);
Assert.isNotNull(repositoryUrl);
Assert.isNotNull(taskId);
Assert.isNotNull(operationId);
this.connectorKind = connectorKind;
this.repositoryUrl = repositoryUrl;
this.taskId = taskId;
this.operationId = operationId;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
TaskOperation other = (TaskOperation) obj;
if (!connectorKind.equals(other.connectorKind)) {
return false;
}
if (!operationId.equals(other.operationId)) {
return false;
}
if (!repositoryUrl.equals(other.repositoryUrl)) {
return false;
}
if (!taskId.equals(other.taskId)) {
return false;
}
return true;
}
/**
* @since 3.0
*/
public String getConnectorKind() {
return connectorKind;
}
/**
* @since 3.0
*/
public String getLabel() {
return label;
}
/**
* @since 3.0
*/
public String getOperationId() {
return operationId;
}
public String getRepositoryUrl() {
return repositoryUrl;
}
/**
* @since 3.0
*/
public TaskAttribute getTaskAttribute() {
return taskAttribute;
}
/**
* @since 3.0
*/
public String getTaskId() {
return taskId;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + connectorKind.hashCode();
result = prime * result + operationId.hashCode();
result = prime * result + repositoryUrl.hashCode();
result = prime * result + taskId.hashCode();
return result;
}
/**
* @since 3.0
*/
public void setLabel(String label) {
this.label = label;
}
/**
* @since 3.0
*/
public void setTaskAttribute(TaskAttribute taskAttribute) {
this.taskAttribute = taskAttribute;
}
}