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 1c31131..73eacde 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.class and b/target/classes/com/daniminguet/videogameadvisor/VideogameAdvisorRunApp.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class b/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class index 18e15e4..18f88b2 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class and b/target/classes/com/daniminguet/videogameadvisor/dao/UtilVideogameFileReader.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class index 89a5c39..6964f1e 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class and b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDao.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class index a40a61b..a84db6e 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class and b/target/classes/com/daniminguet/videogameadvisor/dao/VideogameDaoImplMemory.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/model/Videogame.class b/target/classes/com/daniminguet/videogameadvisor/model/Videogame.class index 59da53e..5051541 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/model/Videogame.class and b/target/classes/com/daniminguet/videogameadvisor/model/Videogame.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class index 06d2978..70062c7 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class and b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryService.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class index 7781d82..35d6414 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class and b/target/classes/com/daniminguet/videogameadvisor/service/VideogameQueryServiceImpl.class differ diff --git a/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class b/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class index d9a6695..89f7d00 100644 Binary files a/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class and b/target/classes/com/daniminguet/videogameadvisor/service/VideogameService.class differ