PageRenderTime 37ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/scala/tivua/model/Category.scala

https://github.com/ngocdaothanh/tivua
Scala | 57 lines | 42 code | 13 blank | 2 comment | 3 complexity | a6d1a9e7c6c03b8e95e315c2d5898cf9 MD5 | raw file
  1. package tivua.model
  2. import java.util.Date
  3. import scala.collection.mutable.ArrayBuffer
  4. import com.mongodb.BasicDBList
  5. import com.mongodb.casbah.Imports._
  6. import com.mongodb.casbah.commons.MongoDBObject
  7. import org.bson.types.ObjectId
  8. class Category(
  9. var id: String,
  10. var name: String,
  11. var position: Int,
  12. var toc: String,
  13. var toBeCategorized: Boolean)
  14. object CategoryColl {
  15. val COLL = "categories"
  16. val ID = "_id"
  17. val NAME = "name"
  18. val POSITION = "position"
  19. val TOC = "toc"
  20. }
  21. object Category {
  22. import CategoryColl._
  23. private val coll = DB.db(COLL)
  24. //----------------------------------------------------------------------------
  25. def all: Iterable[Category] = {
  26. val cur = coll.find().sort(MongoDBObject("position" -> 1))
  27. val buffer = ArrayBuffer[Category]()
  28. for (o <- cur) {
  29. val c = mongoToScala(o)
  30. buffer.append(c)
  31. }
  32. buffer
  33. }
  34. def first(id: String): Option[Category] = coll.findOneByID(new ObjectId(id)).map(mongoToScala)
  35. //----------------------------------------------------------------------------
  36. private def mongoToScala(mongo: DBObject) = {
  37. val id = mongo._id.get.toString
  38. val name = mongo.as[String](NAME)
  39. val position = mongo.as[Int] (POSITION)
  40. val toc = mongo.as[String](TOC)
  41. val (name2, toBeCategorized) = if (name.isEmpty) ("To be categorized", true) else (name, false)
  42. new Category(id, name2, position, toc, toBeCategorized)
  43. }
  44. }