Browse Source

primera parte

master
AntonioFrische 1 year ago
parent
commit
3400c936c7
22 changed files with 480 additions and 28 deletions
  1. +1
    -5
      .classpath
  2. +12
    -5
      .settings/org.eclipse.jdt.core.prefs
  3. +21
    -7
      pom.xml
  4. +36
    -0
      src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java
  5. +15
    -0
      src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDao.java
  6. +75
    -0
      src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java
  7. +40
    -0
      src/main/java/com/antoniofrische/perifericosAdvisor/dao/UtilPerifericoFileReader.java
  8. +113
    -0
      src/main/java/com/antoniofrische/perifericosAdvisor/model/Periferico.java
  9. +52
    -0
      src/main/resources/ayuda.txt
  10. +16
    -0
      src/main/resources/imdb_data.csv
  11. +3
    -0
      src/main/resources/perifericoadvisor.properties
  12. +0
    -8
      target/classes/META-INF/maven/com.antoniofrische/perifericosAdvisor/pom.xml
  13. +3
    -3
      target/classes/META-INF/maven/com.openwebinars/19-MovieAdvisor/pom.properties
  14. +22
    -0
      target/classes/META-INF/maven/com.openwebinars/19-MovieAdvisor/pom.xml
  15. +52
    -0
      target/classes/ayuda.txt
  16. BIN
      target/classes/com/antoniofrische/perifericosAdvisor/config/AppConfig.class
  17. BIN
      target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDao.class
  18. BIN
      target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.class
  19. BIN
      target/classes/com/antoniofrische/perifericosAdvisor/dao/UtilPerifericoFileReader.class
  20. BIN
      target/classes/com/antoniofrische/perifericosAdvisor/model/Periferico.class
  21. +16
    -0
      target/classes/imdb_data.csv
  22. +3
    -0
      target/classes/perifericoadvisor.properties

+ 1
- 5
.classpath View File

@ -24,11 +24,7 @@
<attribute name="test" value="true"/> <attribute name="test" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>


+ 12
- 5
.settings/org.eclipse.jdt.core.prefs View File

@ -1,9 +1,16 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11

+ 21
- 7
pom.xml View File

@ -1,8 +1,22 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.antoniofrische</groupId>
<artifactId>perifericosAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>PerifericosAdvisor</name>
<description>una recomandacion de diferentes perifericos</description>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.openwebinars</groupId>
<artifactId>19-MovieAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>19-MovieAdvisor</name>
<description>Ejemplo que integra todos los conocimientos del curso de Spring.</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project> </project>

+ 36
- 0
src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java View File

@ -0,0 +1,36 @@
package com.antoniofrische.perifericosAdvisor.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@ComponentScan(basePackages="com.antoniofrische.perifericosAdvisor")
@PropertySource("classpath:/movieadvisor.properties")
public class AppConfig {
@Value("${file.path}")
public String file;
@Value("${file.csv.separator}")
public String separator;
@Value("${file.csv.list_separator}")
public String listSeparator;
public String getFile() {
return file;
}
public String getSeparator() {
return separator;
}
public String getListSeparator() {
return listSeparator;
}
}

+ 15
- 0
src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDao.java View File

@ -0,0 +1,15 @@
package com.antoniofrische.perifericosAdvisor.dao;
import java.util.Collection;
import com.antoniofrische.perifericosAdvisor.model.Periferico;
public interface PerifericoDao {
public Periferico findById(long id);
public Collection<Periferico> findAll();
public void insert(Periferico periferico);
public void edit(Periferico periferico);
public void delete(long id);
}

+ 75
- 0
src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java View File

@ -0,0 +1,75 @@
package com.antoniofrische.perifericosAdvisor.dao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.antoniofrische.perifericosAdvisor.config.AppConfig;
import com.antoniofrische.perifericosAdvisor.model.Periferico;
@Repository
public class PerifericoDaoImplMemory implements PerifericoDao {
public List<Periferico> perifericos = new ArrayList<Periferico>();
@Autowired
private AppConfig appConfig;
@PostConstruct
public void init() {
perifericos = UtilPerifericoFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator());
}
public Periferico findById(long id) {
Optional<Periferico> result = perifericos
.stream()
.filter(f -> f.getId() == id)
.findFirst();
return result.orElse(null);
}
public Collection<Periferico> findAll() {
return perifericos;
}
public void insert(Periferico periferico) {
perifericos.add(periferico);
}
public void edit(Periferico periferico) {
int index = getIndexOf(periferico.getId());
if (index != -1)
perifericos.set(index, periferico);
}
public void delete(long id) {
int index = getIndexOf(id);
if (index != -1)
perifericos.remove(index);
}
private int getIndexOf(long id) {
boolean encontrado = false;
int index = 0;
while (!encontrado && index < perifericos.size()) {
if (perifericos.get(index).getId() == id)
encontrado = true;
else
index++;
}
return (encontrado) ? index : -1;
}
}

+ 40
- 0
src/main/java/com/antoniofrische/perifericosAdvisor/dao/UtilPerifericoFileReader.java View File

