Skip to content

Instantly share code, notes, and snippets.

@kmdupr33
Created May 1, 2015 11:14
Show Gist options
  • Save kmdupr33/8dd6bc35033415c7f383 to your computer and use it in GitHub Desktop.
Save kmdupr33/8dd6bc35033415c7f383 to your computer and use it in GitHub Desktop.
public class SessionCalendarUpdater {
//...
private SessionCalendarDatabase mSessionCalendarDatabase;
private SessionCalendarUserPreferences mSessionCalendarUserPreferences;
public SessionCalendarUpdater(SessionCalendarDatabase sessionCalendarDatabase,
SessionCalendarUserPreferences sessionCalendarUserPreferences) {
mSessionCalendarDatabase = sessionCalendarDatabase;
mSessionCalendarUserPreferences = sessionCalendarUserPreferences;
}
public void updateCalendar(CalendarUpdateRequest calendarUpdateRequest) {
boolean isAddEvent = false;
String action = calendarUpdateRequest.getAction();
long calendarId = calendarUpdateRequest.getCalendarId();
if (ACTION_ADD_SESSION_CALENDAR.equals(action)) {
isAddEvent = true;
} else if (ACTION_REMOVE_SESSION_CALENDAR.equals(action)) {
isAddEvent = false;
} else if (ACTION_UPDATE_ALL_SESSIONS_CALENDAR.equals(action)
&& mSessionCalendarUserPreferences.shouldSyncCalendar()) {
try {
mSessionCalendarDatabase.updateAllSessions(calendarId);
} catch (RemoteException | OperationApplicationException e) {
LOGE(TAG, "Error adding all sessions to Google Calendar", e);
}
} else if (ACTION_CLEAR_ALL_SESSIONS_CALENDAR.equals(action)) {
try {
mSessionCalendarDatabase.clearAllSessions(calendarId);
} catch (RemoteException | OperationApplicationException e) {
LOGE(TAG, "Error clearing all sessions from Google Calendar", e);
}
} else {
return;
}
if (!shouldUpdateCalendarSession(calendarUpdateRequest, mSessionCalendarUserPreferences)) {
return;
}
try {
CalendarSession calendarSessionToUpdate = calendarUpdateRequest.getCalendarSessionToUpdate();
if (isAddEvent) {
mSessionCalendarDatabase.addCalendarSession(calendarId, calendarSessionToUpdate);
} else {
mSessionCalendarDatabase.removeCalendarSession(calendarId, calendarSessionToUpdate);
}
} catch (RemoteException | OperationApplicationException e) {
LOGE(TAG, "Error adding session to Google Calendar", e);
}
}
private boolean shouldUpdateCalendarSession(CalendarUpdateRequest calendarUpdateRequest,
SessionCalendarUserPreferences sessionCalendarUserPreferences) {
return calendarUpdateRequest.getCalendarSessionToUpdate() == null || !sessionCalendarUserPreferences.shouldSyncCalendar();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment