diff options
author | Joris | 2017-02-27 15:22:35 +0100 |
---|---|---|
committer | Joris | 2017-02-27 15:22:35 +0100 |
commit | 154b398c144b51c7609c9141b8dc9aaa80fae04f (patch) | |
tree | 756d5cbe976a29aa79986a78c6e87df2cb475270 /src/main/scala/reading/models | |
parent | 0567fff028f2f8db6fe5034ce92d52f62469ae1f (diff) | |
download | reading-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.scala | 6 | ||||
-rw-r--r-- | src/main/scala/reading/models/FilterFactory.scala | 6 | ||||
-rw-r--r-- | src/main/scala/reading/models/Grade.scala | 11 | ||||
-rw-r--r-- | src/main/scala/reading/models/GroupedTheme.scala | 19 | ||||
-rw-r--r-- | src/main/scala/reading/models/Program.scala | 11 | ||||
-rw-r--r-- | src/main/scala/reading/models/Theme.scala | 19 |
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 - } - } } |