From 16f5aff0d6e808db8fb53a4563d0100356656b55 Mon Sep 17 00:00:00 2001 From: Dani Minguet Date: Thu, 24 Nov 2022 18:28:39 +0100 Subject: [PATCH] =?UTF-8?q?Implementaci=C3=B3n=20de=20nuevos=20m=C3=A9todo?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 59 +++++++++------- .../VideogameAdvisorRunApp.java | 44 +++++++----- .../dao/UtilVideogameFileReader.java | 2 +- .../videogameadvisor/dao/VideogameDao.java | 10 +-- .../dao/VideogameDaoImplMemory.java | 44 ++++++------ .../videogameadvisor/model/Videogame.java | 11 ++- .../service/VideogameQueryService.java | 15 ++-- .../service/VideogameQueryServiceImpl.java | 65 ++++++++++++------ .../service/VideogameService.java | 53 +++++++++----- src/main/resources/VIDEOJUEGOS.csv | 20 +++--- src/main/resources/ayuda.txt | 38 ++++++---- .../PracticaSpringCore/pom.properties | 2 +- target/classes/VIDEOJUEGOS.csv | 20 +++--- target/classes/ayuda.txt | 38 ++++++---- .../VideogameAdvisorRunApp.class | Bin 5537 -> 5895 bytes .../dao/UtilVideogameFileReader.class | Bin 3324 -> 3329 bytes .../videogameadvisor/dao/VideogameDao.class | Bin 473 -> 512 bytes .../dao/VideogameDaoImplMemory.class | Bin 3872 -> 3930 bytes .../videogameadvisor/model/Videogame.class | Bin 2712 -> 2783 bytes .../service/VideogameQueryService.class | Bin 686 -> 797 bytes .../service/VideogameQueryServiceImpl.class | Bin 5920 -> 7089 bytes .../service/VideogameService.class | Bin 4323 -> 4957 bytes 22 files changed, 256 insertions(+), 165 deletions(-) diff --git a/README.md b/README.md index d703b65..ddbb11b 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,17 @@ Aquí muestro el fichero csv que utilizo: ``` ID,NOMBRE,DESARROLLADOR,GENERO,FECHA SALIDA,PLATAFORMAS DISPONIBLES -1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5 y PS4 -2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX y PC -3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo, Moviles y PC -4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX y PC -5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX y PC -6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX y PC -7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS y PC -8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5 y PS4 -9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX y PC -10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX y PC +1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5-PS4 +2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX-PC +3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo-Moviles-PC +4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX-PC +5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX-PC +6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX-PC +7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS-PC +8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5-PS4 +9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX-PC +10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX-PC + ``` Al iniciar el programa, si no hay parámetros definidos te debería mostrar una alerta de que no se han indicado, y mostrará el contenido del fichero de ayuda, para saber que parámetros puedes utilizar: @@ -26,42 +27,54 @@ Al iniciar el programa, si no hay parámetros definidos te debería mostrar una No se ha pasado ningún parámetro Sintaxis: java -jar videogameadvisor.jar [OPCIONES] + -l + Lista todos los videojuegos. + No se pueden utilizar más parámetros. + -lg - Lista los diferentes géneros de videojuegos de la colección. + Lista los diferentes géneros de videojuegos. + No se pueden utilizar más parámetros. + + -lp + Lista las diferentes plataformas de videojuegos. No se pueden utilizar más parámetros. - -ag genero1,genero2,genero... + -bg genero1,genero2,genero... Lista aquellos videojuegos que pertenecen a al menos uno de los géneros que se indican. El listado de géneros no puede incluir espacios. - -tg genero1,genero2,genero... - Lista aquellos videojuegos que pertenecen a todos y cada uno de los - géneros que se indican. El listado de géneros no puede incluir espacios. - - -y año + -ba año Lista aquellos videojuegos que se estrenaron en el año indicado. El año debe expresarse con 4 cifras. - -b desde,hasta + -bas desde,hasta Lista aquellos videojuegos que se estrenaron entre los años DESDE y HASTA. Los años indicados están incluidos. Deben expresarse con 4 cifras. - -t titulo - Lista aquellos videojuegos cuyo título contiene la cadena proporcionada. + -n nombre + Lista aquellos videojuegos cuyo nombre contiene la cadena proporcionada. + Se ignorará el uso de mayúsculas/minúsculas en la comparación. + + -d desarrollador + Lista aquellos videojuegos cuyo desarrollador contiene la cadena proporcionada. Se ignorará el uso de mayúsculas/minúsculas en la comparación. + -bp plataforma1,plataforma2,plataforma... + Lista aquellos videojuegos que pertenecen a al menos una de las plataformas + que se indican. El listado de plataformas no puede incluir espacios. + -h Muestra este mensaje de ayuda. EJEMPLOS DE USO -java -jar videogameadvisor.jar -y 2018 -ag Accion,Rol +java -jar videogameadvisor.jar -ba 2018 -bg Accion,Rol Muestra los videojuegos que han salido en el año 2018 y son de acción y/o de comedia. -java -jar videogameadvisor.jar -t war +java -jar videogameadvisor.jar -n war Muestra los videojuegos cuyo título contiene la palabra war. -java -jar videogameadvisor.jar -td Accion,Aventura -b 2000,2010 -t auto +java -jar videogameadvisor.jar -bg Accion,Aventura -bas 2000,2010 -n auto Muestra los videojuegos cuyo título contiene la palabra auto, pertenecen al género de acción y aventura y fueron estrenados entre 2000 y 2010. diff --git a/src/main/java/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.java b/src/main/java/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.java index dd06473..fc7b349 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.java +++ b/src/main/java/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.java @@ -27,8 +27,14 @@ public class VideogameAdvisorRunApp { System.out.println(help.getHelp()); } else if (args.length == 1){ switch(args[0].toLowerCase()) { + case "-l": + videogameService.mostrarTodos().forEach(System.out::println); + break; case "-lg": - videogameService.findAllGenres().forEach(System.out::println); + videogameService.mostrarGeneros().forEach(System.out::println); + break; + case "-lp": + videogameService.mostrarPlataformas().forEach(System.out::println); break; case "-h": System.out.println(help.getHelp()); @@ -57,36 +63,40 @@ public class VideogameAdvisorRunApp { for(String[] argumento : argumentos) { switch (argumento[0].toLowerCase()) { - case "-ag": - videogameQueryService.anyGenre(argumento[1].split(",")); + case "-bg": + videogameQueryService.buscarGenero(argumento[1].split(",")); + break; + case "-ba": + videogameQueryService.buscarPorAnyo(argumento[1]); break; - case "-tg": - videogameQueryService.allGenres(argumento[1].split(",")); + case "-bas": + String[] anyos = argumento[1].split(","); + videogameQueryService.buscarEntreAnyos(anyos[0], anyos[1]); break; - case "-y": - videogameQueryService.year(argumento[1]); + case "-n": + videogameQueryService.buscarNombre(argumento[1]); break; - case "-b": - String[] years = argumento[1].split(","); - videogameQueryService.betweenYears(years[0], years[1]); + case "-d": + videogameQueryService.buscarDesarrollador(argumento[1]); break; - case "-t": - videogameQueryService.titleContains(argumento[1]); + case "-bp": + videogameQueryService.buscarPlataforma(argumento[1].split(",")); break; - default: error = true; - System.out.println("Error de sintaxis"); - System.out.println(help.getHelp()); + default: + error = true; + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); } } if (!error) { - Collection result = videogameQueryService.exec(); + Collection result = videogameQueryService.ejecutar(); System.out.printf("%s\t%-50s\t%s\t%s\t%s\t%s\n","ID","Nombre", "Desarrollador", "Géneros", "Fecha de salida", "Plataformas disonibles"); if (result != null) { result.forEach(vg -> System.out.printf("%s\t%-50s\t%s\t%s\t%s\t%s\n", vg.getId(), vg.getNombre(), vg.getDesarrollador(), vg.getGeneros().stream().collect(Collectors.joining(", ")), - vg.getFechaSalida(), vg.getPlataformas())); + vg.getFechaSalida(), vg.getPlataformas().stream().collect(Collectors.joining(", ")))); } else { System.out.println("No hay videojuegos que cumplan esos criterios. Lo sentimos"); } diff --git a/src/main/java/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.java b/src/main/java/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.java index df464e4..be77ce1 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.java +++ b/src/main/java/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.java @@ -23,7 +23,7 @@ public class UtilVideogameFileReader { .map(line -> { String[] values = line.split(separator); return new Videogame(Long.parseLong(values[0]), values[1], values[2], - Arrays.asList(values[3].split(listSeparator)), values[4], values[5]); + Arrays.asList(values[3].split(listSeparator)), values[4], Arrays.asList(values[5].split(listSeparator))); }).collect(Collectors.toList()); // @formatter:on diff --git a/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDao.java b/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDao.java index b64e9d8..54d5064 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDao.java +++ b/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDao.java @@ -5,9 +5,9 @@ import java.util.Collection; import com.daniminguet.videogameadvisor.model.Videogame; public interface VideogameDao { - public Videogame findById(long id); - public Collection findAll(); - public void insert(Videogame videogame); - public void edit(Videogame videogame); - public void delete(long id); + public Videogame buscarPorId(long id); + public Collection mostrarTodos(); + public void nuevoVideojuego(Videogame videogame); + public void editarVideojuego(Videogame videogame); + public void borrarVideojuego(long id); } diff --git a/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.java b/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.java index 3df2cd0..810683e 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.java +++ b/src/main/java/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.java @@ -16,56 +16,56 @@ import com.daniminguet.videogameadvisor.model.Videogame; @Repository public class VideogameDaoImplMemory implements VideogameDao { - public List videogames = new ArrayList(); + public List videojuegos = new ArrayList(); @Autowired private AppConfig appConfig; @PostConstruct - public void init() { - videogames = UtilVideogameFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator()); + public void iniciar() { + videojuegos = UtilVideogameFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator()); } - public Videogame findById(long id) { - Optional result = videogames.stream().filter(vg -> vg.getId() == id).findFirst(); - return result.orElse(null); + public Videogame buscarPorId(long id) { + Optional videojuegosPorId = videojuegos.stream().filter(vg -> vg.getId() == id).findFirst(); + return videojuegosPorId.orElse(null); } - public Collection findAll() { - return videogames; + public Collection mostrarTodos() { + return videojuegos; } - public void insert(Videogame videogame) { - videogames.add(videogame); + public void nuevoVideojuego(Videogame videojuego) { + videojuegos.add(videojuego); } - public void edit(Videogame videogame) { - int i = getIndexOf(videogame.getId()); + public void editarVideojuego(Videogame videojuego) { + int i = obtenerId(videojuego.getId()); if(i != -1) { - videogames.set(i, videogame); + videojuegos.set(i, videojuego); } } - public void delete(long id) { - int i = getIndexOf(id); + public void borrarVideojuego(long id) { + int i = obtenerId(id); if(i != -1) { - videogames.remove(i); + videojuegos.remove(i); } } - private int getIndexOf(long id) { - boolean found = false; + private int obtenerId(long id) { + boolean encontrado = false; int i = 0; - while(!found && i < videogames.size()) { - if(videogames.get(i).getId() == id) { - found = true; + while(!encontrado && i < videojuegos.size()) { + if(videojuegos.get(i).getId() == id) { + encontrado = true; } else { i++; } } - return (found) ? i : -1; + return (encontrado) ? i : -1; } } diff --git a/src/main/java/com/daniminguet/videogameadvisor/model/Videogame.java b/src/main/java/com/daniminguet/videogameadvisor/model/Videogame.java index e426dbb..2238281 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/model/Videogame.java +++ b/src/main/java/com/daniminguet/videogameadvisor/model/Videogame.java @@ -8,12 +8,11 @@ public class Videogame { private String desarrollador; private List generos; private String fechaSalida; - private String plataformas; + private List plataformas; public Videogame() {} - public Videogame(long id, String nombre, String desarrollador, List generos, String fechaSalida, - String plataformas) { + public Videogame(long id, String nombre, String desarrollador, List generos, String fechaSalida, List plataformas) { this.id = id; this.nombre = nombre; this.desarrollador = desarrollador; @@ -62,18 +61,18 @@ public class Videogame { this.fechaSalida = fechaSalida; } - public String getPlataformas() { + public List getPlataformas() { return plataformas; } - public void setPlataformas(String plataformas) { + public void setPlataformas(List plataformas) { this.plataformas = plataformas; } @Override public String toString() { return "Videogame [id=" + id + ", nombre=" + nombre + ", desarrollador=" + desarrollador + ", generos=" - + generos.toString() + ", fechaSalida=" + fechaSalida + ", plataformas=" + plataformas + "]"; + + generos.toString() + ", fechaSalida=" + fechaSalida + ", plataformas=" + plataformas.toString() + "]"; } diff --git a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryService.java b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryService.java index 4f083e9..9f32aca 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryService.java +++ b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryService.java @@ -5,10 +5,13 @@ import java.util.Collection; import com.daniminguet.videogameadvisor.model.Videogame; public interface VideogameQueryService { - public Collection exec(); - public VideogameQueryService anyGenre(String... genres); - public VideogameQueryService allGenres(String... genres); - public VideogameQueryService year(String year); - public VideogameQueryService betweenYears(String from, String to); - public VideogameQueryService titleContains(String title); + public Collection ejecutar(); + public VideogameQueryService buscarGenero(String... genero); + public VideogameQueryService mostrarGeneros(String... generos); + public VideogameQueryService buscarPorAnyo(String anyo); + public VideogameQueryService buscarEntreAnyos(String desde, String hasta); + public VideogameQueryService buscarNombre(String nombre); + public VideogameQueryService buscarDesarrollador(String desarrollador); + public VideogameQueryService buscarPlataforma(String... plataforma); + public VideogameQueryService mostrarPlataformas(String... plataformas); } diff --git a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.java b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.java index 3119a2e..17a53f5 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.java +++ b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.java @@ -22,14 +22,14 @@ public class VideogameQueryServiceImpl implements VideogameQueryService { private Predicate predicate; @PostConstruct - public void init() { + public void iniciar() { predicate = null; } @Override - public Collection exec() { + public Collection ejecutar() { //@formatter:off - return dao.findAll() + return dao.mostrarTodos() .stream() .filter(predicate) .collect(Collectors.toList()); @@ -37,44 +37,65 @@ public class VideogameQueryServiceImpl implements VideogameQueryService { } @Override - public VideogameQueryService anyGenre(String... genres) { - Predicate pAnyGenre = (vg -> Arrays.stream(genres).anyMatch(vg.getGeneros()::contains)); - predicate = (predicate == null) ? pAnyGenre : predicate.and(pAnyGenre); + public VideogameQueryService buscarGenero(String... genero) { + Predicate pBuscarGenero = (vg -> Arrays.stream(genero).anyMatch(vg.getGeneros()::contains)); + predicate = (predicate == null) ? pBuscarGenero : predicate.and(pBuscarGenero); return this; } @Override - public VideogameQueryService allGenres(String... genres) { - Predicate pAllGenre = (vg -> Arrays.stream(genres).allMatch(vg.getGeneros()::contains)); - predicate = (predicate == null) ? pAllGenre : predicate.and(pAllGenre); + public VideogameQueryService mostrarGeneros(String... generos) { + Predicate pTodosGeneros = (vg -> Arrays.stream(generos).allMatch(vg.getGeneros()::contains)); + predicate = (predicate == null) ? pTodosGeneros : predicate.and(pTodosGeneros); return this; } @Override - public VideogameQueryService year(String year) { - Predicate pYear = (vg -> vg.getFechaSalida().substring(vg.getFechaSalida().length()-4, vg.getFechaSalida().length()-1).equalsIgnoreCase(year)); - predicate = (predicate == null) ? pYear : predicate.and(pYear); + public VideogameQueryService buscarPorAnyo(String anyo) { + Predicate pAnyo = (vg -> vg.getFechaSalida().substring(vg.getFechaSalida().length()-4, vg.getFechaSalida().length()-1).equalsIgnoreCase(anyo)); + predicate = (predicate == null) ? pAnyo : predicate.and(pAnyo); return this; } @Override - public VideogameQueryService betweenYears(String from, String to) { - Predicate pBetweenYears = (vg -> { - LocalDate fromYear = LocalDate.of(Integer.parseInt(from), 1, 1); - LocalDate toYear = LocalDate.of(Integer.parseInt(to), 1, 3); - LocalDate videogameYear = LocalDate.of(Integer.parseInt(vg.getFechaSalida().substring(vg.getFechaSalida().length()-4, vg.getFechaSalida().length()-1)), 1, 2); + public VideogameQueryService buscarEntreAnyos(String desde, String hasta) { + Predicate pEntreAnyos = (vg -> { + LocalDate desdeAnyo = LocalDate.of(Integer.parseInt(desde), 1, 1); + LocalDate hastaAnyo = LocalDate.of(Integer.parseInt(hasta), 1, 3); + LocalDate videojuego = LocalDate.of(Integer.parseInt(vg.getFechaSalida().substring(vg.getFechaSalida().length()-4, vg.getFechaSalida().length()-1)), 1, 2); - return videogameYear.isAfter(fromYear) && videogameYear.isBefore(toYear); + return videojuego.isAfter(desdeAnyo) && videojuego.isBefore(hastaAnyo); }); - predicate = (predicate == null) ? pBetweenYears : predicate.and(pBetweenYears); + predicate = (predicate == null) ? pEntreAnyos : predicate.and(pEntreAnyos); return this; } @Override - public VideogameQueryService titleContains(String title) { - Predicate pTitleContains = (vg -> vg.getNombre().toLowerCase().contains(title.toLowerCase())); - predicate = (predicate == null) ? pTitleContains : predicate.and(pTitleContains); + public VideogameQueryService buscarNombre(String nombre) { + Predicate pNombre = (vg -> vg.getNombre().toLowerCase().contains(nombre.toLowerCase())); + predicate = (predicate == null) ? pNombre : predicate.and(pNombre); + return this; + } + + @Override + public VideogameQueryService buscarDesarrollador(String desarrollador) { + Predicate pDesarrollador = (vg -> vg.getNombre().toLowerCase().contains(desarrollador.toLowerCase())); + predicate = (predicate == null) ? pDesarrollador : predicate.and(pDesarrollador); + return this; + } + + @Override + public VideogameQueryService buscarPlataforma(String... plataforma) { + Predicate pBuscarPlataforma = (vg -> Arrays.stream(plataforma).anyMatch(vg.getPlataformas()::contains)); + predicate = (predicate == null) ? pBuscarPlataforma : predicate.and(pBuscarPlataforma); + return this; + } + + @Override + public VideogameQueryService mostrarPlataformas(String... plataformas) { + Predicate pTodasPlataformas = (vg -> Arrays.stream(plataformas).allMatch(vg.getPlataformas()::contains)); + predicate = (predicate == null) ? pTodasPlataformas : predicate.and(pTodasPlataformas); return this; } diff --git a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameService.java b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameService.java index 6802274..56a2256 100644 --- a/src/main/java/com/daniminguet/videogameadvisor/service/VideogameService.java +++ b/src/main/java/com/daniminguet/videogameadvisor/service/VideogameService.java @@ -18,11 +18,11 @@ public class VideogameService { @Autowired VideogameQueryService queryService; - public Collection findAllGenres() { - List result = null; + public Collection mostrarGeneros() { + List generos = null; // @formatter:off - result = videogameDao.findAll() + generos = videogameDao.mostrarTodos() .stream() .map(vg -> vg.getGeneros()) .flatMap(list -> list.stream()) @@ -32,30 +32,51 @@ public class VideogameService { // @formatter:on - return result; + return generos; } - public Collection findByAnyGenre(String... genres) { - return queryService.anyGenre(genres).exec(); + public Collection buscarGenero(String... genero) { + return queryService.buscarGenero(genero).ejecutar(); } - public Collection findByAllGenres(String... genres) { - return queryService.allGenres(genres).exec(); + public Collection buscarAnyo(String anyo) { + return queryService.buscarPorAnyo(anyo).ejecutar(); } - public Collection findByYear(String year) { - return queryService.year(year).exec(); + public Collection buscarEntreAnyos(String desde, String hasta) { + return queryService.buscarEntreAnyos(desde, hasta).ejecutar(); } - public Collection findBetweenYears(String from, String to) { - return queryService.betweenYears(from, to).exec(); + public Collection buscarNombre(String nombre) { + return queryService.buscarNombre(nombre).ejecutar(); } - public Collection findByTitleContains(String title) { - return queryService.titleContains(title).exec(); + public Collection mostrarTodos() { + return videogameDao.mostrarTodos(); } + + public Collection buscarDesarrollador(String desarrollador) { + return queryService.buscarDesarrollador(desarrollador).ejecutar(); + } + + public Collection buscarPlataforma(String plataforma) { + return queryService.buscarPlataforma(plataforma).ejecutar(); + } + + public Collection mostrarPlataformas() { + List plataformas = null; + + // @formatter:off + plataformas = videogameDao.mostrarTodos() + .stream() + .map(vg -> vg.getPlataformas()) + .flatMap(list -> list.stream()) + .distinct() + .sorted() + .collect(Collectors.toList()); + + // @formatter:on - public Collection findAll() { - return videogameDao.findAll(); + return plataformas; } } diff --git a/src/main/resources/VIDEOJUEGOS.csv b/src/main/resources/VIDEOJUEGOS.csv index bade0f7..9f92b1a 100644 --- a/src/main/resources/VIDEOJUEGOS.csv +++ b/src/main/resources/VIDEOJUEGOS.csv @@ -1,11 +1,11 @@ ID,NOMBRE,DESARROLLADOR,GENERO,FECHA SALIDA,PLATAFORMAS DISPONIBLES -1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5 y PS4 -2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX y PC -3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo, Moviles y PC -4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX y PC -5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX y PC -6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX y PC -7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS y PC -8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5 y PS4 -9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX y PC -10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX y PC +1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5-PS4 +2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX-PC +3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo-Moviles-PC +4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX-PC +5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX-PC +6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX-PC +7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS-PC +8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5-PS4 +9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX-PC +10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX-PC diff --git a/src/main/resources/ayuda.txt b/src/main/resources/ayuda.txt index cd3c33b..82fc308 100644 --- a/src/main/resources/ayuda.txt +++ b/src/main/resources/ayuda.txt @@ -1,41 +1,53 @@ Sintaxis: java -jar videogameadvisor.jar [OPCIONES] + -l + Lista todos los videojuegos. + No se pueden utilizar más parámetros. + -lg - Lista los diferentes géneros de videojuegos de la colección. + Lista los diferentes géneros de videojuegos. + No se pueden utilizar más parámetros. + + -lp + Lista las diferentes plataformas de videojuegos. No se pueden utilizar más parámetros. - -ag genero1,genero2,genero... + -bg genero1,genero2,genero... Lista aquellos videojuegos que pertenecen a al menos uno de los géneros que se indican. El listado de géneros no puede incluir espacios. - -tg genero1,genero2,genero... - Lista aquellos videojuegos que pertenecen a todos y cada uno de los - géneros que se indican. El listado de géneros no puede incluir espacios. - - -y año + -ba año Lista aquellos videojuegos que se estrenaron en el año indicado. El año debe expresarse con 4 cifras. - -b desde,hasta + -bas desde,hasta Lista aquellos videojuegos que se estrenaron entre los años DESDE y HASTA. Los años indicados están incluidos. Deben expresarse con 4 cifras. - -t titulo - Lista aquellos videojuegos cuyo título contiene la cadena proporcionada. + -n nombre + Lista aquellos videojuegos cuyo nombre contiene la cadena proporcionada. + Se ignorará el uso de mayúsculas/minúsculas en la comparación. + + -d desarrollador + Lista aquellos videojuegos cuyo desarrollador contiene la cadena proporcionada. Se ignorará el uso de mayúsculas/minúsculas en la comparación. + -bp plataforma1,plataforma2,plataforma... + Lista aquellos videojuegos que pertenecen a al menos una de las plataformas + que se indican. El listado de plataformas no puede incluir espacios. + -h Muestra este mensaje de ayuda. EJEMPLOS DE USO -java -jar videogameadvisor.jar -y 2018 -ag Accion,Rol +java -jar videogameadvisor.jar -ba 2018 -bg Accion,Rol Muestra los videojuegos que han salido en el año 2018 y son de acción y/o de comedia. -java -jar videogameadvisor.jar -t war +java -jar videogameadvisor.jar -n war Muestra los videojuegos cuyo título contiene la palabra war. -java -jar videogameadvisor.jar -td Accion,Aventura -b 2000,2010 -t auto +java -jar videogameadvisor.jar -bg Accion,Aventura -bas 2000,2010 -n auto Muestra los videojuegos cuyo título contiene la palabra auto, pertenecen al género de acción y aventura y fueron estrenados entre 2000 y 2010. diff --git a/target/classes/META-INF/maven/com.daniminguet.springcore/PracticaSpringCore/pom.properties b/target/classes/META-INF/maven/com.daniminguet.springcore/PracticaSpringCore/pom.properties index b376251..7dfbdd6 100644 --- a/target/classes/META-INF/maven/com.daniminguet.springcore/PracticaSpringCore/pom.properties +++ b/target/classes/META-INF/maven/com.daniminguet.springcore/PracticaSpringCore/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Sat Nov 19 18:57:02 CET 2022 +#Thu Nov 24 17:38:06 CET 2022 m2e.projectLocation=C\:\\Users\\Dani\\Documents\\workspace-spring-tool-suite-4-4.15.3.RELEASE\\PracticaSpringCore m2e.projectName=PracticaSpringCore groupId=com.daniminguet.springcore diff --git a/target/classes/VIDEOJUEGOS.csv b/target/classes/VIDEOJUEGOS.csv index bade0f7..9f92b1a 100644 --- a/target/classes/VIDEOJUEGOS.csv +++ b/target/classes/VIDEOJUEGOS.csv @@ -1,11 +1,11 @@ ID,NOMBRE,DESARROLLADOR,GENERO,FECHA SALIDA,PLATAFORMAS DISPONIBLES -1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5 y PS4 -2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX y PC -3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo, Moviles y PC -4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX y PC -5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX y PC -6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX y PC -7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS y PC -8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5 y PS4 -9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX y PC -10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX y PC +1,God of War: Ragnarok,Santa Monica Studio,Accion-Aventura-Lucha-Rol,09/11/2022,PS5-PS4 +2,FIFA 23,Electronic Arts,Deportes-Simulacion,27/09/2022,PS5-Nintendo Switch-XBOX-PC +3,Minecraft,Mojang Studios,Supervivencia-Sandbox,17/05/2009,PS-XBOX-Nintendo-Moviles-PC +4,Grand Theft Auto V,Rockstar Games,Mundo abierto,17/09/2013,PS-XBOX-PC +5,CounterStrike: Global Offensive,Valve Corporation,De disparos tactico,21/08/2012,XBOX-PC +6,Elden Ring,FromSoftware,Aventura-Mundo abierto,25/02/2022,PS-XBOX-PC +7,Uncharted 4,Naughty Dog,Accion-Aventura,10/05/2016,PS-PC +8,Ghost of Tsushima,Sucker Punch Productions,Rol-Sigilo-Accion-Aventura-Lucha,17/07/2020,PS5-PS4 +9,The Witcher 3,CD Projekt,Mundo abierto,19/05/2015,PS-NINTENDO-XBOX-PC +10,Assassins Creed: Origins,Ubisoft,Mundo abierto-Accion-Aventura-Sigilo,27/10/2017,PS-XBOX-PC diff --git a/target/classes/ayuda.txt b/target/classes/ayuda.txt index cd3c33b..82fc308 100644 --- a/target/classes/ayuda.txt +++ b/target/classes/ayuda.txt @@ -1,41 +1,53 @@ Sintaxis: java -jar videogameadvisor.jar [OPCIONES] + -l + Lista todos los videojuegos. + No se pueden utilizar más parámetros. + -lg - Lista los diferentes géneros de videojuegos de la colección. + Lista los diferentes géneros de videojuegos. + No se pueden utilizar más parámetros. + + -lp + Lista las diferentes plataformas de videojuegos. No se pueden utilizar más parámetros. - -ag genero1,genero2,genero... + -bg genero1,genero2,genero... Lista aquellos videojuegos que pertenecen a al menos uno de los géneros que se indican. El listado de géneros no puede incluir espacios. - -tg genero1,genero2,genero... - Lista aquellos videojuegos que pertenecen a todos y cada uno de los - géneros que se indican. El listado de géneros no puede incluir espacios. - - -y año + -ba año Lista aquellos videojuegos que se estrenaron en el año indicado. El año debe expresarse con 4 cifras. - -b desde,hasta + -bas desde,hasta Lista aquellos videojuegos que se estrenaron entre los años DESDE y HASTA. Los años indicados están incluidos. Deben expresarse con 4 cifras. - -t titulo - Lista aquellos videojuegos cuyo título contiene la cadena proporcionada. + -n nombre + Lista aquellos videojuegos cuyo nombre contiene la cadena proporcionada. + Se ignorará el uso de mayúsculas/minúsculas en la comparación. + + -d desarrollador + Lista aquellos videojuegos cuyo desarrollador contiene la cadena proporcionada. Se ignorará el uso de mayúsculas/minúsculas en la comparación. + -bp plataforma1,plataforma2,plataforma... + Lista aquellos videojuegos que pertenecen a al menos una de las plataformas + que se indican. El listado de plataformas no puede incluir espacios. + -h Muestra este mensaje de ayuda. EJEMPLOS DE USO -java -jar videogameadvisor.jar -y 2018 -ag Accion,Rol +java -jar videogameadvisor.jar -ba 2018 -bg Accion,Rol Muestra los videojuegos que han salido en el año 2018 y son de acción y/o de comedia. -java -jar videogameadvisor.jar -t war +java -jar videogameadvisor.jar -n war Muestra los videojuegos cuyo título contiene la palabra war. -java -jar videogameadvisor.jar -td Accion,Aventura -b 2000,2010 -t auto +java -jar videogameadvisor.jar -bg Accion,Aventura -bas 2000,2010 -n auto Muestra los videojuegos cuyo título contiene la palabra auto, pertenecen al género de acción y aventura y fueron estrenados entre 2000 y 2010. diff --git a/target/classes/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.class b/target/classes/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.class index 1c311313096f2855adf82f356ca767da90e6a11d..73eacde7c8de2e403108f511cce1a2045ffb173b 100644 GIT binary patch delta 2700 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 diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class b/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class index 18e15e424159b3d5ec49bf393a3bb714d801131c..18f88b2261cabc37ca49e1a8cc48d237236fcd7e 100644 GIT binary patch delta 107 zcmew(*(kNaiGw*x!)p?w*5rH+B_QV7JeT7HGiMSL&9hyk+L7_=v!;xPgM`@a(F delta 75 zcmZpa`Xjl)iGw*t!)p?w*5rH+rO6N2cs9@GIKj-B#lXeD!oa|wH93bzZSqVWSxGep bNd|79h!_JCNSvXbAqL1|V^EoVp2r9P#<35G diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class index 89a5c3977722532b76505289a4379e944bc94499..6964f1e02a7a015b4530c86d3ab36b354f64c016 100644 GIT binary patch delta 116 zcmcb~+`uv+l8Za3v^Y7jC?LORVuFnTPi}s3Nl{`^NPbFwF(ZS-#B<^k_r;0w=ar_G z<%eaaq~>Rprl#jJGMH-kOcYR@*d?H$8OF#UkeZTNl30YSKp-i<2xt&OXmU1V9sncf BC-?vW delta 87 zcmZo*xyd{sQh*~ZGcU!d(ldpT!BoRb(`TZ9;$#6v0WL-cc94u?PR_(N6+CR2dBv$k fB_K606+)U}j0`NPDVab~wv^PI)RNT6lNj>=4%!!x diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class index a40a61b681e9a6c3a18a1a98001e25acb243ab94..a84db6e660eb3744525a54f99cd6d11d6011b45b 100644 GIT binary patch delta 218 zcmZ1=cS~-lCKhc@WXfdZ;!Y|pPEITe$S>M_ zk@*Rupa4R3F;LJmW%3@@T3(*q{Nj?L#G;V=l>Fk!j%+!i{CTCRW%*%nqZt`YHGC!; zGAmC0%`7na6`Kw>7s8~;3hd^B0;wsPC5c4{Et6x|Rk%3wlS)$aQb87VvquXGB;^+Y b?LkuXmOYxAD>W}UKM&}Dl>E(p9GBPt2&qo! delta 155 zcmca5w?J;fEH19H%#_sp^u*lMjZ1ehva)36WtMDCWy)k^=Sa)UOL3~)e1rK3BRgAB zYH?{!$>g)FwH)jq3CEnA$>D4{+-#Y7#i>Olj0~n4lOHe}P3C0R;o^jwIoW~ToRuXt zC9`C52fGS4S9)rRXI@Hbg@4-QZS2wPY$>TZsU@kCl{li=Skv-L^HMfU} z^sJ`x-ybX$@_i^o0a%F1lYOQ><=5WN&A>wvailPZSw-Lh-sb;G~hj@l(}*)6g*Szg-ig4}ya)zS5}ChDARx>ti+04L1#v`%IH1BExL z5H|v6*YtoshuXWEfc_D^U6eQLp?6X|d#EyMuSfRkx1mHMz0S!5N2xx;1Q%mc%lO7w Y101ubi*w#-W>d!@GRQJhxHQ#+e-^euod5s; delta 369 zcmXxgO-chn5Cz~@Gj!53M8)VhNd%QZejJITf(mL945Euja1lb39KsXm+AOV&x)Bjv zE8*37#)RMtUhdy_K9<9th64+td#?(5h2NR7Xxz z?CYH)u4@5(GJSd1U(+d0!$TgEn87TggaAvJLlvP8GTp!;iyD9>-PE6EOOjiKL|K zUT~eQn*|swYTJf-kd39BuwK!t^jhj)^eFYbt(#SPOz+7?YL9l!Y|*yUyFYeccIZvh zqP0^Sd%oL%=)G5#PEym@Ma+Tn9H|9|0c4_;H&kA@a`*&r&_oZ}<0$DdKLyJQ!5-Kt ltsKMU3K;5%-_r-bSn2ZY7=3j40sl`PB1C~Z!6~zYvp=wqJ30UW diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class index 06d2978a6fd35c92f4298fc2a9732280ad2c3c80..70062c7d39809976b83e8eb73e4487a9de9a3b74 100644 GIT binary patch delta 228 zcmZ3-I+u;>)W2Q(7#J8#7{n%W#c*<@W~C;VmLwKU%&y?&Nh&Q)PAqay%}XuHpZF$9 znJ+iLxTFXsQq0J}3sDh}U*woqna{`&qA~GfsDJ=O)HSc9C>10=c@JZb7t}Dn{M@9X zR7M72h#HsF;>4n&{G6P`l>8z_2B^+}oWzpEwEUvnL`DW7sGSJ0$)-$ZjGU8mm@Jf7 e7#Rc^co`U28X1HbxWKe9h-P495CM`*459$1l|}sk delta 130 zcmbQswvJWc)W2Q(7#J8#7=+mwm>3!CCNnbGP4tssWl60_O`e!v!N-x9SLvRbSCq=g z5ULS9xsWkbkTWqS2P{;~$iPyWnpiYBmobuuCn>e0JT)~h5+rbqF^8A8B(o$Z)j2<} cBr!8@au1UkBirP|Ocq=Wj0}Q6E14LC0KkMK{{R30 diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class index 7781d8284bd243be6669b99a190a787ad61b90e1..35d641433f55370dd3c13b1df43236a2f712d0ac 100644 GIT binary patch delta 2597 zcmb7_d2|z16vn@oWhTp{O`8_h)xNnFGcxN(ADCG}4Cz;%Qx%YS9z4yJBHAB~r zbniIQz7@c5<`!XMDCQk$efSttpY>BRO*SzY4%P+bC=Z$n>^7xdscVYSw^gQ1E~z1+ z#-ehxBI1vzZ8hdf=9X%k)H*qOo)T7~5r#@W%;x3Og%a+yZWVROQ_c4Y-ZWQZ@iCtK zpmpfEX$CG4tY(7Y90oCJqBgI&Tf zmS7%!*yZG7L_6Ou^lrBL71ggWSZB#9A5W@O5s;V)e zGk6j?$118EjYdKt*&m5!!m4?@h@TP}(i*#XH76H5IV8vAnUQFNoC!f|nxiqPFk~35 zPI)n88of?w)NfG>b*4h8hzzagvU-dggDoUC)cWOqe28tLFc+ znWs8xZ3}Rlgxj%#FLLDdslrMLcj7MUUq}fDVzU^`0|%8lP=!?zR^uMN(=otSg?lC3 zhqcR`%X>eBM?^eK%TLX?G#pa`N>sw5c#O9>`wOjjLd4^IkF%HgNv!9Goc(OAXp`_1 zHuC<`@V>3sBw;f)Qo%vBSfTdPsO|d56ZF(BK1v5fVO03 zt427m0NW&N#|rWeD6z!!wF;h-@VurvW0A7RTqRl}tBR(-DB&f%%nwNUqdO@hQ@~Lg z@HGjqVgaK?aO0rl3 z52|uwmxB)8rxIdlN*C}6-;!3;yvL9~lW?;x?{}k9`&z;>aB}@BrF}2qemp?hft2=( zglBcXpHteO5?;}@KT_I15?M;A`_^1y@;k*FjP<$RAXA# zcBR{y#f`NTRT`#?s3at-s-lWa;w|ZeOe~GBORr|0Hk&)wlrtHnRIi9rZ~-MT;e5IY zrA~!6dwcLT89pn+6qIx3^{@)=%NWA9W%_ca;v&OuTDQn)T4Yg`h!QXn>?rIo)29es zGU+D$gc?kzX9nfm0yEtaK;Qhq?U=#KJQD`UdIFMAOO^>XT4WuiGA9?QD}1}BM?P`8 zWV3W;J1(K$C_~Z9DE9htW+uxBbSopEmC?To_=IK5GN?g~YA>gDR=`KMe|l!mocbhx zb~pa)lj64^gtPVLH|YE-;#U*DM(2l<1B`UzM~nfUW^ObHm+AzW2(?70(+SZeLG4CR z4MOjHw?jJ;#31k&n1`|zt>qNuQiJFU5bFpSyhs3dACDOC4*_Jrs+}5M8S<7RB1LLUH zc4|Zxitr3s7K}nq+Q{wn_fg`6m5h!drBEBpUKIeeP_eM-53IQR_d(ZtT^qefS(-=+>9` z2H)z|clZH6>ef&A6~F1$?>LCRbn6iQ#bMn#!Wc7Y7Be#&voi-}pnn18WGA_O delta 1784 zcma)5X>$}+6g{t}r+bz+*#ij{A%Q?b0wkrBSfLa{v>+NbNhFJkoum^Qdb;CGv&0Re zqT+`7Kn0heptyjF(IEuH6&DmlQE@l8;aa7C0KMIruz#?omow+Rd(XZ1o!&NS!-UY@ zqkX#pOvGQ?LXDDNHY~#trc~ya^<{dC*d%QasBMPTT4|a+3w(7fC7@ZI({wAQGt?C~ zi4L_+6#93Mj_GlR%%+-!+7hkI)U5WhxlYWm+9xvvJ1UbQBCJdp6Vy!8OAyZh!xV2l z$uP*Bx)x)oEp`)g3AG#-qK@Hgm&g)-DQ=k6fWcQhwmO7*tme2E_le$cQJ@}zV-41dBjGj5Iy|gmz3AdYe2?H!v7V1E z=*HtJHqdE$gLI6jURGnbXy!$lqjNlgjiR3y2D2m<9G?H$P?|lGt-VX z$8@*&mpNW>*|1~R*h}?Tl@|B-?Hs+>Ar3}L#pD!Ic@1x)h;y~UY4wlNKRLS(=9INH#js^DF5IJIK=-Xy)BV}(cWOT!>{kmDAtq^+ME z=f2>001py(=s5Q+#|z%RZw9z9e!x#Eek7lG1NF>MW5ns4d$A`qh{I`EOCGJZtW;{v z)Z%eHuHrX_(IPE9FH~4#+lv;HSN;%@^d=VRG1BuSu|Fe}IU5`jE~U?xQ!6UY!fer> zJw)_njvP7%ml2mvYtO+)KVW2OALfd#jPW8rD}VSLT%L@XcUqQtZkCFA6;)s=*uMzE zM{gA#C3%pR(1@m_#x7EjNn=#$xISDVwr0&Jn(qk^g{uik2vB(%N%@Wy>@lJsd&m^Z zdy<+wsCJ5A^BJ3J@tWG0oj<(wSX26GP3dk^mz*SXdQ)j3*AB_1rc$jEHI-A+iv^_# zL>m%_&+EfdU-opP(+WGbexfU=X<}88n@S=PKoq%B}95z#VF9 z63DFy+*6Xk{aa{=r$`KDB|j#!Zl|mYt<9qPACl!>JT|kGP=%}z ztdPf%j(dArN#JR@yZ!DKf3AOg0-M$$HP@djC-AgblUshiDC6b{lAM z7rkGl`vPj?ZBlv%@8bgxeTa{6z(XJ7Q+(#3&+#R`^3d1#4&QsIA3x(49HAWU$NnpR I$Dhdk4;B-pX#fBK diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class index d9a669524b1b351ae8b5e0e8cdcbc066f88458d8..89f7d00a018a1401aa32b7bb015b501192d2fd58 100644 GIT binary patch delta 1569 zcmZ{jU2GIp6vzK}KW4f!v$NA}m)#OwTY4Z$>3X@y9`wrc%k+MO<~yE{0u zMX=zCD2U&1{r;*I#cu@*CdFuc(FY$$cr?+(#P~`~d^esuGu>_wA7<{IbARW5&bjBz zA6>t7D?k5p_Im)=;mj%JJZsY{wp(*dXR}qc9NT5c^zy$V9b5_>%4osah+VW@6`iq)bBb#rmszZH8PgKOb%9o%EcMCRg64;eI^85cip3+wrjx zffZzih)Hg|E@#?(;?`=-u>?c)ZS3W?dO80!8uRr2l=mo>1{0GElS@Z~>lva&%Pm^8 z?lj$+$q-a`hg}(WEK$Hi8m2@RQdO9EHnzRq=7+n*a!tpv%Vo1@I|ALMq3R_}n#(5) zMo>W6teKOxQ!!=K$U1HAHuGh(TFMt{&Q!G|Bz9|X#4Rej8ZbjLXwa~4yNndvBtqy; zB8+YZbs2VfH8v8fQwI}=TTj*>4g{TM(932Eq7(v1i;^SX!5s_t6&5k`Kl$D4#b4pOGzw4Sks!dHri{~G zfD^>>v3OeD3%bj-A)Ljdd^Wyr%>W(T1{IrOU=S-Ygw?nmYq16EuoXAb*-aSc=i=%0 zv$SW#0iy5_*=Nav8H$)WvWV8@X%(G`=DxvW{Awe6#gljnAckfzUN&~NErq;d(UYUIH)sss!n>IBcJJXhKJa!Q;$wW`?LNg9_!3_cFaFh&_!_6t F@h@E0GaUc` delta 973 zcmZWnOHUI~7(KU-89JTPDbND(NmMY!L=ub|VIkCrCL~R;sHg}nOtDg?*lC3-THjAp z4u+uRC3u_>Kz~F8l+;Z)Peqn#p~g?|kRn@0)UpjDr|t zkYfu0ogvOA#5&4t-4aiyh8S#_6hpaX7)fN3YAB^;q6y8s+^~#8hOsA89AR*pXNGqE zi&gTuk`4U5tHU*doQP3|hDle0Q^pY-zl4fV3?4RLDnnanu4qX6T2znIP!$uP>`o8wriT24ke?yuIeJD7*_GHyu_`qY)_>I zv%@0p^IlIklcr}qD;SILZ>2%kF6<`tlj!2FOKXHZHq0Qxo4rB56=3Mbe%KJ8cVR;h zukre;drcC{@YicKm2cni;Cz@jNuqSbovJ*U{n~Q)sPZ{GdN+@WyeB;78j+9 z)bp)GZKGlN8^|^~IdF<*8%}S8NE@TKXJ|c3BS7#twdE?VW76Dl+`?_#p_uVV?&2OE Gp!yG)J;zS~