use of org.datatransferproject.types.common.models.tasks.TaskListModel in project data-transfer-project by google.
the class RememberTheMilkTasksExporter method exportTaskList.
private ExportResult exportTaskList(RememberTheMilkService service) {
List<TaskListModel> lists = new ArrayList<>();
List<IdOnlyContainerResource> subResources = new ArrayList<>();
List<ListInfo> listInfoList;
try {
listInfoList = service.getLists().lists;
} catch (IOException e) {
return new ExportResult(e);
}
for (ListInfo oldListInfo : listInfoList) {
if (oldListInfo.name.equals("All Tasks")) {
// All Tasks is a special list that contains everything, don't copy that over
continue;
}
lists.add(new TaskListModel(Integer.toString(oldListInfo.id), oldListInfo.name));
subResources.add(new IdOnlyContainerResource(Integer.toString(oldListInfo.id)));
}
TaskContainerResource taskContainerResource = new TaskContainerResource(lists, null);
ContinuationData continuationData = new ContinuationData(null);
subResources.forEach(continuationData::addContainerResource);
// TODO: what do we do with pagination data?
return new ExportResult(ResultType.CONTINUE, taskContainerResource, continuationData);
}
use of org.datatransferproject.types.common.models.tasks.TaskListModel in project data-transfer-project by google.
the class GoogleTasksExporter method getTasksList.
private ExportResult<TaskContainerResource> getTasksList(Tasks tasksService, Optional<PaginationData> paginationData) throws IOException {
Tasks.Tasklists.List query = tasksService.tasklists().list().setMaxResults(PAGE_SIZE);
if (paginationData.isPresent()) {
query.setPageToken(((StringPaginationToken) paginationData.get()).getToken());
}
TaskLists result = query.execute();
ImmutableList.Builder<TaskListModel> newTaskListsBuilder = ImmutableList.builder();
ImmutableList.Builder<IdOnlyContainerResource> newResourcesBuilder = ImmutableList.builder();
for (TaskList taskList : result.getItems()) {
newTaskListsBuilder.add(new TaskListModel(taskList.getId(), taskList.getTitle()));
newResourcesBuilder.add(new IdOnlyContainerResource(taskList.getId()));
}
PaginationData newPage = null;
ResultType resultType = ResultType.END;
if (result.getNextPageToken() != null) {
newPage = new StringPaginationToken(result.getNextPageToken());
resultType = ResultType.CONTINUE;
}
List<IdOnlyContainerResource> newResources = newResourcesBuilder.build();
if (!newResources.isEmpty()) {
resultType = ResultType.CONTINUE;
}
TaskContainerResource taskContainerResource = new TaskContainerResource(newTaskListsBuilder.build(), null);
ContinuationData continuationData = new ContinuationData(newPage);
newResourcesBuilder.build().forEach(continuationData::addContainerResource);
return new ExportResult<>(resultType, taskContainerResource, continuationData);
}
use of org.datatransferproject.types.common.models.tasks.TaskListModel in project data-transfer-project by google.
the class TaskContainerResourceTest method verifySerializeDeserialize.
@Test
public void verifySerializeDeserialize() throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
objectMapper.registerSubtypes(TaskContainerResource.class);
List<TaskListModel> taskLists = ImmutableList.of(new TaskListModel("id1", "List 1"));
List<TaskModel> tasks = ImmutableList.of(new TaskModel("id1", "Write Better tests", "Do this soon", null, null), new TaskModel("id2", "Liberate all the data", "do this in stages", null, null));
ContainerResource data = new TaskContainerResource(taskLists, tasks);
String serialized = objectMapper.writeValueAsString(data);
ContainerResource deserializedModel = objectMapper.readValue(serialized, ContainerResource.class);
Truth.assertThat(deserializedModel).isNotNull();
Truth.assertThat(deserializedModel).isInstanceOf(TaskContainerResource.class);
TaskContainerResource deserialized = (TaskContainerResource) deserializedModel;
Truth.assertThat(deserialized.getLists()).hasSize(1);
Truth.assertThat(deserialized.getTasks()).hasSize(2);
Truth.assertThat(deserialized).isEqualTo(data);
}
use of org.datatransferproject.types.common.models.tasks.TaskListModel in project data-transfer-project by google.
the class RememberTheMilkTasksImporter method importItem.
@Override
public ImportResult importItem(UUID jobId, IdempotentImportExecutor idempotentExecutor, AuthData authData, TaskContainerResource data) {
String timeline;
try {
RememberTheMilkService service = getOrCreateService(authData);
timeline = service.createTimeline();
for (TaskListModel taskList : data.getLists()) {
idempotentExecutor.executeAndSwallowIOExceptions(taskList.getId(), taskList.getName(), () -> service.createTaskList(taskList.getName(), timeline).id);
}
for (TaskModel task : data.getTasks()) {
// Empty or blank tasks aren't valid in RTM
if (!Strings.isNullOrEmpty(task.getText())) {
idempotentExecutor.executeAndSwallowIOExceptions(Integer.toString(task.hashCode()), task.getText(), () -> {
String newList = idempotentExecutor.getCachedValue(task.getTaskListId());
return insertTask(task, newList, timeline);
});
}
}
} catch (Exception e) {
monitor.severe(() -> "Error importing item", e);
return new ImportResult(e);
}
return new ImportResult(ImportResult.ResultType.OK);
}
use of org.datatransferproject.types.common.models.tasks.TaskListModel in project data-transfer-project by google.
the class GoogleTasksImporter method importItem.
@Override
public ImportResult importItem(UUID jobId, IdempotentImportExecutor idempotentImportExecutor, TokensAndUrlAuthData authData, TaskContainerResource data) throws Exception {
Tasks tasksService = getOrCreateTasksService(authData);
for (TaskListModel oldTasksList : data.getLists()) {
TaskList newTaskList = new TaskList().setTitle("Imported copy - " + oldTasksList.getName());
idempotentImportExecutor.executeAndSwallowIOExceptions(oldTasksList.getId(), oldTasksList.getName(), () -> tasksService.tasklists().insert(newTaskList).execute().getId());
}
for (TaskModel oldTask : data.getTasks()) {
Task newTask = new Task().setTitle(oldTask.getText()).setNotes(oldTask.getNotes());
if (oldTask.getCompletedTime() != null) {
newTask.setCompleted(new DateTime(oldTask.getCompletedTime().toEpochMilli()));
}
if (oldTask.getDueTime() != null) {
newTask.setDue(new DateTime(oldTask.getDueTime().toEpochMilli()));
}
// If its not cached that means the task list create failed.
if (idempotentImportExecutor.isKeyCached(oldTask.getTaskListId())) {
String newTaskListId = idempotentImportExecutor.getCachedValue(oldTask.getTaskListId());
idempotentImportExecutor.executeAndSwallowIOExceptions(oldTask.getTaskListId() + oldTask.getText(), oldTask.getText(), () -> tasksService.tasks().insert(newTaskListId, newTask).execute().getId());
}
}
return new ImportResult(ResultType.OK);
}
Aggregations