blob: e3ce04170cff54886663e88c367b48625bd5e379 [file] [log] [blame]
/***************************************************************************
* Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany.
* 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:
* Eike Stepper - initial API and implementation
**************************************************************************/
package org.eclipse.mylyn.internal.team.ui.templates;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.team.ui.AbstractCommitTemplateVariable;
/**
* @author Eike Stepper
* @author Mik Kersten
* @author Steffen Pingel
*/
// TODO refactor into extension point
public class CommitTemplateVariables {
// TODO refactor completion labels
private static final String LABEL_INCOMPLETE = "Incomplete";
private static final String LABEL_COMPLETE = "Complete";
private static String implode(List<String> list, String separator) {
if (list == null) {
return null;
}
StringBuilder builder = new StringBuilder();
for (String cc : list) {
if (builder.length() != 0) {
builder.append(separator);
}
builder.append(cc);
}
return builder.toString();
}
public static class ConnectorTaskPrefix extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
task.getConnectorKind());
if (connector != null) {
return connector.getTaskIdPrefix();
}
}
return null;
}
}
public static class RepositoryKind extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
return task.getConnectorKind();
}
return null;
}
}
public static class RepositoryUrl extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
return task.getRepositoryUrl();
}
return null;
}
}
public static class TaskProduct extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return taskMapping.getProduct();
}
return null;
}
}
public static class TaskAssignee extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return taskMapping.getOwner();
}
return null;
}
}
public static class TaskReporter extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return taskMapping.getReporter();
}
return null;
}
}
public static class TaskResolution extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return taskMapping.getResolution();
}
return null;
}
}
public static class TaskStatus extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
String status = taskMapping.getTaskStatus();
if (status != null) {
return status.toUpperCase(Locale.ENGLISH);
}
}
if (task != null) {
if (task.isCompleted()) {
return LABEL_COMPLETE;
} else {
return LABEL_INCOMPLETE;
}
}
return null;
}
}
public static class TaskCc extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
List<String> list = taskMapping.getCc();
return implode(list, ", ");
}
return null;
}
}
public static class TaskKeywords extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
List<String> list = getTaskMapping(task).getKeywords();
return implode(list, ", ");
}
return null;
}
}
public static class TaskLastModified extends CommitTemplateDate {
@Override
protected Date getDate(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return taskMapping.getModificationDate();
}
return null;
}
}
public static class TaskSummary extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
ITaskMapping taskMapping = getTaskMapping(task);
if (taskMapping != null) {
return getTaskMapping(task).getSummary();
}
return "";
}
}
public static class TaskDescription extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
return task.getSummary();
}
return "";
}
}
public static class TaskId extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
return task.getTaskId();
} else {
return null;
}
}
}
public static class TaskKey extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
if (task != null) {
String value = task.getTaskKey();
if (value == null) {
value = task.getTaskId();
}
return value;
} else {
return null;
}
}
}
public static class TaskNotes extends AbstractCommitTemplateVariable {
@SuppressWarnings("restriction")
@Override
public String getValue(ITask task) {
if (task instanceof AbstractTask) {
return ((AbstractTask) task).getNotes();
} else {
return "";
}
}
}
public static class TaskPriority extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
return task.getPriority();
}
}
public static class TaskType extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
return task.getTaskKind();
}
}
public static class TaskURL extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
return task.getUrl();
}
}
public static ITaskMapping getTaskMapping(ITask task) {
if (task != null) {
TaskData taskData;
try {
taskData = TasksUi.getTaskDataManager().getTaskData(task);
if (taskData != null) {
AbstractRepositoryConnector connector = TasksUi.getRepositoryManager().getRepositoryConnector(
task.getConnectorKind());
return connector.getTaskMapping(taskData);
}
} catch (CoreException e) {
// ignore
}
}
return null;
}
/**
* @author Eike Stepper
*/
public static class TaskCompletion extends CommitTemplateDate {
@Override
protected Date getDate(ITask task) {
return task.getCompletionDate();
}
}
/**
* @author Eike Stepper
*/
public static class TaskCreation extends CommitTemplateDate {
@Override
protected Date getDate(ITask task) {
return task.getCreationDate();
}
}
/**
* @author Eike Stepper
*/
public static class TaskReminder extends CommitTemplateDate {
@Override
protected Date getDate(ITask task) {
// TODO: Hide this field?
return ((AbstractTask) task).getScheduledForDate().getStartDate().getTime();
}
}
/**
* @author Eike Stepper
*/
private static abstract class CommitTemplateDate extends AbstractCommitTemplateVariable {
@Override
public String getValue(ITask task) {
java.util.Date date = getDate(task);
return formatDate(date);
}
protected String formatDate(java.util.Date date) {
return date.toString();
}
protected abstract java.util.Date getDate(ITask task);
}
}