Projects >> fluxtream-app >>4e1596bdcd563329776f45bef7fb4abcd32186e2

Chunk
Conflicting content
import java.util.List;
import java.util.TimeZone;
<<<<<<< HEAD
import java.util.TreeSet;
import com.fluxtream.connectors.location.LocationFacet;
import com.fluxtream.domain.metadata.City;
import com.fluxtream.domain.metadata.FoursquareVenue;
=======
import com.fluxtream.connectors.location.LocationFacet;
import com.fluxtream.domain.metadata.City;
import com.fluxtream.domain.metadata.DayMetadataFacet;
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
import com.fluxtream.domain.metadata.WeatherInfo;
import com.fluxtream.metadata.DayMetadata;
import com.fluxtream.metadata.MonthMetadata;
Solution content
import java.util.List;
import java.util.TimeZone;
import java.util.TreeSet;
import com.fluxtream.connectors.location.LocationFacet;
import com.fluxtream.domain.metadata.City;
import com.fluxtream.domain.metadata.FoursquareVenue;
import com.fluxtream.domain.metadata.WeatherInfo;
import com.fluxtream.metadata.DayMetadata;
import com.fluxtream.metadata.MonthMetadata;
File
MetadataService.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
=======
	TimeZone getTimeZone(long guestId, long time);

	TimeZone getTimeZone(long guestId, String date);
<<<<<<< HEAD

	DayMetadata getDayMetadata(long guestId, String date);
	
	City getMainCity(long guestId, DayMetadataFacet context);
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d

    WeekMetadata getWeekMetadata(long guestId, int year, int week);
Solution content
	TimeZone getTimeZone(long guestId, long time);

	TimeZone getTimeZone(long guestId, String date);

	DayMetadata getDayMetadata(long guestId, String date);

    WeekMetadata getWeekMetadata(long guestId, int year, int week);
File
MetadataService.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
    MonthMetadata getMonthMetadata(long guestId, int year, int month);

<<<<<<< HEAD
    List getAllDayMetadata(long guestId);

=======
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
	LocationFacet getLastLocation(long guestId, long time);

	TimeZone getTimeZone(double latitude, double longitude);
Solution content
    MonthMetadata getMonthMetadata(long guestId, int year, int month);

    List getAllDayMetadata(long guestId);

	LocationFacet getLastLocation(long guestId, long time);

	TimeZone getTimeZone(double latitude, double longitude);
File
MetadataService.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
	TimeZone getTimeZone(double latitude, double longitude);

<<<<<<< HEAD
=======
	DayMetadataFacet getLastDayMetadata(long guestId);

>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
    public City getClosestCity(double latitude, double longitude);

    List getClosestCities(double latitude, double longitude,
Solution content
	TimeZone getTimeZone(double latitude, double longitude);

    public City getClosestCity(double latitude, double longitude);

    List getClosestCities(double latitude, double longitude,
File
MetadataService.java
Developer's decision
Version 1
Kind of conflict
Method interface
Chunk
Conflicting content
        }
    }

