package org.fluxtream.connectors.google_calendar;
import java.util.ArrayList;
import java.util.List;
import org.fluxtream.core.connectors.SharedConnectorFilter;
import org.fluxtream.core.domain.AbstractFacet;
import org.fluxtream.core.domain.SharedConnector;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Component;
/**
* User: candide
* Date: 27/02/14
* Time: 17:18
*/
@Component
public class GoogleCalendarSharedConnectorFilter implements SharedConnectorFilter {
@Override
public <T extends AbstractFacet> List<T> filterFacets(final SharedConnector sharedConnector, final List<T> facets) {
if (sharedConnector.filterJson==null)
return facets;
JSONObject json = JSONObject.fromObject(sharedConnector.filterJson);
final JSONArray calendars = json.getJSONArray("calendars");
List<String> sharedCalendarIds = new ArrayList<String>();
for (int i=0; i<calendars.size(); i++) {
JSONObject calendar = calendars.getJSONObject(i);
boolean shared = calendar.getBoolean("shared");
if (shared)
sharedCalendarIds.add(calendar.getString("id"));
}
List<T> filteredFacets = new ArrayList<T>();
for (T facet : facets) {
if (facet instanceof GoogleCalendarEventFacet) {
if(sharedCalendarIds.contains(((GoogleCalendarEventFacet)facet).calendarId))
filteredFacets.add(facet);
}
}
return filteredFacets;
}
}