package org.activityinfo.server.digest; import com.google.appengine.api.taskqueue.Queue; import com.google.appengine.api.taskqueue.QueueFactory; import com.google.appengine.api.taskqueue.TaskOptions; import com.google.appengine.api.taskqueue.TaskOptions.Method; import javax.ws.rs.GET; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import java.util.List; import java.util.logging.Logger; import static com.google.appengine.api.taskqueue.TaskOptions.Builder.withUrl; public abstract class DigestResource { public static final String USERDIGEST_QUEUE = "userdigest"; private static final Logger LOGGER = Logger.getLogger(DigestResource.class.getName()); @GET @Produces(MediaType.TEXT_PLAIN) public String createDigests() throws Exception { List<Integer> userIds = selectUsers(); String msg = "creating digests for " + userIds.size() + " users"; LOGGER.info(msg); Queue queue = QueueFactory.getQueue(USERDIGEST_QUEUE); for (Integer userId : userIds) { TaskOptions taskoptions = withUrl(getUserDigestEndpoint()) .param(UserDigestResource.PARAM_USER, String.valueOf(userId)) .method(Method.GET); queue.add(taskoptions); } return msg; } public abstract List<Integer> selectUsers(); public abstract String getUserDigestEndpoint(); }