<<<<<<< HEAD
=======
    @Override
    @Transactional(readOnly=false)
    public void setComment(final String connectorName, final String objectTypeName, final long guestId, final long facetId,
                           final String comment) {
        final AbstractFacet facet = getFacet(connectorName, objectTypeName, facetId);
        if (facet==null)
            throw new RuntimeException("No such facet (connectorName: " + connectorName + ", objectTypeName: " + objectTypeName + ", guestId: " + guestId + ", facetId: " + facetId);
        if (facet.guestId!=guestId)
            throw new RuntimeException("Facet doesn't have the expected guestId (expected: " + guestId + ", actual: " + facet.guestId + ")");
        facet.comment = comment;
        em.persist(facet);
    }

    private AbstractFacet getFacet(final String connectorName, final String objectTypeName, final long facetId) {
        final Connector connector = Connector.getConnector(connectorName);
        Class facetClass = connector.facetClass();
        if (objectTypeName!=null) {
            final ObjectType objectType = ObjectType.getObjectType(connector, objectTypeName);
            facetClass = objectType.facetClass();
        }

        final TypedQuery query = em.createQuery("SELECT facet FROM " + facetClass.getName() + " facet WHERE id=?", AbstractFacet.class);
        query.setParameter(1, facetId);
        final List resultList = query.getResultList();
        if (resultList.size()>0)
            return resultList.get(0);
        else return null;
    }

    @Override
    @Transactional(readOnly=false)
    public void deleteComment(final String connectorName, final String objectTypeName, final long guestId, final long facetId) {
        final AbstractFacet facet = getFacet(connectorName, objectTypeName, facetId);
        if (facet==null)
            throw new RuntimeException("No such facet (connectorName: " + connectorName + ", objectTypeName: " + objectTypeName + ", guestId: " + guestId + ", facetId: " + facetId);
        if (facet.guestId!=guestId)
            throw new RuntimeException("Facet doesn't have the expected guestId (expected: " + guestId + ", actual: " + facet.guestId + ")");
        facet.comment = null;
        em.persist(facet);
    }

    @Transactional(readOnly = false)
    private void updateDayMetadata(long guestId, long time, float latitude,
                                  float longitude) {
        City city = metadataService.getClosestCity((double)latitude, (double)longitude);
        String date = formatter.withZone(DateTimeZone.forID(city.geo_timezone))
                .print(time);

        DayMetadataFacet info = metadataService.getDayMetadata(guestId, date, true);
        servicesHelper.addCity(info, city);

        //TimeZone tz = TimeZone.getTimeZone(info.timeZone);
        //List weatherInfo = metadataService.getWeatherInfo(city.geo_latitude,
        //                                                               city.geo_longitude, info.date,
        //                                                               AbstractFacetVO.toMinuteOfDay(new Date(info.start), tz),
        //                                                               AbstractFacetVO.toMinuteOfDay(new Date(info.end), tz));
        //wwoHelper.setWeatherInfo(info, weatherInfo);

        em.merge(info);
    }

