/******************************************************************************* * Copyright (c) 2006, 2008 Steffen Pingel 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: * Steffen Pingel - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.internal.trac.core; import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector.TaskKind; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.model.TracPriority; import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; import org.eclipse.mylyn.tasks.core.data.TaskData; import org.eclipse.mylyn.tasks.core.data.TaskMapper; /** * @author Steffen Pingel */ public class TracTaskMapper extends TaskMapper { private final ITracClient client; public TracTaskMapper(TaskData taskData, ITracClient client) { super(taskData); this.client = client; } // @Override // public boolean applyTo(ITask task) { // boolean changed = false; // if (hasChanges(task.getCompletionDate(), TaskAttribute.DATE_COMPLETION)) { // task.setCompletionDate(getCompletionDate()); // changed = true; // } // if (hasChanges(task.getCreationDate(), TaskAttribute.DATE_CREATION)) { // task.setCreationDate(getCreationDate()); // changed = true; // } // if (hasChanges(task.getModificationDate(), TaskAttribute.DATE_MODIFICATION)) { // task.setModificationDate(getModificationDate()); // changed = true; // } // if (hasChanges(task.getDueDate(), TaskAttribute.DATE_DUE)) { // task.setDueDate(getDueDate()); // changed = true; // } // if (hasChanges(task.getOwner(), TaskAttribute.USER_ASSIGNED)) { // task.setOwner(getOwner()); // changed = true; // } // if (hasChanges(task.getPriority(), TaskAttribute.PRIORITY)) { // if (getPriorityLevel() != null) { // task.setPriority(getPriorityLevel().toString()); // } else { // task.setPriority(PriorityLevel.getDefault().toString()); // } // changed = true; // } // if (hasChanges(task.getSummary(), TaskAttribute.SUMMARY)) { // task.setSummary(getSummary()); // changed = true; // } // if (hasChanges(task.getTaskKey(), TaskAttribute.TASK_KEY)) { // task.setTaskKey(getTaskKey()); // changed = true; // } // if (hasChanges(task.getTaskKind(), TaskAttribute.TASK_KIND)) { // task.setTaskKind(getTaskKind()); // changed = true; // } // if (hasChanges(task.getUrl(), TaskAttribute.TASK_URL)) { // task.setUrl(getTaskUrl()); // changed = true; // } // return changed; // } // // @Override // public boolean hasChanges(ITask task) { // boolean changed = false; // changed |= hasChanges(task.getCompletionDate(), TaskAttribute.DATE_COMPLETION); // changed |= hasChanges(task.getCreationDate(), TaskAttribute.DATE_CREATION); // changed |= hasChanges(task.getModificationDate(), TaskAttribute.DATE_MODIFICATION); // changed |= hasChanges(task.getDueDate(), TaskAttribute.DATE_DUE); // changed |= hasChanges(task.getOwner(), TaskAttribute.USER_ASSIGNED); // changed |= hasChanges(task.getPriority(), TaskAttribute.PRIORITY); // changed |= hasChanges(task.getSummary(), TaskAttribute.SUMMARY); // changed |= hasChanges(task.getTaskKey(), TaskAttribute.TASK_KEY); // changed |= hasChanges(task.getTaskKind(), TaskAttribute.TASK_KIND); // changed |= hasChanges(task.getUrl(), TaskAttribute.TASK_URL); // return changed; // } // // private boolean hasChanges(Object value, String attributeKey) { // TaskData taskData = getTaskData(); // TaskAttribute attribute = taskData.getRoot().getMappedAttribute(attributeKey); // if (attribute != null) { // if (TaskAttribute.TYPE_BOOLEAN.equals(attribute.getMetaData().getType())) { // return areNotEquals(value, taskData.getAttributeMapper().getBooleanValue(attribute)); // } else if (TaskAttribute.TYPE_DATE.equals(attribute.getMetaData().getType())) { // return areNotEquals(value, taskData.getAttributeMapper().getDateValue(attribute)); // } else if (TaskAttribute.TYPE_INTEGER.equals(attribute.getMetaData().getType())) { // return areNotEquals(value, taskData.getAttributeMapper().getIntegerValue(attribute)); // } else if (TaskAttribute.PRIORITY.equals(attributeKey)) { // PriorityLevel priorityLevel = getPriorityLevel(); // return areNotEquals(value, (priorityLevel != null) ? priorityLevel.toString() : getPriority()); // } else if (TaskAttribute.TASK_KIND.equals(attributeKey)) { // return areNotEquals(value, getTaskKind()); // } else { // return areNotEquals(value, taskData.getAttributeMapper().getValue(attribute)); // } // } // return false; // } // // private boolean areNotEquals(Object existingProperty, Object newProperty) { // return (existingProperty != null) ? !existingProperty.equals(newProperty) : newProperty != null; // } @Override public PriorityLevel getPriorityLevel() { String priority = getPriority(); if (priority != null) { if (client != null) { TracPriority[] tracPriorities = client.getPriorities(); return TracRepositoryConnector.getTaskPriority(priority, tracPriorities); } else { return TracRepositoryConnector.getTaskPriority(priority); } } return null; } @Override public String getTaskKind() { String tracTaskKind = super.getTaskKind(); TaskKind taskKind = TaskKind.fromType(tracTaskKind); return (taskKind != null) ? taskKind.toString() : tracTaskKind; } }