/******************************************************************************* | |
* 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); | |
} | |
}; | |
} | |
} |