Search in sources :

Example 1 with CalendarModelWrapper

use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.

the class GoogleCalendarService method exportCalendars.

private CalendarModelWrapper exportCalendars(Optional<PaginationInformation> pageInfo) throws IOException {
    Calendar.CalendarList.List listRequest = calendarClient.calendarList().list();
    if (pageInfo.isPresent()) {
        listRequest.setPageToken(((StringPaginationToken) pageInfo.get()).getId());
    }
    CalendarList listResult = listRequest.execute();
    List<CalendarModel> calendarModels = new ArrayList<>(listResult.getItems().size());
    List<Resource> resources = new ArrayList<>(listResult.getItems().size());
    for (CalendarListEntry calendarData : listResult.getItems()) {
        CalendarModel model = GoogleCalendarToModelConverter.convertToCalendarModel(calendarData);
        resources.add(new IdOnlyResource(calendarData.getId()));
        calendarModels.add(model);
    }
    PaginationInformation newPageInfo = null;
    if (listResult.getNextPageToken() != null) {
        newPageInfo = new StringPaginationToken(listResult.getNextPageToken());
    }
    return new CalendarModelWrapper(calendarModels, null, new ContinuationInformation(resources, newPageInfo));
}
Also used : ArrayList(java.util.ArrayList) Resource(org.dataportabilityproject.dataModels.Resource) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) CalendarModel(org.dataportabilityproject.dataModels.calendar.CalendarModel) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) CalendarListEntry(com.google.api.services.calendar.model.CalendarListEntry) ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) CalendarList(com.google.api.services.calendar.model.CalendarList) PaginationInformation(org.dataportabilityproject.dataModels.PaginationInformation) StringPaginationToken(org.dataportabilityproject.shared.StringPaginationToken)

Example 2 with CalendarModelWrapper

use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.

the class GoogleCalendarServiceTest method testExportCalendarFirstSet.

@Test
public void testExportCalendarFirstSet() throws IOException {
    setUpSingleCalendarResponse();
    // Looking at first page, with at least one page after it
    ExportInformation emptyExportInformation = new ExportInformation(Optional.empty(), Optional.empty());
    calendarListResponse.setNextPageToken(NEXT_TOKEN);
    // Run test
    CalendarModelWrapper wrapper = calendarService.export(emptyExportInformation);
    // Check results
    // Verify correct methods were called
    verify(calendarClient).calendarList();
    verify(calendarCalendarList).list();
    verify(calendarListRequest).execute();
    // Check pagination token
    StringPaginationToken paginationToken = (StringPaginationToken) wrapper.getContinuationInformation().getPaginationInformation();
    assertThat(paginationToken.getId()).isEqualTo(NEXT_TOKEN);
    // Check calendars
    Collection<CalendarModel> calendars = wrapper.getCalendars();
    assertThat(calendars.stream().map(CalendarModel::getId).collect(Collectors.toList())).containsExactly(CALENDAR_ID);
    // Check events (should be empty, even though there is an event in the calendar)
    Collection<CalendarEventModel> events = wrapper.getEvents();
    assertThat(events).isEmpty();
    // Should be one event in the resource list
    Collection<? extends Resource> subResources = wrapper.getContinuationInformation().getSubResources();
    assertThat(subResources.stream().map(a -> ((IdOnlyResource) a).getId()).collect(Collectors.toList())).containsExactly(CALENDAR_ID);
}
Also used : CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) Events(com.google.api.services.calendar.model.Events) InMemoryJobDataCache(org.dataportabilityproject.cloud.local.InMemoryJobDataCache) PaginationInformation(org.dataportabilityproject.dataModels.PaginationInformation) JobDataCache(org.dataportabilityproject.cloud.interfaces.JobDataCache) Calendar(com.google.api.services.calendar.Calendar) GoogleStaticObjects(org.dataportabilityproject.serviceProviders.google.GoogleStaticObjects) StringPaginationToken(org.dataportabilityproject.shared.StringPaginationToken) Before(org.junit.Before) Event(com.google.api.services.calendar.model.Event) InOrder(org.mockito.InOrder) Resource(org.dataportabilityproject.dataModels.Resource) ExportInformation(org.dataportabilityproject.dataModels.ExportInformation) CalendarList(com.google.api.services.calendar.model.CalendarList) Collection(java.util.Collection) CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) IOException(java.io.IOException) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) Truth.assertThat(com.google.common.truth.Truth.assertThat) Collectors(java.util.stream.Collectors) Mockito.verify(org.mockito.Mockito.verify) CalendarEventModel(org.dataportabilityproject.dataModels.calendar.CalendarEventModel) CalendarModel(org.dataportabilityproject.dataModels.calendar.CalendarModel) Mockito(org.mockito.Mockito) CalendarListEntry(com.google.api.services.calendar.model.CalendarListEntry) Optional(java.util.Optional) Collections(java.util.Collections) Mockito.mock(org.mockito.Mockito.mock) ExportInformation(org.dataportabilityproject.dataModels.ExportInformation) CalendarModel(org.dataportabilityproject.dataModels.calendar.CalendarModel) CalendarEventModel(org.dataportabilityproject.dataModels.calendar.CalendarEventModel) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) StringPaginationToken(org.dataportabilityproject.shared.StringPaginationToken) Test(org.junit.Test)

