package models; import java.util.Date; import java.util.List; import play.data.validation.Constraints.Required; import play.modules.mongodb.jackson.MongoDB; import net.vz.mongodb.jackson.DBQuery; 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; @MongoCollection(name = "users") public class User { public static JacksonDBCollection<User.Model, String> coll = MongoDB.getCollection("users", User.Model.class, String.class); public static class Model { @ObjectId @Id public String _id; @Required public String username; public String password; public Date createdAt; public Date lastLoginAt; public Date lastUpdatedAt; public String email; public String domainsString; public List<String> domains; } public static WriteResult<User.Model, String> save(User.Model ob) { return coll.save(ob); } public static WriteResult<User.Model, String> update(String id, User.Model ob) { return coll.updateById(id , ob); } public static Boolean isDomainTrackable(String domain, User.Model ob) { if( ob.domains.contains(domain) ) return true; for(String in : ob.domains) { if( in.substring(0, 1).equals(".") ) { if( domain.contains(in) || ( "."+domain ).contains( in ) ) return true; } } return false; } public static Integer getSessionsCount(User.Model ob) { return TrackSession.coll.find( DBQuery.is("userId", new org.bson.types.ObjectId( ob._id ) ) ).count(); } }