static void Main(string[] args)
        {
            BinaryBookRepository rep = new BinaryBookRepository("list.bin");
            BookListService service = new BookListService(rep);

            service.AddBook(new Book("Author1", "Book1", "Genre1", 24));
            service.AddBook(new Book("Author2", "Book2", "Genre2", 27));
            service.AddBook(new Book("Author3", "Book1", "Genre2", 24));
            service.RemoveBook(new Book("Author3", "Book1", "Genre2", 24)); 

            Book book = service.FindByTag(x => x.Author == "Author2");
           // service.AddBook(book);
            PrintBooks(rep.LoadBooks());
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            BookListService books = new BookListService("test.txt");

            books.Show();

            try
            {
                books.AddBook(new Book { Author = "Author1", Title = "Title2", PublishingHouse = "House", Year = 1994 });
            }
            catch (BookException exc)
            {
                logger.Error(exc.Message, exc);
            }

            try
            {
                books.RemoveBook(new Book { Author = "Authorr", Title = "Title", PublishingHouse = "Publishing", Year = 1923 });
            }
            catch (BookException exc)
            {
                logger.Error(exc.Message, exc);
            }

            System.Console.WriteLine();
            books.Show();
        }
 static void Main(string[] args)
 {
     BookListService bookListService= new BookListService();
     Book[] books = new Book[5];
     books[0] = new Book("Albahari", "C# in a nutshell", 2012, 1043);
     books[1] = new Book("Richter", "CLR via C#", 2013, 896);
     books[2] = new Book("Eckel", "Thinking in Java", 2009, 637);
     books[3] = new Book("Lorem", "Ipsum", 2005, 1024);
     books[4] = new Book("Dolor", "Sit Amet", 2015, 512);
     foreach (Book book in books)
     {
         bookListService.AddBook(book);
     }
     var bfs=new BinaryFormatterStorage();
     bookListService.SaveCollectionToStorage(bfs);
     var anotherBookListService = new BookListService();
     anotherBookListService.ReadCollectionFromStorage(bfs);
     var xmlStorage=new XmlStorage();
     anotherBookListService.SaveCollectionToStorage(xmlStorage);
     anotherBookListService.SaveCollectionToStorage(new Linq2XmlStorage());
     anotherBookListService.ReadCollectionFromStorage(new Linq2XmlStorage());
     foreach (var book in anotherBookListService.ToList())
     {
         Console.WriteLine(book);
     }
     Console.ReadKey();
 }