>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
    @Override
    @Transactional(readOnly = false)
    public void deleteStaleData() throws ClassNotFoundException {
Solution content
        }
    }

    @Override
    @Transactional(readOnly=false)
    public void setComment(final String connectorName, final String objectTypeName, final long guestId, final long facetId,
                           final String comment) {
        final AbstractFacet facet = getFacet(connectorName, objectTypeName, facetId);
        if (facet==null)
            throw new RuntimeException("No such facet (connectorName: " + connectorName + ", objectTypeName: " + objectTypeName + ", guestId: " + guestId + ", facetId: " + facetId);
        if (facet.guestId!=guestId)
            throw new RuntimeException("Facet doesn't have the expected guestId (expected: " + guestId + ", actual: " + facet.guestId + ")");
        facet.comment = comment;
        em.persist(facet);
    }

    private AbstractFacet getFacet(final String connectorName, final String objectTypeName, final long facetId) {
        final Connector connector = Connector.getConnector(connectorName);
        Class facetClass = connector.facetClass();
        if (objectTypeName!=null) {
            final ObjectType objectType = ObjectType.getObjectType(connector, objectTypeName);
            facetClass = objectType.facetClass();
        }

        final TypedQuery query = em.createQuery("SELECT facet FROM " + facetClass.getName() + " facet WHERE id=?", AbstractFacet.class);
        query.setParameter(1, facetId);
        final List resultList = query.getResultList();
        if (resultList.size()>0)
            return resultList.get(0);
        else return null;
    }

    @Override
    @Transactional(readOnly=false)
    public void deleteComment(final String connectorName, final String objectTypeName, final long guestId, final long facetId) {
        final AbstractFacet facet = getFacet(connectorName, objectTypeName, facetId);
        if (facet==null)
            throw new RuntimeException("No such facet (connectorName: " + connectorName + ", objectTypeName: " + objectTypeName + ", guestId: " + guestId + ", facetId: " + facetId);
        if (facet.guestId!=guestId)
            throw new RuntimeException("Facet doesn't have the expected guestId (expected: " + guestId + ", actual: " + facet.guestId + ")");
        facet.comment = null;
        em.persist(facet);
    }

    @Override
    @Transactional(readOnly = false)
    public void deleteStaleData() throws ClassNotFoundException {
File
ApiDataServiceImpl.java
Developer's decision
Combination
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
import com.fluxtream.domain.AbstractLocalTimeFacet;
import com.fluxtream.domain.Guest;
import com.fluxtream.domain.metadata.City;
<<<<<<< HEAD
import com.fluxtream.domain.metadata.FoursquareVenue;
import com.fluxtream.domain.metadata.VisitedCity;
=======
import com.fluxtream.domain.metadata.DayMetadataFacet;
import com.fluxtream.domain.metadata.DayMetadataFacet.VisitedCity;
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
import com.fluxtream.domain.metadata.WeatherInfo;
import com.fluxtream.metadata.DayMetadata;
import com.fluxtream.metadata.MonthMetadata;
Solution content
import com.fluxtream.domain.AbstractLocalTimeFacet;
import com.fluxtream.domain.Guest;
import com.fluxtream.domain.metadata.City;
import com.fluxtream.domain.metadata.FoursquareVenue;
import com.fluxtream.domain.metadata.VisitedCity;
import com.fluxtream.domain.metadata.WeatherInfo;
import com.fluxtream.metadata.DayMetadata;
import com.fluxtream.metadata.MonthMetadata;
File
MetadataServiceImpl.java
Developer's decision
Version 1
Kind of conflict
Import
Chunk
Conflicting content
import com.fluxtream.services.GuestService;
import com.fluxtream.services.MetadataService;
import com.fluxtream.services.NotificationsService;
<<<<<<< HEAD
import com.fluxtream.thirdparty.helpers.WWOHelper;
import com.fluxtream.utils.HttpUtils;
import com.fluxtream.utils.JPAUtils;
import com.fluxtream.utils.TimeUtils;
import com.luckycatlabs.sunrisesunset.SunriseSunsetCalculator;
import com.luckycatlabs.sunrisesunset.dto.Location;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.http.HttpException;
import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
=======
import com.fluxtream.utils.JPAUtils;
import com.fluxtream.utils.TimeUtils;
import org.apache.commons.httpclient.HttpException;
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
import org.joda.time.DateTimeZone;
import org.joda.time.Days;
import org.joda.time.LocalDate;
Solution content
import com.fluxtream.services.GuestService;
import com.fluxtream.services.MetadataService;
import com.fluxtream.services.NotificationsService;
import com.fluxtream.thirdparty.helpers.WWOHelper;
import com.fluxtream.utils.HttpUtils;
import com.fluxtream.utils.JPAUtils;
import com.fluxtream.utils.TimeUtils;
import org.apache.commons.httpclient.HttpException;
import com.fluxtream.aspects.FlxLogger;
import org.joda.time.DateTimeZone;
import org.joda.time.Days;
import org.joda.time.LocalDate;
File
MetadataServiceImpl.java
Developer's decision
Manual
Kind of conflict
Import
Chunk
Conflicting content
        logger.warn("component=metadata action=setTimeZone message=attempt to set timezone");
	}

