All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cz.jalasoft.transportation.czechrailway.CzechRailwayTransportation.scala Maven / Gradle / Ivy

The newest version!
package cz.jalasoft.transportation.czechrailway

import cz.jalasoft.net.http.netty.NettyHttpClient
import cz.jalasoft.transportation._
import cz.jalasoft.transportation.czechrailway.flow.TrainDetailPageFlow
import cz.jalasoft.transportation.czechrailway.page.TrainDetailPage

import scala.collection.JavaConversions._

/**
 * Created by honzales on 28.6.15.
 */
class CzechRailwayTransportation extends Transportation with Loggable {

  debug("Czech railway transportation has been instantiated")

  private val trainPageToTransport : TrainDetailPage => Transport = {
    p => {
      Transport
        .newTransport
        .carrier(p.providerName)
        .code(p.trainCode)
        .name(p.trainName.orElse(null))
        .get()
    }
  }

  override def findTransport(transport: String): java.util.Collection[Transport] = {
    require(transport != null && !transport.isEmpty, "Train name must not be null or empty")

    debug("Transport is being looked up for " + transport)

    val client = new NettyHttpClient

    try {
      TrainDetailPageFlow(client) flow(transport) map trainPageToTransport
    } finally {
      client.close()
    }
  }

  override def querySchedule(transport: Transport): Schedule = {
    require(transport != null, "Transport must not be null")

    debug("Schedule is being queried for transport {}.", transport)

    val client = new NettyHttpClient

    try {
      val page = (TrainDetailPageFlow(client) flow(transport))
      val schedule = page.schedule()

    } finally {
      client.close()
    }
    null
  }


  override def queryPosition(transport: Transport): Position = {
    debug("Position is being queried for transport " + transport)
    null
  }

  override def carrier(): Carrier = CzechRailwayCarrier

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy