Browse Source

First Commit

master
Ivan Morell 1 year ago
commit
e6e40689c3
37 changed files with 884 additions and 0 deletions
  1. +51
    -0
      .classpath
  2. +23
    -0
      .project
  3. +2
    -0
      .settings/org.eclipse.jdt.apt.core.prefs
  4. +17
    -0
      .settings/org.eclipse.jdt.core.prefs
  5. +4
    -0
      .settings/org.eclipse.m2e.core.prefs
  6. +21
    -0
      pom.xml
  7. +37
    -0
      src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java
  8. +22
    -0
      src/main/java/com/ims/studentManager/StudentManagerApp.java
  9. +39
    -0
      src/main/java/com/ims/studentManager/StudentManagerHelp.java
  10. +99
    -0
      src/main/java/com/ims/studentManager/StudentManagerRunApp.java
  11. +13
    -0
      src/main/java/com/ims/studentManager/dao/StudentDao.java
  12. +75
    -0
      src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java
  13. +42
    -0
      src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java
  14. +16
    -0
      src/main/java/com/ims/studentManager/service/StudentQueryService.java
  15. +75
    -0
      src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java
  16. +65
    -0
      src/main/java/com/ims/studentManager/service/StudentService.java
  17. +110
    -0
      src/main/java/com/ims/studentManger/Package/Student.java
  18. +51
    -0
      src/main/resources/ayuda.txt
  19. +16
    -0
      src/main/resources/bbdd.csv
  20. +3
    -0
      src/main/resources/movieAdvisor.properties
  21. +5
    -0
      target/classes/META-INF/MANIFEST.MF
  22. +7
    -0
      target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties
  23. +21
    -0
      target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml
  24. +51
    -0
      target/classes/ayuda.txt
  25. +16
    -0
      target/classes/bbdd.csv
  26. BIN
      target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class
  27. BIN
      target/classes/com/ims/studentManager/StudentManagerApp.class
  28. BIN
      target/classes/com/ims/studentManager/StudentManagerHelp.class
  29. BIN
      target/classes/com/ims/studentManager/StudentManagerRunApp.class
  30. BIN
      target/classes/com/ims/studentManager/dao/StudentDao.class
  31. BIN
      target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class
  32. BIN
      target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class
  33. BIN
      target/classes/com/ims/studentManager/service/StudentQueryService.class
  34. BIN
      target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class
  35. BIN
      target/classes/com/ims/studentManager/service/StudentService.class
  36. BIN
      target/classes/com/ims/studentManger/Package/Student.class
  37. +3
    -0
      target/classes/movieAdvisor.properties

+ 51
- 0
.classpath View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

+ 23
- 0
.project View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MovieAdvisor</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

+ 2
- 0
.settings/org.eclipse.jdt.apt.core.prefs View File

@ -0,0 +1,2 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=false

+ 17
- 0
.settings/org.eclipse.jdt.core.prefs View File

@ -0,0 +1,17 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=17
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.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.processAnnotations=disabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=17

+ 4
- 0
.settings/org.eclipse.m2e.core.prefs View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

+ 21
- 0
pom.xml View File

@ -0,0 +1,21 @@
<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.ims</groupId>
<artifactId>MovieAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MovieAdvisor</name>
<description>Gran recomendador de peliculas</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<!--https://www.baeldung.com/spring-postconstruct-predestroy -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</project>

+ 37
- 0
src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java View File

@ -0,0 +1,37 @@
package com.ims.studentManager.ConfigPackage;
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.ims")
@PropertySource("classpath:/movieadvisor.properties")
public class AppConfig {
@Value("${file.path}")
private String file;
@Value("${file.csv.separator}")
private String separator;
@Value("${file.csv.list_separator}")
private String listSeparator;
public String getFile() {
return file;
}
public String getSeparator() {
return separator;
}
public String getListSeparator() {
return listSeparator;
}
}

+ 22
- 0
src/main/java/com/ims/studentManager/StudentManagerApp.java View File

@ -0,0 +1,22 @@
package com.ims.studentManager;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.ims.studentManager.ConfigPackage.AppConfig;
public class StudentManagerApp {
public static void main(String args[]) {
ApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class);
StudentManagerRunApp runApp = appContext.getBean(StudentManagerRunApp.class);
runApp.run(args);
((AnnotationConfigApplicationContext) appContext).close();
}
}

+ 39
- 0
src/main/java/com/ims/studentManager/StudentManagerHelp.java View File

