aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/models
diff options
context:
space:
mode:
authorJoris2017-01-09 22:47:55 +0100
committerJoris2017-01-09 22:47:55 +0100
commitf2264cf9176a7807a7993872cc1c2c437617c0b2 (patch)
tree6305075d29b8973ea073bf7d4c3aa296ee25b371 /src/main/scala/reading/models
parentb1b6cf18ee0da5d729c35800817c306bea64e73e (diff)
downloadreading-f2264cf9176a7807a7993872cc1c2c437617c0b2.tar.gz
reading-f2264cf9176a7807a7993872cc1c2c437617c0b2.tar.bz2
reading-f2264cf9176a7807a7993872cc1c2c437617c0b2.zip
Add books
Diffstat (limited to 'src/main/scala/reading/models')
-rw-r--r--src/main/scala/reading/models/Book.scala6
-rw-r--r--src/main/scala/reading/models/Filter.scala11
-rw-r--r--src/main/scala/reading/models/Genre.scala4
-rw-r--r--src/main/scala/reading/models/Level.scala41
-rw-r--r--src/main/scala/reading/models/Period.scala4
-rw-r--r--src/main/scala/reading/models/Theme.scala12
6 files changed, 56 insertions, 22 deletions
diff --git a/src/main/scala/reading/models/Book.scala b/src/main/scala/reading/models/Book.scala
index 344b4c6..1ee7eb6 100644
--- a/src/main/scala/reading/models/Book.scala
+++ b/src/main/scala/reading/models/Book.scala
@@ -3,11 +3,13 @@ package reading.models
case class Book (
title: String,
author: String,
- period: Period,
+ year: String,
+ parts: Int = 1,
+ period: Option[Period],
genres: Seq[Genre],
themes: Seq[Theme],
programs: Seq[Program],
- pages: Int
+ level: Level
) extends Ordered[Book] {
def compare(that: Book) = {
def formatTitle(title: String) =
diff --git a/src/main/scala/reading/models/Filter.scala b/src/main/scala/reading/models/Filter.scala
index 00c7994..5aabcc6 100644
--- a/src/main/scala/reading/models/Filter.scala
+++ b/src/main/scala/reading/models/Filter.scala
@@ -38,7 +38,7 @@ object FilterFactory {
implicit object PeriodFilter extends FilterFactory[Period] {
def create(period: Period): Filter =
new Filter {
- def filter(book: Book): Boolean = book.period == period
+ def filter(book: Book): Boolean = book.period == Some(period)
val kind: FilterKind = PeriodKind
val name: String = period.toString()
}
@@ -79,4 +79,13 @@ object FilterFactory {
val name: String = grade.toString()
}
}
+
+ implicit object LevelFilter extends FilterFactory[Level] {
+ def create(level: Level): Filter =
+ new Filter {
+ def filter(book: Book): Boolean = book.level == level
+ val kind: FilterKind = LevelKind
+ val name: String = level.toString()
+ }
+ }
}
diff --git a/src/main/scala/reading/models/Genre.scala b/src/main/scala/reading/models/Genre.scala
index 1b4aabd..44f96cd 100644
--- a/src/main/scala/reading/models/Genre.scala
+++ b/src/main/scala/reading/models/Genre.scala
@@ -18,6 +18,8 @@ sealed trait Genre extends EnumEntry with Ordered[Genre] {
case Merveilleux => "merveilleux"
case SF => "SF"
case BD => "BD"
+ case RomanAventure => "roman d'aventure"
+ case Comique => "comique"
}
}
@@ -32,4 +34,6 @@ object Genre extends Enum[Genre] {
case object Merveilleux extends Genre
case object SF extends Genre
case object BD extends Genre
+ case object RomanAventure extends Genre
+ case object Comique extends Genre
}
diff --git a/src/main/scala/reading/models/Level.scala b/src/main/scala/reading/models/Level.scala
index c297912..ebec020 100644
--- a/src/main/scala/reading/models/Level.scala
+++ b/src/main/scala/reading/models/Level.scala
@@ -1,22 +1,25 @@
package reading.models
-object Level {
- val filters: Seq[Filter] =
- Seq(
- new Filter {
- def filter(book: Book): Boolean = book.pages < 200
- val kind: FilterKind = LevelKind
- val name: String = "facile"
- },
- new Filter {
- def filter(book: Book): Boolean = book.pages >= 200 && book.pages < 400
- val kind: FilterKind = LevelKind
- val name: String = "moyen"
- },
- new Filter {
- def filter(book: Book): Boolean = book.pages > 400
- val kind: FilterKind = LevelKind
- val name: String = "difficile"
- }
- )
+import enumeratum._
+
+sealed trait Level extends EnumEntry with Ordered[Level] {
+ import Level._
+
+ def compare(that: Level): Int = {
+ values.indexOf(that) - values.indexOf(this)
+ }
+
+ override def toString(): String = this match {
+ case Facile => "facile"
+ case Moyen => "moyen"
+ case Difficile => "difficile"
+ }
+}
+
+object Level extends Enum[Level] {
+ val values = findValues
+
+ case object Facile extends Level
+ case object Moyen extends Level
+ case object Difficile extends Level
}
diff --git a/src/main/scala/reading/models/Period.scala b/src/main/scala/reading/models/Period.scala
index 0dfa3bf..8500591 100644
--- a/src/main/scala/reading/models/Period.scala
+++ b/src/main/scala/reading/models/Period.scala
@@ -9,6 +9,8 @@ sealed trait Period extends EnumEntry {
case Louis14 => "Louis XIV"
case Siecle19 => "19ème siècle"
case Siecle20 => "20ème siècle"
+ case Annees50 => "années 50"
+ case Contemporain => "contemporain"
}
}
@@ -18,4 +20,6 @@ object Period extends Enum[Period] {
case object Louis14 extends Period
case object Siecle19 extends Period
case object Siecle20 extends Period
+ case object Annees50 extends Period
+ case object Contemporain extends Period
}
diff --git a/src/main/scala/reading/models/Theme.scala b/src/main/scala/reading/models/Theme.scala
index d816f1c..238a29d 100644
--- a/src/main/scala/reading/models/Theme.scala
+++ b/src/main/scala/reading/models/Theme.scala
@@ -39,6 +39,12 @@ sealed trait Theme extends EnumEntry with Ordered[Theme] {
case Peur => "peur"
case Pirate => "pirate"
case Rivalite => "rivalité"
+ case SegregationRaciale => "ségrégation raciale"
+ case VieNocturne => "vie nocturne"
+ case Voyage => "voyage"
+ case Animaux => "animaux"
+ case College => "collège"
+ case Maladie => "maladie"
}
}
@@ -74,4 +80,10 @@ object Theme extends Enum[Theme] {
case object Peur extends Theme
case object Pirate extends Theme
case object Rivalite extends Theme
+ case object SegregationRaciale extends Theme
+ case object VieNocturne extends Theme
+ case object Voyage extends Theme
+ case object Animaux extends Theme
+ case object College extends Theme
+ case object Maladie extends Theme
}