Application.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package controllers;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.concurrent.ExecutionException;
  7. import java.util.concurrent.ThreadLocalRandom;
  8. import models.World;
  9. import play.jobs.Job;
  10. import play.mvc.Controller;
  11. public class Application extends Controller {
  12. private static final int TEST_DATABASE_ROWS = 10000;
  13. public static void index() {
  14. render();
  15. }
  16. public static void json() {
  17. Map<String, String> result = new HashMap<String, String>();
  18. result.put("message", "Hello, World!");
  19. renderJSON(result);
  20. }
  21. public static void setup() {
  22. //JPAPlugin plugin = play.Play.plugin(JPAPlugin.class);
  23. //plugin.startTx(true);
  24. World w = new World() ;
  25. w.getPersistenceManager().beginTransaction();
  26. // clean out the old
  27. World.deleteAll();
  28. System.out.println("DELETED");
  29. // in with the new
  30. List<World> worlds = new ArrayList<World>() ;
  31. for (long i = 0; i <= TEST_DATABASE_ROWS; i++) {
  32. int randomNumber = ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1;
  33. worlds.add(new World(i, randomNumber));
  34. if (i % 100 == 0) {
  35. World.batch().insert(worlds) ;
  36. System.out.println("FLUSHED : " + i + "/" + TEST_DATABASE_ROWS);
  37. worlds.clear() ;
  38. }
  39. }
  40. System.out.println("ADDED");
  41. //plugin.closeTx(false);
  42. w.getPersistenceManager().commitTransaction();
  43. }
  44. public static void db(int queries) throws InterruptedException,
  45. ExecutionException {
  46. if (queries == 0)
  47. queries = 1;
  48. final int queryCount = queries;
  49. final List<World> worlds = new ArrayList<World>();
  50. Job<List<World>> job = new Job<List<World>>() {
  51. public java.util.List<World> doJobWithResult() throws Exception {
  52. for (int i = 0; i < queryCount; ++i) {
  53. Long id = Long
  54. .valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
  55. World result = World.findById(id);
  56. worlds.add(result);
  57. }
  58. return worlds;
  59. };
  60. };
  61. List<World> result = job.now().get();
  62. renderJSON(result);
  63. }
  64. public static void dbSync(int queries) {
  65. if (queries == 0)
  66. queries = 1;
  67. final List<World> worlds = new ArrayList<World>();
  68. for (int i = 0; i < queries; ++i) {
  69. Long id = Long.valueOf(ThreadLocalRandom.current().nextInt(TEST_DATABASE_ROWS) + 1);
  70. World result = World.findById(id);
  71. worlds.add(result);
  72. }
  73. renderJSON(worlds);
  74. }
  75. }