@ -0,0 +1,39 @@
package com.ims.studentManager;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.springframework.stereotype.Component;
import org.springframework.util.ResourceUtils;
@Component
public class StudentManagerHelp {
private String help;
@PostConstruct
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;
}
}

+ 99
- 0
src/main/java/com/ims/studentManager/StudentManagerRunApp.java View File

@ -0,0 +1,99 @@
package com.ims.studentManager;
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.ims.studentManager.service.StudentQueryService;
import com.ims.studentManager.service.StudentService;
import com.ims.studentManger.Package.Student;
@Component
public class StudentManagerRunApp {
@Autowired
private StudentService studentService;
@Autowired
private StudentQueryService studentQueryService;
private StudentManagerHelp 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 "-lm":
studentService.findAllMarks().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<String[]> 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 "-am":
studentQueryService.anyMark(argumento[1].split(","));
break;
case "-tg":
studentQueryService.allMarks(argumento[1].split(","));
break;
case "-g":
studentQueryService.grade(argumento[1]);
break;
case "-b":
String[] marks = argumento[1].split(",");
studentQueryService.betweenAvgMark(Float.parseFloat(marks[0]), Float.parseFloat(marks[1]));
break;
case "-t":
studentQueryService.nameContains(argumento[1]);
break;
default: error = true;
System.out.println("Error de sintaxis");
System.out.println(help.getHelp());
}
}
if(!error) {
Collection<Student> result = studentQueryService.exec();
System.out.printf("%s\t%-50s\t%s\t%s\n","ID","NAME","GRADE","MARKS");
if(result != null) {
result.forEach(f -> System.out.printf("%s\t%-50s\t%s\t%s\n",f.getId()
,f.getName(),f.getGrade(),
f.getMarks().stream().collect(Collectors.joining(", "))));
}else {
System.out.println("No hay Alumnos con esos criterios. No lo siento, deja de usarme");
}
}
}
}
}

+ 13
- 0
src/main/java/com/ims/studentManager/dao/StudentDao.java View File

@ -0,0 +1,13 @@
package com.ims.studentManager.dao;
import java.util.Collection;
import com.ims.studentManger.Package.Student;
public interface StudentDao {
public Student findById(long id);
public Collection<Student> findAll();
public void insert(Student student);
public void edit(Student student);
public void delete(long id);
}

+ 75
- 0
src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java View File

@ -0,0 +1,75 @@
package com.ims.studentManager.dao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.ims.studentManager.ConfigPackage.AppConfig;
import com.ims.studentManger.Package.Student;
@Repository
public class StudentDaoImplMemory implements StudentDao{
public List<Student> students = new ArrayList<>();
@Autowired
private AppConfig appConfig;
public void init() {
students = UtilStudentFileReader.readFile(appConfig.getFile(),appConfig.getSeparator(),appConfig.getListSeparator());
}
public Student findById(long id) {
// @formatter:off
Optional<Student> result = students
.stream()
.filter(f -> f.getId() == id)
.findFirst();
// @formatter:on
return result.orElse(null);
}
public Collection<Student> findAll() {
return students;
}
public void insert(Student student) {
students.add(student);
}
public void edit(Student student) {
int index = getIndexOf(student.getId());
if(index != -1)
students.set(index, student);
}
public void delete(long id) {
int index = getIndexOf(id);
if(index != -1)
students.remove(index);
}
private int getIndexOf(long id) {
boolean encontrado = false;
int index = 0;
while(!encontrado && index < students.size()) {
if(students.get(index).getId() == id)
encontrado = true;
else
index++;
}
return (encontrado) ? index : -1;
}
}

+ 42
- 0
src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java View File

@ -0,0 +1,42 @@
package com.ims.studentManager.dao;
import java.io.FileNotFoundException;
import java.io.IOException;
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.ims.studentManger.Package.Student;
public class UtilStudentFileReader {
public static List<Student> readFile(final String path,final String separator,final String listSeparator) {
List<Student> result = new ArrayList<>();
//@formatter:off
try {
result = Files.lines(Paths.get(ResourceUtils.getFile(path).toURI()))
.skip(1)
.map(line -> {
String[] values = line.split(separator);
return new Student(Long.parseLong(values[0]),values[1],values[2],
Arrays.asList(values[3].split(listSeparator)));
}).collect(Collectors.toList());
} catch (IOException e) {
System.out.println("Error en la lectura de datos del fichero");
e.printStackTrace();
}
//@formatter:on
return result;
}
}

