/*******************************************************************************
* Copyright (c) 2004, 2013 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.tests.connector;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskMigrationEvent;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentHandler;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.data.TaskDataCollector;
import org.eclipse.mylyn.tasks.core.sync.ISynchronizationSession;
import org.eclipse.mylyn.tasks.ui.TasksUi;
/**
* @author Mik Kersten
* @author Rob Elves
* @author Shawn Minto
* @author Steffen Pingel
*/
public class MockRepositoryConnector extends AbstractRepositoryConnector {
public static final String CONNECTOR_KIND = "mock";
/**
* @deprecated Use {@link #CONNECTOR_KIND} instead
*/
// TODO 3.5 remove
@Deprecated
public static final String REPOSITORY_KIND = CONNECTOR_KIND;
public static final String REPOSITORY_URL = "http://mockrepository.test";
public static MockRepositoryConnector getDefault() {
return (MockRepositoryConnector) TasksUi.getRepositoryConnector(CONNECTOR_KIND);
}
private AbstractTaskAttachmentHandler attachmentHandler;
private boolean canQuery;
private boolean canCreateNewTask;
private boolean canCreateTaskFromKey;
private boolean hasLocalCompletionState;
private String taskIdPrefix = "task";
private TaskMigrationEvent taskMigrationEvent;
public MockRepositoryConnector() {
resetDefaults();
}
public void resetDefaults() {
canQuery = false;
canCreateNewTask = false;
canCreateTaskFromKey = false;
hasLocalCompletionState = false;
}
public void setCanCreateNewTask(boolean canCreateNewTask) {
this.canCreateNewTask = canCreateNewTask;
}
public void setCanCreateTaskFromKey(boolean canCreateTaskFromKey) {
this.canCreateTaskFromKey = canCreateTaskFromKey;
}
public void setCanQuery(boolean canQuery) {
this.canQuery = canQuery;
}
public void setHasLocalCompletionState(boolean hasLocalCompletionState) {
this.hasLocalCompletionState = hasLocalCompletionState;
}
@Override
public boolean canQuery(TaskRepository repository) {
return canQuery;
}
@Override
public boolean canCreateNewTask(TaskRepository repository) {
return canCreateNewTask;
}
@Override
public boolean canCreateTaskFromKey(TaskRepository repository) {
return canCreateTaskFromKey;
}
@Override
public String getLabel() {
return "Mock Repository (for unit tests)";
}
@Override
public String getConnectorKind() {
return CONNECTOR_KIND;
}
@Override
public String getRepositoryUrlFromTaskUrl(String url) {
// ignore
return null;
}
@Override
public String getTaskIdFromTaskUrl(String url) {
// ignore
return null;
}
@Override
public String getTaskUrl(String repositoryUrl, String taskId) {
return null;
}
@Override
public void updateRepositoryConfiguration(TaskRepository repository, IProgressMonitor monitor) throws CoreException {
// ignore
}
@Override
public IStatus performQuery(TaskRepository repository, IRepositoryQuery query, TaskDataCollector resultCollector,
ISynchronizationSession event, IProgressMonitor monitor) {
return Status.OK_STATUS;
}
@Override
public AbstractTaskAttachmentHandler getTaskAttachmentHandler() {
return attachmentHandler;
}
public void setTaskAttachmentHandler(MockAttachmentHandler attachmentHandler) {
this.attachmentHandler = attachmentHandler;
}
@Override
public TaskData getTaskData(TaskRepository taskRepository, String taskId, IProgressMonitor monitor)
throws CoreException {
return null;
}
@Override
public boolean hasTaskChanged(TaskRepository taskRepository, ITask task, TaskData taskData) {
boolean result = false;
TaskAttribute summery = taskData.getRoot().getAttribute(TaskAttribute.SUMMARY);
result = summery != null ? !task.getSummary().equals(summery.getValue()) : false;
if (result) {
return result;
}
TaskAttribute version = taskData.getRoot().getAttribute(TaskAttribute.VERSION);
return version != null ? !version.getValue().equals(task.getAttribute(TaskAttribute.VERSION)) : false;
}
@Override
public boolean hasLocalCompletionState(TaskRepository taskRepository, ITask task) {
return hasLocalCompletionState;
}
@Override
public void updateTaskFromTaskData(TaskRepository taskRepository, ITask task, TaskData taskData) {
TaskAttribute summery = taskData.getRoot().getAttribute(TaskAttribute.SUMMARY);
if (summery != null) {
task.setSummary(summery.getValue());
}
TaskAttribute version = taskData.getRoot().getAttribute(TaskAttribute.VERSION);
if (version != null) {
task.setAttribute(TaskAttribute.VERSION, version.getValue());
}
}
// @Override
// public Set<RepositoryTemplate> getTemplates() {
// Set<RepositoryTemplate> templates = new HashSet<RepositoryTemplate>();
// RepositoryTemplate template = new RepositoryTemplate("Mock Template", REPOSITORY_URL, "utf-8", "1", "new",
// "prefix", "query", "newAccountUrl", false, true);
// templates.add(template);
// return templates;
// }
@Override
public String getTaskIdPrefix() {
return taskIdPrefix;
}
public void setTaskIdPrefix(String taskIdPrefix) {
this.taskIdPrefix = taskIdPrefix;
}
@Override
public void migrateTask(TaskMigrationEvent event) {
this.taskMigrationEvent = event;
}
public TaskMigrationEvent getTaskMigrationEvent() {
return taskMigrationEvent;
}
public void setTaskMigrationEvent(TaskMigrationEvent taskMigrationEvent) {
this.taskMigrationEvent = taskMigrationEvent;
}
}