aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/models
diff options
context:
space:
mode:
authorJoris2017-02-27 15:22:35 +0100
committerJoris2017-02-27 15:22:35 +0100
commit154b398c144b51c7609c9141b8dc9aaa80fae04f (patch)
tree756d5cbe976a29aa79986a78c6e87df2cb475270 /src/main/scala/reading/models
parent0567fff028f2f8db6fe5034ce92d52f62469ae1f (diff)
downloadreading-154b398c144b51c7609c9141b8dc9aaa80fae04f.tar.gz
reading-154b398c144b51c7609c9141b8dc9aaa80fae04f.tar.bz2
reading-154b398c144b51c7609c9141b8dc9aaa80fae04f.zip
Filter when the user click on a theme / genre / program on book detail
Diffstat (limited to 'src/main/scala/reading/models')
-rw-r--r--src/main/scala/reading/models/Filter.scala6
-rw-r--r--src/main/scala/reading/models/FilterFactory.scala6
-rw-r--r--src/main/scala/reading/models/Grade.scala11
-rw-r--r--src/main/scala/reading/models/GroupedTheme.scala19
-rw-r--r--src/main/scala/reading/models/Program.scala11
-rw-r--r--src/main/scala/reading/models/Theme.scala19
6 files changed, 36 insertions, 36 deletions
diff --git a/src/main/scala/reading/models/Filter.scala b/src/main/scala/reading/models/Filter.scala
index 7ec6340..e4c8b93 100644
--- a/src/main/scala/reading/models/Filter.scala
+++ b/src/main/scala/reading/models/Filter.scala
@@ -32,10 +32,10 @@ object Filter {
case FilterKind.Grade => Grade.withNameOption(nonFormattedName).map(apply[Grade])
}
- def contains(filters: Seq[Filter], filter: Filter): Boolean =
+ def contains(filters: Set[Filter], filter: Filter): Boolean =
filters.find(_ == filter).nonEmpty
- def remove(fs: Seq[Filter], rf: Filter): Seq[Filter] =
+ def remove(fs: Set[Filter], rf: Filter): Set[Filter] =
fs.filterNot { f =>
(f == rf
|| rf.kind == FilterKind.Grade && f.kind == FilterKind.Program
@@ -56,7 +56,7 @@ object Filter {
.map(f => (f, Books().filter(f.filter)))
.toMap
- def add(books: Seq[Book], filters: Seq[Filter]): Seq[Book] =
+ def add(books: Seq[Book], filters: Set[Filter]): Seq[Book] =
filters.foldLeft(books)(add)
def add(books: Seq[Book], filter: Filter): Seq[Book] =
diff --git a/src/main/scala/reading/models/FilterFactory.scala b/src/main/scala/reading/models/FilterFactory.scala
index d900af5..d8d7151 100644
--- a/src/main/scala/reading/models/FilterFactory.scala
+++ b/src/main/scala/reading/models/FilterFactory.scala
@@ -15,10 +15,10 @@ object FilterFactory {
}
}
- implicit object GroupedTheme extends FilterFactory[GroupedTheme] {
+ implicit object GroupedThemeFilter extends FilterFactory[GroupedTheme] {
def create(groupedTheme: GroupedTheme): Filter =
new Filter {
- def filter(book: Book): Boolean = book.themes.map(Theme.grouped).contains(groupedTheme)
+ def filter(book: Book): Boolean = book.themes.map(GroupedTheme.from).contains(groupedTheme)
val kind: FilterKind = FilterKind.GroupedTheme
val nonFormattedName: String = groupedTheme.toString()
val name: String = groupedTheme.prettyPrint()
@@ -58,7 +58,7 @@ object FilterFactory {
implicit object GradeFilter extends FilterFactory[Grade] {
def create(grade: Grade): Filter =
new Filter {
- def filter(book: Book): Boolean = book.programs.map(Program.grade).contains(grade)
+ def filter(book: Book): Boolean = book.programs.map(Grade.from).contains(grade)
val kind: FilterKind = FilterKind.Grade
val nonFormattedName: String = grade.toString()
val name: String = grade.prettyPrint()
diff --git a/src/main/scala/reading/models/Grade.scala b/src/main/scala/reading/models/Grade.scala
index f54211d..c711e8b 100644
--- a/src/main/scala/reading/models/Grade.scala
+++ b/src/main/scala/reading/models/Grade.scala
@@ -24,4 +24,15 @@ object Grade extends Enum[Grade] {
case object Cinquieme extends Grade
case object Quatrieme extends Grade
case object Troisieme extends Grade
+
+ def from(program: Program): Grade = {
+ import Program._
+
+ program match {
+ case Monstre | RecitAventure | CreationPoetique | Resister => Sixieme
+ case VoyageEtAventure | Autrui | UniversNouveaux | Heros | HommeEtNature => Cinquieme
+ case DireAmour | Valeurs | Reel | Informer | Ville => Quatrieme
+ case SeRaconter | TraversSociete | VisionsPoetiques | Agir | ProgresReveScientifique => Troisieme
+ }
+ }
}
diff --git a/src/main/scala/reading/models/GroupedTheme.scala b/src/main/scala/reading/models/GroupedTheme.scala
index 61a5281..1a26bc1 100644
--- a/src/main/scala/reading/models/GroupedTheme.scala
+++ b/src/main/scala/reading/models/GroupedTheme.scala
@@ -39,4 +39,23 @@ object GroupedTheme extends Enum[GroupedTheme] {
case object Mort extends GroupedTheme
case object Difference extends GroupedTheme
case object Imaginaire extends GroupedTheme
+
+ def from(theme: Theme): GroupedTheme = {
+ import Theme._
+
+ theme match {
+ case Art | Americain | Danse | Litterature | Musique | Mythologie | Poetique | Reecriture | Sport => Culture
+ case Nature | Aventure | Initiation | Pirate | Voyage | Animal => Decouverte
+ case Dragon | Magie => Imaginaire
+ case Mutant | Beaute | Handicap | Homosexualite | Laideur | Metamorphose | Marginalite | Migration | Metissage | Pauvrete | Discrimination => Difference
+ case Maltraitance | Viol | Combat | Conflit | Crime | Harcelement | Exclusion | Racisme | Antisemitisme | SegregationRaciale | Prison => Violence
+ case Chevalerie | Cour | Dictature | Guerre | Nazisme | Revolution => Histoire
+ case Theme.Humour => GroupedTheme.Humour
+ case Enquete | Manipulation | Mensonge | Secret | Espionnage | Complot => Stratageme
+ case Fantome | Folie | Malediction | Vampire | Monstrueux => Peur
+ case Suicide | Deuil | Maladie | Immortalite | Vieillesse => Mort
+ case Adolescence | Amour | Amitie | Apprentissage | College | Ecole | Emancipation | Sentiment | Sexualite | Enfants | Femme | Parents | Famille => Quotidien
+ case Genetique | Internet | JeuVideo | Robot => Technologie
+ }
+ }
}
diff --git a/src/main/scala/reading/models/Program.scala b/src/main/scala/reading/models/Program.scala
index d33d23a..4c647f3 100644
--- a/src/main/scala/reading/models/Program.scala
+++ b/src/main/scala/reading/models/Program.scala
@@ -60,15 +60,4 @@ object Program extends Enum[Program] {
case object VisionsPoetiques extends Program
case object Agir extends Program
case object ProgresReveScientifique extends Program
-
- def grade(program: Program): Grade = {
- import Grade._
-
- program match {
- case Monstre | RecitAventure | CreationPoetique | Resister => Sixieme
- case VoyageEtAventure | Autrui | UniversNouveaux | Heros | HommeEtNature => Cinquieme
- case DireAmour | Valeurs | Reel | Informer | Ville => Quatrieme
- case SeRaconter | TraversSociete | VisionsPoetiques | Agir | ProgresReveScientifique => Troisieme
- }
- }
}
diff --git a/src/main/scala/reading/models/Theme.scala b/src/main/scala/reading/models/Theme.scala
index 66870a4..2a76611 100644
--- a/src/main/scala/reading/models/Theme.scala
+++ b/src/main/scala/reading/models/Theme.scala
@@ -173,23 +173,4 @@ object Theme extends Enum[Theme] {
case object Vieillesse extends Theme
case object Viol extends Theme
case object Voyage extends Theme
-
- def grouped(theme: Theme): GroupedTheme = {
- import GroupedTheme._
-
- theme match {
- case Art | Americain | Danse | Litterature | Musique | Mythologie | Poetique | Reecriture | Sport => Culture
- case Nature | Aventure | Initiation | Pirate | Voyage | Animal => Decouverte
- case Dragon | Magie => Imaginaire
- case Mutant | Beaute | Handicap | Homosexualite | Laideur | Metamorphose | Marginalite | Migration | Metissage | Pauvrete | Discrimination => Difference
- case Maltraitance | Viol | Combat | Conflit | Crime | Harcelement | Exclusion | Racisme | Antisemitisme | SegregationRaciale | Prison => Violence
- case Chevalerie | Cour | Dictature | Guerre | Nazisme | Revolution => Histoire
- case Theme.Humour => GroupedTheme.Humour
- case Enquete | Manipulation | Mensonge | Secret | Espionnage | Complot => Stratageme
- case Fantome | Folie | Malediction | Vampire | Monstrueux => Peur
- case Suicide | Deuil | Maladie | Immortalite | Vieillesse => Mort
- case Adolescence | Amour | Amitie | Apprentissage | College | Ecole | Emancipation | Sentiment | Sexualite | Enfants | Femme | Parents | Famille => Quotidien
- case Genetique | Internet | JeuVideo | Robot => Technologie
- }
- }
}