
Untitled
By: a guest on
May 25th, 2012 | syntax:
None | size: 0.91 KB | hits: 12 | expires: Never
package database
import org.orbroker.RowExtractor
import org.orbroker.Row
import models.Movie
import models.Actor
import org.orbroker.Join
import org.orbroker.JoinExtractor
/**
* Allow this extractor to be used both with and without joining to cast.
*/
class MovieExtractor(withCast: Boolean) extends JoinExtractor[Movie] {
val key = Set("id")
val actorRenames = Map("id" -> "actor_id")
def extract(row: Row, join: Join) = {
val movieID = row.bigInt("id")
val title = row.string("title").getOrElse("NULL")
val rated = row.string("rated").getOrElse("NULL")
val actors = if (withCast) {
join.extractSeq(ActorExtractor, actorRenames)
} else {
Seq.empty
}
new Movie(movieID, title, rated, actors)
}
}
object ActorExtractor extends JoinExtractor[Actor] {
val key = Set("id")
def extract(row: Row, join: Join) = new Actor( row.bigInt("id"), row.string("name").getOrElse("NULL") )
}