aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/models')
-rw-r--r--src/main/scala/reading/models/Book.scala1
-rw-r--r--src/main/scala/reading/models/Difficulty.scala6
-rw-r--r--src/main/scala/reading/models/Filter.scala10
-rw-r--r--src/main/scala/reading/models/Level.scala33
-rw-r--r--src/main/scala/reading/models/Program.scala70
5 files changed, 117 insertions, 3 deletions
diff --git a/src/main/scala/reading/models/Book.scala b/src/main/scala/reading/models/Book.scala
index 7c4bf8a..ef9eb9b 100644
--- a/src/main/scala/reading/models/Book.scala
+++ b/src/main/scala/reading/models/Book.scala
@@ -6,6 +6,7 @@ case class Book (
period: Period,
genres: Seq[Genre],
themes: Seq[Theme],
+ program: Program,
pages: Int
) extends Ordered[Book] {
def compare(that: Book) = {
diff --git a/src/main/scala/reading/models/Difficulty.scala b/src/main/scala/reading/models/Difficulty.scala
index aade5f5..e20d7b2 100644
--- a/src/main/scala/reading/models/Difficulty.scala
+++ b/src/main/scala/reading/models/Difficulty.scala
@@ -6,17 +6,17 @@ object Difficulty {
new Filter {
def filter(book: Book): Boolean = book.pages < 200
val kind: FilterKind = DifficultyKind
- def name: String = "facile"
+ val name: String = "facile"
},
new Filter {
def filter(book: Book): Boolean = book.pages >= 200 && book.pages < 400
val kind: FilterKind = DifficultyKind
- def name: String = "moyen"
+ val name: String = "moyen"
},
new Filter {
def filter(book: Book): Boolean = book.pages > 400
val kind: FilterKind = DifficultyKind
- def name: String = "difficile"
+ val name: String = "difficile"
}
)
}
diff --git a/src/main/scala/reading/models/Filter.scala b/src/main/scala/reading/models/Filter.scala
index 5e96cf9..a74a6f1 100644
--- a/src/main/scala/reading/models/Filter.scala
+++ b/src/main/scala/reading/models/Filter.scala
@@ -11,6 +11,7 @@ case object PeriodKind extends FilterKind
case object ThemeKind extends FilterKind
case object GenreKind extends FilterKind
case object DifficultyKind extends FilterKind
+case object ProgramKind extends FilterKind
object Filter {
def apply[T](in: T)(implicit filterFactory: FilterFactory[T]): Filter =
@@ -54,4 +55,13 @@ object FilterFactory {
val name: String = genre.toString()
}
}
+
+ implicit object ProgramFilter extends FilterFactory[Program] {
+ def create(program: Program): Filter =
+ new Filter {
+ def filter(book: Book): Boolean = book.program == program
+ val kind: FilterKind = ProgramKind
+ val name: String = program.toString()
+ }
+ }
}
diff --git a/src/main/scala/reading/models/Level.scala b/src/main/scala/reading/models/Level.scala
new file mode 100644
index 0000000..1f7e153
--- /dev/null
+++ b/src/main/scala/reading/models/Level.scala
@@ -0,0 +1,33 @@
+package reading.models
+
+import enumeratum._
+
+sealed trait Level extends EnumEntry with Ordered[Level] {
+ import Level._
+
+ def compare(that: Level) = {
+ def toInt(level: Level): Int = level match {
+ case Sixieme => 6
+ case Cinquieme => 5
+ case Quatrieme => 4
+ case Troisieme => 3
+ }
+ toInt(that) - toInt(this)
+ }
+
+ override def toString(): String = this match {
+ case Sixieme => "6ème"
+ case Cinquieme => "5ème"
+ case Quatrieme => "4ème"
+ case Troisieme => "3ème"
+ }
+}
+
+object Level extends Enum[Level] {
+ val values = findValues
+
+ case object Sixieme extends Level
+ case object Cinquieme extends Level
+ case object Quatrieme extends Level
+ case object Troisieme extends Level
+}
diff --git a/src/main/scala/reading/models/Program.scala b/src/main/scala/reading/models/Program.scala
new file mode 100644
index 0000000..4603b03
--- /dev/null
+++ b/src/main/scala/reading/models/Program.scala
@@ -0,0 +1,70 @@
+package reading.models
+
+import enumeratum._
+
+sealed trait Program extends EnumEntry {
+ import Program._
+
+ override def toString(): String = this match {
+ case Monstre => "Le monstre, aux limites de l'humain"
+ case RecitAventure => "Récits d'aventures"
+ case CreationPoetique => "Récit de création, création poétique"
+ case Resister => "Résister au plus fort : ruses, mensonges et masques"
+
+ case VoyageEtAventure => "le voyage et l'aventure. Pourquoi aller vers l'inconnu ?"
+ case Autrui => "avec autrui : familles, amis, réseaux."
+ case UniversNouveaux => "imaginer des univers nouveaux."
+ case Heros => "héros, héroïnes et héroïsmes."
+ case HommeEtNature => "l'être humain est-il maître de la nature ?"
+
+ case DireAmour => "Dire l'amour"
+ case IndividuEtSociete => "Individu et société : confrontations de valeur ?"
+ case FictionEtReel => "la fiction pour interroger le réel"
+ case Informer => "Informer, s'informer, déformer ?"
+ case Ville => "La ville, lieu de tous les possibles ?"
+
+ case RaconterRepresenter => "Se raconter, se représenter"
+ case TraversSociete => "Dénoncer les travers de la société"
+ case VisionsPoetiques => "Visions poétiques du monde"
+ case AgirCite => "Agir dans la cité : individu et pouvoir"
+ case ProgresReveScientifique => "Progrès et rêves scientifiques"
+ }
+}
+
+object Program extends Enum[Program] {
+ val values = findValues
+
+ case object Monstre extends Program
+ case object RecitAventure extends Program
+ case object CreationPoetique extends Program
+ case object Resister extends Program
+
+ case object VoyageEtAventure extends Program
+ case object Autrui extends Program
+ case object UniversNouveaux extends Program
+ case object Heros extends Program
+ case object HommeEtNature extends Program
+
+ case object DireAmour extends Program
+ case object IndividuEtSociete extends Program
+ case object FictionEtReel extends Program
+ case object Informer extends Program
+ case object Ville extends Program
+
+ case object RaconterRepresenter extends Program
+ case object TraversSociete extends Program
+ case object VisionsPoetiques extends Program
+ case object AgirCite extends Program
+ case object ProgresReveScientifique extends Program
+
+ def level(program: Program): Level = {
+ import Level._
+
+ program match {
+ case Monstre | RecitAventure | CreationPoetique | Resister => Sixieme
+ case VoyageEtAventure | Autrui | UniversNouveaux | Heros | HommeEtNature => Cinquieme
+ case DireAmour | IndividuEtSociete | FictionEtReel | Informer | Ville => Quatrieme
+ case RaconterRepresenter | TraversSociete | VisionsPoetiques | AgirCite | ProgresReveScientifique => Troisieme
+ }
+ }
+}