Ejemplo n.º 4
0
        private static void Main(string[] args)
        {
            Book            bookForTest    = new Book("978-0-141-34844-5", "Rebecca Donovan", "reason to breathe", "Pinguin Books", 2012, 531, 8);
            IFormatProvider formatProvider = new BookFormatter();

            Console.WriteLine(String.Format(new BookFormatter(), "{0:all}", bookForTest));
            Console.WriteLine(String.Format(new BookFormatter(), "{0:nameauthor}", bookForTest));
            Console.WriteLine(String.Format(new BookFormatter(), "{0:nameauthoryearpages}", bookForTest));
            Console.WriteLine(String.Format(new BookFormatter(), "{0:isbn}", bookForTest));
            Console.WriteLine(String.Format(new BookFormatter(), "{0:price}", bookForTest));
            Console.WriteLine(String.Format(new BookFormatter(), "{0}", bookForTest));

            //Console.WriteLine(bookForTest.ToString("2", ));
            //Console.WriteLine(bookForTest.ToString("3", ));
            //Console.WriteLine(bookForTest.ToString("4", ));
            //Console.WriteLine(bookForTest.ToString("5",  ));
            //Console.WriteLine(bookForTest.ToString("6", ));

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("______________________________________________________________________");

            IStorage <Book> storage = new BookListStorage("test.bin");
            IService        service = new BookListService(storage);

            ToConsole(service.GetAllBooks());

            service.AddBook(new Book("978-3-16-123451-10", "test", "test", "test", 2152, 1264, 1111));

            ToConsole(service.GetAllBooks());

            ToConsole(service.FindBookByTag(service.GetAllBooks(), "name", "test"));

            ToConsole(service.SortBooksByTag(service.GetAllBooks(), "author"));

            Console.ReadLine();
        }
        static void AddBook(BookListService bls)
        {
            Console.Write("ISBN: ");
            Book b = new Book(ReadLong());

            Console.Write("Author: ");
            b.Author = Console.ReadLine();
            Console.Write("Name: ");
            b.Name = Console.ReadLine();
            Console.Write("Year: ");
            b.Year = ReadInt();
            Console.Write("Publisher: ");
            b.Publisher = Console.ReadLine();
            try
            {
                bls.AddBook(b);
            }
            catch (LogicBook.Exceptions.BookListServiceAddExistingItemException ex)
            {
                Console.WriteLine(ex.Message);
                logger.Error(ex.Message);
            }
        }
        static void Main(string[] args)
        {
            BookListService bookService = new BookListService(new FileDataAccessManager("file.dat"));

            bookService.AddBook(new Book("Stephen King", "Rita Hayworth and Shawshank Redemption", "Novel", 1982));
            bookService.AddBook(new Book("George Orwell", "1982", "Dystopian novel", 1949));
            bookService.AddBook(new Book("Stephen King", "The Green Mile", "Novel", 1966));
            bookService.AddBook(new Book("Ken Elton Kesey", "One Flew Over the Cuckoo's Nest", "Novel", 1962));
            bookService.AddBook(new Book("Stephen King", "The Running Man", "Fantasy", 1982));
            bookService.AddBook(new Book("Stephen King", @"11\22\63", "Fantasy", 2011));
            
            bookService.Sort();
            Output(bookService);
            bookService.RemoveBook(b => b.Genre == "Novel");
            Console.WriteLine("=============================================================");
            Output(bookService);
            bookService.SaveData();
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            //Create some books
            var book1 = new Book("Dune", "Frank Herbert", "978-8-37-150211-8", "Chilton Books", 1965, 412, 12.67);
            var book2 = new Book("Witcher. The Last Wish", "Andrzej Sapkowski", "978-7-15-257954-1", "Gollancz", 2007, 514, 15.44);
            var book3 = new Book("Roadside Picnic", "Arkady and Boris Strugatsky", "978-0-02-615170-2", "Macmillan", 1972, 722, 11.78);

            //Add books to List
            List <Book> books = new List <Book> {
                book1, book2
            };

            Console.WriteLine("\nNew list of books.\n");
            foreach (var book in books)
            {
                Console.WriteLine(book);
            }

            //Creating service working with book list
            var service = new BookListService(books);

            Console.WriteLine("\nNew service was created.\n");

            //Add third book to List by service
            service.AddBook(book3);

            Console.WriteLine("\nAdded new book by service.\n");
            foreach (var book in service.GetBooks())
            {
                Console.WriteLine(book);
            }

            //Create a copy of existing book
            var book4 = new Book("Roadside Picnic", "Arkady and Boris Strugatsky", "978-0-02-615170-2", "Macmillan", 1972, 722, 11.78);

            //Trying to add existing book to list
            try
            {
                Console.WriteLine("\nTrying to add existing book\n");
                service.AddBook(book4);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Trying to add null book to list
            Book book5 = null;

            try
            {
                Console.WriteLine("\nTrying to add null book\n");
                service.AddBook(book5);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Trying to remove existing book from list
            service.RemoveBook(book1);
            Console.WriteLine("\nRemove book by service.\n");
            foreach (var book in service.GetBooks())
            {
                Console.WriteLine(book);
            }

            //Trying to remove existing book from list twice
            try
            {
                Console.WriteLine("\nTrying remove existing book from list twice\n");
                service.RemoveBook(book1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Added book1 again by service
            service.AddBook(book1);

            //Existing list of books
            Console.WriteLine("\nExisting list of books.\n");
            foreach (var book in service.GetBooks())
            {
                Console.WriteLine(book);
            }

            Console.WriteLine("\nFind a book with author Andrzej Sapkowski:");
            Console.WriteLine(service.FindBookByTag(new AuthorPredicate()));

            Console.WriteLine("\nFind a book with price less than 15:");
            Console.WriteLine(service.FindBookByTag(new PricePredicate()));

            service.SortBooksByTag(new PublishYearComparer());
            Console.WriteLine("\nBooks ordered by date sort:");
            foreach (var book in service.GetBooks())
            {
                Console.WriteLine(book);
            }

            //filepath is at app.config
            string storageFilepath = ConfigurationSettings.AppSettings["filepath"];
            var    storage         = new BookListStorage(storageFilepath);

            storage.Save(service.GetBooks());

            //Creating other service to load books from binary file
            List <Book> books2   = new List <Book>();
            var         service2 = new BookListService(books2);

            service2.LoadBooksFromStorage(storage);
            Console.WriteLine("\nBooks loaded by other service from binary storage:");
            foreach (var book in service2.GetBooks())
            {
                Console.WriteLine(book);
            }


            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            BookListService service = new BookListService(new BookFileRepository("TestBooksFile"), logger);

            if (!File.Exists("TestBooksFile"))
            {
                service.AddBooks(new List <Book> {
                    new Book("J. K. Rowling", "Harry Potter and the Prisoner of Azkaban", 528, 18.4),
                    new Book("Stephen King", "The Green Mile", 384, 10.6),
                    new Book("Борис Васильев", "А зори здесь тихие...", 432, 10.2),
                    new Book("Антуан де Сент-Экзюпери", "Маленький принц", 104, 16.7),
                });
            }

            IEnumerable <Book> sort = service.SortBooksByTag(book => book.Price);

            Console.WriteLine("Sort by price: ");
            foreach (var book in sort)
            {
                Console.WriteLine($"{book}");
            }

            sort = service.SortBooksByTag(book => book.NumberPages);
            Console.WriteLine("Sort by number of pages: ");
            foreach (var book in sort)
            {
                Console.WriteLine($"{book}");
            }

            IEnumerable <Book> find = service.FindBookByTag(book => book.Author == "Антуан де Сент-Экзюпери");

            Console.WriteLine("Find by author Антуан де Сент-Экзюпери");
            foreach (var book in find)
            {
                Console.WriteLine($"{book} ");
            }

            Console.WriteLine("Test remove (Harry Potter) and add (Godfather):");
            service.AddBook(new Book("Mario Puzo", "Godfather", 288, 25.6));
            service.RemoveBook(new Book("J. K. Rowling", "Harry Potter and the Prisoner of Azkaban", 528, 18.4));

            foreach (var book in service.Books)
            {
                Console.WriteLine($"{book}");
            }

            Console.WriteLine("Test exceptions:");
            try
            {
                service.AddBook(null);
            }
            catch (ArgumentNullException ex)
            {
                Console.WriteLine(ex.Message);
            }
            try
            {
                service.RemoveBook(new Book("Margaret Mitchell", "Gone with the Wind", 1280, 17));
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadKey();
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            ILogger logger = new NLogAdapter();

            //Creating books
            Book book1 = new Book("Война и мир", "Лев Толстой", "роман-эпопея", 1408, "русский", "Россия");
            Book book2 = new Book("Преступление и наказание", "Федор Достоевский", "роман", 608, "русский", "Россия");
            Book book3 = new Book("Собачье сердце", "Михаил Булгаков", "повесть", 384, "русский", "Россия");
            Book book4 = new Book("Тихий Дон", "Михаил Шолохов", "роман-эпопея", 1505, "русский", "Россия");
            Book book5 = new Book("Обломов", "Иван Гончаров", "роман", 640, "русский", "Россия");
            Book book6 = new Book("Идиот", "Федор Достоевский", "роман", 640, "русский", "Россия");
            Book book7 = new Book("Тихий дон", "Михаил Шолохов", "роман-эпопея", 1230, "английский", "Россия");

            //Creating blank BookListServices
            BookListService bookListService        = new BookListService(logger);
            BookListService anotherBookListService = new BookListService(logger);
            BookListService bookListServiceFromBS  = new BookListService(logger);
            BookListService bookListServiceFromXML = new BookListService(logger);

            //Filling in first BookListService
            bookListService.AddBook(book1);
            bookListService.AddBook(book2);
            bookListService.AddBook(book3);
            bookListService.AddBook(book4);
            bookListService.AddBook(book5);
            bookListService.AddBook(book6);
            bookListService.AddBook(book7);


            //Displaying of first element of the BookListService and removing of this element
            Console.WriteLine(bookListService[1].ToString());
            bookListService.RemoveBook(bookListService[1]);

            Console.WriteLine("****************Work with BookListSerializedStorage****************");
            //Creating BookListSerializedStorage with specified name
            BookListSerializedStorage bookListSerializedStorage = new BookListSerializedStorage("LibraryBS.dat");

            //Saving the BookListService to the BookListSerializedStorage
            bookListService.Save(bookListSerializedStorage);
            //Loading books from BookListSerializedStorage to another BookListService and displaying the books
            bookListServiceFromBS.Load(bookListSerializedStorage);
            foreach (Book temp in bookListServiceFromBS.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }

            Console.WriteLine("****************Work with BookListXMLStorage****************");
            // Creating BookListXMLStorage with specified name
            BookListXMLStorage bookListXMLStorage = new BookListXMLStorage("LibraryXML.xml");

            //Saving the BookListService to the BookListXMLStorage
            bookListService.Save(bookListXMLStorage);
            //Loading books from BookListXMLStorage to another BookListService and displaying the books
            bookListServiceFromXML.Load(bookListXMLStorage);
            foreach (Book temp in bookListServiceFromXML.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }

            Console.WriteLine("****************Work with BookListStorage****************");
            //Creating BookListStorage with specified name
            BookListStorage bookListStorage = new BookListStorage("Library.dat");

            //Saving the BookListService to the BookListStorage
            bookListService.Save(bookListStorage);
            //Loading books from BookListStorage to another BookListService and displaying the books
            anotherBookListService.Load(bookListStorage);
            foreach (Book temp in anotherBookListService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }


            //Sorting the books in order specified in Comparer object(by author)
            Console.WriteLine("****************SortedByAuthorList****************");
            IComparer <Book> authorComparer = new BookEqualityByAuthor();

            anotherBookListService.SortBooksByTag(authorComparer);
            foreach (Book temp in anotherBookListService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }



            //Sorting the books in order specified in Comparer object(by number of pages)
            Console.WriteLine("****************SortedByNumberOfPages****************");
            IComparer <Book> numberOfPagesComparer = new BookEqualityByNumberOfPages();

            anotherBookListService.SortBooksByTag(numberOfPagesComparer);
            foreach (Book temp in anotherBookListService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }

            //Extracting books with the tag specified in TagContainer(title="дон")
            Console.WriteLine("****************BooksThatContainGivenTitle****************");
            ITagContainer tagContainer = new BookListContainTitle("дон");

            BookListService tempService = anotherBookListService.FindBookByTag(tagContainer);

            foreach (var temp in tempService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }

            //Extracting books with the tag specified in TagContainer(language="рус")
            Console.WriteLine("****************BooksThatContainGivenLanguage****************");
            tagContainer = new BookListContainLanguage("рус");

            tempService = anotherBookListService.FindBookByTag(tagContainer);

            foreach (var temp in tempService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }


            //Extracting books with the tag specified in TagContainer(language="рус")
            Console.WriteLine("****************BooksThatContainGivenLanguage****************");

            tempService = anotherBookListService.FindBookByTag(book => book.Language.Contains("рус"));


            foreach (var temp in tempService.GetBooks())
            {
                Console.WriteLine(temp.ToString() + "\n");
            }

            Console.ReadLine();
        }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            var book1 = new Book("Название книги 1", 700, 1980, "Автор Книги");
            var book2 = new Book("Название книги 2", 900, 1983, "Автор Книги 2");

            Console.WriteLine(book1.ToString());
            Console.WriteLine(book1.CompareTo(book2));

            Console.WriteLine(book1.GetHashCode());
            Console.WriteLine(book2.GetHashCode());

            List <Book> books = new List <Book>();

            books.Add(book1);
            books.Add(book2);

            BookListService service = new BookListService(books);

            service.AddBook(new Book("Название книги 3", 800, 1980, "Автор Книги 3"));

            Book findBook = service.FindBookWithTag((book) => String.Compare(book.Author, "Автор Книги 2", StringComparison.InvariantCulture) == 0);

            Console.WriteLine();
            Console.WriteLine("Найденная книга:");

            if (findBook != null)
            {
                Console.WriteLine(findBook.ToString());
            }
            else
            {
                Console.WriteLine("Книга не найдена!");
            }

            Console.WriteLine();

            BookListStorage storageBIN = new BookListStorage("E:/storageBIN");

            service.Save(storageBIN);

            XMLBookListStorage storageXML = new XMLBookListStorage("E:/storageXML");

            service.Save(storageXML);

            BinarySerializerStorage storage3 = new BinarySerializerStorage("E:/storageBinarySerialiser");

            service.Save(storage3);

            List <Book> loadDate = storageBIN.LoadBooks();

            for (int i = 0; i < loadDate.Count; i++)
            {
                Console.WriteLine(loadDate[i].ToString());
            }

            Console.WriteLine();

            loadDate.Clear();
            loadDate = storageXML.LoadBooks();
            for (int i = 0; i < loadDate.Count; i++)
            {
                Console.WriteLine(loadDate[i].ToString());
            }

            Console.WriteLine();

            loadDate.Clear();
            loadDate = storage3.LoadBooks();
            for (int i = 0; i < loadDate.Count; i++)
            {
                Console.WriteLine(loadDate[i].ToString());
            }
            Console.ReadKey();
        }
Ejemplo n.º 11
0
 private static void AddBook(Book book)
 {
     service.AddBook(book);
 }
Ejemplo n.º 12
0
        private static void Main()
        {
            #region Configure NLog Targets for output programmatically

            var config = new NLog.Config.LoggingConfiguration();

            var logfile = new NLog.Targets.FileTarget()
            {
                FileName = "file.txt", Name = "logfile"
            };
            var logconsole = new NLog.Targets.ConsoleTarget()
            {
                Name = "logconsole"
            };

            config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Trace, logconsole));
            config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, logfile));

            NLog.LogManager.Configuration = config;

            var nLogger = new NLogger();

            #endregion

            #region Creation book instances and adding them to SortedSet

            var books = new SortedSet <Book>
            {
                new Book(
                    "978-0-672-33690-4",
                    "Bart De Smet",
                    "C# 5.0 Unleashed",
                    "SAMS Publishing",
                    2013,
                    1671,
                    51.29m),
                new Book(
                    "978-0-735-68320-4",
                    "Gary McLean Hall",
                    "Adaptive Code via C#",
                    "Microsoft Press",
                    2014,
                    403,
                    35.01m),
                new Book(
                    "978-1-617-29134-0",
                    "Jon Skeet",
                    "C# in Depth, 3rd Edition",
                    "Manning",
                    2015,
                    605,
                    39.73m),
                new Book(
                    "978-1-491-98765-0",
                    "Joseph Albahari & Веn Albahari",
                    "C# 7.0 in a Nutshell: The Definitive Reference",
                    "O'Reilly",
                    2018,
                    1140,
                    60.53m)
            };

            Console.WriteLine($"*** SortedSet ordered alphabetically by title ***\n");

            foreach (var book in books)
            {
                Console.WriteLine(book);
            }

            #endregion

            #region Book class testing

            Console.WriteLine($"\n*** Book testing ***\n");

            Console.WriteLine($"\n--- Equals testing ---\n");

            var bookAlbahari2 = new Book("978-1-491-98765-0",
                                         "Joseph Albahari & Веn Albahari",
                                         "C# 7.0 in a Nutshell: The Definitive Reference",
                                         "O'Reilly",
                                         2018,
                                         1140,
                                         60.53m);

            foreach (var book in books)
            {
                if (book.Equals(bookAlbahari2))
                {
                    Console.WriteLine($"{book.ToString()}\n{bookAlbahari2.ToString()}\nThe same books");
                }
            }

            Console.WriteLine($"\n--- GetHashCode testing ---\n");

            foreach (var book in books)
            {
                Console.WriteLine($"Hash - \'{book.GetHashCode()}' --- {book.ToString("AT")}");
            }

            Console.WriteLine($"\nHash - \'{bookAlbahari2.GetHashCode()}' --- {bookAlbahari2.ToString("AT")}");

            #endregion

            #region Book List Service testing

            Console.WriteLine($"\n*** Book Service testing ***\n");

            var bookService = new BookListService(books, nLogger);

            Console.WriteLine($"\n--- Add book (title Mumu) ---\n");

            var anotherBook = new Book("978-1-555-11223-0",
                                       "Turgenev",
                                       "Mumu",
                                       "Unknown",
                                       1967,
                                       200,
                                       10m);

            bookService.AddBook(anotherBook);

            foreach (var book in bookService.Books)
            {
                Console.WriteLine(book);
            }

            Console.WriteLine($"\n--- Trying to add null to book list ---\n");

            try
            {
                bookService.AddBook(null);
            }
            catch (ArgumentNullException ex)
            {
                bookService.Logger.Error(ex.Message);
            }


            Console.WriteLine($"\n--- Trying to add book which is already exists ---\n");

            try
            {
                bookService.AddBook(anotherBook);
            }
            catch (BookAlreadyExistException ex)
            {
                bookService.Logger.Error(ex.Message);
            }

            Console.WriteLine($"\n--- Find book by tag (Publisher = Manning) ---\n");

            var publisherPredicate = new PublisherPredicate {
                Publisher = "Manning"
            };

            var searchBook = bookService.FindBookByTag(publisherPredicate);

            Console.WriteLine(searchBook);

            Console.WriteLine($"\n--- Sort book by tag (by PublishingYear, ascending) ---\n");

            bookService.SortBooksByTag(new YearComparer());

            foreach (var book in bookService.Books)
            {
                Console.WriteLine(book);
            }

            Console.WriteLine($"\n--- Remove book (title = Mumu) ---\n");

            bookService.RemoveBook(anotherBook);

            foreach (var book in bookService.Books)
            {
                Console.WriteLine(book);
            }

            Console.WriteLine($"\n--- Remove book (title = Mumu) ---\n");

            #endregion

            #region Book Storage testing

            Console.WriteLine($"\n*** Book Storage testing ***\n");

            Console.WriteLine($"\n--- Saving list of books to the storage ---\n");

            string path = @"storage.txt";

            var storage = new BookListStorage(path);

            bookService.SaveInStorage(storage);

            Console.WriteLine($"\n--- Loading books from the storage ---\n");

            bookService.LoadFromStorage(storage);

            foreach (var book in bookService.Books)
            {
                Console.WriteLine(book);
            }

            #endregion
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            try
            {
                var storage = new BinaryStorage();

                var service = new BookListService(logger);

                service.ReadList(storage);

                var book1 = new Book("978-0-7356-6745-7", "Jeffrey Richter",
                                     "CLR via C#", "Microsoft Press", 2012, 826, new decimal(59.99));

                //service.AddBook(book1);

                var book2 = new Book("978-0-7356-6745-8", "Astakhov Mihail",
                                     "Axperimental study of the strength",
                                     "Bauman MSTU", 2006, 593, new decimal(10.30));

                //service.AddBook(book2);

                var book3 = new Book("978-0-7356-6745-1", "Timoshenko Sergey",
                                     "Bibration problems in engineering",
                                     "Mashinostroenie Publ", 1985, 472, new decimal(30.45));

                //service.AddBook(book3);

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString());
                }

                Console.WriteLine();

                service.RemoveBook(book3);

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString());
                }

                Console.WriteLine();

                var resultDuneFind = service.FindBookByTag(new SearchByIsbn(book2.ISBN));

                Console.WriteLine($"Expected true: {resultDuneFind.Equals(book2)}");

                var resultNotFind = service.FindBookByTag(new SearchByIsbn("978 - 0 - 7356 - 3745 - 7"));

                Console.WriteLine($"Expected null: {resultNotFind == null}");

                var predicateSort = new CompareByName();

                service.AddBook(book3);

                service.SortBooksByTag(predicateSort);

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString());
                }

                Console.WriteLine();

                storage.SaveList(service.ListBooks);

                var cultereInfo = System.Globalization.CultureInfo.GetCultureInfo("en-IN");

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString("O", cultereInfo));
                }

                Console.WriteLine();

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString("P", cultereInfo));
                }

                Console.WriteLine();

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString("Q", cultereInfo));
                }

                Console.WriteLine();

                foreach (Book item in service.ListBooks)
                {
                    Console.WriteLine(item.ToString("G", cultereInfo));
                }

                Console.WriteLine(book1.GetHashCode() == book1.GetHashCode());
                Console.WriteLine(book1.GetHashCode() == book2.GetHashCode());
            }
            catch (FormatException error)
            {
                logger.WriteInfo("Format exseption");
                logger.WriteError(error.StackTrace);
            }
            catch (ArgumentNullException error)
            {
                logger.WriteInfo("Argument null exception");
                logger.WriteError(error.StackTrace);
            }
            catch (BookFormatException error)
            {
                logger.WriteInfo("Book format exception");
                logger.WriteError(error.StackTrace);
            }
            catch (Exception error)
            {
                logger.WriteInfo("Unhandled exception:");
                logger.WriteError(error.StackTrace);
            }
        }
