diff options
author | Joris | 2017-01-09 22:47:55 +0100 |
---|---|---|
committer | Joris | 2017-01-09 22:47:55 +0100 |
commit | f2264cf9176a7807a7993872cc1c2c437617c0b2 (patch) | |
tree | 6305075d29b8973ea073bf7d4c3aa296ee25b371 /src/main/scala/reading/models | |
parent | b1b6cf18ee0da5d729c35800817c306bea64e73e (diff) | |
download | reading-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.scala | 6 | ||||
-rw-r--r-- | src/main/scala/reading/models/Filter.scala | 11 | ||||
-rw-r--r-- | src/main/scala/reading/models/Genre.scala | 4 | ||||
-rw-r--r-- | src/main/scala/reading/models/Level.scala | 41 | ||||
-rw-r--r-- | src/main/scala/reading/models/Period.scala | 4 | ||||
-rw-r--r-- | src/main/scala/reading/models/Theme.scala | 12 |
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 } |