Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.test.balance; import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; 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.javanet.GoogleNetHttpTransport; 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.store.FileDataStoreFactory; import com.google.api.services.calendar.CalendarScopes; import com.google.api.services.calendar.model.Event; import com.google.api.services.calendar.model.Events; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; /** * * @author justin */ @ManagedBean(name = "EventMB") @RequestScoped public class EventMB { //private Object[] event; private List<Object[]> eventsList; private Object[] event; /** * Creates a new instance of NewJSFManagedBean */ public EventMB() { this.eventsList = new ArrayList<Object[]>(); } /** Application name. */ private static final String APPLICATION_NAME = "Google Calendar API Java Quickstart"; /** Directory to store user credentials for this application. */ private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".credentials/calendar-java-quickstart"); /** Global instance of the {@link FileDataStoreFactory}. */ private static FileDataStoreFactory DATA_STORE_FACTORY; /** Global instance of the JSON factory. */ private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); /** Global instance of the HTTP transport. */ private static HttpTransport HTTP_TRANSPORT; /** Global instance of the scopes required by this quickstart. */ private static final List<String> SCOPES = Arrays.asList(CalendarScopes.CALENDAR_READONLY); static { try { HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } } @PostConstruct public void initPage() { this.eventsList.clear(); try { listAllEvents(); } catch (IOException ex) { Logger.getLogger(EventMB.class.getName()).log(Level.SEVERE, null, ex); } catch (ParseException ex) { Logger.getLogger(EventMB.class.getName()).log(Level.SEVERE, null, ex); } } public static Credential authorize() throws IOException { // Load client secrets. InputStream in = EventMB.class.getResourceAsStream("client_secret.json"); GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES).setDataStoreFactory(DATA_STORE_FACTORY).setAccessType("offline").build(); Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()) .authorize("user"); System.out.println("Credentials saved to " + DATA_STORE_DIR.getAbsolutePath()); return credential; } public void listAllEvents() throws IOException, ParseException { List<String[]> myList = new ArrayList<String[]>(); eventsList = new ArrayList<Object[]>(); com.google.api.services.calendar.Calendar service = getCalendarService(); // List the next 10 events from the primary calendar. DateTime now = new DateTime(System.currentTimeMillis()); Events events = service.events().list("primary").setMaxResults(20).setTimeMin(now).setOrderBy("startTime") .setSingleEvents(true).execute(); List<Event> items = events.getItems(); for (Event e : items) { System.out.println(e.getSummary() + " , " + e.getStart()); } if (items.size() == 0) { System.out.println("No upcoming events found."); } else { System.out.println("Upcoming events"); for (Event event : items) { DateTime start = event.getStart().getDateTime(); if (start == null) { start = event.getStart().getDate(); } String today = new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()); String startString = new SimpleDateFormat("MM/dd/yyyy") .format(new SimpleDateFormat("yyyy-MM-dd").parse(start.toString().substring(0, 10))); Object[] eventArray = new Object[2]; eventArray[0] = event.getSummary(); eventArray[1] = start.toString().equals(today) ? "Today" : startString; eventsList.add(eventArray); } } } public static com.google.api.services.calendar.Calendar getCalendarService() throws IOException { Credential credential = authorize(); return new com.google.api.services.calendar.Calendar.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); } public List<Object[]> getEventsList() { return eventsList; } public void setEventsList(List<Object[]> eventsList) { this.eventsList = eventsList; } public Object[] getEvent() { return event; } public void setEvent(Object[] event) { this.event = event; } }