Example 3 with CalendarModelWrapper

use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.

the class GoogleCalendarServiceTest method importCalendarAndEvent.

@Test
public void importCalendarAndEvent() throws IOException {
    String modelCalendarId = "modelCalendarId";
    String googleCalendarId = "googleCalendarId";
    // Set up calendar, events, and mocks
    CalendarModel calendarModel = new CalendarModel(modelCalendarId, null, null);
    com.google.api.services.calendar.model.Calendar calendarToInsert = ModelToGoogleCalendarConverter.convertToGoogleCalendar(calendarModel);
    com.google.api.services.calendar.model.Calendar responseCalendar = new com.google.api.services.calendar.model.Calendar().setId(googleCalendarId);
    CalendarEventModel eventModel = new CalendarEventModel(modelCalendarId, null, null, null, null, null, null);
    Event eventToInsert = ModelToGoogleCalendarConverter.convertToGoogleCalendarEvent(eventModel);
    Event responseEvent = new Event();
    when(calendarInsertRequest.execute()).thenReturn(responseCalendar);
    when(calendarCalendars.insert(calendarToInsert)).thenReturn(calendarInsertRequest);
    when(eventInsertRequest.execute()).thenReturn(responseEvent);
    when(calendarEvents.insert(googleCalendarId, eventToInsert)).thenReturn(eventInsertRequest);
    CalendarModelWrapper wrapper = new CalendarModelWrapper(Collections.singleton(calendarModel), Collections.singleton(eventModel), null);
    // Run test
    calendarService.importItem(wrapper);
    // Check the right methods were called
    verify(calendarCalendars).insert(calendarToInsert);
    verify(calendarInsertRequest).execute();
    verify(calendarEvents).insert(googleCalendarId, eventToInsert);
    verify(eventInsertRequest).execute();
    // Check jobDataCache contents
    assertThat(jobDataCache.getData(modelCalendarId, String.class)).isEqualTo(googleCalendarId);
}
Also used : CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) CalendarModel(org.dataportabilityproject.dataModels.calendar.CalendarModel) Event(com.google.api.services.calendar.model.Event) CalendarEventModel(org.dataportabilityproject.dataModels.calendar.CalendarEventModel) Test(org.junit.Test)

Example 4 with CalendarModelWrapper

use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.

the class MicrosoftCalendarService method getCalendars.

