use of org.datatransferproject.types.common.models.tasks.TaskContainerResource in project data-transfer-project by google.
the class RememberTheMilkTasksExporter method exportTask.
private ExportResult exportTask(RememberTheMilkService service, IdOnlyContainerResource resource) {
String oldListId = resource.getId();
GetListResponse oldList = null;
try {
oldList = service.getList(oldListId);
} catch (IOException e) {
return new ExportResult(e);
}
List<TaskList> taskLists = oldList.tasks.list;
List<TaskModel> tasks = new ArrayList<>();
for (TaskList taskList : taskLists) {
if (taskList.taskseries != null) {
for (TaskSeries taskSeries : taskList.taskseries) {
// TODO: figure out what to do with notes
String notesStr = taskSeries.notes == null ? "" : taskSeries.notes.toString();
for (Task task : taskSeries.tasks) {
// TODO: How to handle case with multiple tasks in a series? Is this good enough?
Instant completedTime = null;
Instant dueTime = null;
if (task.completed != null && !Strings.isNullOrEmpty(task.completed)) {
completedTime = Instant.parse(task.completed);
}
if (task.due != null && !Strings.isNullOrEmpty(task.due)) {
dueTime = Instant.parse(task.due);
}
tasks.add(new TaskModel(oldListId, taskSeries.name, notesStr, completedTime, dueTime));
}
}
}
}
TaskContainerResource taskContainerResource = new TaskContainerResource(null, tasks);
// TODO: what do we do with pagination data?
return new ExportResult(ResultType.CONTINUE, taskContainerResource, null);
}
use of org.datatransferproject.types.common.models.tasks.TaskContainerResource 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.TaskContainerResource in project data-transfer-project by google.
the class GoogleTasksExporter method getTasks.
private ExportResult<TaskContainerResource> getTasks(Tasks tasksService, IdOnlyContainerResource resource, Optional<PaginationData> paginationData) throws IOException {
Tasks.TasksOperations.List query = tasksService.tasks().list(resource.getId()).setMaxResults(PAGE_SIZE);
if (paginationData.isPresent()) {
query.setPageToken(((StringPaginationToken) paginationData.get()).getToken());
}
com.google.api.services.tasks.model.Tasks result = query.execute();
List<TaskModel> newTasks = result.getItems().stream().map(t -> new TaskModel(resource.getId(), t.getTitle(), t.getNotes(), t.getCompleted() != null ? Instant.ofEpochMilli(t.getCompleted().getValue()) : null, t.getDue() != null ? Instant.ofEpochMilli(t.getDue().getValue()) : null)).collect(Collectors.toList());
PaginationData newPage = null;
ResultType resultType = ResultType.END;
if (result.getNextPageToken() != null) {
newPage = new StringPaginationToken(result.getNextPageToken());
resultType = ResultType.CONTINUE;
}
TaskContainerResource taskContainerResource = new TaskContainerResource(null, newTasks);
return new ExportResult<>(resultType, taskContainerResource, new ContinuationData(newPage));
}
use of org.datatransferproject.types.common.models.tasks.TaskContainerResource 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.TaskContainerResource 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);
}
Aggregations