Ejemplo n.º 14
0
        public static void Main(string[] args)
        {
            var book1 = new Book()
            {
                Author           = "Джеффри Рихтер",
                Name             = "CLR via C#",
                NumberOfPages    = 896,
                PublishingOffice = "Питер",
                Year             = 2017,
                Price            = 67.50m,
                ISBN             = "978-5-496-00433-6"
            };

            var book2 = new Book()
            {
                Author           = "Панос Луридас",
                Name             = "Aлгоритмы для начинающих",
                NumberOfPages    = 608,
                PublishingOffice = "Эксмо",
                Year             = 2018,
                Price            = 45.50m,
                ISBN             = "978-5-04-089834-3"
            };

            var appFolder     = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            var storageFolder = Path.Combine(appFolder, "Storage");

            Directory.CreateDirectory(storageFolder);
            var path = Path.Combine(storageFolder, "BookListStorage");

            var storage = new BookStorage(path);
            var service = new BookListService(storage);

            service.AddBook(book1);
            service.AddBook(book2);

            foreach (var book in service.GetBooks())
            {
                Console.WriteLine(book.ToString());
            }

            Console.ReadKey();
            Console.WriteLine();

            service.RemoveBook(book2);

            var criterion = new NameCriterion("CLR via C#");
            var book3     = service.FindBookByTag(criterion);

            Console.WriteLine(book3.ToString());
            Console.ReadKey();
            Console.WriteLine();

            service.AddBook(book2);
            var books = service.SortBooksByTag(Comparer <Book> .Default);

            foreach (var book in books)
            {
                Console.WriteLine(book.ToString());
            }

            Console.ReadKey();
            File.Delete(path);
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            ILogger logger = new Book.Logic.Logging.NLog();

            try {
                Book.Logic.Book firstBook = new Book.Logic.Book("12345", "Suzanne Collins", "The Hunger Games", "Scholastic Press",
                                                                2008, 234, 20);
                Book.Logic.Book secondBook = new Book.Logic.Book("23456", "J.K. Rowling", "Harry Potter and the Order of the Phoenix", "Scholastic Inc.",
                                                                 2004, 312, 17);
                Book.Logic.Book thirdBook = new Book.Logic.Book("34567", "Harper Lee", "To Kill a Mockingbird", "Harper Perennial Modern Classics",
                                                                2006, 245, 21);
                Book.Logic.Book fourthBook = new Book.Logic.Book("45678", "Jane Austen", "Pride and Prejudice", "Modern Library",
                                                                 2000, 634, 18);
                Book.Logic.Book fifthBook = new Book.Logic.Book("56789", "Stephenie Meyer", "Twilight", "Little, Brown and Company ",
                                                                2006, 134, 25);
                Book.Logic.Book sixthBook = new Book.Logic.Book("56789", "Stephenie Meyer", "Twilight", "Little, Brown and Company ",
                                                                2006, 134, 25);
                Book.Logic.Book seventhBook = null;


                IFormatProvider fp = new BookFormatProvider();
                Console.WriteLine(string.Format(fp, "{0:AT}", firstBook));

                Console.WriteLine(fifthBook);

                Console.WriteLine(fifthBook.Equals(sixthBook));    //true
                Console.WriteLine(firstBook.Equals(secondBook));   //false

                Console.WriteLine(fifthBook.CompareTo(thirdBook)); //1
                Console.WriteLine(sixthBook.CompareTo(fifthBook)); //0

                BookListService service = new BookListService();

                service.AddBook(firstBook);
                service.AddBook(secondBook);
                service.AddBook(thirdBook);
                service.RemoveBook(thirdBook);
                service.AddBook(thirdBook);
                service.AddBook(fourthBook);
                service.AddBook(fifthBook);
                service.AddBook(seventhBook);


                Console.WriteLine("\r\n");
                Console.WriteLine("------List of books.------");
                Console.WriteLine(service);

                IBookStorage binaryStorage = new BookBinaryStorage(@"/Users/vinnichek/Projects/Task/ConsoleAppForBook/Books.txt");
                //service.SaveToStorage(binaryStorage);
                //service.LoadFromStorage(binaryStorage);

                Console.WriteLine(service.FindBookByTag(new FindBookByAuthor("Suzanne Collins")));
                Console.WriteLine(service.FindBookByTag(new FindBookByPrice(25)));

                Console.WriteLine("\r\n");
                Console.WriteLine("------Sorting by authors.------");
                service.SortBookByTag(new CompareByAuthor());
                Console.WriteLine(service);

                Console.WriteLine("\r\n");
                Console.WriteLine("------Sorting by price.------");
                service.SortBookByTag(new CompareByPrice());
                Console.WriteLine(service);
            }
            catch (ArgumentNullException e)
            {
                logger.ErrorWriteToLog(DateTime.Now, e.Message, e.StackTrace);
            }
            catch (ArgumentException e)
            {
                logger.ErrorWriteToLog(DateTime.Now, e.Message, e.StackTrace);
            }
            catch (Exception e)
            {
                logger.ErrorWriteToLog(DateTime.Now, "Unhandled exception:", e.StackTrace);
            }
            Console.ReadKey();
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            Book twelveChairs = new Book("978 - 0810114845", "Ilya Ilf, Evgeny Petrov", "The Twelve Chairs",
                                         "Northwestern University Press", 1997, 395, 41.93m);
            Book gameOfThrones = new Book("978 - 0553593716", "George R. R. Martin", "A Game of Thrones",
                                          "Bantam", 2011, 864, 9.49m);
            Book designPatterns = new Book("978-0596007126", "Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra",
                                           "Head First Design Patterns", "O'Reilly Media", 2004, 694, 32.35m);
            Book danceWithDragons = new Book("978-0553582017", "George R. R. Martin", "A Dance with Dragons",
                                             "Bantam", 2013, 1152, 7.59m);
            Book orwell1984 = new Book("1328869334", "George Orwell", "1984", "Houghton Mifflin Harcourt", 2017, 304, 15.81m);

            Console.WriteLine("Create service with memory storage");
            IStorage        memoryStorage = new MemoryStorage();
            BookListService bookListServiceMemoryStorage = new BookListService(memoryStorage);

            Console.WriteLine("Add book \"The Twelve Chairs\"");
            bookListServiceMemoryStorage.AddBook(twelveChairs);

            Console.WriteLine("Add book \"A Game of Thrones\"");
            bookListServiceMemoryStorage.AddBook(gameOfThrones);

            Console.WriteLine();

            Console.WriteLine("Show all books in storage:\n");
            bookListServiceMemoryStorage.ShowAll();

            Console.WriteLine("Try to add \"The Twelve Chairs\" again");
            try
            {
                bookListServiceMemoryStorage.AddBook(twelveChairs);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.WriteLine("\n\nCreate service with binary file storage");
            IStorage        binaryFileStorage = new BinaryFileStorage("books.dat");
            BookListService bookListServiceBinaryFileStorage = new BookListService(binaryFileStorage);

            Console.WriteLine("Add book \"A Game of Thrones\"");
            bookListServiceBinaryFileStorage.AddBook(gameOfThrones);
            Console.WriteLine("Add book \"A Dance with Dragons\"");
            bookListServiceBinaryFileStorage.AddBook(danceWithDragons);
            Console.WriteLine("Add book \"1984\"");
            bookListServiceBinaryFileStorage.AddBook(orwell1984);
            Console.WriteLine("Add book \"Head First Design Patterns\"");
            bookListServiceBinaryFileStorage.AddBook(designPatterns);

            Console.WriteLine("\nList of books in binary file storage:\n");
            bookListServiceBinaryFileStorage.ShowAll();

            Console.WriteLine("\nFind books whose authors contains \"george\"\n");
            var list = bookListServiceBinaryFileStorage.FindBookByTag(Tags.Author, "george");

            foreach (var book in list)
            {
                Console.WriteLine(book);
                Console.WriteLine();
            }

            Console.WriteLine("\nSort books by number of pages");
            bookListServiceBinaryFileStorage.SortBooksByTag(Tags.NumberOfPages);
            Console.WriteLine("\nSorted list of books:\n");
            bookListServiceBinaryFileStorage.ShowAll();

            Console.WriteLine("\nRemove \"A Game of Thrones\"");
            bookListServiceBinaryFileStorage.RemoveBook(gameOfThrones);
            Console.WriteLine("\nRemove \"A Dance with Dragons\"");
            bookListServiceBinaryFileStorage.RemoveBook(danceWithDragons);

            Console.WriteLine("\nList of books:\n");
            bookListServiceBinaryFileStorage.ShowAll();

            Console.WriteLine("\nRemove \"1984\"");
            bookListServiceBinaryFileStorage.RemoveBook(orwell1984);
            Console.WriteLine("\nRemove \"Head First Design Patterns\"");
            bookListServiceBinaryFileStorage.RemoveBook(designPatterns);

            Console.ReadLine();
        }
Ejemplo n.º 17
0
        static void Main(string[] args)
        {
            List <Book> listOfSomeBooks = new List <Book>()
            {
                new Book()
                {
                    Name = "Oliver Twist", Author = "Mark Twen", Year = 1935, Pages = 350
                },
                new Book()
                {
                    Name = "Computer Networks", Author = "Andew Tanenbaum", Year = 2010, Pages = 750
                },
                new Book()
                {
                    Name = "Design Patterns", Author = "Gang Of Fours", Year = 1995, Pages = 520
                }
            };

            BinaryFileRepository repository = new BinaryFileRepository("list.bin");

            BookListService service = new BookListService(repository);

            foreach (var i in listOfSomeBooks)
            {
                service.AddBook(i);
            }

            foreach (var i in service)
            {
                Console.WriteLine(i + Environment.NewLine);
            }

            //local repository
            BookListService books = new BookListService();

            books.AddBook(new Book()
            {
                Name = "Crime and Punishment", Author = "Fedor Dostoevsky", Year = 1995, Pages = 777
            });
            books.AddBook(new Book()
            {
                Name = "To Kill a Mockingbird", Author = "Harper Li", Year = 1995, Pages = 377
            });
            books.AddBook(new Book()
            {
                Name = "Solaris", Author = "Stanislav Lem", Year = 1995, Pages = 277
            });

            foreach (var i in books)
            {
                Console.WriteLine(i + Environment.NewLine);
            }

            Console.WriteLine("Search methods:" + Environment.NewLine);
            Console.WriteLine("Dostoevsky's book" + Environment.NewLine + books.FindBookByTag(b => b.Author == "Fedor Dostoevsky"));

            List <Book> result = books.FindByYear(1995);

            Console.WriteLine(Environment.NewLine + "Searching by year:" + Environment.NewLine);
            foreach (var i in result)
            {
                Console.WriteLine(i + Environment.NewLine);
            }

            var bls = new BookListService(new BinaryFileRepository("anotherBinFile.bin"));

            bls.AddBook(new Book()
            {
                Name = "To Kill a Mockingbird", Author = "Harper Li", Year = 1995, Pages = 377
            });
            bls.AddBook(new Book()
            {
                Name = "Бесы", Author = "Fedor Dostoevsky", Year = 1995, Pages = 977
            });
            bls.AddBook(new Book("1984", "George Orwell", 1949, 267));
            bls.AddBook(new Book("Harry Potter and the Goblet of Fire", "J. K. Rowling", 2000, 636));
            bls.AddBook(new Book("We Children from Bahnhof Zoo", "Christiane F.", 1980, 300));

            Console.WriteLine(Environment.NewLine + "New book storage after sorting by year:" + Environment.NewLine);

            bls.SortBooksByTag((x, y) => x.Year - y.Year);

            foreach (var i in bls)
            {
                Console.WriteLine(i + Environment.NewLine);
            }
        }
Ejemplo n.º 18
0
        static void Main(string[] args)
        {
            BookListService service = new BookListService(new BookRepository("books"));

            if (!File.Exists("books"))
            {
                service.AddBooks(new List <Book> {
                    new Book("J. K. Rowling", "Harry Potter and the Prisoner of Azkaban", "Махаон", 528, 184100),
                    new Book("J. K. Rowling", "Harry Potter and the Philosopher's Stone", "МАХАОН", 432, 172100),
                    new Book("Stephen King", "The Green Mile", "ACT", 384, 106100),
                    new Book("Margaret Mitchell", "Gone with the Wind", "Эксмо", 1280, 173100),
                    new Book("Arthur Conan Doyle", "A Study in Scarlet", "ACT", 304, 123700),
                    new Book("George Martin", "A Storm of Swords", "ACT", 960, 127300),
                    new Book("Борис Васильев", "А зори здесь тихие...", "Мартин", 432, 102200),
                    new Book("Alexandre Dumas", "Le comte de Monte Cristo", "ACT", 1216, 166700),
                    new Book("Harper Lee", "To Kill a Mockingbird", "ACT", 416, 90100)
                });
            }

            IEnumerable <Book> find = service.Find(book => book.PublishOrganization.ToLowerInvariant() == "махаон");

            WriteLine("\tFind by publish organisation Махаон\n");

            foreach (var book in find)
            {
                WriteLine($"{book}\n");
            }

            IEnumerable <Book> sort = service.Sort(book => book.Price);

            WriteLine("\n\n\tSort by price\n");
            foreach (var book in sort)
            {
                WriteLine($"{book}\n");
            }

            sort = service.Sort(book => book.PagesNumber);
            WriteLine("\n\n\tSort by number of pages\n");
            foreach (var book in sort)
            {
                WriteLine($"{book}\n");
            }

            WriteLine("\n\n\ttest exceptions\n");
            try {
                service.AddBook(new Book("Margaret Mitchell", "Gone with the Wind", "Эксмо", 1280, 173100));
            } catch (BookListServiceException ex) {
                WriteLine(ex.Message);
            }
            try {
                service.RemoveBook(new Book("Margaret Mitchell", "Gone with the Wind", "ACT", 1280, 173100));
            } catch (BookListServiceException ex) {
                WriteLine(ex.Message);
            }

            WriteLine("\n\n\tTest remove: 'Gone with the Wind' and '...the Prisoner of Azkaban'");
            service.RemoveBook(new Book("Margaret Mitchell", "Gone with the Wind", "Эксмо", 1280, 173100));
            service.RemoveBook(new Book("J. K. Rowling", "Harry Potter and the Prisoner of Azkaban", "Махаон", 528, 184100));

            foreach (var book in service.Books)
            {
                WriteLine($"{book}\n");
            }

            WriteLine("\n\n\tTest add book: 'Gone with the Wind' and '...the Prisoner of Azkaban' and 'Godfather'");
            service.AddBooks(new List <Book> {
                new Book("Margaret Mitchell", "Gone with the Wind", "Эксмо", 1280, 173100),
                new Book("J. K. Rowling", "Harry Potter and the Prisoner of Azkaban", "Махаон", 528, 184100),
                new Book("Mario Puzo", "Godfather", "Айрис-пресс", 288, 256300)
            });

            foreach (var book in service.Books)
            {
                WriteLine($"{book}\n");
            }

            service.RemoveBook(new Book("Mario Puzo", "Godfather", "Айрис-пресс", 288, 256300));

            ReadLine();
        }
Ejemplo n.º 19
0
        static void Main(string[] args)
        {
            //Check for add entity = null.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check for add entity = null.");
            try
            {
                bookListService.AddBook(null);
            }
            catch (Exception m)
            {
                Console.WriteLine(m.Message);
            }

            //Add entities
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check for aadd entities.");
            foreach (var book in books)
            {
                bookListService.AddBook(book);
                Console.WriteLine(book);
            }

            //Find by tag string
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Find by tag string.");
            var tmpFindBookByString = bookListService.FindBookByTag((BookListService.TegFind.Publishing), "Питер".ToUpper());

            foreach (var book in tmpFindBookByString)
            {
                Console.WriteLine(book.ToString("2", null));
            }

            //Find by tag int
            Console.WriteLine("########################################");
            Console.WriteLine("Find by tag int.");
            var tmpFindBookByInt = bookListService.FindBookByTag((BookListService.TegFind.YearPublishing), 2016);

            foreach (var book in tmpFindBookByInt)
            {
                Console.WriteLine(book.ToString("3", null));
            }

            //Check for another type of search by teg.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check for another type of search by teg.");
            try
            {
                var tmp = bookListService.FindBookByTag((BookListService.TegFind.YearPublishing), (decimal)44);
            }
            catch (Exception m)
            {
                Console.WriteLine(m.Message);
            }

            //Check remove book.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check remove book.");
            bookListService.RemoveBook(books[0]);
            foreach (var book in bookListService.Books)
            {
                Console.WriteLine(book.ToString("4", null));
            }

            //Check remove by null.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check remove by null.");
            try
            {
                bookListService.RemoveBook(null);
            }
            catch (Exception m)
            {
                Console.WriteLine(m.Message);
            }

            //Check add existing book.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Check add existing book.");
            try
            {
                foreach (var book in books)
                {
                    bookListService.AddBook(book);
                }
            }
            catch (Exception m)
            {
                Console.WriteLine(m.Message);
            }

            //Save collection in file.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Save collection in file and read.");
            bookListService.SaveToFile();


            //Read collection in file.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Save collection in file and read.");
            Console.WriteLine();
            foreach (var book in bookListService.Books)
            {
                Console.WriteLine(book.ToString("4", null));
            }
            bookListService.RemoveBook(books[0]);
            bookListService.ReadFile();
            Console.WriteLine();
            foreach (var book in bookListService.Books)
            {
                Console.WriteLine(book.ToString("4", null));
            }


            //Save in collection new book.
            Console.WriteLine();
            Console.WriteLine("########################################");
            Console.WriteLine("Save in collection new book.");
            try
            {
                bookListService.AppendBookToFile(books[0]);
            }
            catch (Exception m)
            {
                Console.WriteLine(m.Message);
            }

            BookInfo book1 = new BookInfo
            {
                ISBN           = "978-5-496-02092-6",
                Author         = "Ма",
                BookTitle      = "Идеальный программист",
                Publishing     = "Питер",
                YearPublishing = 2016,
                NumberOfPages  = 224,
                Price          = 76.50M,
            };

            bookListService.AppendBookToFile(book1);
            Console.WriteLine();
            bookListService.ReadFile();
            Console.WriteLine();
            foreach (var book in bookListService.Books)
            {
                Console.WriteLine(book.ToString("4", null));
            }

            Console.ReadLine();
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            Book firstBook  = new Book("Tolstoy", "War And Peace", 1869, "Historical Novel");
            Book secondBook = new Book("tolstoy", "war And peace", 1869, "historical novel");
            Book thirdBook  = firstBook;
            Book fourthBook = new Book("Tolstoy", "Anna Karenina", 1873, "Novel");
            Book fifthBook  = new Book("Vonnegut ", "Slaughterhouse Five", 1969, "Satirical Novel");

            Console.WriteLine($"{firstBook.ToString()} equals");
            Console.WriteLine($"{secondBook.ToString()}");
            Console.WriteLine(firstBook.Equals(secondBook));
            Console.WriteLine($"{firstBook.ToString()} equals");
            Console.WriteLine($"{ thirdBook.ToString()}");
            Console.WriteLine(firstBook.Equals(thirdBook));
            Console.WriteLine($"{firstBook.ToString()} equals");
            Console.WriteLine($"{ fourthBook.ToString()}");
            Console.WriteLine(firstBook.Equals(fourthBook));

            Console.WriteLine($"{firstBook.ToString()} compare to");
            Console.WriteLine($"{ secondBook.ToString()}");
            Console.WriteLine(firstBook.CompareTo(secondBook));
            Console.WriteLine($"{firstBook.ToString()} compare to");
            Console.WriteLine($"{ thirdBook.ToString()}");
            Console.WriteLine(firstBook.CompareTo(thirdBook));
            Console.WriteLine($"{firstBook.ToString()} compare to");
            Console.WriteLine($"{ fourthBook.ToString()}");
            Console.WriteLine(firstBook.CompareTo(fourthBook));
            Console.WriteLine($"{fifthBook.ToString()} compare to");
            Console.WriteLine($"{ fourthBook.ToString()}");
            Console.WriteLine(fifthBook.CompareTo(fourthBook));

            Console.WriteLine($"first {firstBook.GetHashCode()}");
            Console.WriteLine($"second {secondBook.GetHashCode()}");
            Console.WriteLine($"third {thirdBook.GetHashCode()}");
            Console.WriteLine($"fourth {fourthBook.GetHashCode()}");
            Console.WriteLine($"fifth {fifthBook.GetHashCode()}");

            BookListService bookList = new BookListService();

            bookList.AddBook(firstBook);
            bookList.AddBook(fourthBook);
            bookList.AddBook(fifthBook);

            Console.WriteLine();
            bookList.RemoveBook(firstBook);

            bookList.AddBook(firstBook);

            Console.WriteLine();
            Console.WriteLine("FindBookByTag");
            Console.WriteLine(bookList.FindBookByTag(x => x.Author == "Tolstoy"));
            Console.WriteLine(bookList.FindBookByTag(x => x.Genre.Contains("Satirical")));
            Console.WriteLine(bookList.FindBookByTag(x => x.Year < 2000));

            Console.WriteLine();
            Console.WriteLine("SortByTitle");
            bookList.SortBooksByTag((x, y) => x.Title.CompareTo(y.Title));

            BookListStorage storage = new BookListStorage("booklist.bin");

            bookList.Save(storage);

            Console.WriteLine();
            Console.WriteLine("SortByYear");
            bookList.SortBooksByTag((x, y) => x.Year.CompareTo(y.Year));
            bookList.Save(storage);

            Console.WriteLine();
            Console.WriteLine("SortByGenre");
            bookList.SortBooksByTag((x, y) => x.Genre.CompareTo(y.Genre));
            bookList.Save(storage);

            BookListService secondBookList = new BookListService();

            secondBookList.Load(storage);
            Console.WriteLine($"From storage {secondBookList.FindBookByTag(x => x.Year < 2000)}");

            StorageBinarySerializer serializedStorage = new StorageBinarySerializer("booklistserialized.bin");

            bookList.Save(serializedStorage);
            BookListService thirdBookList = new BookListService();

            thirdBookList.Load(serializedStorage);
            Console.WriteLine($"From serialized storage {secondBookList.FindBookByTag(x => x.Genre.Contains("Satirical"))}");

            StorageXML xmlStorage = new StorageXML("booklistxml.xml");

            bookList.Save(xmlStorage);
            BookListService fourthBookList = new BookListService();

            fourthBookList.Load(xmlStorage);
            Console.WriteLine($"From xml storage {secondBookList.FindBookByTag(x => x.Author == "Tolstoy")}");


            Console.ReadLine();
        }
Ejemplo n.º 21
0
        static void Main(string[] args)
        {
            ILogger          logger  = LogManager.GetCurrentClassLogger();
            IBookListService service = new BookListService("file1.dat", logger);

            while (true)
            {
                try
                {
                    int number = 0;
                    Console.Write("(1)Add Book, (2) Remove Book, (3)Show Books, (4)Find Book, (5)Sort by tag:    ");
                    number = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine();
                    if (number == 1)
                    {
                        service.AddBook();
                    }
                    if (number == 2)
                    {
                        service.RemoveBook();
                    }
                    if (number == 3)
                    {
                        service.ShowList();
                    }

                    if (number == 4)
                    {
                        Console.Write("(1)Find by Id, (2) Find by Name and Author name," +
                                      " (3) Find by  Name and Author name and year of publish:   ");
                        number = Convert.ToInt32(Console.ReadLine());
                        if (number == 1)
                        {
                            Console.Write("Enter Id: ");
                            int id = Convert.ToInt32(Console.ReadLine());
                            service.FindBookByTag(id);
                        }
                        if (number == 2)
                        {
                            Console.Write("Enter Name: ");
                            string name = Console.ReadLine();
                            Console.Write("Enter Author name: ");
                            string author = Console.ReadLine();
                            service.FindBookByTag(name, author);
                        }
                        if (number == 3)
                        {
                            Console.Write("Enter Name: ");
                            string name = Console.ReadLine();
                            Console.Write("Enter Author name: ");
                            string author = Console.ReadLine();
                            Console.Write("Enter year of publish: ");
                            int year = Convert.ToInt32(Console.ReadLine());
                            service.FindBookByTag(name, author, year);
                        }
                    }
                    if (number == 5)
                    {
                        service.SortByTag();
                    }
                }
                catch (Exception e)
                {
                    logger.Error(e.Message);
                    Console.WriteLine(e.Message);
                }
            }
        }
Ejemplo n.º 22
0
        static void Main(string[] args)
        {
            var service = new BookListService(BookListStorage.Instance);

            service.Save();

            var books = new Book[9];

            books[0] = new Book("1234567890121", "Author1", "Title1", "Publisher1", 1, 1, 1);
            books[1] = new Book("1234567890122", "Author2", "Title2", "Publisher1", 1, 1, 1);
            books[2] = new Book("1234567890123", "Author3", "Title3", "Publisher2", 1, 1, 1);
            books[3] = new Book("1234567890124", "Author1", "Title4", "Publisher2", 1, 1, 1);
            books[4] = new Book("1234567890125", "Author2", "Title5", "Publisher3", 1, 1, 1);
            books[5] = new Book("1234567890126", "Author3", "Title6", "Publisher3", 1, 1, 1);
            books[6] = new Book("1234567890127", "Author4", "Title1", "Publisher4", 1, 1, 1);
            books[7] = new Book("1234567890128", "Author1", "Title2", "Publisher4", 1, 1, 1);
            books[8] = new Book("1234567890129", "Author5", "Title3", "Publisher4", 1, 1, 1);

            foreach (var book in books)
            {
                service.AddBook(book);
            }

            service.Save();

            var newService = new BookListService(BookListStorage.Instance);

            foreach (var item in newService.Load().FindBooksByTag(books[1], Book.Tag.ISBN))
            {
                Console.WriteLine(item.ToString("isbn, author", null));
            }

            Console.WriteLine("----------------------------------------");
            foreach (var item in newService.FindBooksByTag(books[1], Book.Tag.Author))
            {
                Console.WriteLine(item.ToString("isbn, author", null));
            }

            Console.WriteLine("----------------------------------------");
            for (int i = 0; i < newService.CountOfBooks; i++)
            {
                Console.WriteLine(newService[i].ToString("isbn, author, title", null));
            }

            Console.WriteLine("---------------------------------------");

            newService.SortBooksByTag(Book.Tag.Author);

            var bookFormatter = new BookFormatter();

            for (int i = 0; i < newService.CountOfBooks; i++)
            {
                Console.WriteLine(bookFormatter.Format("full", newService[i], null));
            }

            newService.Save();
            foreach (var book in books)
            {
                newService.RemoveBook(book);
            }
        }
Ejemplo n.º 23
0
        private static void Main(string[] args)
        {
            Console.WriteLine("=== Test Equals ===");
            Book romAndJul     = new Book("Romeo and Juliet", "William Shakespeare", "tradegy", 171);
            Book romAndJulCopy = new Book("Romeo and Juliet", "William Shakespeare", "tradegy", 171);

            Console.WriteLine(romAndJul);
            Console.WriteLine(romAndJulCopy);
            Console.WriteLine("Are equals? {0}", romAndJul.Equals(romAndJulCopy) ? "Yes" : "No");

            Console.WriteLine();

            Book almostRomAndJul = new Book("Almost Romeo and Juliet", "William Shakespeare", "tradegy", 170);

            Console.WriteLine(romAndJul);
            Console.WriteLine(almostRomAndJul);
            Console.WriteLine("Are equals? {0}", romAndJul.Equals(almostRomAndJul) ? "Yes" : "No");
            Console.WriteLine("==== end Test Equals ====");

            Console.WriteLine();
            Console.WriteLine("=== Test GetHashCode ===");

            Console.WriteLine("Different books:");
            Console.WriteLine($"{romAndJul.GetHashCode()} and {almostRomAndJul.GetHashCode()}");
            Console.WriteLine("The same books:");
            Console.WriteLine($"{romAndJul.GetHashCode()} and {romAndJulCopy.GetHashCode()}");
            Console.WriteLine("=== end Test GetHashCode ===");

            Console.WriteLine();
            Console.WriteLine("===== Test BookListStorage =====");

            Book myBook    = new Book("Death Note", "Andrei Khotko", "Detective", 100);
            Book parasyte  = new Book("Parasyte", "Hey Layla", "Horror", 1021);
            Book elfenLied = new Book("Elfen Lied", "Hayavo Miodzaki", "Comedy", 94);

            BookListService service = new BookListService();


            try
            {
                service.AddBook(myBook);
                service.AddBook(parasyte);
                service.AddBook(elfenLied);
                service.AddBook(almostRomAndJul);
                service.AddBook(romAndJul);
                service.AddBook(romAndJulCopy); // Exception here
            }
            catch (DuplicateBookException ex)
            {
                Console.WriteLine($"Error : {ex.Message}"); // temporary substitution of logging, SO SORRY FOR THAT :(
                //Do logging
            }

            Book result = service.FindBookByTag(b => b.Name == "Elfen Lied");

            Console.WriteLine($"Result of FindBookByTag Name = ElfnLied : {result}");

            PrintService(service, "Before sort");

            service.SortBooksByTag(new NameComparer());

            PrintService(service, "After sort");
            Console.WriteLine("=== end Test BookListStorage ===");

            string fileName = "storage.bin";

            Console.WriteLine($"Saving storage to file {fileName}...");

            IBookListStorage storage = new BinaryFileStorage(fileName);

            service.SaveStorage(storage);

            var newService = new BookListService();;

            newService.LoadStorage(storage);

            newService.RemoveBook(myBook);

            PrintService(newService, "New Service");
            Console.ReadLine();
        }
Ejemplo n.º 24
0
        public static void Main(string[] args)
        {
            Console.WriteLine("*****Test Book's Service*****");
            Console.WriteLine("1 - Create books!");
            Book.Book first = new Book.Book()
            {
                Author        = "Rob Miles",
                Name          = "C# Programming Yellow Book",
                Cost          = int.MaxValue,
                NumberOfPages = 216,
                Publisher     = "Hell University",
                Year          = 2016,
            };
            Console.WriteLine("Create 1!");
            Book.Book second = new Book.Book()
            {
                Author        = "Andrew Stellman, Jennifer Greene",
                Name          = "Head First C#",
                Cost          = 39M,
                NumberOfPages = 960,
                Publisher     = "O'Reilly Media",
                Year          = 2013,
            };
            second.ISBNSet("9780596514822");
            Console.WriteLine("Create 2!");
            Book.Book thirdDel = new Book.Book()
            {
                Author        = "Joe Albahari",
                Name          = "C# 7.0 in a Nutshell",
                Cost          = 66.23M,
                NumberOfPages = 800,
                Publisher     = "Альфа-книга",
                Year          = 2015,
            };
            thirdDel.ISBNSet("9785990944619");

            Console.WriteLine("Create 3!");
            Book.Book fourthAdd = new Book.Book()
            {
                Author        = "Jon Skeet",
                Name          = "C# in Depth",
                Cost          = 28.5M,
                NumberOfPages = 528,
                Publisher     = "Manning Publications",
                Year          = 2019,
            };
            fourthAdd.ISBNSet("978 - 1617294532");

            Console.WriteLine("Create 4!");
            Book.Book fifth = new Book.Book()
            {
                Author        = "Jeffrey Richter",
                Name          = "CLR via C#",
                Cost          = 32.52M,
                NumberOfPages = 896,
                Publisher     = "Microsoft Press",
                Year          = 2012,
            };
            fifth.ISBNSet("978 - 0735667457");

            Console.WriteLine("Create 5!");
            Console.WriteLine("End of creation!\nLets create BookListService!");
            Book.Book[]     massiv  = new Book.Book[] { first, second, thirdDel, fifth };
            BookListService service = new BookListService(massiv, new BinaryStorage());

            Console.WriteLine("Let's throw books in the local storage");
            service.UpdateStorage();
            Console.WriteLine("Let's add book in service!");
            service.AddBook(fourthAdd);
            Console.WriteLine("Let's update the local storage!");
            service.UpdateStorage();
            Console.WriteLine("Find right: " +
                              (service.FindBookByTag("Author", "Joe Albahari")[0].ISBNGet() == thirdDel.ISBNGet()));
            Console.WriteLine("Let's sort our storage!");
            Console.WriteLine("Let's delete book from service!");
            service.RemoveBook(thirdDel);
            Console.WriteLine("Let's sort books by everything!");
            service.SortBooksByTag(new BookYearComparer <Book.Book>());
            Console.WriteLine("By Year:");
            service.ShowLocal();
            service.SortBooksByTag(new BookCostComparer <Book.Book>());
            Console.WriteLine("By cost:");
            service.ShowLocal();
            Console.WriteLine("In storage:");
            service.ShowStorage();
            Console.WriteLine("End of demonstration book service!\n");

            Watches.Watch watch = new Watches.Watch();
            watch.StartRelaxation();
        }
Ejemplo n.º 25
0
        static void Main(string[] args)
        {
            Book book = new Book("1111", "Title1", "Author1", "Publisher1", 20, 1975, 15f);

            var storage = new BookListStorage("ListBook.bin");
            var service = new BookListService(storage);

            service.AddBook(book);
            service.AddBook(new Book("3333", "Title2", "Author2", "Publisher2", 200, 1975, 18f));
            service.AddBook(new Book("5555", "Title3", "Author2", "Publisher2", 254, 1975, 18f));
            service.AddBook(new Book("4444", "Title5", "Author2", "Publisher2", 2, 1975, 18f));
            service.AddBook(new Book("55554", "Title2", "Author2", "Publisher2", 299, 1975, 18f));
            service.AddBook(new Book("34534", "Title6", "Author2", "Publisher2", 2000, 1975, 18f));
            service.AddBook(new Book("3333", "Title2", "Author6", "Publisher45", 200, 1975, 14f));
            service.AddBook(new Book("5555", "Title35", "Author2", "Publisher2", 254, 1975, 18f));
            service.AddBook(new Book("4444", "Title51", "Author34", "Publisher2", 2, 1975, 187f));
            service.AddBook(new Book("55554", "Title2", "Author65", "Publisher453", 299, 1975, 148f));
            service.AddBook(new Book("34534", "Title6", "Author211", "Publisher2", 2000, 1975, 78f));


            Filter filterPage = new Filter(pages: 2);

            Console.WriteLine("Find book Pages = 2 : \n\r" + service.FindByTag(filterPage));

            Filter filterTitle = new Filter(title: "Title3");

            Console.WriteLine("Find book Title = Title3 : \n\r" + service.FindByTag(filterTitle));


            Console.WriteLine("Unsort : ");
            var serviceList = service.GetAll();

            service.Save();
            service.Load();
            foreach (var item in serviceList)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("Sort by ISNB:");
            service.Sort(new ByISBN());

            foreach (var item in serviceList)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("Sort by price:");
            service.Sort(new ByPrice());

            foreach (var item in serviceList)
            {
                Console.WriteLine(item);
            }



            Console.ReadKey();
        }
Ejemplo n.º 26
0
        static void Main()
        {
            var service = new BookListService();

            Console.WriteLine("--------------------Добавление---------------");
            Console.WriteLine();

            var book1 = new Book("Паттерны проектирования на платформе .NET",
                                 "Сергей Тепляков", "Питер", 2015, "Русский");
            var book2 = new Book("Оптимизация приложений на платформе .NET",
                                 "Саша Годштейн", "ДМК Пресс", 2014, "Русский");
            var book3 = new Book("C# in depth", "Джон Скит", year: 2014,
                                 language: "Русский");
            var book4 = new Book("C# 5.0. Справочник. Полное описание языка",
                                 "Джозеф албахари", year: 2014, language: "Русский");
            var book5 = new Book("CLR via C#", "Джеффри Рихтер", language: "Русский");

            Book[] books = { book1, book2, book3, book4, book5 };

            foreach (var variable in books)
            {
                try
                {
                    service.AddBook(variable);
                }
                catch (ArgumentException exc)
                {
                    Logger.Info("Adding element. Element exists in the collection:");
                    Logger.Error(exc.StackTrace);
                }
                catch (Exception exc)
                {
                    Logger.Info("Unhandled adding exception:");
                    Logger.Error(exc.StackTrace);
                }
            }

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.WriteLine("--------------------Удаление-----------------");
            Console.WriteLine();

            var defBook = new Book("Unknown", "Unknown");

            Book[] removingBooks = { book5, defBook };

            foreach (var variable in removingBooks)
            {
                try
                {
                    service.RemoveBook(variable);
                }
                catch (ArgumentException exc)
                {
                    Logger.Info("Removing element. The element are not in the collection:");
                    Logger.Error(exc.Message);
                    Logger.Error(exc.Data);
                    Logger.Error(exc.Source);
                    Logger.Error(exc.TargetSite);
                    Logger.Error(exc.StackTrace);
                }
                catch (Exception exc)
                {
                    Logger.Info("Unhandled removing exception:");
                    Logger.Error(exc.StackTrace);
                }
            }

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.WriteLine("------------Сортировка по автору-------------");
            Console.WriteLine();

            service.SortBooksByTag(new CompareByAuthor());

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.WriteLine("--------------------Поиск--------------------");
            Console.WriteLine();

            var book = service.FindBookByTag(x => x.Author == "Джон Скит");

            Console.WriteLine(book);

            Console.WriteLine("--------------Сохранение/Загрузка------------");
            Console.WriteLine();

            service.SaveBooks(new BookListStorage("BookStorage"));
            service.LoadBooks(new BookListStorage("BookStorage"));

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.WriteLine("------------------Сериализация---------------");
            Console.WriteLine();

            service.SaveBooks(new BookListStorageSerialization("BookStorageSerialization"));
            service.LoadBooks(new BookListStorageSerialization("BookStorageSerialization"));

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.WriteLine("------------------Xml storage----------------");
            Console.WriteLine();

            service.SaveBooks(new BookListStorageXml("BookStorageXml"));
            //////////////////////////////////////////////////service.LoadBooks(new BookListStorageXML("BookStorageXml"));

            foreach (var variable in service)
            {
                Console.WriteLine(variable);
            }

            Console.ReadKey();
        }
Ejemplo n.º 27
0
        static void Main(string[] args)
        {
            var bookRepository = new JsonBookRepository(fileName);
            var bookService    = new BookListService(bookRepository);

            Console.WriteLine("Исходный список книг:");

            PrintListBooks(bookService.GetBooks());

            var book = new Book("Льюис Кэрролл", "Алиса в Стране чудес", 237, 1865, "Сказка");

            Console.WriteLine("Пытаемся добавить книгу");
            PrintBook(book);
            try
            {
                bookService.AddBook(book);
                Console.WriteLine("Книга успешно добавлена");
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка: {0}\n", e.Message);
            }

            Console.WriteLine("Пытаемся удалить книгу");
            try
            {
                bookService.RemoveBook(book);
                Console.WriteLine("Книга успешно удалена");
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка: {0}\n", e.Message);
            }
            Console.WriteLine();

            Console.WriteLine("Сохраняем список в файл и читаем из него");
            bookService.SaveBooks();
            PrintListBooks(bookRepository.GetBooks().ToList());

            Console.WriteLine("Снова пытаемся удалить книгу");
            try
            {
                bookService.RemoveBook(book);
                Console.WriteLine("Книга успешно удалена");
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка: {0}\n", e.Message);
            }

            Console.WriteLine("Пытаемся найти удаленную книгу по названию \"Алиса в Стране чудес\"");
            Book seaarchResult = bookService.FindBook(b => b.Title == "Алиса в Стране чудес");

            if (seaarchResult == null)
            {
                Console.WriteLine("Книга не найдена");
            }
            else
            {
                Console.WriteLine("Книга найдена");
                PrintBook(seaarchResult);
            }
            Console.WriteLine();

            Console.WriteLine("Добавляем удаленную книгу и свнова пытаеся ее найти");
            bookService.AddBook(book);
            seaarchResult = bookService.FindBook(b => b.Title == "Алиса в Стране чудес");
            if (seaarchResult == null)
            {
                Console.WriteLine("Книга не найдена");
            }
            else
            {
                Console.WriteLine("Книга найдена\n");
                PrintBook(seaarchResult);
            }
            bookService.SaveBooks();
            Console.WriteLine();
            Console.WriteLine("Полученный список");
            PrintListBooks(bookRepository.GetBooks().ToList());

            Console.WriteLine("Сортировка книг по автору");
            bookService.SortBooks((a, b) => string.Compare(a.Author, b.Author));
            bookService.SaveBooks();
            PrintListBooks(bookRepository.GetBooks().ToList());

            Console.WriteLine("Сортировка книг по названию");
            bookService.SortBooks((a, b) => string.Compare(a.Title, b.Title));
            bookService.SaveBooks();
            PrintListBooks(bookRepository.GetBooks().ToList());
            MakeTestFile(fileName);
            Console.ReadKey();
        }
Ejemplo n.º 28
0
        public static void Main(string[] args)
        {
            // Books list initialisation
            Book book1 = new Book("0140448101", new Author("Alexander", "Pushkin"), "Eugene Onegin", "Penguin Classics", 2008, 55, 14.00);
            Book book2 = new Book("0486264726", new Author("Jack", "London"), "The Call of the Wild", "Dover Publications", 1990, 268, 3.00);
            Book book3 = new Book("0061122416", new Author("Paulo", "Coelho"), "The Alchemist", "Harper", 1998, 222, 4.40);
            Book book4 = new Book("0060528001", new Author("Paulo", "Coelho"), "The Devil and Miss Prym", "Harper", 2007, 235, 14.99);
            Book book5 = new Book("0140449264", new Author("Alexandre", "Dumas"), "The Count of Monte Cristo", "Penguin Classics", 2003, 780, 16.00);
            Book book6 = new Book("1629914665", new Author("Jules", "Verne"), "The Children of Captain Grant", "Papercutz", 2017, 439, 14.99);

            BookListService boxOfBooks = new BookListService();

            boxOfBooks.AddBook(book1);
            boxOfBooks.AddBook(book2);
            boxOfBooks.AddBook(book3);
            boxOfBooks.AddBook(book4);
            boxOfBooks.AddBook(book5);
            boxOfBooks.AddBook(book6);

            // Write to storage
            BookListServiceStorage storage = new BookListServiceStorage();

            storage.WriteToBookStorage(boxOfBooks.BookList);
            // Read from storage
            BookListService copyBoxOfBooks = new BookListService(storage.ReadFromBookStorage());

            // Console output
            copyBoxOfBooks.PrintList();

            // Sort books by creterion and order
            Console.WriteLine("Choose a creterion of sorting from listed below:");
            Console.WriteLine("ISBN, author, title, publisher, release year (just type \"year\"), number of pages (just type \"pages\"), price");
            string creterion = Console.ReadLine();

            Console.WriteLine("Choose an order of sorting: write \"asc\" or \"desc\"");
            string order = Console.ReadLine();

            BookListServiceHelper helper   = new BookListServiceHelper();
            IComparer             comparer = helper.ChooseSortingMethod(creterion, order);

            boxOfBooks.SortBooksByTag(comparer);
            boxOfBooks.PrintList();

            // Remove book from list and print new list
            boxOfBooks.RemoveBook(new Book("1629914665", new Author("Jules", "Verne"), "The Children of Captain Grant", "Papercutz", 2017, 439, 14.99));
            Console.WriteLine("\nList of books after one was deleted.");
            boxOfBooks.PrintList();

            // Search for books by creteria
            Console.WriteLine("Choose a creterion of search from listed below:");
            Console.WriteLine("release year (just type \"year\"), number of pages (just type \"pages\"), price");
            string tag = Console.ReadLine();

            Console.WriteLine("Choose maxmin creterion: write \"max\" or \"min\"");
            string maxmin = Console.ReadLine();

            try
            {
                ISearchEngine tagComparer = helper.ChooseSearchMethod(tag, maxmin);
                Book          book        = boxOfBooks.FindBookByTag(tagComparer);
                Console.WriteLine("\nA book found by tag \"{0} {1}\":\n{2}", maxmin, tag, book);
            }
            catch (Exception)
            {
                Console.WriteLine("No book found by a given creterion.");
                //throw;
            }

            Console.ReadKey();
        }
Ejemplo n.º 29
0
        static void Main(string[] args)
        {
            Console.WriteLine("To String Tests and equals tests:");
            Book Orwell1984    = new Book(9785170801152, "Orwell", "1984", "AST", 2015, 320, 8.12M);
            Book BraveNewWorld = new Book(9785170800858, "Aldous Huxley", "Brave New World", "AST", 2016, 352, 7.85M);

            Console.WriteLine(Orwell1984);
            Console.WriteLine();
            Console.WriteLine(BraveNewWorld);

            Console.WriteLine();
            Console.WriteLine("Are equals this books?  {0}", Orwell1984.Equals(BraveNewWorld) ? "Yes" : "No");
            Book Orwell1984Copy = new Book(9785170801152, "Orwell", "1984", "AST", 2015, 320, 8.12M);

            Console.WriteLine("Are equals books: Orwell1984 and Orwell1984copy?  {0}", Orwell1984.Equals(Orwell1984Copy) ? "Yes" : "No");
            Console.WriteLine();

            Console.WriteLine("Get Hash Code Tests");
            Console.WriteLine("1984 and Brave New World:");
            Console.WriteLine($"{Orwell1984.GetHashCode()} and {BraveNewWorld.GetHashCode()}");
            Console.WriteLine("1984 and 1984Copy");
            Console.WriteLine($"{Orwell1984.GetHashCode()} and {Orwell1984Copy.GetHashCode()}");
            Console.WriteLine();

            Console.WriteLine("Book List Storage");
            BookListStorage bookListStorage = new BookListStorage("file.bin");
            BookListService service         = new BookListService(bookListStorage);

            Book ToKillMockingbird = new Book(9785170904112, "Harper Lee", "To Kill A Mockinbird", "AST", 2017, 416, 10.2M);

            Console.WriteLine("Attempting to add an existing book");
            try
            {
                service.AddBook(Orwell1984);
                service.AddBook(BraveNewWorld);
                service.AddBook(Orwell1984Copy);
            }
            catch (BookExistsInStorageException exception)
            {
                Console.WriteLine($"Error : {exception.Message}");
            }
            Console.WriteLine();

            Console.WriteLine("Print books from storage:");
            List <Book> books = service.GetAllBooks();

            foreach (var book in books)
            {
                Console.WriteLine(book);
            }
            Console.WriteLine();

            Console.WriteLine("Find books by author Aldous Huxley");
            List <Book> findBook = service.FindBookByTag(new AuthorTags("Aldous Huxley"));

            foreach (var book in findBook)
            {
                Console.WriteLine(book);
            }
            Console.WriteLine();

            Console.WriteLine("Sort by price. Books after sort:");
            service.SortBooksByTag(new PriceCompare());
            books = service.GetAllBooks();
            foreach (var book in books)
            {
                Console.WriteLine(book);
            }
            Console.WriteLine();

            Console.WriteLine("Attempting to delete a book that does not exist");
            try
            {
                service.RemoveBook(Orwell1984);
                service.RemoveBook(ToKillMockingbird);
            }
            catch (BookIsNotInStorageException exception)
            {
                Console.WriteLine($"Error : {exception.Message}");
            }
            Console.WriteLine();
            Console.WriteLine("Orwell1984 book remove");
            Console.WriteLine("Books after remove:");
            books = service.GetAllBooks();
            foreach (var book in books)
            {
                Console.WriteLine(book);
            }

            Console.ReadLine();
        }
Ejemplo n.º 30
0
        public void BookServiceLoggerTests()
        {
            // Arrange
            Book twelveChairs = new Book(
                "978 - 0810114845",
                "Ilya Ilf, Evgeny Petrov",
                "The Twelve Chairs",
                "Northwestern University Press",
                1997,
                395,
                41.93m);

            Book gameOfThrones = new Book(
                "978 - 0553593716",
                "George R. R. Martin",
                "A Game of Thrones",
                "Bantam",
                2011,
                864,
                9.49m);

            BookListService bookListServiceMemoryStorage = new BookListService(new MemoryStorage(), new SimpleLogger());
            string          line;

            if (File.Exists("SimpleLogFile.log"))
            {
                File.Delete("SimpleLogFile.log");
            }

            // Act
            bookListServiceMemoryStorage.AddBook(twelveChairs);
            using (StreamReader reader = new StreamReader("SimpleLogFile.log"))
            {
                line = reader.ReadLine();
            }

            int index = line.IndexOf(' ', line.IndexOf(' ') + 1);

            line = line.Substring(index + 1).TrimEnd();

            // Assert
            Assert.AreEqual("Info Book \"The Twelve Chairs\" with ISBN 978 - 0810114845 added", line);

            // Act
            bookListServiceMemoryStorage.AddBook(gameOfThrones);
            using (StreamReader reader = new StreamReader("SimpleLogFile.log"))
            {
                line = reader.ReadLine();
                line = reader.ReadLine();
            }

            index = line.IndexOf(' ', line.IndexOf(' ') + 1);
            line  = line.Substring(index + 1).TrimEnd();

            // Assert
            Assert.AreEqual("Info Book \"A Game of Thrones\" with ISBN 978 - 0553593716 added", line);

            // Act
            try
            {
                bookListServiceMemoryStorage.AddBook(twelveChairs);
            }
            catch
            {
            }

            using (StreamReader reader = new StreamReader("SimpleLogFile.log"))
            {
                line = reader.ReadLine();
                line = reader.ReadLine();
                line = reader.ReadLine();
            }

            index = line.IndexOf(' ', line.IndexOf(' ') + 1);
            line  = line.Substring(index + 1).TrimEnd();

            // Assert
            Assert.AreEqual("Error The storage already contains book with the same ISBN", line);
        }