Fortunes.scala 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package com.ibm.techempower
  2. import scala.collection.mutable.ListBuffer
  3. import scala.language.implicitConversions
  4. import scala.xml._
  5. import com.ibm.plain.rest.{ Resource, Html }
  6. import com.ibm.plain.jdbc.withConnection
  7. import com.ibm.plain.jdbc.ConnectionHelper._
  8. final class Fortunes
  9. extends Resource {
  10. Get {
  11. val list = new ListBuffer[(Int, String)]
  12. withConnection(datasource) { implicit c => for (row <- sql ! asRow) { list += row } }
  13. list += ((0, "Additional fortune added at request time."))
  14. html(rows(list.sortBy(_._2)))
  15. }
  16. @inline private[this] final def asRow = (r: RichResultSet) => (r.nextInt, r.nextString)
  17. @inline private[this] final def rows(list: ListBuffer[(Int, String)]) = list.map { e => row(e._1, e._2) }
  18. @inline private[this] final def row(id: Int, message: String) = <tr><td>{ id }</td><td>{ message }</td></tr>
  19. @inline private[this] final def html(rows: ListBuffer[Elem]): Html =
  20. <html>
  21. <head><title>Fortunes</title></head>
  22. <body> <table>
  23. <tr><th>id</th><th>message</th></tr>
  24. { rows }
  25. </table> </body>
  26. </html>
  27. private[this] final val sql = "select id, message from Fortune"
  28. private[this] final val datasource = "MysqlBenchmark"
  29. }