diff --git a/pom.xml b/pom.xml index 7b51679..7ed8a41 100644 --- a/pom.xml +++ b/pom.xml @@ -2,8 +2,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.openwebinars - 19-MovieAdvisor + com.antoniofrische + PerifericoAdvisor 0.0.1-SNAPSHOT 19-MovieAdvisor Ejemplo que integra todos los conocimientos del curso de Spring. diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.java b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.java new file mode 100644 index 0000000..c2728ba --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.java @@ -0,0 +1,22 @@ +package com.antoniofrische.perifericosAdvisor; + +import com.antoniofrische.perifericosAdvisor.config.AppConfig; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + + +public class MovieAdvisorApp { + + public static void main(String[] args) { + + ApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class); + + MovieAdvisorRunApp runApp = appContext.getBean(MovieAdvisorRunApp.class); + + runApp.run(args); + + ((AnnotationConfigApplicationContext) appContext).close(); + + } + +} diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.java b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.java new file mode 100644 index 0000000..36182b3 --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.java @@ -0,0 +1,36 @@ +package com.antoniofrische.perifericosAdvisor; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Component; +import org.springframework.util.ResourceUtils; + + +@Component +public class MovieAdvisorHelp { + + private String help; + + + public void init() { + try { + // @formatter:off + help = Files + .lines(Paths.get(ResourceUtils.getFile("classpath:ayuda.txt").toURI())) + .collect(Collectors.joining("\n")); + // @formatter:on + + } catch (IOException e) { + System.err.println("Error cargando el texto de ayuda"); + System.exit(-1); + } + } + + public String getHelp() { + return help; + } + +} diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.java b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.java new file mode 100644 index 0000000..e11f7f2 --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.java @@ -0,0 +1,97 @@ +package com.antoniofrische.perifericosAdvisor; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.antoniofrische.perifericosAdvisor.model.Periferico; +import com.antoniofrische.perifericosAdvisor.service.PerifericoQueryService; +import com.antoniofrische.perifericosAdvisor.service.PerifericoService; + +@Component +public class MovieAdvisorRunApp { + + @Autowired + PerifericoService perifericoService; + + @Autowired + PerifericoQueryService perifericoQueryService; + + @Autowired + MovieAdvisorHelp help; + + public void run(String[] args) { + + if (args.length < 1) { + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); + } else if (args.length == 1) { + switch (args[0].toLowerCase()) { + case "-lg": + perifericoService.findAllTipo().forEach(System.out::println); + break; + case "-h": + System.out.println(help.getHelp()); + break; + default: + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); + + } + } else if (args.length % 2 != 0) { + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); + } else if (args.length > 8) { + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); + } else { + + List argumentos = new ArrayList<>(); + + for (int i = 0; i < args.length; i += 2) { + argumentos.add(new String[] { args[i], args[i + 1] }); + } + + boolean error = false; + + for (String[] argumento : argumentos) { + switch (argumento[0].toLowerCase()) { + case "-at": + perifericoQueryService.anyTipo(argumento[1].split(",")); + break; + case "-tt": + perifericoQueryService.allTipo(argumento[1].split(",")); + break; + case "-c": + perifericoQueryService.color(null); + break; + case "-t": + perifericoQueryService.titleContains(argumento[1]); + break; + default: error = true; + System.out.println("Error de sintaxis"); + System.out.println(help.getHelp()); + } + + } + + if (!error) { + Collection result = perifericoQueryService.exec(); + System.out.printf("%s\t%-50s\t%s\t%s\n","ID","Título", "Año", "Géneros"); + if (result != null) { + result.forEach(f -> System.out.printf("%s\t%-50s\t%s\t%s\n", + f.getId(), f.getNombre(), f.getColor(), + f.getTipo().strip().collect(Collectors.joining(", ")))); + } else { + System.out.println("No hay películas que cumplan esos criterios. Lo sentimos"); + } + } + } + + } + +} diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.java b/src/main/java/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.java index 92a6ef0..51bbd5a 100644 --- a/src/main/java/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.java +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.java @@ -40,8 +40,8 @@ public class PerifericoQueryServiceImpl implements PerifericoQueryService{ return this; } - public PerifericoQueryServiceImpl allTipo(String... genres) { - Predicate pAllGenres = (periferico -> Arrays.stream(genres).allMatch(periferico.getTipo()::contains)); + public PerifericoQueryServiceImpl allTipo(String... tipo) { + Predicate pAllGenres = (periferico -> Arrays.stream(tipo).allMatch(periferico.getTipo()::contains)); predicate = (predicate == null) ? pAllGenres : predicate.and(pAllGenres); return this; } diff --git a/src/main/resources/ayuda.txt b/src/main/resources/ayuda.txt index 9dbef7f..390b952 100644 --- a/src/main/resources/ayuda.txt +++ b/src/main/resources/ayuda.txt @@ -1,27 +1,23 @@ Sintaxis: java -jar movieadvisor.jar [OPCIONES] - -lg - Lista los diferentes géneros de películas de la colección. + -lt + Lista los diferentes tipos de perifericos de la colección. No se pueden utilizar más parámetros. - -ag genero1,genero2,genero... - Lista aquellas películas que pertenecen a al menos uno de los géneros - que se indican. El listado de géneros no puede incluir espacios. + -at genero1,genero2,genero... + Lista aquellos perifericos que pertenecen a al menos uno de los tipos + que se indican. El listado de tipos no puede incluir espacios. - -tg genero1,genero2,genero... - Lista aquellas películas que pertenecen a todos y cada uno de los - géneros que se indican. El listado de géneros no puede incluir espacios. + -tt genero1,genero2,genero... + Lista aquellos perifericos que pertenecen a todos y cada uno de los + tipos que se indican. El listado de géneros no puede incluir espacios. - -y año - Lista aquellas películas que se estrenaron en el año indicado. - El año debe expresarse con 4 cifras. - - -b desde,hasta - Lista aquellas películas que se estrenaron entre los años DESDE y HASTA. - Los años indicados están incluidos. Deben expresarse con 4 cifras. + -c color + Lista aquellos perifericos que estan en el color indicado. + El color debe expresarse con con letras y NO RGB o HEX. -t titulo - Lista aquellas películas cuyo título contiene la cadena proporcionada. + Lista aquellos perifericos cuyo nombre contiene la cadena proporcionada. Se ignorará el uso de mayúsculas/minúsculas en la comparación. -h @@ -29,24 +25,23 @@ Sintaxis: java -jar movieadvisor.jar [OPCIONES] EJEMPLOS DE USO -java -jar movieadvisor.jar -y 2018 -ag Action,Comedy -Muestra las películas estrenadas de 2018 de acción y/o de comedia. +java -jar movieadvisor.jar -c rojo -at Raton,Teclado +Muestra los perifericos de color rojo con el tipo Raton y Teclado. -java -jar movieadvisor.jar -t heart -Muestra las películas cuyo título contiene la palabra heart. +java -jar movieadvisor.jar -t pro +Muestra los perifericos con el nombre pro. -java -jar movieadvisor.jar -td Action,Sci-Fi -b 1990,2010 -t star -Muestra las películas cuyo título contiene la palabra star, pertenecen al -género de acción y ciencia ficción y fueron estrenadas entre 1990 y 2010. +java -jar movieadvisor.jar -tt Volante,Cascos -t gaming +Muestra los perifericos cuyo nombre contiene la palabra gaming, pertenecen al +tipo de volante y casco. -java -jar movieadvisor.jar -lg -Muestra un listado con todos los géneros. +java -jar movieadvisor.jar -lt +Muestra un listado con todos los perifericos. LICENCIAS -Los datos utilizados sobre películas utilizados en este ejemplo son -reales y están sacados del sitio web www.imdb.com. Ten en cuenta -que solo puede ser usada con fines personales y no comerciales. +Los datos utilizados sobre perifericos utilizados en este ejemplo son +reales y están sacados del internet. \ No newline at end of file diff --git a/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.properties b/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.properties new file mode 100644 index 0000000..36ee227 --- /dev/null +++ b/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Sat Nov 26 12:43:06 CET 2022 +m2e.projectLocation=C\:\\Users\\AntonioFrische\\OneDrive - ABACCO Solutions\\Documents\\Schule_22_23_CFGS\\Acceso_Datos\\SpringTool_4\\SpringWorkspace\\perifericosAdvisor +m2e.projectName=perifericosAdvisor +groupId=com.antoniofrische +artifactId=19-MovieAdvisor +version=0.0.1-SNAPSHOT diff --git a/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.xml b/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.xml new file mode 100644 index 0000000..1c7acb9 --- /dev/null +++ b/target/classes/META-INF/maven/com.antoniofrische/19-MovieAdvisor/pom.xml @@ -0,0 +1,22 @@ + + 4.0.0 + com.antoniofrische + 19-MovieAdvisor + 0.0.1-SNAPSHOT + 19-MovieAdvisor + Ejemplo que integra todos los conocimientos del curso de Spring. + + + org.springframework + spring-context + 5.0.8.RELEASE + + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.properties b/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.properties new file mode 100644 index 0000000..506c177 --- /dev/null +++ b/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Sat Nov 26 12:43:18 CET 2022 +m2e.projectLocation=C\:\\Users\\AntonioFrische\\OneDrive - ABACCO Solutions\\Documents\\Schule_22_23_CFGS\\Acceso_Datos\\SpringTool_4\\SpringWorkspace\\perifericosAdvisor +m2e.projectName=perifericosAdvisor +groupId=com.antoniofrische +artifactId=PerifericoAdvisor +version=0.0.1-SNAPSHOT diff --git a/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.xml b/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.xml new file mode 100644 index 0000000..7ed8a41 --- /dev/null +++ b/target/classes/META-INF/maven/com.antoniofrische/PerifericoAdvisor/pom.xml @@ -0,0 +1,22 @@ + + 4.0.0 + com.antoniofrische + PerifericoAdvisor + 0.0.1-SNAPSHOT + 19-MovieAdvisor + Ejemplo que integra todos los conocimientos del curso de Spring. + + + org.springframework + spring-context + 5.0.8.RELEASE + + + + 1.8 + 1.8 + + + \ No newline at end of file diff --git a/target/classes/ayuda.txt b/target/classes/ayuda.txt index 9dbef7f..390b952 100644 --- a/target/classes/ayuda.txt +++ b/target/classes/ayuda.txt @@ -1,27 +1,23 @@ Sintaxis: java -jar movieadvisor.jar [OPCIONES] - -lg - Lista los diferentes géneros de películas de la colección. + -lt + Lista los diferentes tipos de perifericos de la colección. No se pueden utilizar más parámetros. - -ag genero1,genero2,genero... - Lista aquellas películas que pertenecen a al menos uno de los géneros - que se indican. El listado de géneros no puede incluir espacios. + -at genero1,genero2,genero... + Lista aquellos perifericos que pertenecen a al menos uno de los tipos + que se indican. El listado de tipos no puede incluir espacios. - -tg genero1,genero2,genero... - Lista aquellas películas que pertenecen a todos y cada uno de los - géneros que se indican. El listado de géneros no puede incluir espacios. + -tt genero1,genero2,genero... + Lista aquellos perifericos que pertenecen a todos y cada uno de los + tipos que se indican. El listado de géneros no puede incluir espacios. - -y año - Lista aquellas películas que se estrenaron en el año indicado. - El año debe expresarse con 4 cifras. - - -b desde,hasta - Lista aquellas películas que se estrenaron entre los años DESDE y HASTA. - Los años indicados están incluidos. Deben expresarse con 4 cifras. + -c color + Lista aquellos perifericos que estan en el color indicado. + El color debe expresarse con con letras y NO RGB o HEX. -t titulo - Lista aquellas películas cuyo título contiene la cadena proporcionada. + Lista aquellos perifericos cuyo nombre contiene la cadena proporcionada. Se ignorará el uso de mayúsculas/minúsculas en la comparación. -h @@ -29,24 +25,23 @@ Sintaxis: java -jar movieadvisor.jar [OPCIONES] EJEMPLOS DE USO -java -jar movieadvisor.jar -y 2018 -ag Action,Comedy -Muestra las películas estrenadas de 2018 de acción y/o de comedia. +java -jar movieadvisor.jar -c rojo -at Raton,Teclado +Muestra los perifericos de color rojo con el tipo Raton y Teclado. -java -jar movieadvisor.jar -t heart -Muestra las películas cuyo título contiene la palabra heart. +java -jar movieadvisor.jar -t pro +Muestra los perifericos con el nombre pro. -java -jar movieadvisor.jar -td Action,Sci-Fi -b 1990,2010 -t star -Muestra las películas cuyo título contiene la palabra star, pertenecen al -género de acción y ciencia ficción y fueron estrenadas entre 1990 y 2010. +java -jar movieadvisor.jar -tt Volante,Cascos -t gaming +Muestra los perifericos cuyo nombre contiene la palabra gaming, pertenecen al +tipo de volante y casco. -java -jar movieadvisor.jar -lg -Muestra un listado con todos los géneros. +java -jar movieadvisor.jar -lt +Muestra un listado con todos los perifericos. LICENCIAS -Los datos utilizados sobre películas utilizados en este ejemplo son -reales y están sacados del sitio web www.imdb.com. Ten en cuenta -que solo puede ser usada con fines personales y no comerciales. +Los datos utilizados sobre perifericos utilizados en este ejemplo son +reales y están sacados del internet. \ No newline at end of file diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.class b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.class new file mode 100644 index 0000000..eb73dc5 Binary files /dev/null and b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorApp.class differ diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.class b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.class new file mode 100644 index 0000000..ad3e4ae Binary files /dev/null and b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorHelp.class differ diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.class b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.class new file mode 100644 index 0000000..e0a4401 Binary files /dev/null and b/target/classes/com/antoniofrische/perifericosAdvisor/MovieAdvisorRunApp.class differ diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.class b/target/classes/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.class index b1a816a..26e0418 100644 Binary files a/target/classes/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.class and b/target/classes/com/antoniofrische/perifericosAdvisor/service/PerifericoQueryServiceImpl.class differ