package models.dao; import java.util.concurrent.Callable; import karma.model.ReputationHolderStore; import models.User; import models.UserReputation; import play.utils.cache.InterimCache; import play.utils.dao.CachedDAO; public class UserReputationDAO extends CachedDAO<Long, UserReputation> implements ReputationHolderStore<User, UserReputation> { protected InterimCache<UserReputation> targetUserCache = new InterimCache<UserReputation>( "UserReputationTargetUserCache", 86400);// 24 hrs public UserReputationDAO() { super(Long.class, UserReputation.class); addListener(new UserReputationListener(targetUserCache)); } @Override public UserReputation get(User user) { final String userKey = user.getKey(); return targetUserCache.get(userKey, new Callable<UserReputation>() { public UserReputation call() throws Exception { return find.where().eq("target_user_key", userKey).findUnique(); } }); } @Override public UserReputation create(User user) { UserReputation ur = new UserReputation(user, 0); create(ur); return ur; } }