diff --git a/src/main/java/com/booleanuk/core/Article.java b/src/main/java/com/booleanuk/core/Article.java index 1e359b0..5000741 100644 --- a/src/main/java/com/booleanuk/core/Article.java +++ b/src/main/java/com/booleanuk/core/Article.java @@ -1,35 +1,9 @@ package com.booleanuk.core; -public class Article { - String title; - - boolean onLoan = false; - - public Article(String title) { - this.title = title; - } - - public boolean isOnLoan() { - return onLoan; - } - - public String checkIn() { - if (!this.isOnLoan()) { - return "item is not currently on loan"; - } - - this.onLoan = false; - - return "item has been checked in"; - } - - public String checkOut() { - if (this.isOnLoan()) { - return "item is currently on loan"; - } - - this.onLoan = true; - - return "item has been checked out"; +public class Article extends ReadMaterials{ + Author author; + public Article(String title,Author author) { + super(title); + this.author = author; } } diff --git a/src/main/java/com/booleanuk/core/Author.java b/src/main/java/com/booleanuk/core/Author.java new file mode 100644 index 0000000..4a67aa6 --- /dev/null +++ b/src/main/java/com/booleanuk/core/Author.java @@ -0,0 +1,13 @@ +package com.booleanuk.core; + +public class Author { + public String name; + public String email; + public String website; + + public Author(String name, String email,String website){ + this.name = name; + this.email = email; + this.website = website; + } +} diff --git a/src/main/java/com/booleanuk/core/Book.java b/src/main/java/com/booleanuk/core/Book.java index 9261f65..f81c569 100644 --- a/src/main/java/com/booleanuk/core/Book.java +++ b/src/main/java/com/booleanuk/core/Book.java @@ -1,35 +1,10 @@ package com.booleanuk.core; -public class Book { - String title; - - boolean onLoan = false; - - public Book(String title) { - this.title = title; - } - - public boolean isOnLoan() { - return onLoan; +public class Book extends ReadMaterials{ + Author author; + public Book(String title,Author author) { + super(title); + this.author = author; } - public String checkIn() { - if (!this.isOnLoan()) { - return "item is not currently on loan"; - } - - this.onLoan = false; - - return "item has been checked in"; - } - - public String checkOut() { - if (this.isOnLoan()) { - return "item is currently on loan"; - } - - this.onLoan = true; - - return "item has been checked out"; - } } diff --git a/src/main/java/com/booleanuk/core/Library.java b/src/main/java/com/booleanuk/core/Library.java index f03ecf0..96a6ffc 100644 --- a/src/main/java/com/booleanuk/core/Library.java +++ b/src/main/java/com/booleanuk/core/Library.java @@ -1,53 +1,24 @@ package com.booleanuk.core; +import java.util.ArrayList; import java.util.List; public class Library { - List
articles; - List books; - List newspapers; - public void addToStock(Article item) { - this.articles.add(item); - } + List readMaterials; - public void addToStock(Book item) { - this.books.add(item); + public Library(){ + this.readMaterials = new ArrayList<>(); } - - public void addToStock(Newspaper item) { - this.newspapers.add(item); + public void addToStock(ReadMaterials item) { + this.readMaterials.add(item); } // The following methods may contain code that you are unfamiliar with. The strange syntax of article -> something // is called a lambda expression (https://www.w3schools.com/java/java_lambda.asp) - public String checkInArticle(String title) { - List
filtered = this.articles.stream() - .filter(article -> article.title.equals(title)) - .toList(); - - if (filtered.size() < 1) { - return "item is not part of the library's collection"; - } - - return filtered.get(0).checkIn(); - } - - public String checkOutArticle(String title) { - List
filtered = this.articles.stream() - .filter(article -> article.title.equals(title)) - .toList(); - - if (filtered.size() < 1) { - return "item is not part of the library's collection"; - } - - return filtered.get(0).checkOut(); - } - - public String checkInBook(String title) { - List filtered = this.books.stream() - .filter(book -> book.title.equals(title)) + public String checkInItem(String title) { + List filtered = this.readMaterials.stream() + .filter(item -> item.title.equals(title)) .toList(); if (filtered.size() < 1) { @@ -57,9 +28,9 @@ public String checkInBook(String title) { return filtered.get(0).checkIn(); } - public String checkOutBook(String title) { - List filtered = this.books.stream() - .filter(book -> book.title.equals(title)) + public String checkOutItem(String title) { + List filtered = this.readMaterials.stream() + .filter(item -> item.title.equals(title)) .toList(); if (filtered.size() < 1) { @@ -69,27 +40,5 @@ public String checkOutBook(String title) { return filtered.get(0).checkOut(); } - public String checkInNewspaper(String title) { - List filtered = this.newspapers.stream() - .filter(newspaper -> newspaper.title.equals(title)) - .toList(); - - if (filtered.size() < 1) { - return "item is not part of the library's collection"; - } - - return filtered.get(0).checkIn(); - } - - public String checkOutNewspaper(String title) { - List filtered = this.newspapers.stream() - .filter(newspaper -> newspaper.title.equals(title)) - .toList(); - if (filtered.size() < 1) { - return "item is not part of the library's collection"; - } - - return filtered.get(0).checkOut(); - } } diff --git a/src/main/java/com/booleanuk/core/Newspaper.java b/src/main/java/com/booleanuk/core/Newspaper.java index 8411d9c..fe7d2af 100644 --- a/src/main/java/com/booleanuk/core/Newspaper.java +++ b/src/main/java/com/booleanuk/core/Newspaper.java @@ -1,16 +1,9 @@ package com.booleanuk.core; -public class Newspaper { - String title; - - boolean onLoan = false; +public class Newspaper extends ReadMaterials { public Newspaper(String title) { - this.title = title; - } - - public boolean isOnLoan() { - return onLoan; + super(title); } public String checkIn() { diff --git a/src/main/java/com/booleanuk/core/ReadMaterials.java b/src/main/java/com/booleanuk/core/ReadMaterials.java new file mode 100644 index 0000000..7e85f41 --- /dev/null +++ b/src/main/java/com/booleanuk/core/ReadMaterials.java @@ -0,0 +1,35 @@ +package com.booleanuk.core; + +public class ReadMaterials { + public String title; + public boolean onLoan; + + public ReadMaterials(String title){ + this.title = title; + this.onLoan = false; + } + + public boolean isOnLoan() { + return onLoan; + } + + public String checkIn() { + if (!this.isOnLoan()) { + return "item is not currently on loan"; + } + + this.onLoan = false; + + return "item has been checked in"; + } + + public String checkOut() { + if (this.isOnLoan()) { + return "item is currently on loan"; + } + + this.onLoan = true; + + return "item has been checked out"; + } +} diff --git a/src/test/java/com/booleanuk/core/ArticleTest.java b/src/test/java/com/booleanuk/core/ArticleTest.java index 00bbaeb..561cb43 100644 --- a/src/test/java/com/booleanuk/core/ArticleTest.java +++ b/src/test/java/com/booleanuk/core/ArticleTest.java @@ -6,13 +6,15 @@ class ArticleTest { @Test public void shouldCheckOutIfAvailable() { - Article article = new Article("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Article article = new Article("JUnit Rocks",author); Assertions.assertEquals("item has been checked out", article.checkOut()); } @Test public void shouldDeclineIfNotAvailableToCheckout() { - Article article = new Article("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Article article = new Article("JUnit Rocks",author); article.checkOut(); Assertions.assertEquals("item is currently on loan", article.checkOut()); @@ -20,7 +22,8 @@ public void shouldDeclineIfNotAvailableToCheckout() { @Test public void shouldCheckInIfOnLoan() { - Article article = new Article("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Article article = new Article("JUnit Rocks",author); article.checkOut(); Assertions.assertEquals("item has been checked in", article.checkIn()); @@ -28,7 +31,8 @@ public void shouldCheckInIfOnLoan() { @Test public void shouldDeclineCheckInIfNotOnLoan() { - Article article = new Article("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Article article = new Article("JUnit Rocks",author); Assertions.assertEquals("item is not currently on loan", article.checkIn()); } diff --git a/src/test/java/com/booleanuk/core/BookTest.java b/src/test/java/com/booleanuk/core/BookTest.java index 180a165..f552d5c 100644 --- a/src/test/java/com/booleanuk/core/BookTest.java +++ b/src/test/java/com/booleanuk/core/BookTest.java @@ -6,13 +6,15 @@ public class BookTest { @Test public void shouldCheckOutIfAvailable() { - Book book = new Book("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Book book = new Book("JUnit Rocks",author); Assertions.assertEquals("item has been checked out", book.checkOut()); } @Test public void shouldDeclineIfNotAvailableToCheckout() { - Book book = new Book("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Book book = new Book("JUnit Rocks",author); book.checkOut(); Assertions.assertEquals("item is currently on loan", book.checkOut()); @@ -20,7 +22,8 @@ public void shouldDeclineIfNotAvailableToCheckout() { @Test public void shouldCheckInIfOnLoan() { - Book book = new Book("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Book book = new Book("JUnit Rocks",author); book.checkOut(); Assertions.assertEquals("item has been checked in", book.checkIn()); @@ -28,7 +31,8 @@ public void shouldCheckInIfOnLoan() { @Test public void shouldDeclineCheckInIfNotOnLoan() { - Book book = new Book("JUnit Rocks"); + Author author = new Author("Programmer Programmersom","prg@email.no","prg.com"); + Book book = new Book("JUnit Rocks",author); Assertions.assertEquals("item is not currently on loan", book.checkIn()); } diff --git a/src/test/java/com/booleanuk/core/LibraryTest.java b/src/test/java/com/booleanuk/core/LibraryTest.java new file mode 100644 index 0000000..0cf373c --- /dev/null +++ b/src/test/java/com/booleanuk/core/LibraryTest.java @@ -0,0 +1,39 @@ +package com.booleanuk.core; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +public class LibraryTest { + @Test + public void testAddBookToList(){ + Author author = new Author("JRR","JRR@email.no","Tolkien.com"); + ReadMaterials book = new Book("Lotr",author); + Library library = new Library(); + library.addToStock(book); + Assertions.assertEquals(book, library.readMaterials.get(0)); + } + + @Test + public void testCheckOutItem(){ + Author author = new Author("JRR","JRR@email.no","Tolkien.com"); + ReadMaterials book = new Book("Lotr",author); + Library library = new Library(); + library.addToStock(book); + + library.checkOutItem("Lotr"); + Assertions.assertTrue(book.onLoan); + } + @Test + public void testCheckInItem(){ + Author author = new Author("JRR","JRR@email.no","Tolkien.com"); + ReadMaterials book = new Book("Lotr",author); + Library library = new Library(); + library.addToStock(book); + + library.checkOutItem("Lotr"); + library.checkInItem("Lotr"); + Assertions.assertFalse(book.onLoan); + } +}