Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File
- import akka.actor.ActorSystem
- import play.api.libs.iteratee._
- import scala.concurrent.duration._
- import scala.concurrent.{ExecutionContext, Promise, Future}
- import java.util.Date
- import scala.concurrent.ExecutionContext.Implicits.global
- object Main {
- def main(args: Array[String]) = {
- val system = ActorSystem("iteratee-system")
- val schudeler = Executors.newScheduledThreadPool(1)
- val hallOfFameCSV = getClass().getResourceAsStream("HallOfFame.csv")
- //Load file using Enumerator helper method to load files as Stream
- val fileEnumerator: Enumerator[Byte] = {
- println("Start loading data...")
- Enumerator.fromStream(hallOfFameCSV).flatMap(x => Enumerator(x: _*))
- }
- //Enumeratee que transformará nuestro iteratee de byte a char
- val byteToCharEnumeratee:Enumeratee[Byte, Char] = Enumeratee.map[Byte]{ s => s.toChar }
- def getByLine(data:Seq[Char] = IndexedSeq[Char](), line:List[String] = List[String]()):Iteratee[Char, List[String]] =
- Cont{
- case in @ Input.El(char) =>
- if(char != '\r' && char != '\n'){
- //println("Still processing...")
- getByLine(data :+ char, line)
- } else {
- val lineString = data.mkString
- getByLine(data = Seq.empty[Char], line :+ lineString.trim)
- }
- case in @ Input.EOF => Done(line, in)
- case in @ Input.Empty => Done(line, in)
- }
- val iter = Iteratee.flatten(fileEnumerator |>> byteToCharEnumeratee &>> getByLine()).run
- iter.onSuccess {
- case x => x.foreach(x => println(s"line -> $x"))
- }
- println("")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement