PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/app/controllers.scala

https://bitbucket.org/softwarerero/ruc
Scala | 118 lines | 97 code | 15 blank | 6 comment | 19 complexity | ab6f7f3ad433b26122ff496a9d430038 MD5 | raw file
  1. package controllers
  2. import play._
  3. import play.mvc._
  4. import models._
  5. import scala.io.Source._
  6. import com.mongodb.casbah.Imports._
  7. import java.util.Locale
  8. import java.text._
  9. //http://api.mongodb.org/scala/casbah/current/tutorial.html
  10. //http://api.mongodb.org/scala/casbah/2.1.5.0/
  11. object RUC extends Controller {
  12. import views.Application._
  13. def index = {
  14. // val ret = loadRucs
  15. // Logger.info(ret);
  16. // flash.clear
  17. results(null)
  18. }
  19. lazy val db = {
  20. MongoConnection()
  21. }
  22. lazy val rucs = {
  23. db("ruc")("Ruc")
  24. }
  25. def loadRucs(): String = {
  26. rucs.drop()
  27. var ret = "nada"
  28. Logger.info("hi: " + rucs.count)
  29. var l = 0
  30. var t0 = System.nanoTime();
  31. var t1 = System.nanoTime();
  32. if (rucs.count == 0) {
  33. // cat *.txt > ruc.txt
  34. val fileName = "conf/rucs/ruc.txt"
  35. val lines = fromFile(fileName).getLines
  36. io.Source.fromFile(fileName).getLines.foreach { line =>
  37. var strArr = line.split("\\|");
  38. if (0 == l % 100000) {
  39. Logger.info("" + l + " (" + ((System.nanoTime() - t1) / 1000000000.0) + ") : " + line);
  40. t1 = System.nanoTime();
  41. }
  42. val newObj = MongoDBObject("ruc" -> strArr(0),
  43. "name" -> strArr(1),
  44. "dv" -> strArr(2),
  45. "rucAntique" -> strArr(3))
  46. rucs.insert(newObj)
  47. l += 1
  48. }
  49. ret = "Inserted " + l + " recs in " + ((System.nanoTime() - t0) / 1000000000.0) + " secs "
  50. }
  51. return ret
  52. }
  53. import com.codahale.jerkson.Json._
  54. def find4Ruc = {
  55. val ruc = params.get("ruc")
  56. val q = MongoDBObject("ruc" -> ruc)
  57. var rucObj: MongoDBObject = null
  58. rucs.findOne(q).foreach { x => rucObj = x }
  59. if(rucObj == null) flash += ("error" -> "Nada encontrado!")
  60. Logger.info("rucObj: " + rucObj);
  61. val serialized: String = generate(rucObj)
  62. Logger.info("serialized: " + serialized);
  63. serialized
  64. }
  65. def forRuc = {
  66. val ruc = params.get("ruc")
  67. var rucObj: MongoDBObject = null
  68. flash.clear()
  69. if (ruc == "") {
  70. flash += ("error" -> "Oops, no ruc!")
  71. results(null)
  72. } else {
  73. val q = MongoDBObject("ruc" -> ruc)
  74. rucs.findOne(q).foreach { x => rucObj = x }
  75. if(rucObj == null) flash += ("error" -> "Nada encontrado!")
  76. results(rucObj)
  77. }
  78. }
  79. def forName = {
  80. val name = params.get("name")
  81. var rucObj: MongoDBObject = null
  82. flash.clear()
  83. if (name == "") {
  84. flash += ("error" -> "Oops, no nombre!")
  85. results(null)
  86. } else {
  87. val q = MongoDBObject("name" -> ("(?i).*" + name + ".*").r)
  88. rucs.findOne(q).foreach { x => rucObj = x }
  89. if(rucObj == null) flash += ("error" -> "Nada encontrado!")
  90. results(rucObj)
  91. }
  92. }
  93. private def results(ruc: MongoDBObject) = {
  94. val df = NumberFormat.getInstance(Locale.GERMAN).asInstanceOf[DecimalFormat]
  95. df.applyPattern( "#,###,##0" );
  96. val count = df.format(rucs.count)
  97. if (ruc == null) {
  98. html.index(count, null, null, null)
  99. } else {
  100. html.index(count, ruc.get("ruc"), ruc.get("name"), ruc.get("dv"))
  101. }
  102. }
  103. }