package models; import java.util.Date; import com.mongodb.BasicDBObject; import models.TrackSession.Model; import net.vz.mongodb.jackson.Id; import net.vz.mongodb.jackson.JacksonDBCollection; import net.vz.mongodb.jackson.MongoCollection; import net.vz.mongodb.jackson.ObjectId; import net.vz.mongodb.jackson.WriteResult; import play.modules.mongodb.jackson.MongoDB; //TODO: ensureIndex, indexes, query index in Mongo @MongoCollection(name = "recorded_location") public class RecordedLocation { public static JacksonDBCollection<RecordedLocation.Model, String> coll = MongoDB.getCollection("recorded_location", RecordedLocation.Model.class, String.class); public static class Model { @ObjectId @Id public String _id; @ObjectId public String sessionId; public Date startedAt; public Date lastActionAt; //TODO: separate domain, path public String location; } public static WriteResult<RecordedLocation.Model, String> save(Model ob) { WriteResult<RecordedLocation.Model, String> tmp = coll.save(ob); coll.ensureIndex( new BasicDBObject("sessionId", 1) ); coll.ensureIndex( new BasicDBObject("location", 1) ); return tmp; } public static Long getDurationSeconds(Model ob) { return ( ( ob.lastActionAt.getTime() - ob.startedAt.getTime() ) / 1000 ); } public static String getDuration(Model ob) { Long seconds = getDurationSeconds(ob); Long min = seconds / 60; Long leftSeconds = seconds % 60 ; return min+":"+leftSeconds; } }