package org.karmaexchange.task;
import static org.karmaexchange.util.OfyService.ofy;
import java.io.IOException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.karmaexchange.auth.Session;
import org.karmaexchange.dao.Event;
import com.googlecode.objectify.Key;
/*
* Explicit invocation path:
* /task/process_event_completions
*/
@SuppressWarnings("serial")
public class ProcessEventCompletionsServlet extends TaskQueueAdminTaskServlet {
private static final Logger logger = Logger.getLogger(
ProcessEventCompletionsServlet.class.getName());
@Override
protected void execute() throws IOException {
Date now = new Date();
// TODO(avaliani): Rename this file / or move this code to a separate location.
Iterable<Key<Session>> expiredSessions = ofy().load().type(Session.class)
.filter("expiresOn <", now)
.keys();
ofy().delete().keys(expiredSessions); // Asynchronously delete any expired sessions.
// Process event completions
Iterable<Key<Event>> eventsToComplete = ofy().load().type(Event.class)
.filter("completionProcessed", false)
.filter("endTime <", now)
.keys();
for (Key<Event> eventKey : eventsToComplete) {
logger.log(Level.INFO, "Processing event completion: eventKey=" + eventKey.getString());
Event.processEventCompletionTasks(eventKey);
}
}
}