/// <summary> /// Refresh books local collection. /// </summary> /// <param name="books">Books to be saved.</param> /// <returns>Books collection.</returns> public IList <Book> Refresh(AbstractBookStorage books) { try { booksRepository.Refresh(books); logger.Info("Books were refreshed."); } catch (Exception e) { logger.Error(e.Message); throw; } }
static void Main(string[] args) { storage = new BookListStorage(); bookShop = new BookListService(storage); Console.WriteLine("Next commands are availiable:" + "\n"); Console.WriteLine("1. Show all books"); Console.WriteLine("2. Add a book"); Console.WriteLine("3. Delete a book"); Console.WriteLine("4. Find appropriate book"); Console.WriteLine("5. Sort books" + "\n"); while (alive) { try { command = Console.ReadLine(); switch (command) { case "1": ShowAvailableBooks(bookShop); break; case "2": AddBookToShop(bookShop); break; case "3": DeleteBook(bookShop); break; default: Console.WriteLine("Sorry, this command still in process.."); break; } } catch (InvalidBookDataException e) { Console.WriteLine(e.message); } catch (BookAlreadyExistsException e) { Console.WriteLine(e.message); } catch (BookNotExistsException e) { Console.WriteLine(e.message); } } }
/// <summary> /// Find appropriate books through books collection. /// </summary> /// <param name="parameter">Criteria.</param> /// <param name="books">Collection.</param> /// <returns>Appropriate books collection.</returns> public IEnumerable <Book> FindBooks(IFinder <Book> predicate, AbstractBookStorage books) { IList <Book> allBooksInStorage = Refresh(books); List <Book> findedBooks = new List <Book>(); logger.Info($"Searching books by {predicate} criteria."); foreach (var book in allBooksInStorage) { if (predicate.BookIsRight(book)) { findedBooks.Add(book); } } if (findedBooks.Count == 0) { logger.Error("We can not find book(s) with such criteria."); } return(findedBooks); }
/// <summary> /// Constructor with a logger instance. /// </summary> /// <param name="storage">Storage wich contain all books data.</param> /// <param name="logger">Logger instance.</param> public BookListService(AbstractBookStorage storage, Logs logger) { booksRepository = storage; this.logger = logger; }
/// <summary> /// Constructor. /// </summary> /// <param name="storage">Storage wich contain all books data.</param> public BookListService(AbstractBookStorage storage) { booksRepository = storage; logger = new Logs(); }