+ 16
- 0
src/main/java/com/ims/studentManager/service/StudentQueryService.java View File

@ -0,0 +1,16 @@
package com.ims.studentManager.service;
import java.util.Collection;
import com.ims.studentManger.Package.Student;
public interface StudentQueryService {
public Collection<Student> exec();
public StudentQueryService anyMark(String... marks);
public StudentQueryService allMarks(String... marks);
public StudentQueryService grade(String grade);
public StudentQueryService betweenAvgMark(float max,float min);
public StudentQueryService nameContains(String name);
}

+ 75
- 0
src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java View File

@ -0,0 +1,75 @@
package com.ims.studentManager.service;
import java.util.Arrays;
import java.util.Collection;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ims.studentManager.dao.StudentDao;
import com.ims.studentManger.Package.Student;
@Service
public class StudentQueryServiceImpl implements StudentQueryService {
@Autowired
private StudentDao dao;
private Predicate<Student> predicate;
@PostConstruct
public void init() {
predicate = null;
}
@Override
public Collection<Student> exec() {
// @formatter:off
return dao.findAll()
.stream()
.filter(predicate)
.collect(Collectors.toList());
// @formatter:on
}
@Override
public StudentQueryService anyMark(String... marks) {
Predicate<Student> pAnyMark = (student -> Arrays.stream(marks).allMatch(student.getMarks()::contains));
predicate = (predicate == null) ? pAnyMark : predicate.and(pAnyMark);
return this;
}
@Override
public StudentQueryService allMarks(String... marks) {
Predicate<Student> pAllMarks = (student -> Arrays.stream(marks).anyMatch(student.getMarks()::contains));
predicate = (predicate == null) ? pAllMarks : predicate.and(pAllMarks);
return this;
}
@Override
public StudentQueryService grade(String grade) {
Predicate<Student> pGrade = (student -> student.getGrade().equalsIgnoreCase(grade));
predicate = (predicate == null) ? pGrade : predicate.and(pGrade);
return this;
}
@Override
public StudentQueryService betweenAvgMark(float max, float min) {
// TODO Auto-generated method stub
return null;
}
@Override
public StudentQueryService nameContains(String name) {
Predicate<Student> pNameContains = (student -> student.getName().toLowerCase().contains(name.toLowerCase()));
predicate = (predicate == null) ? pNameContains : predicate.and(pNameContains);
return this;
}
}

+ 65
- 0
src/main/java/com/ims/studentManager/service/StudentService.java View File

@ -0,0 +1,65 @@
package com.ims.studentManager.service;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ims.studentManager.dao.StudentDao;
import com.ims.studentManger.Package.Student;
@Service
public class StudentService {
@Autowired
StudentDao studentDao;
@Autowired
StudentQueryService queryService;
public Collection<String> findAllMarks() {
List<String> result = null;
// @formatter:off
result = studentDao.findAll()
.stream()
.map(f -> f.getMarks())
.flatMap(lista -> lista.stream())
.distinct()
.sorted()
.collect(Collectors.toList());
// @formatter:on
return result;
}
public Collection<Student> findByAnyMark(String... marks) {
return queryService.anyMark(marks).exec();
}
public Collection<Student> findByAllMarks(String... marks) {
return queryService.allMarks(marks).exec();
}
public Collection<Student> findByGrade(String grade) {
return queryService.grade(grade).exec();
}
public Collection<Student> findBetweenYears(float max, float min) {
return queryService.betweenAvgMark(max, min).exec();
}
public Collection<Student> findByNameContains(String title) {
return queryService.nameContains(title).exec();
}
public Collection<Student> findAll() {
return studentDao.findAll();
}
}

+ 110
- 0
src/main/java/com/ims/studentManger/Package/Student.java View File

