package org.karmaexchange.bootstrap; import static org.karmaexchange.util.OfyService.ofy; import org.karmaexchange.auth.GlobalUidMapping; import org.karmaexchange.auth.Session; import org.karmaexchange.dao.Event; import org.karmaexchange.dao.Image; import org.karmaexchange.dao.Leaderboard; import org.karmaexchange.dao.Review; import org.karmaexchange.dao.User; import org.karmaexchange.dao.UserManagedEvent; import org.karmaexchange.dao.Waiver; import org.karmaexchange.snapshot.WebPageSnapshot; import com.googlecode.objectify.Key; @SuppressWarnings("serial") public class PurgeAllResourcesServlet extends BootstrapServlet { /* * The current implementation only works for small dbs. Map-reduce is the right thing for * large dbs. */ @Override public void execute() { statusWriter.println("About to delete all resources..."); Iterable<Key<Event>> eventKeys = ofy().load().type(Event.class).keys().iterable(); Iterable<Key<User>> userKeys = ofy().load().type(User.class).keys().iterable(); Iterable<Key<Image>> imageKeys = ofy().load().type(Image.class).keys().iterable(); Iterable<Key<Review>> reviewKeys = ofy().load().type(Review.class).keys().iterable(); Iterable<Key<Leaderboard>> leaderboardKeys = ofy().load().type(Leaderboard.class).keys().iterable(); Iterable<Key<Waiver>> waiverKeys = ofy().load().type(Waiver.class).keys().iterable(); Iterable<Key<UserManagedEvent>> userManagedEventKeys = ofy().load().type(UserManagedEvent.class).keys().iterable(); Iterable<Key<WebPageSnapshot>> persistedSnapshotKeys = ofy().load().type(WebPageSnapshot.class).keys().iterable(); Iterable<Key<GlobalUidMapping>> globalUidMappings = ofy().load().type(GlobalUidMapping.class).keys().iterable(); Iterable<Key<Session>> sessions = ofy().load().type(Session.class).keys().iterable(); // * Do not delete EventSourceInfo since we configure that once and re-use it accross // test db deletes. // * Do not delete organizations since we have remote dbs that sync events with us. // This is okay because organizations currently don't store references to other objects. // * Do not delete UserUsage. We want to keep that information even when we reset the demo. ofy().delete().keys(eventKeys); ofy().delete().keys(userKeys); ofy().delete().keys(imageKeys); ofy().delete().keys(reviewKeys); ofy().delete().keys(leaderboardKeys); ofy().delete().keys(waiverKeys); ofy().delete().keys(userManagedEventKeys); ofy().delete().keys(persistedSnapshotKeys); ofy().delete().keys(globalUidMappings); ofy().delete().keys(sessions); // Do not delete UserUsage. We want to keep that information even when we reset the demo. statusWriter.println("Deleted all resources."); } }