commit e6e40689c32f2fe2f79fa2bc8c69f446f2db546e Author: Ivan Morell Date: Thu Nov 17 19:40:16 2022 +0100 First Commit 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 0000000..d01cef5 Binary files /dev/null and b/target/classes/com/ims/studentManager/ConfigPackage/AppConfig.class differ diff --git a/target/classes/com/ims/studentManager/StudentManagerApp.class b/target/classes/com/ims/studentManager/StudentManagerApp.class new file mode 100644 index 0000000..3444728 Binary files /dev/null and b/target/classes/com/ims/studentManager/StudentManagerApp.class differ diff --git a/target/classes/com/ims/studentManager/StudentManagerHelp.class b/target/classes/com/ims/studentManager/StudentManagerHelp.class new file mode 100644 index 0000000..5f6632c Binary files /dev/null and b/target/classes/com/ims/studentManager/StudentManagerHelp.class differ diff --git a/target/classes/com/ims/studentManager/StudentManagerRunApp.class b/target/classes/com/ims/studentManager/StudentManagerRunApp.class new file mode 100644 index 0000000..1089bda Binary files /dev/null and b/target/classes/com/ims/studentManager/StudentManagerRunApp.class differ 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 0000000..8acd66b Binary files /dev/null and b/target/classes/com/ims/studentManager/dao/StudentDao.class differ diff --git a/target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class b/target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class new file mode 100644 index 0000000..792b1d0 Binary files /dev/null and b/target/classes/com/ims/studentManager/dao/StudentDaoImplMemory.class differ diff --git a/target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class b/target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class new file mode 100644 index 0000000..43fbc19 Binary files /dev/null and b/target/classes/com/ims/studentManager/dao/UtilStudentFileReader.class differ 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 0000000..f236d79 Binary files /dev/null and b/target/classes/com/ims/studentManager/service/StudentQueryService.class differ diff --git a/target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class b/target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class new file mode 100644 index 0000000..8254448 Binary files /dev/null and b/target/classes/com/ims/studentManager/service/StudentQueryServiceImpl.class differ 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 0000000..b6d8566 Binary files /dev/null and b/target/classes/com/ims/studentManager/service/StudentService.class differ diff --git a/target/classes/com/ims/studentManger/Package/Student.class b/target/classes/com/ims/studentManger/Package/Student.class new file mode 100644 index 0000000..a0077cc Binary files /dev/null and b/target/classes/com/ims/studentManger/Package/Student.class differ 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