private CalendarModelWrapper getCalendars(Optional<PaginationInformation> pageInfo) throws IOException {
    URL url = new URL("https://outlook.office.com/api/v2.0/me/calendars");
    HttpRequest getRequest = requestFactory.buildGetRequest(new GenericUrl(url));
    getRequest.setParser(new JsonObjectParser(new JacksonFactory()));
    HttpResponse response;
    try {
        response = getRequest.execute();
    } catch (HttpResponseException e) {
        logger.debug("Error fetching content");
        logger.debug("response status code: {}", e.getStatusCode());
        logger.debug("response status message: {}", e.getStatusMessage());
        logger.debug("response headers: {}", e.getHeaders());
        logger.debug("response content: {}", e.getContent());
        e.printStackTrace();
        throw e;
    }
    int statusCode = response.getStatusCode();
    if (statusCode != 200) {
        throw new IOException("Bad status code: " + statusCode + " error: " + response.getStatusMessage());
    }
    // Parse response into model
    OutlookCalendarList data = response.parseAs(OutlookCalendarList.class);
    List<CalendarModel> calendars = new ArrayList<>(data.list.size());
    List<Resource> resources = new ArrayList<>(data.list.size());
    for (OutlookCalendar calendar : data.list) {
        calendars.add(new CalendarModel(calendar.id, calendar.name, null));
        resources.add(new IdOnlyResource(calendar.id));
    }
    return new CalendarModelWrapper(calendars, null, new ContinuationInformation(resources, null));
}
Also used : HttpRequest(com.google.api.client.http.HttpRequest) ArrayList(java.util.ArrayList) Resource(org.dataportabilityproject.dataModels.Resource) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) HttpResponse(com.google.api.client.http.HttpResponse) CalendarModel(org.dataportabilityproject.dataModels.calendar.CalendarModel) HttpResponseException(com.google.api.client.http.HttpResponseException) GenericUrl(com.google.api.client.http.GenericUrl) IOException(java.io.IOException) IdOnlyResource(org.dataportabilityproject.shared.IdOnlyResource) JacksonFactory(com.google.api.client.json.jackson2.JacksonFactory) URL(java.net.URL) CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) JsonObjectParser(com.google.api.client.json.JsonObjectParser)

Example 5 with CalendarModelWrapper

use of org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper in project data-transfer-project by google.

the class GoogleCalendarService method getCalendarEvents.

private CalendarModelWrapper getCalendarEvents(String id, Optional<PaginationInformation> pageInfo) throws IOException {
    Calendar.Events.List listRequest = calendarClient.events().list(id).setMaxAttendees(100);
    if (pageInfo.isPresent()) {
        listRequest.setPageToken(((StringPaginationToken) pageInfo.get()).getId());
    }
    Events listResult = listRequest.execute();
    List<CalendarEventModel> results = new ArrayList<>(listResult.getItems().size());
    for (Event eventData : listResult.getItems()) {
        CalendarEventModel model = GoogleCalendarToModelConverter.convertToCalendarEventModel(id, eventData);
        results.add(model);
    }
    PaginationInformation newPageInfo = null;
    if (listResult.getNextPageToken() != null) {
        newPageInfo = new StringPaginationToken(listResult.getNextPageToken());
    }
    return new CalendarModelWrapper(null, results, new ContinuationInformation(null, newPageInfo));
}
Also used : CalendarModelWrapper(org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper) ContinuationInformation(org.dataportabilityproject.dataModels.ContinuationInformation) Events(com.google.api.services.calendar.model.Events) ArrayList(java.util.ArrayList) Event(com.google.api.services.calendar.model.Event) CalendarEventModel(org.dataportabilityproject.dataModels.calendar.CalendarEventModel) PaginationInformation(org.dataportabilityproject.dataModels.PaginationInformation) StringPaginationToken(org.dataportabilityproject.shared.StringPaginationToken)

Aggregations

CalendarModelWrapper (org.dataportabilityproject.dataModels.calendar.CalendarModelWrapper)8 StringPaginationToken (org.dataportabilityproject.shared.StringPaginationToken)6 Resource (org.dataportabilityproject.dataModels.Resource)5 IdOnlyResource (org.dataportabilityproject.shared.IdOnlyResource)5 Test (org.junit.Test)5 ExportInformation (org.dataportabilityproject.dataModels.ExportInformation)4 PaginationInformation (org.dataportabilityproject.dataModels.PaginationInformation)4 CalendarEventModel (org.dataportabilityproject.dataModels.calendar.CalendarEventModel)4 CalendarModel (org.dataportabilityproject.dataModels.calendar.CalendarModel)4 Event (com.google.api.services.calendar.model.Event)3 ArrayList (java.util.ArrayList)3 ContinuationInformation (org.dataportabilityproject.dataModels.ContinuationInformation)3 InOrder (org.mockito.InOrder)3 CalendarList (com.google.api.services.calendar.model.CalendarList)2 CalendarListEntry (com.google.api.services.calendar.model.CalendarListEntry)2 Events (com.google.api.services.calendar.model.Events)2 IOException (java.io.IOException)2 GenericUrl (com.google.api.client.http.GenericUrl)1 HttpRequest (com.google.api.client.http.HttpRequest)1 HttpResponse (com.google.api.client.http.HttpResponse)1