From 62f333e6cf62cea1780b35e44802cc863f330ecf Mon Sep 17 00:00:00 2001 From: Santiago Lo Coco Date: Sun, 10 Mar 2024 17:21:03 +0100 Subject: [PATCH] Fix bugs and refactor code Co-authored-by: LucasCatolino Co-authored-by: KuJo7 --- src/main/java/edu/uastw/App.java | 37 ++++++++++++------- src/main/java/edu/uastw/library/Library.java | 8 ++-- .../exceptions/LibraryClosedException.java | 5 +-- .../exceptions/LibraryFullException.java | 6 +-- .../uastw/library/interfaces/LibraryItem.java | 4 ++ .../java/edu/uastw/library/items/Book.java | 5 +++ .../edu/uastw/library/items/Magazine.java | 5 +++ 7 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/main/java/edu/uastw/App.java b/src/main/java/edu/uastw/App.java index 3c808fc..3421fbd 100644 --- a/src/main/java/edu/uastw/App.java +++ b/src/main/java/edu/uastw/App.java @@ -14,10 +14,9 @@ import java.util.Iterator; @IgnoreCoverage public class App { - /***************** Resilience variables *****************/ private static final int RETRY_ATTEMPTS = 2; - private static final double LIBRARY_OPEN_CONDITION = 0.5; + private static final double LIBRARY_OPEN_CONDITION = 0; private static final int TIME_MULTIPLIER = 3000; private static final int RATE_LIMIT = 2; private static final int TIMEOUT = 1000; @@ -57,21 +56,29 @@ public class App { try { library.addLibraryItem(book1); + printSeparator(); library.addLibraryItem(book2); + printSeparator(); library.addLibraryItem(book3); + printSeparator(); library.addLibraryItem(magazine1); + printSeparator(); } catch (Exception e) { - e.printStackTrace(); + System.out.println(e.getMessage()); } - + + printSeparator(); library.displayLibraryItems(); + printSeparator(); library.displayLibraryItems(); + printSeparator(); library.displayLibraryItems(); + printSeparator(); try { Thread.sleep(INTERVAL + 5); } catch (InterruptedException e) { - e.printStackTrace(); + System.out.println(e.getMessage()); } library.displayLibraryItems(); @@ -79,42 +86,46 @@ public class App { LibraryDecorator increasedCapacityLibrary = new IncreaseBooksCapacityDecorator(library, 1); increasedCapacityLibrary.extendedFunctionality(); + printSeparator(); try { library.addLibraryItem(magazine1); } catch (Exception e) { - System.out.println("Add library item error"); - e.printStackTrace(); + System.out.println(e.getMessage()); } + printSeparator(); library.displayLibraryItems(); printSeparator(); LibraryDecorator decreasedCapacityLibrary = new DecreaseBooksCapacityDecorator(library, 2); decreasedCapacityLibrary.extendedFunctionality(); + printSeparator(); try { library.addLibraryItem(magazine1); + printSeparator(); } catch (Exception e) { - System.out.println("Add library item error"); - e.printStackTrace(); + System.out.println(e.getMessage()); } - library.iterator().forEachRemaining(x -> System.out.println(x.getTitle() + " by " + x.getOwner())); + + library.iterator().forEachRemaining(System.out::println); printSeparator(); Iterator bookIterator = library.customTypeIterator(ItemType.BOOK); System.out.println("Books available in the library:"); - bookIterator.forEachRemaining(x -> System.out.println(x.getTitle() + " by " + x.getOwner())); + bookIterator.forEachRemaining(System.out::println); printSeparator(); Iterator magazineIterator = library.customTypeIterator(ItemType.MAGAZINE); System.out.println("Magazines available in the library:"); - magazineIterator.forEachRemaining(x -> System.out.println(x.getTitle() + " by " + x.getOwner())); + magazineIterator.forEachRemaining(System.out::println); + printSeparator(); try { library.removeLibraryItem(book1); } catch (Exception e) { - e.printStackTrace(); + System.out.println(e.getMessage()); } } diff --git a/src/main/java/edu/uastw/library/Library.java b/src/main/java/edu/uastw/library/Library.java index 0386366..8d85ec4 100644 --- a/src/main/java/edu/uastw/library/Library.java +++ b/src/main/java/edu/uastw/library/Library.java @@ -107,12 +107,12 @@ public class Library implements Iterable { try { Thread.sleep(random); } catch (InterruptedException e) { - e.printStackTrace(); + System.out.println(e.getMessage()); } if (libraryItems.size() > 0) { libraryItems.remove(item); } else { - System.out.println("Library is full"); + System.out.println("Library is empty"); } }, timeout); } @@ -137,9 +137,7 @@ public class Library implements Iterable { if (tokens > 0) { System.out.println("Items available in the library:"); - libraryItems.forEach(libraryItem -> - System.out.println(libraryItem.getTitle() + " by " + libraryItem.getOwner()) - ); + libraryItems.forEach(System.out::println); tokens--; lastAccessTime = currentTime; } else { diff --git a/src/main/java/edu/uastw/library/exceptions/LibraryClosedException.java b/src/main/java/edu/uastw/library/exceptions/LibraryClosedException.java index 4697ceb..5a7b601 100644 --- a/src/main/java/edu/uastw/library/exceptions/LibraryClosedException.java +++ b/src/main/java/edu/uastw/library/exceptions/LibraryClosedException.java @@ -1,8 +1,7 @@ package edu.uastw.library.exceptions; public class LibraryClosedException extends Exception { - - public LibraryClosedException(String string) { - //TODO Auto-generated constructor stub + public LibraryClosedException(String message) { + super(message); } } diff --git a/src/main/java/edu/uastw/library/exceptions/LibraryFullException.java b/src/main/java/edu/uastw/library/exceptions/LibraryFullException.java index 991ce13..fbe141c 100644 --- a/src/main/java/edu/uastw/library/exceptions/LibraryFullException.java +++ b/src/main/java/edu/uastw/library/exceptions/LibraryFullException.java @@ -1,9 +1,7 @@ package edu.uastw.library.exceptions; public class LibraryFullException extends Exception { - - public LibraryFullException(String string) { - //TODO Auto-generated constructor stub + public LibraryFullException(String message) { + super(message); } - } diff --git a/src/main/java/edu/uastw/library/interfaces/LibraryItem.java b/src/main/java/edu/uastw/library/interfaces/LibraryItem.java index 78e39c1..7862b9f 100644 --- a/src/main/java/edu/uastw/library/interfaces/LibraryItem.java +++ b/src/main/java/edu/uastw/library/interfaces/LibraryItem.java @@ -6,4 +6,8 @@ public interface LibraryItem { String getTitle(); String getOwner(); ItemType getType(); + + default String defaultToString() { + return getTitle() + " by " + getOwner(); + } } diff --git a/src/main/java/edu/uastw/library/items/Book.java b/src/main/java/edu/uastw/library/items/Book.java index 701bd62..133e77f 100644 --- a/src/main/java/edu/uastw/library/items/Book.java +++ b/src/main/java/edu/uastw/library/items/Book.java @@ -26,6 +26,11 @@ public class Book implements LibraryItem { return ItemType.BOOK; } + @Override + public String toString() { + return defaultToString(); + } + public static class Builder { private String title; private String author; diff --git a/src/main/java/edu/uastw/library/items/Magazine.java b/src/main/java/edu/uastw/library/items/Magazine.java index 68da5ed..876e1be 100644 --- a/src/main/java/edu/uastw/library/items/Magazine.java +++ b/src/main/java/edu/uastw/library/items/Magazine.java @@ -26,6 +26,11 @@ public class Magazine implements LibraryItem { return ItemType.MAGAZINE; } + @Override + public String toString() { + return defaultToString(); + } + public static class Builder { private String title; private String publisher;