@ -0,0 +1,40 @@
package com.antoniofrische.perifericosAdvisor.dao;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.util.ResourceUtils;
import com.antoniofrische.perifericosAdvisor.model.Periferico;
public class UtilPerifericoFileReader {
public static List<Periferico> readFile(final String path, final String separator, final String listSeparator) {
List<Periferico> result = new ArrayList<>();
try {
result = Files
.lines(Paths.get(ResourceUtils.getFile(path).toURI()))
.skip(1)
.map(line -> {
String[] values = line.split(separator);
return new Perifericos(Long.parseLong(values[0]), values[1], values[2],values[3],values[4],values[5],Boolean.parseBoolean(values[6]));
}).collect(Collectors.toList());
} catch (Exception e) {
System.err.println("Error de lectura del fichero de datos: imdb_data");
System.exit(-1);
}
return result;
}
}

+ 113
- 0
src/main/java/com/antoniofrische/perifericosAdvisor/model/Periferico.java View File

@ -0,0 +1,113 @@
package com.antoniofrische.perifericosAdvisor.model;
public class Periferico {
private int id;
private String marca;
private String nombre;
private String descripcion;
private String tipo;
private String color;
private boolean ifcable;
public Periferico(int id, String marca, String nombre, String descripcion, String tipo, String color,boolean ifcable) {
this.id = id;
this.marca = marca;
this.nombre = nombre;
this.descripcion = descripcion;
this.tipo = tipo;
this.color = color;
this.ifcable = ifcable;
}
public int getId() {
return id;
}
public String getMarca() {
return marca;
}
public String getNombre() {
return nombre;
}
public String getDescripcion() {
return descripcion;
}
public String getTipo() {
return tipo;
}
public String getColor() {
return color;
}
public boolean isIfcable() {
return ifcable;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((color == null) ? 0 : color.hashCode());
result = prime * result + ((descripcion == null) ? 0 : descripcion.hashCode());
result = prime * result + id;
result = prime * result + (ifcable ? 1231 : 1237);
result = prime * result + ((marca == null) ? 0 : marca.hashCode());
result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
result = prime * result + ((tipo == null) ? 0 : tipo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Periferico other = (Periferico) obj;
if (color == null) {
if (other.color != null)
return false;
} else if (!color.equals(other.color))
return false;
if (descripcion == null) {
if (other.descripcion != null)
return false;
} else if (!descripcion.equals(other.descripcion))
return false;
if (id != other.id)
return false;
if (ifcable != other.ifcable)
return false;
if (marca == null) {
if (other.marca != null)
return false;
} else if (!marca.equals(other.marca))
return false;
if (nombre == null) {
if (other.nombre != null)
return false;
} else if (!nombre.equals(other.nombre))
return false;
if (tipo == null) {
if (other.tipo != null)
return false;
} else if (!tipo.equals(other.tipo))
return false;
return true;
}
@Override
public String toString() {
return "perifericos [id=" + id + ", marca=" + marca + ", nombre=" + nombre + ", descripcion=" + descripcion
+ ", tipo=" + tipo + ", color=" + color + ", ifcable=" + ifcable + "]";
}
}

+ 52
- 0
src/main/resources/ayuda.txt View File

@ -0,0 +1,52 @@
Sintaxis: java -jar movieadvisor.jar [OPCIONES]
-lg
Lista los diferentes géneros de películas 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.
-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.
-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.
-t titulo
Lista aquellas películas cuyo título contiene la cadena proporcionada.
Se ignorará el uso de mayúsculas/minúsculas en la comparación.
-h
Muestra este mensaje de ayuda.
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 -t heart
Muestra las películas cuyo título contiene la palabra heart.
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 -lg
Muestra un listado con todos los géneros.
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.

+ 16
- 0
src/main/resources/imdb_data.csv View File

@ -0,0 +1,16 @@
id;marca;nombre;descripcion;tipo;color;cable
30;Razer;Pro gamingX;Raton de alta calidad;raton,negro y blanco;true
32;Roccat;Kone Aimo;Raton con alta DPI;raton,Blanco;true
33;Logitech;G930;Volante para videojuegos;Volante,negro y azul;true
40;HyperX;gamingTX;Altavozes para juagar;altavozes,negro y gris;true
12;Razer;Fly pro gaming;Raton mas ligero del mercado;raton,Rojo;false
23;HyperX;Pro XDR 2;Pantalla con colores reales;Pantalla,negro;true
51;MarsGaming;Alfombria MG18;alfombria para la mejor presicion en los jeugos;Alfombria,rojo y blanco;false
46;Roccat;Khan aimo;cascos confortables para horas de juego;Cascos,negro;true
90;HyperX;Hiper gaming H15;Teclado para quien quiere montar se lo mismo;teclado,rojo;true
37;HyperX;Alloy Core RGB;Teclado a mejor precio;teclado,negro y verde;true
18;Razer;titanium GPU;Suporte para aguantar tajetas graficas;suporte,negro metallico;true
02;Logitech;G815 lightspeed;Teclado de alta calidad con bluetooth;teclado,blanco;false
11;MarsGaming;MG318 bulletproof;cascos speciales para ambientes ruidosos;cascos,blanco;true
66;Razer;Enki;silla confortable para gaming;silla,negro y gris;false
91;Logitech;lightspeed pro 10;Raton inalambrico para llevar;raton,gris;false

+ 3
- 0
src/main/resources/perifericoadvisor.properties View File

@ -0,0 +1,3 @@
file.path=classpath:imdb_data.csv
file.csv.separator=;
file.csv.list_separator=,

+ 0
- 8
target/classes/META-INF/maven/com.antoniofrische/perifericosAdvisor/pom.xml View File

@ -1,8 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.antoniofrische</groupId>
<artifactId>perifericosAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>PerifericosAdvisor</name>
<description>una recomandacion de diferentes perifericos</description>
</project>

target/classes/META-INF/maven/com.antoniofrische/perifericosAdvisor/pom.properties → target/classes/META-INF/maven/com.openwebinars/19-MovieAdvisor/pom.properties View File

@ -1,7 +1,7 @@
#Generated by Maven Integration for Eclipse #Generated by Maven Integration for Eclipse
#Sat Nov 26 10:36:42 CET 2022
#Sat Nov 26 11:46:12 CET 2022
m2e.projectLocation=C\:\\Users\\AntonioFrische\\OneDrive - ABACCO Solutions\\Documents\\Schule_22_23_CFGS\\Acceso_Datos\\SpringTool_4\\SpringWorkspace\\perifericosAdvisor m2e.projectLocation=C\:\\Users\\AntonioFrische\\OneDrive - ABACCO Solutions\\Documents\\Schule_22_23_CFGS\\Acceso_Datos\\SpringTool_4\\SpringWorkspace\\perifericosAdvisor
m2e.projectName=perifericosAdvisor m2e.projectName=perifericosAdvisor
groupId=com.antoniofrische
artifactId=perifericosAdvisor
groupId=com.openwebinars
artifactId=19-MovieAdvisor
version=0.0.1-SNAPSHOT version=0.0.1-SNAPSHOT

+ 22
- 0
target/classes/META-INF/maven/com.openwebinars/19-MovieAdvisor/pom.xml View File

@ -0,0 +1,22 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.openwebinars</groupId>
<artifactId>19-MovieAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>19-MovieAdvisor</name>
<description>Ejemplo que integra todos los conocimientos del curso de Spring.</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>

+ 52
- 0
target/classes/ayuda.txt View File

@ -0,0 +1,52 @@
Sintaxis: java -jar movieadvisor.jar [OPCIONES]
-lg
Lista los diferentes géneros de películas 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.
-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.
-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.
-t titulo
Lista aquellas películas cuyo título contiene la cadena proporcionada.
Se ignorará el uso de mayúsculas/minúsculas en la comparación.
-h
Muestra este mensaje de ayuda.
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 -t heart
Muestra las películas cuyo título contiene la palabra heart.
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 -lg
Muestra un listado con todos los géneros.
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.

BIN
target/classes/com/antoniofrische/perifericosAdvisor/config/AppConfig.class View File


BIN
target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDao.class View File


BIN
target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.class View File


BIN
target/classes/com/antoniofrische/perifericosAdvisor/dao/UtilPerifericoFileReader.class View File


BIN
target/classes/com/antoniofrische/perifericosAdvisor/model/Periferico.class View File


+ 16
- 0
target/classes/imdb_data.csv View File

@ -0,0 +1,16 @@
id;marca;nombre;descripcion;tipo;color;cable
30;Razer;Pro gamingX;Raton de alta calidad;raton,negro y blanco;true
32;Roccat;Kone Aimo;Raton con alta DPI;raton,Blanco;true
33;Logitech;G930;Volante para videojuegos;Volante,negro y azul;true
40;HyperX;gamingTX;Altavozes para juagar;altavozes,negro y gris;true
12;Razer;Fly pro gaming;Raton mas ligero del mercado;raton,Rojo;false
23;HyperX;Pro XDR 2;Pantalla con colores reales;Pantalla,negro;true
51;MarsGaming;Alfombria MG18;alfombria para la mejor presicion en los jeugos;Alfombria,rojo y blanco;false
46;Roccat;Khan aimo;cascos confortables para horas de juego;Cascos,negro;true
90;HyperX;Hiper gaming H15;Teclado para quien quiere montar se lo mismo;teclado,rojo;true
37;HyperX;Alloy Core RGB;Teclado a mejor precio;teclado,negro y verde;true
18;Razer;titanium GPU;Suporte para aguantar tajetas graficas;suporte,negro metallico;true
02;Logitech;G815 lightspeed;Teclado de alta calidad con bluetooth;teclado,blanco;false
11;MarsGaming;MG318 bulletproof;cascos speciales para ambientes ruidosos;cascos,blanco;true
66;Razer;Enki;silla confortable para gaming;silla,negro y gris;false
91;Logitech;lightspeed pro 10;Raton inalambrico para llevar;raton,gris;false

+ 3
- 0
target/classes/perifericoadvisor.properties View File

@ -0,0 +1,3 @@
file.path=classpath:imdb_data.csv
file.csv.separator=;
file.csv.list_separator=,

Loading…
Cancel
Save