Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.wausoft.availability.parser
- import com.google.gson.Gson
- import scala.io.Source
- import java.io.PrintWriter
- import com.wausoft.availability.model._
- object Program {
- def main(args: Array[String]): Unit = {
- // define paths
- val inPath = "C:\\Users\\Slench\\Desktop\\swissHouseData.json"
- val outPath = "C:\\Users\\Slench\\Desktop\\swissTuples.txt"
- println("Getting data") // read data from file and make a string out of it
- val data = Source.fromFile(inPath)("UTF-8").mkString
- println("Parsing data") // parse read data to a Response object
- val parsed = new Gson().fromJson(data, classOf[Response])
- // filter and flatten from List[List[T]] to List[T]
- val availabilityPeriods = parsed.result.map(_.availabilityPeriod).flatten
- // make tuples containing only the important data
- val relevantData = availabilityPeriods.map(i => (i.arrivalDate, i.departureDate, i.onRequest))
- // group by first element in tuple and then sort accordingly
- val groupedData = relevantData.groupBy(_._1).toList.sortBy(_._1)
- val writer = new PrintWriter(outPath)
- println("Writing data")
- for(e <- groupedData) {
- val common = e._1
- val content = e._2.map(i => (i._2, i._3)).mkString(", ")
- writer.print(s"$common -> {$content}\n")
- }
- println("Finished writing")
- writer.close
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement