I have the following code:
class Parameterizable{ var map: Map[String, String] = new scala.collection.immutable.HashMap() def put(entry: Tuple2[String, String]) = { map = map + entry; this } } class Query() extends Parameterizable{ override def toString = { map.isEmpty match{ case true => "" case false => "?" + map.map{case (key, value) => key + "=" + value}.mkString("&") } } } trait PageParameter extends Parameterizable{ def page(page: Int) = put(("page" -> page.toString)) def pageSize(pageSize: Int) = put(("pagesize" -> pageSize.toString)) } trait DateParameter extends Parameterizable{ def fromDate(date: java.util.Date) = put(("fromdate" -> (date.getTime()/1000L).toString())) def toDate(date: java.util.Date) = put(("todate" -> (date.getTime()/1000L).toString())) }
I would like to do something like:
class ExtendedQuery extends Query with PageParameter with DateParameter val query = new ExtendedQuery query.page(4).pageSize(5).fromDate(new java.util.Date)
or
query.and().page(4).and().pageSize(5).and().fromDate(new java.util.Date)
Is this possible in Scala?
source share