DataService.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package services;
  2. import interfaces.Constants;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.concurrent.ThreadLocalRandom;
  6. import org.apache.commons.lang.StringUtils;
  7. import models.Fortune;
  8. import models.World;
  9. import com.google.inject.Inject;
  10. import de.svenkubiak.mangoo.mongodb.MongoDB;
  11. public class DataService {
  12. private MongoDB mongoDB;
  13. @Inject
  14. public DataService(MongoDB mongoDB) {
  15. this.mongoDB = mongoDB;
  16. this.mongoDB.ensureIndexes(true);
  17. }
  18. public World findById(int id) {
  19. return this.mongoDB.getDatastore().find(World.class).field("id").equal(id).retrievedFields(false, "_id").get();
  20. }
  21. public List<World> find(int queries) {
  22. return this.mongoDB.getDatastore().find(World.class).retrievedFields(false, "_id").asList();
  23. }
  24. public void save(Object object) {
  25. this.mongoDB.getDatastore().save(object);
  26. }
  27. public List<World> getWorlds(String queries) {
  28. int query = 1;
  29. if (StringUtils.isNotBlank(queries) && StringUtils.isNumeric(queries)) {
  30. query = Integer.valueOf(queries);
  31. }
  32. if (query <= 1) {
  33. query = 1;
  34. } else if (query > 500) {
  35. query = 500;
  36. }
  37. List<World> worlds = new ArrayList<World>();
  38. for (int i=0; i < query; i++) {
  39. int id = ThreadLocalRandom.current().nextInt(Constants.ROWS) + 1;
  40. worlds.add(findById(id));
  41. }
  42. return worlds;
  43. }
  44. public List<Fortune> findAllFortunes() {
  45. return this.mongoDB.getDatastore().find(Fortune.class).retrievedFields(false, "_id").asList();
  46. }
  47. }