Skip to content
This repository was archived by the owner on Jun 16, 2020. It is now read-only.

Commit 54eb778

Browse files
author
Antoine Detante
committed
Default values for parameters
1 parent 8a2d6af commit 54eb778

File tree

4 files changed

+25
-10
lines changed

4 files changed

+25
-10
lines changed

modules/websql/app/models/DSL.scala

+3-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ object DSL{
6464
def form(name:String) = PostParameter(name)
6565
def path(name:String) = PathParameter(name)
6666

67+
def url(name:String, defaultValue:String) = GetParameter(name,Some(defaultValue))
68+
6769
private[DSL] class SimpleColumnLinkOp(val page:Page, val query:SimpleQuery, val column:Column, val link:Link){
6870
def as(pName:String) = new SimpleColumnLinkOp(page, query, column, link.copy(parameter = Some(GetParameter(pName))))
6971
def asPath = new SimpleColumnLinkOp(page, query, column, link.copy(parameter = Some(PathParameter("path"))))
@@ -81,5 +83,5 @@ object DSL{
8183
def withQuery(newQuery:NamedQuery) = new PageNamedQueryOp(page.copy(namedQueries = page.namedQueries :+ query.copy(columns=query.columns :+ column.copy(link=Some(link)))),newQuery)
8284
def withQuery(newQuery:SimpleQuery) = new PageSimpleQueryOp(page.copy(namedQueries = page.namedQueries :+ query.copy(columns=query.columns :+ column.copy(link=Some(link)))),newQuery)
8385
}
84-
86+
8587
}

modules/websql/app/models/Pages.scala

+6-3
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,14 @@ case class SimpleQuery(queryString:String,columns:Seq[Column]) extends Query
2323

2424
trait Parameter{
2525
def name:String
26+
def defaultValue:Option[String]
2627
}
2728

28-
case class PostParameter(name:String) extends Parameter
29-
case class GetParameter(name:String) extends Parameter
30-
case class PathParameter(name:String) extends Parameter
29+
case class PostParameter(name:String,defaultValue:Option[String]=None) extends Parameter
30+
case class GetParameter(name:String,defaultValue:Option[String]=None) extends Parameter {
31+
def withDefaultValue(value:String) = this.copy(defaultValue=Some(value))
32+
}
33+
case class PathParameter(name:String,defaultValue:Option[String]=None) extends Parameter
3134

3235
case class Page(
3336
id:String,

modules/websql/app/models/Request.scala

+14-4
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,23 @@ object ParameterValue{
1313
ParameterValue(
1414
parameter.name,
1515
parameter match {
16-
case GetParameter(paramName) =>
17-
for (values <- request.queryString.get(paramName)) yield values.head
18-
case PostParameter(paramName) =>
16+
case GetParameter(paramName,default) =>
17+
request.queryString.get(paramName) match {
18+
case None =>
19+
default
20+
case Some(list) if list.size == 0 =>
21+
default
22+
case Some(Seq("")) =>
23+
default
24+
case Some(list) =>
25+
Some(list.head)
26+
}
27+
28+
case PostParameter(paramName,_) =>
1929
request.body.asFormUrlEncoded.map{formData=>
2030
for (values <- formData.get(paramName)) yield values.head
2131
}.getOrElse(None)
22-
case PathParameter(paramName) =>
32+
case PathParameter(paramName,_) =>
2333
request.uri match {
2434
case PathParameterExtractor(value) => Some(value)
2535
case _ => None

modules/websql/app/views/helpers/Helpers.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ object Helpers{
99
Html("""<a href="%s%s">%s</a>""".format(
1010
link.toPage,
1111
link.parameter.collect{
12-
case GetParameter(pName) => "?" + pName + "=" + col._2
13-
case PathParameter(_) => "/" + col._2
12+
case GetParameter(pName,_) => "?" + pName + "=" + col._2
13+
case PathParameter(_,_) => "/" + col._2
1414
}.getOrElse("?" + col._1 + "=" + col._2),
1515
link.title.getOrElse(col._2)
1616
))

0 commit comments

Comments
 (0)