diff --git a/.classpath b/.classpath
index 0ca1374..a85dd0e 100644
--- a/.classpath
+++ b/.classpath
@@ -51,5 +51,6 @@
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..6cf0038
--- /dev/null
+++ b/README.md
@@ -0,0 +1,20 @@
+# Título
+Creación de una aplicación de búsqueda de libros con Spring Core.
+
+## Uso
+Para la creación de este proyecto hemos usado la tecnología de Spring Core para agilizar las relaciones entre los objetos.
+
+En esta app podrás realizar consultas como buscar un libro por género o por título, además se ha añadido un apartado de [ayuda](./src/main/resources/help.txt/) que muestra de forma clara el uso.
+
+## Ejemplo: Buscar un luchador por categoria.
+```
+java -jar playersearch.jar -t welter
+```
+```
+ID Nombre Categoria MejorDisciplina Victorias Derrotas
+6 Eddie Alvaréz Peso Welter UFC 30 7
+7 Israel Adesanya Peso Welter MMA 20 1
+```
+
+## Diagrama de clases
+![Diagrama de clases.](./img/diagramaClases_booksearch.png "Diagrama de clases.")
\ No newline at end of file
diff --git a/src/main/playersearch/App.java b/src/main/playersearch/App.java
new file mode 100644
index 0000000..88cc17a
--- /dev/null
+++ b/src/main/playersearch/App.java
@@ -0,0 +1,21 @@
+package mmaplayers.playersearch;
+
+import mmaplayers.playersearch.config.AppConfig;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+
+public class App {
+
+ public static void main(String[] args) {
+
+ ApplicationContext appContext = new AnnotationConfigApplicationContext(AppConfig.class);
+
+ Run runApp = appContext.getBean(Run.class);
+
+ runApp.run(args);
+
+ ((AnnotationConfigApplicationContext) appContext).close();
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/playersearch/Help.java b/src/main/playersearch/Help.java
new file mode 100644
index 0000000..ee4e1c6
--- /dev/null
+++ b/src/main/playersearch/Help.java
@@ -0,0 +1,32 @@
+package mmaplayers.playersearch;
+
+import org.springframework.stereotype.Component;
+import org.springframework.util.ResourceUtils;
+
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.stream.Collectors;
+
+@Component
+public class Help {
+
+ private String help;
+
+ @PostConstruct
+ public void init() {
+ try {
+ help = Files
+ .lines(Paths.get(ResourceUtils.getFile("classpath:help.txt").toURI()))
+ .collect(Collectors.joining("\n"));
+ } 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/Model/Fighter.java b/src/main/playersearch/Model/Fighter.java
similarity index 100%
rename from src/main/Model/Fighter.java
rename to src/main/playersearch/Model/Fighter.java
diff --git a/src/main/playersearch/Run.java b/src/main/playersearch/Run.java
new file mode 100644
index 0000000..3906ada
--- /dev/null
+++ b/src/main/playersearch/Run.java
@@ -0,0 +1,88 @@
+package mmaplayers.playersearch;
+
+import mmaplayers.playersearch.model.Fighter;
+import mmaplayers.playersearch.service.IFightQueryService;
+import mmaplayers.playersearch.service.IFightService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+@Component
+public class Run {
+
+ @Autowired
+ IFightService iFightService;
+
+ @Autowired
+ IFightQueryService iFightQueryService;
+
+ @Autowired
+ Help help;
+
+ public void run(String[] args) {
+
+ if (args.length < 1) {
+ System.out.println("Error de sintaxis");
+ System.out.println(help.getHelp());
+ } else if (args.length == 1) {
+ switch (args[0].toLowerCase()) {
+ case "-lg":
+ iBookService.findAllGenres().forEach(System.out::println);
+ break;
+ case "-h":
+ System.out.println(help.getHelp());
+ break;
+ default:
+ System.out.println("Error de sintaxis");
+ System.out.println(help.getHelp());
+
+ }
+ } else if (args.length % 2 != 0) {
+ System.out.println("Error de sintaxis");
+ System.out.println(help.getHelp());
+ } else if (args.length > 8) {
+ System.out.println("Error de sintaxis");
+ System.out.println(help.getHelp());
+ } else {
+ List argumentos = new ArrayList<>();
+
+ for (int i = 0; i < args.length; i += 2) {
+ argumentos.add(new String[]{args[i], args[i + 1]});
+ }
+
+ boolean error = false;
+
+ for (String[] argumento : argumentos) {
+ switch (argumento[0].toLowerCase()) {
+ case "-ag":
+ iBookQueryService.anyGenre(argumento[1].split(","));
+ break;
+ case "-tg":
+ iBookQueryService.allGenres(argumento[1].split(","));
+ break;
+ case "-t":
+ iBookQueryService.anyTitle(argumento[1]);
+ break;
+ default:
+ error = true;
+ System.out.println("Error de sintaxis");
+ System.out.println(help.getHelp());
+ }
+ }
+ if (!error) {
+ Collection result = iBookQueryService.exec();
+ System.out.printf("%s\t%-35s\t%-22s\t%s\n", "ID", "Título", "Autor", "Género");
+ if (result != null) {
+ result.forEach(book -> System.out.printf("%s\t%-35s\t%-22s\t%s\n",
+ book.getId(), book.getName(), book.getAuthors(),
+ book.getGenre()));
+ } else {
+ System.out.println("No hay libros que cumplan esos criterios.");
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/config/AppConfig.java b/src/main/playersearch/config/AppConfig.java
similarity index 100%
rename from src/main/config/AppConfig.java
rename to src/main/playersearch/config/AppConfig.java
diff --git a/src/main/controller/CsvParser.java b/src/main/playersearch/controller/CsvParser.java
similarity index 100%
rename from src/main/controller/CsvParser.java
rename to src/main/playersearch/controller/CsvParser.java
diff --git a/src/main/dao/FighterDao.java b/src/main/playersearch/dao/FighterDao.java
similarity index 100%
rename from src/main/dao/FighterDao.java
rename to src/main/playersearch/dao/FighterDao.java
diff --git a/src/main/dao/IFighterDao.java b/src/main/playersearch/dao/IFighterDao.java
similarity index 100%
rename from src/main/dao/IFighterDao.java
rename to src/main/playersearch/dao/IFighterDao.java
diff --git a/src/main/service/FighterQueryService.java b/src/main/playersearch/service/FighterQueryService.java
similarity index 100%
rename from src/main/service/FighterQueryService.java
rename to src/main/playersearch/service/FighterQueryService.java
diff --git a/src/main/service/FighterService.java b/src/main/playersearch/service/FighterService.java
similarity index 100%
rename from src/main/service/FighterService.java
rename to src/main/playersearch/service/FighterService.java
diff --git a/src/main/playersearch/service/IFightQueryService.java b/src/main/playersearch/service/IFightQueryService.java
new file mode 100644
index 0000000..0af2a52
--- /dev/null
+++ b/src/main/playersearch/service/IFightQueryService.java
@@ -0,0 +1,14 @@
+package mmaplayers.fightersearch.service;
+
+import mmaplayers.fightersearch.model.Fighter;
+
+import java.util.Collection;
+import java.util.Collection;
+
+public interface IBookQueryService {
+ public Collection exec();
+ public IBookQueryService anyCategorie(String... categorie);
+ public IBookQueryService allCategories(String... categories);
+ public IBookQueryService anyName(String name);
+
+}
diff --git a/src/main/service/IFightService.java b/src/main/playersearch/service/IFightService.java
similarity index 100%
rename from src/main/service/IFightService.java
rename to src/main/playersearch/service/IFightService.java
diff --git a/src/main/projectresources/MMA_DanielKuperus.csv b/src/main/projectresources/MMA_DanielKuperus.csv
new file mode 100644
index 0000000..dd1eb25
--- /dev/null
+++ b/src/main/projectresources/MMA_DanielKuperus.csv
@@ -0,0 +1,11 @@
+Id;Nombre;Categoria;Mejor Disciplina;Victorias;Derrotas
+1;Valentina Shevchenko;Peso Pluma;MMA;20;3
+2;Antonio Nogueira;Peso Pesado;UFC;34;12
+3;Alistair Overeem;Peso Pesado;K1;47;19
+4;Robbie Lawler;Peso Pesado;MMA;28;15
+5;Matt Hughes;Peso Pesado;FCF;45;9
+6;Eddie Alvaréz;Peso Welter;UFC;30;7
+7;Israel Adesanya;Peso Welter;MMA;20;1
+8;Henry Cejudo;Peso Mosca;UFC;16;2
+9;Quinton Jackson ;Peso Semipesado;UFC;38;14
+10;Randy Couture;Peso Ligero;MMA;21;9
diff --git a/src/main/projectresources/help.txt b/src/main/projectresources/help.txt
new file mode 100644
index 0000000..66df601
--- /dev/null
+++ b/src/main/projectresources/help.txt
@@ -0,0 +1,32 @@
+
+Sintaxis: java -jar booksearch.jar [OPCIONES]
+
+ -lg
+ Lista las diferentes categorias de luchadores del documento.
+ No se pueden utilizar más parámetros.
+
+ -ag categoria1,categoria2,categoria...
+ Lista aquellos luchadores que pertenecen a al menos una de los categorias
+ que se indican. El listado de categorias no puede incluir espacios.
+
+ -tg categoria1,categoria2,categoria...
+ Lista aquellas categorias que pertenecen a todos y cada uno de los
+ luchadores que se indican. El listado de categorias no puede incluir espacios.
+
+ -t nombre
+ Lista aquellos luchadores cuyo nombre contiene la cadena proporcionada.
+ Se ignorará el uso de mayúsculas/minúsculas en la comparación.
+
+ -h
+ Muestra este mensaje de ayuda.
+
+EJEMPLO DE USO
+
+java -jar playersearch.jar -t shev
+Muestra los luvhadores cuyo nombre contiene la palabra shev.
+
+java -jar playersearch.jar -td Peso Pluma
+Muestra los luchadores que pertenecen a la categoria peso pluma
+
+java -jar playersearch.jar -lg
+Muestra un listado con todos las categorias.
\ No newline at end of file
diff --git a/src/main/projectresources/playersearch.properties b/src/main/projectresources/playersearch.properties
new file mode 100644
index 0000000..005cfd8
--- /dev/null
+++ b/src/main/projectresources/playersearch.properties
@@ -0,0 +1,3 @@
+file.path=classpath:MMA_DanielKuperus.csv
+file.csv.separator=;
+file.csv.list_separator=,
\ No newline at end of file
diff --git a/src/main/service/IFightQueryService.java b/src/main/service/IFightQueryService.java
deleted file mode 100644
index 7584615..0000000
--- a/src/main/service/IFightQueryService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package mmaplayers.fightersearch.service;
-
-import mmaplayers.fightersearch.model.Fighter;
-
-import java.util.Collection;
-public interface IFightQueryService {
-
- public Collection findAllCategories();
- public Collection findByAnyCategorie(String... categories);
- public Collection findByAllCategories(String... categories);
- public Collection findByNameContains(String name);
- public Collection findAll();
-}
diff --git a/src/test/PlayerSearchAppTests.java b/src/test/PlayerSearchAppTests.java
new file mode 100644
index 0000000..6fddb69
--- /dev/null
+++ b/src/test/PlayerSearchAppTests.java
@@ -0,0 +1,10 @@
+package mmaplayers.playersearch;
+
+import org.junit.Test;
+
+public class PlayerSearchAppTests {
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/target/classes/META-INF/maven/danielkuperus/mmaplayers/pom.properties b/target/classes/META-INF/maven/danielkuperus/mmaplayers/pom.properties
index 5bfabdd..74cb3fb 100644
--- a/target/classes/META-INF/maven/danielkuperus/mmaplayers/pom.properties
+++ b/target/classes/META-INF/maven/danielkuperus/mmaplayers/pom.properties
@@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
-#Thu Nov 24 01:08:48 CET 2022
+#Sat Nov 26 20:41:47 CET 2022
m2e.projectLocation=C\:\\Users\\Daniel\\Documents\\workspace-spring-tool-suite-4-4.16.1.RELEASE\\mmaplayers
m2e.projectName=mmaplayers
groupId=danielkuperus