blob: e090f6e497c1c351db66e9d66da4adbee66a4580 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 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.internal.tasks.index.tests.util;
import java.util.Date;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.ITaskMapping;
import org.eclipse.mylyn.tasks.core.RepositoryResponse;
import org.eclipse.mylyn.tasks.core.RepositoryResponse.ResponseKind;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskDataHandler;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.data.TaskMapper;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
/**
* @author David Green
*/
public class FullMockRepositoryConnector extends MockRepositoryConnector {
private final AtomicInteger idSeed = new AtomicInteger(9000);
@Override
public boolean hasTaskChanged(TaskRepository taskRepository, ITask task, TaskData taskData) {
ITaskMapping taskMapping = getTaskMapping(taskData);
Date modificationDate = taskMapping.getModificationDate();
return modificationDate != null && !modificationDate.equals(task.getModificationDate());
}
@Override
public TaskMapper getTaskMapping(TaskData taskData) {
return new TaskMapper(taskData, true);
}
@Override
public void updateTaskFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {
final Date originalModificationDate = task.getModificationDate();
TaskMapper taskMapping = getTaskMapping(taskData);
taskMapping.applyTo(task);
if (taskData.isPartial()) {
task.setModificationDate(originalModificationDate);
}
}
@Override
public AbstractTaskDataHandler getTaskDataHandler() {
return new AbstractTaskDataHandler() {
@Override
public RepositoryResponse postTaskData(TaskRepository repository, TaskData taskData,
Set<TaskAttribute> oldAttributes, IProgressMonitor monitor) throws CoreException {
if (taskData.getTaskId() == null || taskData.getTaskId().length() == 0) {
return new RepositoryResponse(ResponseKind.TASK_UPDATED, String.valueOf(idSeed.incrementAndGet()));
} else {
return new RepositoryResponse(ResponseKind.TASK_UPDATED, taskData.getTaskId());
}
}
@Override
public boolean initializeTaskData(TaskRepository repository, TaskData data,
ITaskMapping initializationData, IProgressMonitor monitor) throws CoreException {
TaskMapper mapper = getTaskMapping(data);
mapper.setCreationDate(new Date());
mapper.setDescription("");
mapper.setModificationDate(mapper.getCreationDate());
mapper.setOwner("");
mapper.setProduct("Product1");
mapper.setReporter("");
mapper.setStatus("NEW");
mapper.setSummary("");
return false;
}
@Override
public TaskAttributeMapper getAttributeMapper(TaskRepository repository) {
return new TaskAttributeMapper(repository);
}
};
}
}