HelloDB.java 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package hello.pages;
  2. import hello.entities.*;
  3. import java.util.*;
  4. import java.util.concurrent.*;
  5. import java.io.IOException;
  6. import org.apache.tapestry5.*;
  7. import org.apache.tapestry5.annotations.*;
  8. import org.apache.tapestry5.ioc.annotations.*;
  9. import org.apache.tapestry5.json.*;
  10. import org.apache.tapestry5.util.*;
  11. import org.apache.tapestry5.services.*;
  12. import org.hibernate.*;
  13. import com.fasterxml.jackson.databind.*;
  14. /**
  15. * Database Mapping Test
  16. */
  17. public class HelloDB
  18. {
  19. @Inject
  20. private org.hibernate.Session session;
  21. @Inject
  22. private Request request;
  23. private static final int DB_ROWS = 10000;
  24. private static final ObjectMapper mapper = new ObjectMapper();
  25. StreamResponse onActivate() {
  26. // Read queries from URL, but don't bother validating
  27. int queries = 1;
  28. String qString = this.request.getParameter("queries");
  29. if (qString != null) {
  30. queries = Integer.parseInt(qString);
  31. }
  32. if (queries <= 0) {
  33. queries = 1;
  34. }
  35. final World[] worlds = new World[queries];
  36. // For generating a random row ID
  37. final Random rand = ThreadLocalRandom.current();
  38. for (int i = 0; i < queries; i++) {
  39. // Read object from database
  40. worlds[i] = (World)session.get(World.class, new Integer(rand.nextInt(DB_ROWS) + 1));
  41. }
  42. // Send reponse
  43. String response = "";
  44. try
  45. {
  46. if (queries == 1)
  47. {
  48. response = HelloDB.mapper.writeValueAsString(worlds[0]);
  49. }
  50. else
  51. {
  52. response = HelloDB.mapper.writeValueAsString(worlds);
  53. }
  54. }
  55. catch (IOException ex)
  56. {
  57. // do nothing
  58. }
  59. return new TextStreamResponse("application/json", response);
  60. }
  61. }