@ -0,0 +1,110 @@
package com.ims.studentManger.Package;
import java.util.List;
/**
*
* La clase modelo que articula el programa. Permite
* manejar la información mínima sobre una película.
* Si hubíeramos utilizado Spring Data y una base de datos,
* seguramente estaría anotada con @Entity
*
*
* @author OpenWebinars
*
*/
public class Student {
private long id;
private String name;
private String grade;
private List<String> marks;
public Student(long id, String name, String grade, List<String> marks) {
this.id = id;
this.name = name;
this.marks = marks;
this.grade = grade;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getMarks() {
return marks;
}
public void setMarks(List<String> marks) {
this.marks = marks;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((grade == null) ? 0 : grade.hashCode());
result = prime * result + (int) (id ^ (id >>> 32));
result = prime * result + ((marks == null) ? 0 : marks.hashCode());
result = prime * result + ((name == null) ? 0 : name.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;
Student other = (Student) obj;
if (grade == null) {
if (other.grade != null)
return false;
} else if (!grade.equals(other.grade))
return false;
if (id != other.id)
return false;
if (marks == null) {
if (other.marks != null)
return false;
} else if (!marks.equals(other.marks))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", marks=" + marks + ", grade=" + grade + "]";
}
}

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

@ -0,0 +1,51 @@
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/bbdd.csv View File

@ -0,0 +1,16 @@
id;name;grade;marks
1;Juan;1ºDAM;5,3,4,6,5
2;Pepe;2ºDAM;6,5,7,5,6
3;Alberto;1ºDAM;7,8,5,4,9
4;Ivan;2ºDAM;3,6,5,4,2
5;Anna;SMX;,8,5,7,6,9
6;Eva;1ºDAM;5,5,5,4,5
7;Toñi;SMX;4,9,7,9,6
8;Vicente;2ºDAM;6,5,7,5,6
9;Jesus;SMX;4,3,5,7,6
10;Daniel;1ºDAM;1,2,7,6,4
11;Sandra;SMX;4,5,5,4,6
12;Alejandro;SMX;7,9,4,5,3
13;Martina;1ºDAM;5,1,9,7,6
14;Rocio;1ºDAM;5,6,4,8,9
15;Godofredo;2ºDAM;9,9,9,9,9

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

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

+ 5
- 0
target/classes/META-INF/MANIFEST.MF View File

@ -0,0 +1,5 @@
Manifest-Version: 1.0
Built-By: Ivan
Build-Jdk: 17.0.4.1
Created-By: Maven Integration for Eclipse

+ 7
- 0
target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties View File

@ -0,0 +1,7 @@
#Generated by Maven Integration for Eclipse
#Thu Nov 17 19:27:49 CET 2022
m2e.projectLocation=C\:\\Users\\Ivan\\Documents\\workspace-spring-tool-suite-4-4.16.0.RELEASE\\MovieAdvisor
m2e.projectName=MovieAdvisor
groupId=com.ims
artifactId=MovieAdvisor
version=0.0.1-SNAPSHOT

+ 21
- 0
target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml View File

@ -0,0 +1,21 @@
<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.ims</groupId>
<artifactId>MovieAdvisor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>MovieAdvisor</name>
<description>Gran recomendador de peliculas</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<!--https://www.baeldung.com/spring-postconstruct-predestroy -->
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</project>

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

@ -0,0 +1,51 @@
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
target/classes/bbdd.csv View File

@ -0,0 +1,16 @@
id;name;grade;marks
1;Juan;1ºDAM;5,3,4,6,5
2;Pepe;2ºDAM;6,5,7,5,6
3;Alberto;1ºDAM;7,8,5,4,9
4;Ivan;2ºDAM;3,6,5,4,2
5;Anna;SMX;,8,5,7,6,9
6;Eva;1ºDAM;5,5,5,4,5
7;Toñi;SMX;4,9,7,9,6
8;Vicente;2ºDAM;6,5,7,5,6
9;Jesus;SMX;4,3,5,7,6
10;Daniel;1ºDAM;1,2,7,6,4
11;Sandra;SMX;4,5,5,4,6
12;Alejandro;SMX;7,9,4,5,3
13;Martina;1ºDAM;5,1,9,7,6
14;Rocio;1ºDAM;5,6,4,8,9
15;Godofredo;2ºDAM;9,9,9,9,9

BIN
target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class View File


BIN
target/classes/com/ims/studentManager/StudentManagerApp.class View File


BIN
target/classes/com/ims/studentManager/StudentManagerHelp.class View File


BIN
target/classes/com/ims/studentManager/StudentManagerRunApp.class View File


BIN
target/classes/com/ims/studentManager/dao/StudentDao.class View File


BIN
target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class View File


BIN
target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class View File


BIN
target/classes/com/ims/studentManager/service/StudentQueryService.class View File


BIN
target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class View File


BIN
target/classes/com/ims/studentManager/service/StudentService.class View File


BIN
target/classes/com/ims/studentManger/Package/Student.class View File


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

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

Loading…
Cancel
Save