package org.fluxtream.core.api; import java.util.ArrayList; import java.util.List; import org.fluxtream.core.auth.AuthHelper; import org.fluxtream.core.connectors.Connector; import org.fluxtream.core.connectors.ObjectType; import org.fluxtream.core.domain.AbstractFacet; import org.fluxtream.core.domain.AbstractRepeatableFacet; import org.fluxtream.core.domain.ApiKey; import org.fluxtream.core.metadata.AbstractTimespanMetadata; import org.fluxtream.core.mvc.models.TimeBoundariesModel; import org.fluxtream.core.services.ApiDataService; import org.fluxtream.core.services.BuddiesService; import org.fluxtream.core.services.GuestService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class CalendarDataHelper { @Autowired private ApiDataService apiDataService; @Autowired private GuestService guestService; @Autowired private BuddiesService buddiesService; /** * This is to let the client discard responses that are coming "too late" * */ TimeBoundariesModel getStartEndResponseBoundaries(AbstractTimespanMetadata dayMetadata) { TimeBoundariesModel tb = new TimeBoundariesModel(dayMetadata.start, dayMetadata.end); return tb; } public List<AbstractFacet> getFacets(Connector connector, ObjectType objectType, long guestId, List<String> dates, Long updatedSince) { List<AbstractFacet> facets = new ArrayList<AbstractFacet>(); try { if (AuthHelper.isViewingGranted(connector.getName(), guestId, buddiesService)) { final ApiKey apiKey = guestService.getApiKey(guestId, connector); facets = apiDataService.getApiDataFacets(apiKey, objectType, dates, updatedSince); facets = buddiesService.filterFacets(AuthHelper.getGuestId(), apiKey.getId(), facets); } } catch (Throwable t) { t.printStackTrace(); } return facets; } public List<AbstractFacet> getFacets(Connector connector, ObjectType objectType, long guestId, AbstractTimespanMetadata timespanMetadata, Long updatedSince) { List<AbstractFacet> facets = new ArrayList<AbstractFacet>(); try { if (AuthHelper.isViewingGranted(connector.getName(), guestId, buddiesService)) { final ApiKey apiKey = guestService.getApiKey(guestId, connector); facets = apiDataService.getApiDataFacets(apiKey, objectType, timespanMetadata.getTimeInterval(), updatedSince); facets = buddiesService.filterFacets(AuthHelper.getGuestId(), apiKey.getId(), facets); } } catch (Throwable t) { t.printStackTrace(); } return facets; } public List<AbstractRepeatableFacet> getFacets(final Connector connector, final ObjectType objectType, final long guestId, final String startDate, final String endDate, Long updatedSince) { List<AbstractRepeatableFacet> facets = new ArrayList<AbstractRepeatableFacet>(); try { if (AuthHelper.isViewingGranted(connector.getName(), guestId, buddiesService)) { final ApiKey apiKey = guestService.getApiKey(guestId, connector); facets = apiDataService.getApiDataFacets(apiKey, objectType, startDate, endDate, updatedSince); facets = buddiesService.filterFacets(AuthHelper.getGuestId(), apiKey.getId(), facets); } } catch (Throwable t) { t.printStackTrace(); } return facets; } }