Package fr.imag.adele.apam.app.calme

Source Code of fr.imag.adele.apam.app.calme.CalManager

package fr.imag.adele.apam.app.calme;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.java6.auth.oauth2.FileCredentialStore;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.batch.BatchRequest;
import com.google.api.client.googleapis.batch.json.JsonBatchCallback;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.client.http.HttpHeaders;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.DateTime;
import com.google.api.client.util.Lists;
import com.google.api.services.calendar.CalendarScopes;
import com.google.api.services.calendar.model.Calendar;
import com.google.api.services.calendar.model.CalendarList;
import com.google.api.services.calendar.model.CalendarListEntry;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.EventDateTime;
import com.google.api.services.calendar.model.Events;

import fr.imag.adele.apam.app.calme.api.CalendarManager;

public class CalManager implements CalendarManager {

    /**
     * Be sure to specify the name of your application. If the application name is {@code null} or
     * blank, the application will log a warning. Suggested format is "MyCompany-ProductName/1.0".
     */
    private static final String APPLICATION_NAME = "calendar coat";
   
    /** Global instance of the HTTP transport. */
    private static HttpTransport HTTP_TRANSPORT;

    /** Global instance of the JSON factory. */
    private static final JsonFactory JSON_FACTORY = new JacksonFactory();

    private static com.google.api.services.calendar.Calendar client;

    static final java.util.List<Calendar> addedCalendarsUsingBatch = Lists.newArrayList();

    /** Authorizes the installed application to access user's protected data. */
    private static Credential authorize() throws Exception {
      // load client secrets
      GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
          JSON_FACTORY, CalManager.class.getResourceAsStream("/client_secrets.json"));
      if (clientSecrets.getDetails().getClientId().startsWith("Enter")
          || clientSecrets.getDetails().getClientSecret().startsWith("Enter ")) {
        System.out.println(
            "Enter Client ID and Secret from https://code.google.com/apis/console/?api=calendar "
            + "into calendar-cmdline-sample/src/main/resources/client_secrets.json");
        System.exit(1);
      }
      // set up file credential store
      FileCredentialStore credentialStore = new FileCredentialStore(
          new File(System.getProperty("user.home"), ".credentials/calendar.json"), JSON_FACTORY);
      // set up authorization code flow
      GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
          HTTP_TRANSPORT, JSON_FACTORY, clientSecrets,
          Collections.singleton(CalendarScopes.CALENDAR)).setCredentialStore(credentialStore).build();
      // authorize
      return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
    }

    public void start(){
      System.out.println("starting calendar manager!");
      new CalManager().main(new String[]{});
     
    }
   
    public void stop(){
      System.out.println("stopping calendar manager!");
    }
   
    public static void main(String[] args) {
      try {
        try {
          HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
          // authorization
          Credential credential = authorize();

          // set up global Calendar instance
          client = new com.google.api.services.calendar.Calendar.Builder(
              HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(
              APPLICATION_NAME).build();
          // run commands
          showCalendars();
//          addCalendarsUsingBatch();
//          Calendar calendar = addCalendar();
//          updateCalendar(calendar);
//          addEvent(calendar);
//          showEvents(calendar);
//          deleteCalendarsUsingBatch();
//          deleteCalendar(calendar);

        } catch (IOException e) {
          System.err.println(e.getMessage());
        }
      } catch (Throwable t) {
        t.printStackTrace();
      }
      //System.exit(1);
    }

    private static void showCalendars() throws IOException {
      View.header("Show Calendars");
      CalendarList feed = client.calendarList().list().execute();
      View.display(feed);
    }

    private static void addCalendarsUsingBatch() throws IOException {
      View.header("Add Calendars using Batch");
      BatchRequest batch = client.batch();

      // Create the callback.
      JsonBatchCallback<Calendar> callback = new JsonBatchCallback<Calendar>() {

        @Override
        public void onSuccess(Calendar calendar, HttpHeaders responseHeaders) {
          View.display(calendar);
          addedCalendarsUsingBatch.add(calendar);
        }

        @Override
        public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
          System.out.println("Error Message: " + e.getMessage());
        }
      };

      // Create 2 Calendar Entries to insert.
      Calendar entry1 = new Calendar().setSummary("Calendar for Testing 1");
      client.calendars().insert(entry1).queue(batch, callback);

      Calendar entry2 = new Calendar().setSummary("Calendar for Testing 2");
      client.calendars().insert(entry2).queue(batch, callback);

      batch.execute();
    }

    private static Calendar addCalendar() throws IOException {
      View.header("Add Calendar");
      Calendar entry = new Calendar();
      entry.setSummary("Calendar for Testing 3");
      Calendar result = client.calendars().insert(entry).execute();
      View.display(result);
      return result;
    }

    private static Calendar updateCalendar(Calendar calendar) throws IOException {
      View.header("Update Calendar");
      Calendar entry = new Calendar();
      entry.setSummary("Updated Calendar for Testing");
      Calendar result = client.calendars().patch(calendar.getId(), entry).execute();
      View.display(result);
      return result;
    }


    private static void addEvent(Calendar calendar) throws IOException {
      View.header("Add Event");
      Event event = newEvent();
      Event result = client.events().insert(calendar.getId(), event).execute();
      View.display(result);
    }

    private static Event newEvent() {
      Event event = new Event();
      event.setSummary("New Event");
      Date startDate = new Date();
      Date endDate = new Date(startDate.getTime() + 3600000);
      DateTime start = new DateTime(startDate, TimeZone.getTimeZone("UTC"));
      event.setStart(new EventDateTime().setDateTime(start));
      DateTime end = new DateTime(endDate, TimeZone.getTimeZone("UTC"));
      event.setEnd(new EventDateTime().setDateTime(end));
      return event;
    }

    private static void showEvents(Calendar calendar) throws IOException {
      View.header("Show Events");
      Events feed = client.events().list(calendar.getId()).execute();
      View.display(feed);
    }

    private static void deleteCalendarsUsingBatch() throws IOException {
      View.header("Delete Calendars Using Batch");
      BatchRequest batch = client.batch();
      for (Calendar calendar : addedCalendarsUsingBatch) {
        client.calendars().delete(calendar.getId()).queue(batch, new JsonBatchCallback<Void>() {

          @Override
          public void onSuccess(Void content, HttpHeaders responseHeaders) {
            System.out.println("Delete is successful!");
          }

          @Override
          public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
            System.out.println("Error Message: " + e.getMessage());
          }
        });
      }

      batch.execute();
    }

    private static void deleteCalendar(Calendar calendar) throws IOException {
      View.header("Delete Calendar");
      client.calendars().delete(calendar.getId()).execute();
    }

  @Override
  public List<fr.imag.adele.apam.app.calme.api.ApamCalendar> getCalendars() {

    try {
      return adaptCalendarList(client.calendarList().list().execute());
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
   
    return null;
   
  }
 
  private List<fr.imag.adele.apam.app.calme.api.ApamCalendar> adaptCalendarList(CalendarList calendargoogle){
    ArrayList<fr.imag.adele.apam.app.calme.api.ApamCalendar> calendars=new ArrayList<fr.imag.adele.apam.app.calme.api.ApamCalendar>();
   
    for(CalendarListEntry calendarListEntryGoogle:calendargoogle.getItems()){
      calendars.add(new fr.imag.adele.apam.app.calme.api.ApamCalendar(calendarListEntryGoogle.getId(),calendarListEntryGoogle.getSummary()));
    }
   
    return calendars;
   
  }
 
  }
TOP

Related Classes of fr.imag.adele.apam.app.calme.CalManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.