package org.fluxtream.core.services;
import java.util.List;
import java.util.TimeZone;
import java.util.TreeSet;
import org.fluxtream.core.connectors.location.LocationFacet;
import org.fluxtream.core.domain.metadata.City;
import org.fluxtream.core.domain.metadata.FoursquareVenue;
import org.fluxtream.core.domain.metadata.VisitedCity;
import org.fluxtream.core.domain.metadata.WeatherInfo;
import org.fluxtream.core.metadata.ArbitraryTimespanMetadata;
import org.fluxtream.core.metadata.DayMetadata;
import org.fluxtream.core.metadata.MonthMetadata;
import org.fluxtream.core.metadata.WeekMetadata;
import net.sf.json.JSONObject;
import org.springframework.transaction.annotation.Transactional;
public interface MetadataService {
void setTimeZone(long guestId, String date, String timeZone);
void resetDayMainCity(long guestId, String date);
void setDayMainCity(long guestId, float latitude, float longitude, String date);
void setDayMainCity(long guestId, long visitedCityId, String date);
TimeZone getCurrentTimeZone(long guestId);
TimeZone getTimeZone(long guestId, long time);
TimeZone getTimeZone(long guestId, String date);
ArbitraryTimespanMetadata getArbitraryTimespanMetadata(long guestId, long start, long end);
DayMetadata getDayMetadata(long guestId, String date);
WeekMetadata getWeekMetadata(long guestId, int year, int week);
MonthMetadata getMonthMetadata(long guestId, int year, int month);
List<DayMetadata> getAllDayMetadata(long guestId);
LocationFacet getLastLocation(long guestId, long time);
TimeZone getTimeZone(double latitude, double longitude);
public City getClosestCity(double latitude, double longitude);
List<City> getClosestCities(double latitude, double longitude,
double dist);
List<WeatherInfo> getWeatherInfo(double latitude, double longitude,
String date);
public void rebuildMetadata(String username);
public void updateLocationMetadata(long guestId, List<LocationFacet> locationResources);
public FoursquareVenue getFoursquareVenue(String venueId);
public TreeSet<String> getDatesForWeek(final int year, final int week);
public TreeSet<String> getDatesForMonth(final int year, final int month);
public List<VisitedCity> getConsensusCities(final long guestId, final TreeSet<String> dates);
@Transactional(readOnly=false)
JSONObject getFoursquareVenueJSON(String venueId);
}