diff --git a/src/main/java/com/cristobalbernal/loladvisor/dao/LolDaoImplMemory.java b/src/main/java/com/cristobalbernal/loladvisor/dao/LolDaoImplMemory.java index b86abfd..5873b75 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/dao/LolDaoImplMemory.java +++ b/src/main/java/com/cristobalbernal/loladvisor/dao/LolDaoImplMemory.java @@ -4,6 +4,7 @@ import com.cristobalbernal.loladvisor.config.AppConfig; import com.cristobalbernal.loladvisor.model.Lol; import org.springframework.stereotype.Repository; +import javax.annotation.PostConstruct; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -14,10 +15,9 @@ public class LolDaoImplMemory implements LolDao{ public List lols = new ArrayList<>(); - private AppConfig config; - + private AppConfig appConfig; public void init() { - lols = UtilLolFileReader.readFile(config.getFile(),config.getSeparator(),config.getListSeparator()); + lols = UtilLolFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator()); } @@ -46,9 +46,9 @@ public class LolDaoImplMemory implements LolDao{ @Override public void edit(Lol lol) { - int index = getIndexOf(lol.getId()); - if(index != -1) - lols.set(index, lol); + int i = getIndexOf(lol.getId()); + if(i != -1) + lols.set(i, lol); } @Override @@ -63,10 +63,11 @@ public class LolDaoImplMemory implements LolDao{ int index = 0; while(!encontrado && index < lols.size()) { - if(lols.get(index).getId() == id) + if(lols.get(index).getId() == id){ encontrado = true; - else + } else{ index++; + } } return (encontrado) ? index : -1; } diff --git a/src/main/java/com/cristobalbernal/loladvisor/dao/UtilLolFileReader.java b/src/main/java/com/cristobalbernal/loladvisor/dao/UtilLolFileReader.java index 6b74d96..10e040d 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/dao/UtilLolFileReader.java +++ b/src/main/java/com/cristobalbernal/loladvisor/dao/UtilLolFileReader.java @@ -22,8 +22,9 @@ public class UtilLolFileReader { .skip(1) .map(line -> { String[] values = line.split(separator); - return new Lol(Long.parseLong(values[0]), values[1], values[2], - values[3]); + return new Lol(Long.parseLong(values[0]), values[1], + Arrays.asList(values[2].split(listSeparator)), + values[3],values[4]); }).collect(Collectors.toList()); // @formatter:on diff --git a/src/main/java/com/cristobalbernal/loladvisor/model/Lol.java b/src/main/java/com/cristobalbernal/loladvisor/model/Lol.java index 88cb1a1..0bcde47 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/model/Lol.java +++ b/src/main/java/com/cristobalbernal/loladvisor/model/Lol.java @@ -7,12 +7,14 @@ public class Lol { private String nombre; private List rol; private String dificultad; + private String genero; - public Lol(long id, String nombre, List rol, String dificultad) { + public Lol(long id, String nombre, List rol, String dificultad, String genero) { this.id = id; this.nombre = nombre; this.rol = rol; this.dificultad = dificultad; + this.genero = genero; } public long getId() { @@ -22,9 +24,6 @@ public class Lol { public String getNombre() { return nombre; } - - - public String getDificultad() { return dificultad; } @@ -49,40 +48,13 @@ public class Lol { this.dificultad = dificultad; } - @Override - public int hashCode() { - return super.hashCode(); + public String getGenero() { + return genero; } - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Lol other = (Lol) obj; - if (dificultad == null) { - if (other.dificultad != null) - return false; - } else if (!dificultad.equals(other.dificultad)) - return false; - if (id != other.id) - return false; - if (nombre == null) { - if (other.nombre != null) - return false; - } else if (!nombre.equals(other.nombre)) - return false; - if (rol == null) { - if (other.rol != null) - return false; - } else if (!rol.equals(other.rol)) - return false; - return true; + public void setGenero(String genero) { + this.genero = genero; } - @Override public String toString() { return "Lol{" + @@ -90,6 +62,7 @@ public class Lol { ", nombre='" + nombre + '\'' + ", rol=" + rol + ", dificultad='" + dificultad + '\'' + + ", genero='" + genero + '\'' + '}'; } } diff --git a/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryService.java b/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryService.java index f100f78..4349630 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryService.java +++ b/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryService.java @@ -5,8 +5,9 @@ import com.cristobalbernal.loladvisor.model.Lol; import java.util.Collection; public interface LolQueryService { - public LolQueryService exec(); - public LolQueryService anyDificultad(String... dificultad); - public LolQueryService anyRol(String... rol); + public Collection exec(); + public LolQueryService anyGenre(String... genres); + public LolQueryService allGenres(String... genres); + public LolQueryService titleContains(String title); } diff --git a/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryServices.java b/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryServices.java index 35c6a2e..ebc19e7 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryServices.java +++ b/src/main/java/com/cristobalbernal/loladvisor/service/LolQueryServices.java @@ -2,10 +2,10 @@ package com.cristobalbernal.loladvisor.service; import com.cristobalbernal.loladvisor.dao.LolDao; import com.cristobalbernal.loladvisor.model.Lol; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; +import java.util.Collection; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -16,32 +16,32 @@ public class LolQueryServices implements LolQueryService { private Predicate predicate; - public void init(){ - predicate = null; - } - - - @Override - public LolQueryService exec() { - return (LolQueryService) dao.findAll() + public Collection exec() { + return dao.findAll() .stream() .filter(predicate) .collect(Collectors.toList()); + } + @Override + public LolQueryService anyGenre(String... genres) { + Predicate pAnyGenre = (vg -> Arrays.stream(genres).anyMatch(vg.getNombre()::contains)); + predicate = (predicate == null) ? pAnyGenre : predicate.and(pAnyGenre); + return this; } @Override - public LolQueryService anyDificultad(String... dificultad) { - Predicate lolPredicate = (lol -> Arrays.stream(dificultad).anyMatch(lol.getNombre()::contains)); - predicate = (predicate == null) ? lolPredicate : predicate.and(lolPredicate); + public LolQueryService allGenres(String... genres) { + Predicate pAllGenre = (vg -> Arrays.stream(genres).allMatch(vg.getNombre()::contains)); + predicate = (predicate == null) ? pAllGenre : predicate.and(pAllGenre); return this; } @Override - public LolQueryService anyRol(String... rol) { - Predicate pAllGenres = (lol -> Arrays.stream(rol).allMatch(lol.getRol()::contains)); - predicate = (predicate == null) ? pAllGenres : predicate.and(pAllGenres); + public LolQueryService titleContains(String title) { + Predicate pTitleContains = (vg -> vg.getNombre().toLowerCase().contains(title.toLowerCase())); + predicate = (predicate == null) ? pTitleContains : predicate.and(pTitleContains); return this; } } diff --git a/src/main/java/com/cristobalbernal/loladvisor/service/LolService.java b/src/main/java/com/cristobalbernal/loladvisor/service/LolService.java index 83667c0..f534228 100644 --- a/src/main/java/com/cristobalbernal/loladvisor/service/LolService.java +++ b/src/main/java/com/cristobalbernal/loladvisor/service/LolService.java @@ -2,10 +2,16 @@ package com.cristobalbernal.loladvisor.service; import com.cristobalbernal.loladvisor.dao.LolDao; +import java.util.Collection; + public class LolService { LolDao filmDao; - LolQueryService queryService; + public Collection findAllGenres(){ + return null; + } + + } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d96d93a..2a5ad03 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,3 +1,3 @@ file.path=classpath:bbdd.csv -file.csv.separator=; -file.csv.list_separator=, +file.csv.separator=, +file.csv.list_separator=- diff --git a/src/main/resources/bbdd.csv b/src/main/resources/bbdd.csv index 57e1142..5b125be 100644 --- a/src/main/resources/bbdd.csv +++ b/src/main/resources/bbdd.csv @@ -1,16 +1,16 @@ -id;name;rol;dificultad -1;Ahri;Asesina;Media -2;Atrox;Luchador;Media -3;Brand;Mago;Media -4;Ezreal;Tirador;Media -5;Alistar;Apoyo;Media -6;Amumu;Tanques;Baja -7;Akali;Asesina;Media -8;Fiora;Asesina;Baja -9;Veigar;Mago;Media -10;Kaisa;Tirador;Media -11;Karma;Apoyo;Baja -12;Ksante;Tanques;Dificil -13;Diana;Asesina;Media -14;Ekko;Asesino;Dificil -15;Elise;Asesina;Dificil +id,name,rol,dificultad,genero +1,Ahri,Asesina-Mago,Media,Mujer +2,Atrox,Luchador-Asesino,Media,Hombre +3,Brand,Mago-Apoyo,Media,Hombre +4,Ezreal,Tirador-Asesino,Media,Hombre +5,Alistar,Apoyo-Tanque,Media,Hombre +6,Amumu,Tanques-Apoyo,Baja,Hombre +7,Akali,Asesina-Luchador,Media,Mujer +8,Fiora,Asesina-Tanque,Baja,Mujer +9,Veigar,Mago-Apoyo,Media,Hombre +10,Kaisa,Tirador-Asesina,Media,Mujer +11,Karma,Apoyo-Mago,Baja,Mujer +12,Ksante,Tanques-Luchador,Dificil,Hombre +13,Diana,Asesina-Luchador,Media,Mujer +14,Ekko,Asesino-Apoyo,Dificil,Hombre +15,Elise,Asesina-Mago,Dificil,Mujer