From e6e40689c32f2fe2f79fa2bc8c69f446f2db546e Mon Sep 17 00:00:00 2001 From: Ivan Morell Date: Thu, 17 Nov 2022 19:40:16 +0100 Subject: [PATCH] First Commit --- .classpath | 51 ++++++++ .project | 23 ++++ .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 17 +++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 21 ++++ .../ConfigPackage/AppConfig.java | 37 ++++++ .../ims/studentManager/StudentManagerApp.java | 22 ++++ .../studentManager/StudentManagerHelp.java | 39 +++++++ .../studentManager/StudentManagerRunApp.java | 99 ++++++++++++++++ .../ims/studentManager/dao/StudentDao.java | 13 +++ .../dao/StudentDaoImplMemory.java | 75 ++++++++++++ .../dao/UtilStudentFileReader.java | 42 +++++++ .../service/StudentQueryService.java | 16 +++ .../service/StudentQueryServiceImpl.java | 75 ++++++++++++ .../service/StudentService.java | 65 +++++++++++ .../ims/studentManger/Package/Student.java | 110 ++++++++++++++++++ src/main/resources/ayuda.txt | 51 ++++++++ src/main/resources/bbdd.csv | 16 +++ src/main/resources/movieAdvisor.properties | 3 + target/classes/META-INF/MANIFEST.MF | 5 + .../maven/com.ims/MovieAdvisor/pom.properties | 7 ++ .../maven/com.ims/MovieAdvisor/pom.xml | 21 ++++ target/classes/ayuda.txt | 51 ++++++++ target/classes/bbdd.csv | 16 +++ .../ConfigPackage/AppConfig.class | Bin 0 -> 1166 bytes .../studentManager/StudentManagerApp.class | Bin 0 -> 1019 bytes .../studentManager/StudentManagerHelp.class | Bin 0 -> 1622 bytes .../studentManager/StudentManagerRunApp.class | Bin 0 -> 5141 bytes .../ims/studentManager/dao/StudentDao.class | Bin 0 -> 426 bytes .../dao/StudentDaoImplMemory.class | Bin 0 -> 3686 bytes .../dao/UtilStudentFileReader.class | Bin 0 -> 3198 bytes .../service/StudentQueryService.class | Bin 0 -> 591 bytes .../service/StudentQueryServiceImpl.class | Bin 0 -> 4785 bytes .../service/StudentService.class | Bin 0 -> 4030 bytes .../ims/studentManger/Package/Student.class | Bin 0 -> 2881 bytes target/classes/movieAdvisor.properties | 3 + 37 files changed, 884 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java create mode 100644 src/main/java/com/ims/studentManager/StudentManagerApp.java create mode 100644 src/main/java/com/ims/studentManager/StudentManagerHelp.java create mode 100644 src/main/java/com/ims/studentManager/StudentManagerRunApp.java create mode 100644 src/main/java/com/ims/studentManager/dao/StudentDao.java create mode 100644 src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java create mode 100644 src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java create mode 100644 src/main/java/com/ims/studentManager/service/StudentQueryService.java create mode 100644 src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java create mode 100644 src/main/java/com/ims/studentManager/service/StudentService.java create mode 100644 src/main/java/com/ims/studentManger/Package/Student.java create mode 100644 src/main/resources/ayuda.txt create mode 100644 src/main/resources/bbdd.csv create mode 100644 src/main/resources/movieAdvisor.properties create mode 100644 target/classes/META-INF/MANIFEST.MF create mode 100644 target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties create mode 100644 target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml create mode 100644 target/classes/ayuda.txt create mode 100644 target/classes/bbdd.csv create mode 100644 target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class create mode 100644 target/classes/com/ims/studentManager/StudentManagerApp.class create mode 100644 target/classes/com/ims/studentManager/StudentManagerHelp.class create mode 100644 target/classes/com/ims/studentManager/StudentManagerRunApp.class create mode 100644 target/classes/com/ims/studentManager/dao/StudentDao.class create mode 100644 target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class create mode 100644 target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class create mode 100644 target/classes/com/ims/studentManager/service/StudentQueryService.class create mode 100644 target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class create mode 100644 target/classes/com/ims/studentManager/service/StudentService.class create mode 100644 target/classes/com/ims/studentManger/Package/Student.class create mode 100644 target/classes/movieAdvisor.properties diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..2712ac4 --- /dev/null +++ b/.classpath @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..674b50b --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + MovieAdvisor + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..d8dd5be --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -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 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0a58dcf --- /dev/null +++ b/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + com.ims + MovieAdvisor + 0.0.1-SNAPSHOT + MovieAdvisor + Gran recomendador de peliculas + + + org.springframework + spring-context + 5.3.23 + + + + javax.annotation + javax.annotation-api + 1.3.2 + + + \ No newline at end of file diff --git a/src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java b/src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java new file mode 100644 index 0000000..f9104d4 --- /dev/null +++ b/src/main/java/com/ims/studentManager/ConfigPackage/AppConfig.java @@ -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; + } + + + +} diff --git a/src/main/java/com/ims/studentManager/StudentManagerApp.java b/src/main/java/com/ims/studentManager/StudentManagerApp.java new file mode 100644 index 0000000..1fe6802 --- /dev/null +++ b/src/main/java/com/ims/studentManager/StudentManagerApp.java @@ -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(); + + } + +} diff --git a/src/main/java/com/ims/studentManager/StudentManagerHelp.java b/src/main/java/com/ims/studentManager/StudentManagerHelp.java new file mode 100644 index 0000000..5359c35 --- /dev/null +++ b/src/main/java/com/ims/studentManager/StudentManagerHelp.java @@ -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; + } + +} diff --git a/src/main/java/com/ims/studentManager/StudentManagerRunApp.java b/src/main/java/com/ims/studentManager/StudentManagerRunApp.java new file mode 100644 index 0000000..8d50bd5 --- /dev/null +++ b/src/main/java/com/ims/studentManager/StudentManagerRunApp.java @@ -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 argumentos = new ArrayList<>(); + + for(int i = 0;i 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"); + } + } + + } + + } + +} diff --git a/src/main/java/com/ims/studentManager/dao/StudentDao.java b/src/main/java/com/ims/studentManager/dao/StudentDao.java new file mode 100644 index 0000000..690dc64 --- /dev/null +++ b/src/main/java/com/ims/studentManager/dao/StudentDao.java @@ -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 findAll(); + public void insert(Student student); + public void edit(Student student); + public void delete(long id); +} diff --git a/src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java b/src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java new file mode 100644 index 0000000..8acb025 --- /dev/null +++ b/src/main/java/com/ims/studentManager/dao/StudentDaoImplMemory.java @@ -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 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 result = students + .stream() + .filter(f -> f.getId() == id) + .findFirst(); + + // @formatter:on + + + return result.orElse(null); + } + + public Collection 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; + } + +} diff --git a/src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java b/src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java new file mode 100644 index 0000000..1fc6e6f --- /dev/null +++ b/src/main/java/com/ims/studentManager/dao/UtilStudentFileReader.java @@ -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 readFile(final String path,final String separator,final String listSeparator) { + List 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; + } + +} diff --git a/src/main/java/com/ims/studentManager/service/StudentQueryService.java b/src/main/java/com/ims/studentManager/service/StudentQueryService.java new file mode 100644 index 0000000..d852c1b --- /dev/null +++ b/src/main/java/com/ims/studentManager/service/StudentQueryService.java @@ -0,0 +1,16 @@ +package com.ims.studentManager.service; + +import java.util.Collection; + +import com.ims.studentManger.Package.Student; + +public interface StudentQueryService { + + public Collection 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); + +} diff --git a/src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java b/src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java new file mode 100644 index 0000000..27d8198 --- /dev/null +++ b/src/main/java/com/ims/studentManager/service/StudentQueryServiceImpl.java @@ -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 predicate; + + @PostConstruct + public void init() { + predicate = null; + } + + @Override + public Collection exec() { + // @formatter:off + return dao.findAll() + .stream() + .filter(predicate) + .collect(Collectors.toList()); + + // @formatter:on + + } + + @Override + public StudentQueryService anyMark(String... marks) { + Predicate 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 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 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 pNameContains = (student -> student.getName().toLowerCase().contains(name.toLowerCase())); + predicate = (predicate == null) ? pNameContains : predicate.and(pNameContains); + return this; + } + +} diff --git a/src/main/java/com/ims/studentManager/service/StudentService.java b/src/main/java/com/ims/studentManager/service/StudentService.java new file mode 100644 index 0000000..eca61b5 --- /dev/null +++ b/src/main/java/com/ims/studentManager/service/StudentService.java @@ -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 findAllMarks() { + List 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 findByAnyMark(String... marks) { + + return queryService.anyMark(marks).exec(); + + } + + public Collection findByAllMarks(String... marks) { + return queryService.allMarks(marks).exec(); + } + + + + public Collection findByGrade(String grade) { + return queryService.grade(grade).exec(); + } + + public Collection findBetweenYears(float max, float min) { + return queryService.betweenAvgMark(max, min).exec(); + } + + public Collection findByNameContains(String title) { + return queryService.nameContains(title).exec(); + } + + public Collection findAll() { + return studentDao.findAll(); + } +} diff --git a/src/main/java/com/ims/studentManger/Package/Student.java b/src/main/java/com/ims/studentManger/Package/Student.java new file mode 100644 index 0000000..daa6236 --- /dev/null +++ b/src/main/java/com/ims/studentManger/Package/Student.java @@ -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 marks; + + + public Student(long id, String name, String grade, List 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 getMarks() { + return marks; + } + + public void setMarks(List 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 + "]"; + } + + + +} diff --git a/src/main/resources/ayuda.txt b/src/main/resources/ayuda.txt new file mode 100644 index 0000000..a29e740 --- /dev/null +++ b/src/main/resources/ayuda.txt @@ -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. + \ No newline at end of file diff --git a/src/main/resources/bbdd.csv b/src/main/resources/bbdd.csv new file mode 100644 index 0000000..e8b0f88 --- /dev/null +++ b/src/main/resources/bbdd.csv @@ -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 \ No newline at end of file diff --git a/src/main/resources/movieAdvisor.properties b/src/main/resources/movieAdvisor.properties new file mode 100644 index 0000000..9626c1e --- /dev/null +++ b/src/main/resources/movieAdvisor.properties @@ -0,0 +1,3 @@ +file.path=classpath:bbdd.csv +file.csv.separator=; +file.csv.list_separator=, \ No newline at end of file diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..10751c3 --- /dev/null +++ b/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Built-By: Ivan +Build-Jdk: 17.0.4.1 +Created-By: Maven Integration for Eclipse + diff --git a/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties b/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties new file mode 100644 index 0000000..9f0c5af --- /dev/null +++ b/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.properties @@ -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 diff --git a/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml b/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml new file mode 100644 index 0000000..0a58dcf --- /dev/null +++ b/target/classes/META-INF/maven/com.ims/MovieAdvisor/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + com.ims + MovieAdvisor + 0.0.1-SNAPSHOT + MovieAdvisor + Gran recomendador de peliculas + + + org.springframework + spring-context + 5.3.23 + + + + javax.annotation + javax.annotation-api + 1.3.2 + + + \ No newline at end of file diff --git a/target/classes/ayuda.txt b/target/classes/ayuda.txt new file mode 100644 index 0000000..a29e740 --- /dev/null +++ b/target/classes/ayuda.txt @@ -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. + \ No newline at end of file diff --git a/target/classes/bbdd.csv b/target/classes/bbdd.csv new file mode 100644 index 0000000..e8b0f88 --- /dev/null +++ b/target/classes/bbdd.csv @@ -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 \ No newline at end of file diff --git a/target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class b/target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..d01cef58e8aab01a62e8c67270f7359c88eadd8f GIT binary patch literal 1166 zcmb7DO>Yx15FO{EA?daarG>VX(v|{A4{HtxB)+7o5~lzaLAh{1&c@lg-L+S?H&7w| z6G%u%9QXnJD8zU-N<*^;df4%d-#pv%X7=}=pT7X$IqcVLlc zR>Zs~jOa)FKuTqq6-pWc4?9YS)Fdu-s9DTEDt$`(oJm86EU-$SQ8ppa9*a_rM^;D9 zA>i$Ob{G2zv&UZu)D2IVX2>G2I)(x>@+aGvvk(bmyXScuQ+W>hFr7U2Oh{p05Gc3W zJ*@Ij4R`~}aLt1yXcAcJ2+3ckai8mV3~O@=sDMR1riF{gn-zO3u-FHk%ZZJJ)!(o#~<-xZ}Zs0~=kH>VW5WEKd6DyFLBi*Kk)rn4SA6#+h;gDM4qi84j_CE7;p4GG$!e&WkK;+;@&7*MNUMZv zdzKf5NA3m@Gsca`6B?_L;A}7wMrl9EGX*!WgOZf-wo@>(Hzvygo2B6+ire7lgmeUZFfKrX><_P#rrgj*=-9>#aEkbCce7`P8D^y``5 F{tIA85uN}5 literal 0 HcmV?d00001 diff --git a/target/classes/com/ims/studentManager/StudentManagerApp.class b/target/classes/com/ims/studentManager/StudentManagerApp.class new file mode 100644 index 0000000000000000000000000000000000000000..34447283399f122bc4fe02e43a9db55ec288c042 GIT binary patch literal 1019 zcmb7DT~8B16g|@q7M5y1fNIq$plCm!<9pQvo0ym^YN%;Ke3~x9IcDKsk@&%$s z!?QoicxRVb8pYtt%-(xv&OP^>*&jc@dhtiE1=AJ06;%5xmMsvWB>jnGLMivVNE`F~fhL&?xK3(cH5=t{v8}FPcuYMdV?RA?23uT6vLFn;l zY*GiI7|D-8c*Na6$MQJlLhB$Fu?jTb{{7ht^nvndU|+dOjS}Xxg(Vth+NbA>D6+7^ z(7A+iiu6XfN2Dkx#57@}gd0Yjn+z*6)Dy^r`7MU_C8)E;>`pWRFX9gFTBsA3f6e>n zPzBt>Dud<8__-9MTa|8o%?dA4KGGPJ|vA zy7U)s7;KTKVRU79?ED{Ta(<4Q(liWPS9>q1Omxxi2b0j1FO+$R)mbeGuw(qi8fYx~ zM}Q1{(JQ9aqKMPZXwSD!G5;wk+q9Z8FpouA3+VycuTivs>nKvjTt23A2DJ4RrM=uY zRQ9r!<^CzEPPB1|45br1n0BZV34>iGygF&UjtZJsPCBlpsCa}1 Yohg$uO|+<%RcIpk4P!wa4N=i#Z?F47yNzoo2uvEiyR*TR6jQZ88HX=aTfmZqMKVv+ z0_r^_p0iCCNaQ+hFd-x&u#}P*s1A@uHHcTlvW3zSyqF~MZsKjS@tH}6)EOX-L8Q1z zSQuI*TP(16V}w@(L@tL_yl3HEflCSJQOSz-eO8(dY3qG_z#txI<~C>w+!_sHWnYFh z^+QJmt|}j6afnksiCg&C!bbwLN38XE+4uyvY02%|7FbO!9ZPIrZKN;C7VeC-3vo$# z8UlB1Ok!#ppW$;0_r`?|Bcob2D)@paQeh}?epnOR1Te#}-Dml(hoKG&t_+(pXy}6S z3r2N~E;Ljjsni@E;42F(l71yHCnF#>9->MgNyg9WMd24>?zfa zdn#MpDAg_OjNoo;t#@73jvI^lWPQKpJ@Uo2JXJH&eYPpvX>Z3J5sw#vbAv)o!kF3@ z$kmcAii?f;Iy#qD;uH!jSC4B%hBH*!9JZBH(XF-)IO58fXBH+n1O+m2DtMaUnG=cY zG;a=f!F_W1PvoBSkb%v0DtVm2DW2`V0N%h1Z%iVUGdPn<<+;Z|KNC2^eRVm1wukdC zaH)s+9^T5o(}VL8A7=0m%70+(7o4vChEMbBFYsliht1~+`ZYH4V-pf5+Odlp6JQ R=@?%#_$HD1cIfSQz<<4jmGJ-o literal 0 HcmV?d00001 diff --git a/target/classes/com/ims/studentManager/StudentManagerRunApp.class b/target/classes/com/ims/studentManager/StudentManagerRunApp.class new file mode 100644 index 0000000000000000000000000000000000000000..1089bda0fbfe62b6e79846393ada9ed409e12bb4 GIT binary patch literal 5141 zcmbVQ3wRt=75?w+Zf3g~+H^}wLueZcfuu>gC6of)mb#>`&`l`al8{!klg)Iq?e0vN znQa;YU*H492MP*R5fELazCcKuBIO~1BEArOfPmry1wj;FAX5K3yJ>ct4PQU z?mg$+d(M9zlZRg4e*nM=;a8yuv?Q%;B%O64j++}WOt(un^^{>p5@pkkIWsmiq{1&y zvt8e*M>4vZik#cO-AK9u(~G znwG1(Y0Gp3&WKxfD&h>;X*0FW*0aX2W$%de8@lO4w&_XNvPUBNA%;jS=UT&Q+ZdqO zS;do`mow~rUkr|@Jrs6I)**b0}Q`PdcnRd?-@HI8}P)3I}V1(eq zObth2y1 ze8Ou9R~j2N+$>$-PAl;O9&C1qGECR?LFIQXqN)2T`O)48+M28&}9)U(Qq1; z3IqprXHfdlb82T0X9y^5gL2C<4N)wo*NuyEdWH@wyI&z*qRpFwkbr2*WT!#kEgAx- z3gK+5Qqe&lPjS)8v7=!%)(B|Z(&j)clj+j!9aKAK{Kh#qor!cPw5!cX#Zr(>vCXFFtVM)l)ZoJUW1m^kcE8WPw|$Tyw$7!I)6m+#m>BUz?r{f~WGe zxhaVhUSJwRLF^O|trBj#G>qUK0s&_zlcw^MD@9WUwbi%;?^JQAK>Lw_tuzyAco*JH zcj@McM4Lco#q=^&raBD9rIKmqOYmL|mr40Sy@+N>e4mE*;{&{C%GPDvt*dm=H={9x zEAU|zA7Uc*JnP|qO~%q`>nrgQfzXg{JBCL&ESksj=o)#zk7@Wgt|H?44R_cu%-GIU z!8m6$ty$CjW=g70^|a|oFn&tIr*SQvz*N-j;g02Hvt-$=;WIKJ z_>EmgGKkOdVvWwU#4zsSd~*v9n< znaT4SzKpLh{=I}vlrOJf_)>t4r?`qGBTNkMks0Ny0`tovZF0^C;_Ct{yRC*neWW3l z$z@H;X-HaTgW<>rTgGhKauzjkOU7dPVeewKvJ!3AWjV?@x}7CZ{JNcDehYD6D&iJS zY6^$*GKWkHtdkCL}Mf03q3?ZP1fD*sqN@R8cA6sDw*ump)YN9fBD>+drV6 zc#6QnrX!To+!MmR_>PME1R5vjhzhDT+>h_lQY47HeR*3}K$5W!C?NhF{`WgtX)JF#`2v`wCRrv)JT3!B}Z+2;oUQt>P)}o+tpt ztwkqUwxi)U_${xs-D1yYrUaIjMoY(_ZYS6m7-rHaE0~ANVH*4${-EOb0>@0!Rydf3 zKjK+xN){@+z~Z7N57d(cmfE%$p~N`te)18*ff1Cja(2>Kla?)NU3t@0Xg3$hvl3zz zyLC2|wqdyp2et*-AO)bB`%?qF>d0q z-`rwBTeIg%=MiJL4I)rw0F=5kNx?8u=7rYW=T<1Gt+kuh!sh z7L88RWb-N;Ji}4xZ!}IaX(hv`g0F@1-gqm+r(i|a2*x@)MIRK|#&V`|CdVL0MK&yx zXzc4f4yGzh=jsg3A{+(Bz{0(#xz%Hp4X6|Z)L<5WwZaA*jatr_YH`Gv!?_Cbiqu-Ft-A6l#LF!Q z0z=nLbx84O%YmBU%~LMlaVO62+l$_A-%@`b$F~LULZr{vQtNL|^!YjXx3(w7aDjr} z%l%5NzvaM<2cP2BwlQ2Nu&gRC=GIk>fnj z zJ}Inqg6$I?TfKj&zoKuXWv&s}{rc0j{@qwF`NnV^%@&Z`KdasaU!O00Jq;bcA<-8I z-<0U93g4U<#g}^P0uLZu7ub(m#_<5p|6e2UB$)k>V7?EF`Fk8eJ(swjhkDHC`)~uc zVgdX36WF~qvK>8%jb{`4zGmFW7uh{%!?&=A{)(_@F2*A`1yA$+^ckFr=lDMQ65mLx zahj;bnPLv2BEmPETlsoy-tFD~;$< zn$WE*CW==es;osqiDQ$}i}RIT=us|3uW|)8D_3HRay4`>5I4%$R<0=qqI~)W1{sRa ziCgeZ+{#?=0&j2|&+Qj;#3i^Lckn49rel=*0z5-K_VOu6Ei15(5fs3FT4pu_u^{74 z_=;=a=Gt9cyB5dJdkxJhBGuLPGhW3p^X467`Ut2HDpHL9J|>E}2YDv7l%%p*#zDjp zETNKtbc$k5k$<(dHH|d~nN2FOcB86{b%T`0f1MSHs0qoeTS!F6afRnVv;;8=M{&0ttg!;c9a4v&oC=X|Gpd>?*2hG!H=EKTIT*)k5%%WQW6!O@4)`MiwdL@tct yPhPzG2?d$Oo~Qak&io6<7x(-@t$76Yxo~t=bB8+2Zazm)cqe5-imtw literal 0 HcmV?d00001 diff --git a/target/classes/com/ims/studentManager/dao/StudentDao.class b/target/classes/com/ims/studentManager/dao/StudentDao.class new file mode 100644 index 0000000000000000000000000000000000000000..8acd66b51311ffadc4f53a75a47e75b17e005aef GIT binary patch literal 426 zcma)&%}N6?6ot>N)0wvZw7T*IgqbeP1NZ~2B2+301McG_4ykDZGa12GbKwK{P~x3Y zaUnuiAt&d2x%a$(yuJZA!$E=`;i&LyVb-;%L!-0{H`2*cS3*fI@-OL9`UDYSvXakI zSm{b}`>@hQAPgRjQ}dUFB23fkZ21?~vhHN@#Lyq!2_b27GiwQlX}0XRO)yqmcxxGK zykpZaH>H!IsWf5skL`5BFVC458&~U!r=F%8rm}lNq?O@JthCjECy97ZmPfg7szP5G x%i8$2spEE;m_XR#mVrJO*GG)Dzyt%5U(qs)u| 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/ims/studentManager/service/StudentQueryService.class b/target/classes/com/ims/studentManager/service/StudentQueryService.class new file mode 100644 index 0000000000000000000000000000000000000000..f236d79e59fb459ccbf70fa66e3baa74871a8b0f GIT binary patch literal 591 zcmb`F!Ab)$5QhKMw%gWPt6usD+lv8DLRBb*qEJ!Uqo;H`ENRm$WV6*CeJu|@fDa|k z?&8UcAfASQCiCYDf8IY{-vC_VBtT8zEKb)_uQQqXd_mUVDytH5G9$OqG0CWEKjh@L zQPm4j7w9k5MoFV=BJbu)ioHOco+%a>gu_`m%)K^pk{ZKPo!XH=JJN|&K6fNA{^8ig z>^o5bbg$wSlYIe=uGlY7c6+PbO5i4ZtS&8yBJZ?KM#CLezdep!TgsTiH4|tgPAwSr zI{Y{H-kkgsksWW63jI8sPX9>SwQ5b1)Ow{Y({`dXcQH-1VdTM%ETE_+@1OEcfYy!&cMI_ zd*d$v9>hNlBn0lyJLR-huBNMAt)OggQrfbp+;mmB3szpGrvvl(nsS$>1KUKoQZmpk z(0fHL$aG2C#q^^yS5)3J&>=9gc|?J>f^-B9<~qsS!H$6s#-H8 zHD=q6Cq2uts{$u-j$2GuE3Rc1XI)uVi;g>=o>9`Sre|f|bKIr0Y%EBR)jVg>a#ew_ zofSTAW8xm%Env)Ac44ek>cSxm85k6} zqq);fvL;d(=6*0tCCiMlg?V7*&gqw#F5HW>fg=Jtn@}xNOdQ4Ai8gDMJmm_E4n`D; zNw27YEkKzhj^RE7$H{1ouaLdtR!!WGchH~bR&IG_R^$u=LIGPpA16uCr~JsV`eC(5^mOSGJWh<51DuvW6Us5>2Qw4 zgEs|FgWmu;|JHyTaL!`Ts%v1TJXx z-^1P>3%Ze-Oo_g=X~4v+oY6cDJkfHF1Zg7BJ)^uurR=eVVvtQI2FJ&5D|xt+WqDOV zjO&qQ3z#;~1okgaS~eAI!v&_5wh3&joQu4p&?Q-(DaeCI1s;scxR`8?>+3_8lbFSv zfnq&a|5O=sUAe?cO~Dd4(t;nHr!1GIwyV3qJjw=2vAr*bg9#fvVYe0)k9a>L`&v4J z?h*Ui6-J9FM6iE0fBba|+cYzJu=>_^!Z! zpX+{(S@wc6uhKcc`Z!UB_cjyX#}61>xoHykPc)8jWdMGbJ-no<2Xl@yU#nyy;fA{q zv9v6_K+@6axBfD4x$)ZQ!5JcF+0myhPi1;K@aOA{aQ0e;c6{no@Y_yj?J)3jYP@vLwAePHXt3jS!|2HSJ9E$MpKx%E;{ zC$9JEbT%h!n~A4;hpHNQgDq;!&c^MJfxq*fvhh?N9KmK{Kb2_XXA2Vi;cbxPPF@r` z_)PMd&^Jz2;B3gWq~FIN?ry>&2Xa9oWeyFST5p zXt>zz&jXIrrss8}#2>JyiIk)r*u(XAMbJ7LXnS!tX9VQ-`IMdtkq)G;;jJs!FR1q0 zxWm`5X9b57xQ>w(oJime9D0?|324GQ=m6*^t^Mfcb$BNZ@Vh_a@<8bF8Jy%FeL?iE zP`Ng)8yLQUQ@~_OJNXxk!!Ki-9v)u7=>!;0N_%SeJ$3slhN<*n;@|6g=nqgr55&V+ zOwfnHpx;FS6L>e*Yas(mH!V3@hLLy^+tFq~7??D8FXL0Z$tWVGg#R|nv^*C}{LxJj zA0dTfB!2v+#HZE}pQ5z4L0sTG9*a?YdQ-$lN&Ep4&#XiIJT8X%URp!^Qatg;*DCIt z>WT|o#*-oOhxyd0k`T?L3#w!+LMYKlfdt-*r?^HZ==(U*)$#sV89uNn8OABY8Om@r z;&q_mbpWyDdw?7Fvt_tCX@Be8hw*dg9AveW!J$?cP=Wqfuuq0tCHXM+&idk8QZ z0`w5zxn(?0jOUl};%b=j2ux1^!~XDfKl*Ppn&UV5`?vTx&hGR>D)%G&6fgUupW_v3 krER~)t9Z>H{f?bx*&n@*KjF{N|DMw4++XoG`~$oH2lxx4mjD0& literal 0 HcmV?d00001 diff --git a/target/classes/com/ims/studentManager/service/StudentService.class b/target/classes/com/ims/studentManager/service/StudentService.class new file mode 100644 index 0000000000000000000000000000000000000000..b6d8566e218c4adc377924c84f14f3df84303b78 GIT binary patch literal 4030 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 SKkQBYk#hMd++i3G^8W(<7#Ao2 literal 0 HcmV?d00001 diff --git a/target/classes/movieAdvisor.properties b/target/classes/movieAdvisor.properties new file mode 100644 index 0000000..9626c1e --- /dev/null +++ b/target/classes/movieAdvisor.properties @@ -0,0 +1,3 @@ +file.path=classpath:bbdd.csv +file.csv.separator=; +file.csv.list_separator=, \ No newline at end of file