Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. trait RecordBaseMeta[T <: RecordBase[T]] {
  2.   def tableName = getClass.getName.replaceFirst("\\$+$", "").replaceFirst(".*[\\$\\.]", "")
  3.  
  4.   def findAll: List[T] = {
  5.     var list: List[T] = Nil
  6.     val results = conn.createStatement.executeQuery("select * from " + tableName)
  7.     while (results.next) {
  8.       var data = Map[String, AnyRef]()
  9.       val metaData = results.getMetaData
  10.       for (column <- 1 to metaData.getColumnCount) {
  11.         val obj = results.getObject(column)
  12.         data = data + (metaData.getColumnName(column) ->
  13.                 (if (metaData.isNullable(column) == ResultSetMetaData.columnNoNulls)
  14.                   obj
  15.                 else {
  16.                   if (obj == null) None else Some(obj)
  17.                 }))
  18.       }
  19.       list = (getClass.getSuperclass.newInstance.asInstanceOf[T]).withData(data) :: list
  20.     }
  21.     list
  22.   }
  23. }