Guest User

Tcs bank parser

a guest
Jul 24th, 2014
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.68 KB | None | 0 0
  1. package tcs;
  2.  
  3.  
  4. import java.util.Locale
  5.  
  6. import org.joda.time.DateTime
  7. import org.joda.time.format.{DateTimeFormat, DateTimeFormatter}
  8. import org.json4s.JsonAST.JObject
  9. import org.json4s.native.JsonParser
  10. import org.scalatest.FlatSpec
  11. import ru.yandex.verba.core.util.VerbaUtils
  12. import org.json4s.JsonAST._
  13. import org.json4s.jackson.JsonMethods._
  14. import ru.yandex.verba.core.util.JsonUtils._
  15.  
  16. import scala.io.Source
  17.  
  18. /**
  19.  * Author: Evgeny Vanslov (evans@yandex-team.ru)
  20.  * Created: 24.07.14
  21.  */
  22. class TcsTest extends FlatSpec {
  23.   "" should "General billing info" in {
  24.     case class Operation(descr: String, mcc: Int, amount: Double, cashback: Double, date: DateTime) {
  25.       def returned = amount * cashback / 100.0
  26.       override def toString: String = s"$returned $descr $mcc $amount $cashback  $date"
  27.     }
  28.     val json = JsonParser.parse(Source.fromFile("errors.json").getLines().mkString)
  29.     val operations = (json \ "payload").children map {
  30.       v =>
  31.         val amount = (v \ "accountAmount" \ "value").extract[Double]
  32.         val cashback = (v \ "cashback").extract[Double]
  33.         val descr = (v \ "description").extract[String]
  34.         val mcc = (v \ "mcc").extract[Int]
  35.         val time = (v \ "operationTime" \ "milliseconds").extract[Long]
  36.         Operation(descr, mcc, amount, cashback, new DateTime(time))
  37.     }
  38.     val parse = DateTime.parse("13.07.2014", DateTimeFormat.forPattern("dd.MM.yyyy").withLocale(Locale.US))
  39.     val forReturnOperations = operations.filter(_.date.isBefore(parse)).filter(_.returned > 0).sortBy(_.returned)
  40.     forReturnOperations.foreach(println)
  41.     println(forReturnOperations.map(_.returned).sum)
  42.     println(operations.size)
  43.   }
  44. }
Add Comment
Please, Sign In to add comment