package crmdna.useractivity; import com.googlecode.objectify.cmd.Query; import crmdna.client.Client; import java.util.ArrayList; import java.util.Date; import java.util.List; import static crmdna.common.OfyService.ofy; public class UserActivityCore { static List<UserActivityProp> getUserActivity(String client, long userId, Date start, Date end) { Client.ensureValid(client); Query<UserActivityEntity> query = ofy(client).load() .type(UserActivityEntity.class).filter("userId", userId); if (null != start) query = query.filter("timestamp >=", start); if (null != end) query = query.filter("timestamp <=", end); query = query.order("-timestamp"); return getQueryResult(query); } private static List<UserActivityProp> getQueryResult( Query<UserActivityEntity> query) { List<UserActivityEntity> entities = query.list(); List<UserActivityProp> props = new ArrayList<>(); for (UserActivityEntity entity : entities) props.add(entity.toProp()); return props; } static List<UserActivityProp> getEntityActivity(String client, String entityType, long entityId, Date start, Date end) { Client.ensureValid(client); Query<UserActivityEntity> query = ofy(client).load() .type(UserActivityEntity.class) .filter("entityType", entityType).filter("entityId", entityId); if (null != start) query = query.filter("timestamp >=", start); if (null != end) query = query.filter("timestamp <=", end); query = query.order("-timestamp"); return getQueryResult(query); } static void recordUserActivity(String client, String entityType, long entityId, String userAction, String change, long userId) { Client.ensureValid(client); UserActivityEntity userActivityEntity = new UserActivityEntity(); userActivityEntity.entityId = entityId; userActivityEntity.entityType = entityType.toUpperCase(); userActivityEntity.userAction = userAction.toUpperCase(); userActivityEntity.userId = userId; userActivityEntity.change = change; userActivityEntity.timestamp = new Date(); ofy(client).save().entity(userActivityEntity); } public static class UserActivityProp { public long userActivityId; public long userId; public String entityType; public long entityId; public String userAction; public Date timestamp; String change; } }