From 84f0c44b1488d3fca29d3bae4fbe01be987d324e Mon Sep 17 00:00:00 2001 From: Jesus Date: Tue, 22 Nov 2022 12:08:45 +0100 Subject: [PATCH] Running the app --- .../java/com/jesuspinar/booksearch/App.java | 21 +++++ .../booksearch/BooksearchApplication.java | 10 --- .../java/com/jesuspinar/booksearch/Run.java | 88 +++++++++++++++++++ .../booksearch/service/BookService.java | 1 - 4 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/jesuspinar/booksearch/App.java delete mode 100644 src/main/java/com/jesuspinar/booksearch/BooksearchApplication.java create mode 100644 src/main/java/com/jesuspinar/booksearch/Run.java diff --git a/src/main/java/com/jesuspinar/booksearch/App.java b/src/main/java/com/jesuspinar/booksearch/App.java new file mode 100644 index 0000000..f8b567f --- /dev/null +++ b/src/main/java/com/jesuspinar/booksearch/App.java @@ -0,0 +1,21 @@ +package com.jesuspinar.booksearch; + +import com.jesuspinar.booksearch.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(); + + } + +} diff --git a/src/main/java/com/jesuspinar/booksearch/BooksearchApplication.java b/src/main/java/com/jesuspinar/booksearch/BooksearchApplication.java deleted file mode 100644 index 7afc914..0000000 --- a/src/main/java/com/jesuspinar/booksearch/BooksearchApplication.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.jesuspinar.booksearch; - -public class BooksearchApplication { - - public static void main(String[] args) { - - - } - -} diff --git a/src/main/java/com/jesuspinar/booksearch/Run.java b/src/main/java/com/jesuspinar/booksearch/Run.java new file mode 100644 index 0000000..7c3bf35 --- /dev/null +++ b/src/main/java/com/jesuspinar/booksearch/Run.java @@ -0,0 +1,88 @@ +package com.jesuspinar.booksearch; + +import com.jesuspinar.booksearch.model.Book; +import com.jesuspinar.booksearch.service.IBookQueryService; +import com.jesuspinar.booksearch.service.IBookService; +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 + IBookService iBookService; + + @Autowired + IBookQueryService iBookQueryService; + + @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.getTitle(), book.getAuthors(), + book.getGenre())); + } else { + System.out.println("No hay libros que cumplan esos criterios."); + } + } + } + } +} diff --git a/src/main/java/com/jesuspinar/booksearch/service/BookService.java b/src/main/java/com/jesuspinar/booksearch/service/BookService.java index d450134..cd05650 100644 --- a/src/main/java/com/jesuspinar/booksearch/service/BookService.java +++ b/src/main/java/com/jesuspinar/booksearch/service/BookService.java @@ -27,7 +27,6 @@ public class BookService implements IBookService{ result = iBookDao.findAll() .stream() .map(book -> book.getGenre()) - //.flatMap(l -> Stream.of(l))//TODO: Check this if other java version! .distinct() .sorted() .collect(Collectors.toList());