aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-03-15 19:51:56 -0700
committerStewart Stewart <stewinsalot@gmail.com>2017-03-15 19:57:43 -0700
commit6ece67cd776ca5da1aef6595929772a7f801f1ab (patch)
treef7c264e935e07386be4191cdb8e34692662bc68b
parentd0465333090701c5d27229a17f0402623098e113 (diff)
downloaddriver-core-6ece67cd776ca5da1aef6595929772a7f801f1ab.tar.gz
driver-core-6ece67cd776ca5da1aef6595929772a7f801f1ab.tar.bz2
driver-core-6ece67cd776ca5da1aef6595929772a7f801f1ab.zip
tag int as month via apply method
-rw-r--r--src/main/scala/xyz/driver/core/database/package.scala4
-rw-r--r--src/main/scala/xyz/driver/core/date.scala31
-rw-r--r--src/main/scala/xyz/driver/core/json.scala2
-rw-r--r--src/main/scala/xyz/driver/core/time.scala2
4 files changed, 21 insertions, 18 deletions
diff --git a/src/main/scala/xyz/driver/core/database/package.scala b/src/main/scala/xyz/driver/core/database/package.scala
index 32b240e..791a688 100644
--- a/src/main/scala/xyz/driver/core/database/package.scala
+++ b/src/main/scala/xyz/driver/core/database/package.scala
@@ -3,7 +3,7 @@ package xyz.driver.core
import java.sql.{Date => SqlDate}
import java.util.Calendar
-import date.Date
+import date.{Date, Month}
import slick.dbio.{DBIOAction, NoStream}
package object database {
@@ -18,7 +18,7 @@ package object database {
// should only be interpreted in the running JVMs timezone.
val cal = Calendar.getInstance()
cal.setTime(sqlDate)
- Date(cal.get(Calendar.YEAR), date.tagMonth(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH))
+ Date(cal.get(Calendar.YEAR), Month(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH))
}
private[database] def dateToSqlDate(date: Date): SqlDate = {
diff --git a/src/main/scala/xyz/driver/core/date.scala b/src/main/scala/xyz/driver/core/date.scala
index 37b9a09..b9bcacb 100644
--- a/src/main/scala/xyz/driver/core/date.scala
+++ b/src/main/scala/xyz/driver/core/date.scala
@@ -5,21 +5,24 @@ import java.util.Calendar
object date {
type Month = Int @@ Month.type
- def tagMonth(value: Int): Month = value.asInstanceOf[Month]
object Month {
- val JANUARY = tagMonth(Calendar.JANUARY)
- val FEBRUARY = tagMonth(Calendar.FEBRUARY)
- val MARCH = tagMonth(Calendar.MARCH)
- val APRIL = tagMonth(Calendar.APRIL)
- val MAY = tagMonth(Calendar.MAY)
- val JUNE = tagMonth(Calendar.JUNE)
- val JULY = tagMonth(Calendar.JULY)
- val AUGUST = tagMonth(Calendar.AUGUST)
- val SEPTEMBER = tagMonth(Calendar.SEPTEMBER)
- val OCTOBER = tagMonth(Calendar.OCTOBER)
- val NOVEMBER = tagMonth(Calendar.NOVEMBER)
- val DECEMBER = tagMonth(Calendar.DECEMBER)
+ def apply(value: Int): Month = {
+ require(0 to 11 contains value, "Month is zero-indexed: 0 <= value <= 11")
+ value.asInstanceOf[Month]
+ }
+ val JANUARY = Month(Calendar.JANUARY)
+ val FEBRUARY = Month(Calendar.FEBRUARY)
+ val MARCH = Month(Calendar.MARCH)
+ val APRIL = Month(Calendar.APRIL)
+ val MAY = Month(Calendar.MAY)
+ val JUNE = Month(Calendar.JUNE)
+ val JULY = Month(Calendar.JULY)
+ val AUGUST = Month(Calendar.AUGUST)
+ val SEPTEMBER = Month(Calendar.SEPTEMBER)
+ val OCTOBER = Month(Calendar.OCTOBER)
+ val NOVEMBER = Month(Calendar.NOVEMBER)
+ val DECEMBER = Month(Calendar.DECEMBER)
}
final case class Date(year: Int, month: Month, day: Int) {
@@ -40,7 +43,7 @@ object date {
def fromString(dateString: String): Option[Date] = {
util.Try(dateString.split("-").map(_.toInt)).toOption collect {
case Array(year, month, day) if (1 to 12 contains month) && (1 to 31 contains day) =>
- Date(year, tagMonth(month - 1), day)
+ Date(year, Month(month - 1), day)
}
}
}
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala
index 4c5d078..457a087 100644
--- a/src/main/scala/xyz/driver/core/json.scala
+++ b/src/main/scala/xyz/driver/core/json.scala
@@ -84,7 +84,7 @@ object json {
implicit val monthFormat = new RootJsonFormat[Month] {
def write(month: Month) = JsNumber(month)
def read(value: JsValue): Month = value match {
- case JsNumber(month) if 0 <= month && month <= 11 => date.tagMonth(month.toInt)
+ case JsNumber(month) if 0 <= month && month <= 11 => Month(month.toInt)
case _ => throw DeserializationException("Expected a number from 0 to 11")
}
}
diff --git a/src/main/scala/xyz/driver/core/time.scala b/src/main/scala/xyz/driver/core/time.scala
index cbb86ed..ed5eb11 100644
--- a/src/main/scala/xyz/driver/core/time.scala
+++ b/src/main/scala/xyz/driver/core/time.scala
@@ -30,7 +30,7 @@ object time {
def toDate(timezone: TimeZone): date.Date = {
val cal = Calendar.getInstance(timezone)
cal.setTimeInMillis(millis)
- date.Date(cal.get(Calendar.YEAR), date.tagMonth(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH))
+ date.Date(cal.get(Calendar.YEAR), date.Month(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH))
}
}