package play.test;
import java.util.ArrayList;
import java.util.List;
import play.Play;
import play.classloading.ApplicationClasses;
import play.modules.morphia.Model;
import play.modules.morphia.MorphiaPlugin;
import com.google.code.morphia.Datastore;
public class MorphiaFixtures extends Fixtures {
private static Datastore ds() {
return MorphiaPlugin.ds();
}
public static void deleteDatabase() {
idCache.clear();
Datastore ds = ds();
for (Class<Model> clz: Play.classloader.getAssignableClasses(Model.class)) {
ds.getCollection(clz).drop();
}
}
public static void delete(Class<? extends Model> ... types) {
idCache.clear();
for (Class<? extends Model> type: types) {
ds().getCollection(type).drop();
}
}
public static void delete(List<Class<? extends Model>> classes) {
idCache.clear();
for (Class<? extends Model> type: classes) {
ds().getCollection(type).drop();
}
}
@SuppressWarnings("unchecked")
public static void deleteAllModels() {
List<Class<? extends Model>> mongoClasses = new ArrayList<Class<? extends Model>>();
for (ApplicationClasses.ApplicationClass c : Play.classes.getAssignableClasses(play.db.Model.class)) {
Class<?> jc = c.javaClass;
mongoClasses.add((Class<? extends Model>)jc);
}
MorphiaFixtures.delete(mongoClasses);
}
}