HelloDbController.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package controllers;
  2. import dao.WorldDao;
  3. import model.World;
  4. import java.util.concurrent.ThreadLocalRandom;
  5. import ninja.Result;
  6. import ninja.Results;
  7. import com.google.inject.Inject;
  8. import com.google.inject.Singleton;
  9. import com.google.inject.persist.Transactional;
  10. import ninja.jpa.UnitOfWork;
  11. import ninja.params.Param;
  12. @Singleton
  13. public class HelloDbController {
  14. private static final int DB_ROWS = 10000;
  15. @Inject
  16. WorldDao worldDao;
  17. @UnitOfWork
  18. public Result singleGet() {
  19. return Results.json().render(getRandomWorld());
  20. }
  21. @UnitOfWork
  22. public Result multiGet(@Param("queries") Integer queries) {
  23. if (queries == null || queries < 1) {
  24. queries = 1;
  25. }
  26. if (queries > 500) {
  27. queries = 500;
  28. }
  29. final World[] worlds = new World[queries];
  30. for (int i = 0; i < queries; i++) {
  31. worlds[i] = getRandomWorld();
  32. }
  33. return Results.json().render(worlds);
  34. }
  35. @Transactional
  36. public Result update(@Param("queries") Integer queries) {
  37. if (queries == null || queries < 1) {
  38. queries = 1;
  39. }
  40. if (queries > 500) {
  41. queries = 500;
  42. }
  43. final World[] worlds = new World[queries];
  44. for (int i = 0; i < queries; i++) {
  45. worlds[i] = getRandomWorld();
  46. }
  47. // now update stuff:
  48. for (World world : worlds) {
  49. world.randomNumber = ThreadLocalRandom.current().nextInt();
  50. worldDao.put(world);
  51. }
  52. return Results.json().render(worlds);
  53. }
  54. private World getRandomWorld() {
  55. return worldDao.get(ThreadLocalRandom.current().nextInt(DB_ROWS) + 1);
  56. }
  57. }