<<<<<<< HEAD
    @Override
    @Transactional(readOnly = false)
    public void resetDayMainCity(final long guestId, final String date) {
        final List visitedCities = getVisitedCitiesForDate(guestId, date);
        for (VisitedCity visitedCity : visitedCities) {
            if (visitedCity.locationSource== LocationFacet.Source.USER)
                em.remove(visitedCity);
        }
        em.flush();
    }

    @Override
    public void setDayMainCity(final long guestId, final float latitude, final float longitude, final String date) {
        final City closestCity = getClosestCity(latitude, longitude);
        setDayMainCity(guestId, date, closestCity);
    }

    @Override
    public void setDayMainCity(final long guestId, final long visitedCityId, final String date) {
        final VisitedCity visitedCity = em.find(VisitedCity.class, visitedCityId);
        setDayMainCity(guestId, date, visitedCity.city);
    }

    private void setDayMainCity(final long guestId, final String date, final City closestCity) {
        clearMainCities(guestId, Arrays.asList(date));
        final DateTime dateTime = formatter.withZone(DateTimeZone.forID(closestCity.geo_timezone)).parseDateTime(date);
        setMainCity(guestId, closestCity, dateTime.getMillis(), dateTime.getMillis() + DateTimeConstants.MILLIS_PER_DAY - 1, date);
    }

    private void clearMainCities(final long guestId, final Collection dates) {
        TypedQuery query = em.createQuery("SELECT facet FROM " +
                                                       JPAUtils.getEntityName(VisitedCity.class) +
                                                       " facet WHERE facet.guestId=:guestId AND facet.locationSource=:source  AND facet.date IN :dates" +
                                                       " ORDER BY facet.start", VisitedCity.class);
        query.setParameter("guestId", guestId);
        query.setParameter("source", LocationFacet.Source.USER);
        query.setParameter("dates", dates);
        final List resultList = query.getResultList();
        for (VisitedCity city : resultList) {
            em.remove(city);
        }
    }

    @Transactional(readOnly=false)
    private void setMainCity(final long guestId, final City city, final long start, final long end, final String timePeriod) {

        resetDayMainCity(guestId, timePeriod);

        VisitedCity visitedCity = new VisitedCity();
        visitedCity.guestId = guestId;
        visitedCity.date = timePeriod;
        visitedCity.locationSource = LocationFacet.Source.USER;
        visitedCity.city = city;
        visitedCity.start = start;
        visitedCity.end = end;
        visitedCity.count = 1;
        visitedCity.startTimeStorage = AbstractLocalTimeFacet.timeStorageFormat.withZone(DateTimeZone.forID(city.geo_timezone)).print(start);
        visitedCity.endTimeStorage = AbstractLocalTimeFacet.timeStorageFormat.withZone(DateTimeZone.forID(city.geo_timezone)).print(end);
        em.persist(visitedCity);
    }

    @Override
	public DayMetadata getDayMetadata(long guestId, String date) {
        // get visited cities for a specific date . If we don't have any data for that date,
        // retrieve cities for the first date for which we do have data
        List cities = getVisitedCitiesForDate(guestId, date);
        VisitedCity previousInferredCity = null, nextInferredCity = null;
        if (cities.size()==0) {
            previousInferredCity = searchCityBeforeDate(guestId, date);
            nextInferredCity = searchCityAfterDate(guestId, date);
            if (previousInferredCity==null&&nextInferredCity==null) {
                DayMetadata info = new DayMetadata(date);
                return info;
            }
        }
        final VisitedCity consensusVisitedCity = getConsensusVisitedCity(cities, previousInferredCity, nextInferredCity);
        DayMetadata info = new DayMetadata(cities, consensusVisitedCity, previousInferredCity, nextInferredCity, date);
        return info;
=======
	@Override
	@Transactional(readOnly = false)
	public DayMetadataFacet getDayMetadata(long guestId, String date,
			boolean create) {
		DayMetadataFacet info = JPAUtils.findUnique(em, DayMetadataFacet.class,
                                                    "context.byDate", guestId, date);
		if (info != null)
			return info;
		else if (create)
			info = copyNextDailyContextualInfo(guestId, date);
		if (info != null)
			return info;
		else {
			info = new DayMetadataFacet(-1);
			info.date = date;
            // let's assume UTC by default
            info.timeZone = TimeZone.getTimeZone("UTC").getID();
            final DateTimeFormatter utcDateFormatter = formatter.withZone(DateTimeZone.forID(info.timeZone));
            final long l = utcDateFormatter.parseMillis(date);
            final long fromMidnight = TimeUtils.fromMidnight(l, TimeZone.getTimeZone("UTC"));
            final long toMidnight = TimeUtils.toMidnight(l, TimeZone.getTimeZone("UTC"));
            info.start = fromMidnight;
            info.end = toMidnight;
			info.guestId = guestId;
			return info;
		}
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
	}

    private int daysBetween(String date, VisitedCity vcity) {
Solution content
    private void setDayMainCity(final long guestId, final String date, final City closestCity) {
        logger.warn("component=metadata action=setTimeZone message=attempt to set timezone");
	}

    @Override
    @Transactional(readOnly = false)
    public void resetDayMainCity(final long guestId, final String date) {
        final List visitedCities = getVisitedCitiesForDate(guestId, date);
        for (VisitedCity visitedCity : visitedCities) {
            if (visitedCity.locationSource== LocationFacet.Source.USER)
                em.remove(visitedCity);
        }
        em.flush();
    }

    @Override
    public void setDayMainCity(final long guestId, final float latitude, final float longitude, final String date) {
        final City closestCity = getClosestCity(latitude, longitude);
        setDayMainCity(guestId, date, closestCity);
    }

    @Override
    public void setDayMainCity(final long guestId, final long visitedCityId, final String date) {
        final VisitedCity visitedCity = em.find(VisitedCity.class, visitedCityId);
        setDayMainCity(guestId, date, visitedCity.city);
    }

        clearMainCities(guestId, Arrays.asList(date));
        final DateTime dateTime = formatter.withZone(DateTimeZone.forID(closestCity.geo_timezone)).parseDateTime(date);
        setMainCity(guestId, closestCity, dateTime.getMillis(), dateTime.getMillis() + DateTimeConstants.MILLIS_PER_DAY - 1, date);
    }

    private void clearMainCities(final long guestId, final Collection dates) {
        TypedQuery query = em.createQuery("SELECT facet FROM " +
                                                       JPAUtils.getEntityName(VisitedCity.class) +
                                                       " facet WHERE facet.guestId=:guestId AND facet.locationSource=:source  AND facet.date IN :dates" +
                                                       " ORDER BY facet.start", VisitedCity.class);
        query.setParameter("guestId", guestId);
        query.setParameter("source", LocationFacet.Source.USER);
        query.setParameter("dates", dates);
        final List resultList = query.getResultList();
        for (VisitedCity city : resultList) {
            em.remove(city);
        }
    }

    @Transactional(readOnly=false)
    private void setMainCity(final long guestId, final City city, final long start, final long end, final String timePeriod) {

        resetDayMainCity(guestId, timePeriod);

        VisitedCity visitedCity = new VisitedCity();
        visitedCity.guestId = guestId;
        visitedCity.date = timePeriod;
        visitedCity.locationSource = LocationFacet.Source.USER;
        visitedCity.city = city;
        visitedCity.start = start;
        visitedCity.end = end;
        visitedCity.count = 1;
        visitedCity.startTimeStorage = AbstractLocalTimeFacet.timeStorageFormat.withZone(DateTimeZone.forID(city.geo_timezone)).print(start);
        visitedCity.endTimeStorage = AbstractLocalTimeFacet.timeStorageFormat.withZone(DateTimeZone.forID(city.geo_timezone)).print(end);
        em.persist(visitedCity);
    }

    @Override
	public DayMetadata getDayMetadata(long guestId, String date) {
        // get visited cities for a specific date . If we don't have any data for that date,
        // retrieve cities for the first date for which we do have data
        List cities = getVisitedCitiesForDate(guestId, date);
        VisitedCity previousInferredCity = null, nextInferredCity = null;
        if (cities.size()==0) {
            previousInferredCity = searchCityBeforeDate(guestId, date);
            nextInferredCity = searchCityAfterDate(guestId, date);
            if (previousInferredCity==null&&nextInferredCity==null) {
                DayMetadata info = new DayMetadata(date);
                return info;
            }
        }
        final VisitedCity consensusVisitedCity = getConsensusVisitedCity(cities, previousInferredCity, nextInferredCity);
        DayMetadata info = new DayMetadata(cities, consensusVisitedCity, previousInferredCity, nextInferredCity, date);
        return info;
    }

    private int daysBetween(String date, VisitedCity vcity) {
File
MetadataServiceImpl.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
If statement
Method declaration
Method invocation
Method signature
Return statement
Variable
Chunk
Conflicting content
		}

	@Override
	public TimeZone getTimeZone(long guestId, long time) {
<<<<<<< HEAD
        String date = findClosestKnownDateForTime(guestId, time);
        return getTimeZone(guestId, date);
=======
		DayMetadataFacet thatDay = JPAUtils.findUnique(em,
				DayMetadataFacet.class, "context.day.when", guestId, time, time);
		if (thatDay != null)
			return TimeZone.getTimeZone(thatDay.timeZone);
		else {
            logger.info("guestId=" + guestId + " time= " + time + " action=getTimeZone message=returning UTC Timezone");
			return TimeZone.getTimeZone("UTC"); // Code should never go here!
>>>>>>> 6848d0ddc9a46c35897092bc3454e7d59b41fc0d
	}

    @Override
Solution content
	@Override
	public TimeZone getTimeZone(long guestId, long time) {
        String date = findClosestKnownDateForTime(guestId, time);
        return getTimeZone(guestId, date);
	}

    @Override
File
MetadataServiceImpl.java
Developer's decision
Version 1
Kind of conflict
If statement
Method invocation
Return statement
Variable