Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

package bookStore; /** * A class representing a book store that has an * owner . A book store owns a collection (or possibly *

image text in transcribedimage text in transcribedimage text in transcribedimage text in transcribedimage text in transcribedimage text in transcribed

package bookStore;

/** * A class representing a book store that has an * owner . A book store owns a collection (or possibly * collections) of books, but does not own the books themselves * . * *

* Only the owner of the book store is able to sell books from the book store. * The book store does NOT own its owner . *

*/

import java.util.*; import bookStore.Book; import bookStore.BookStoreOwner;

public class BookStore { /* * YOU NEED A FIELD HERE TO HOLD THE Book OF THIS BookStore */

private TreeMap books; private BookStoreOwner owner;

/** * Initializes this book store so that it has the specified owner and no * books. * * @param owner the owner of this book store */ public BookStore(BookStoreOwner owner) { this.owner = owner;

}

/** * Initializes this book store by copying another book store. This book store will * have the same owner and the same number and type of books as the other * book store. * * @param other the book store to copy */ public BookStore(BookStore other) { this.books = other.books; this.owner = other.owner;

}

/** * Returns the owner of this book store. * *

* This method is present only for testing purposes. Returning the owner of this * book store allows any user to sell books from the book store (because any * user can become the owner of this book store)! * * @return the owner of this book store */ public BookStoreOwner getOwner() { // ALREADY IMPLEMENTED; DO NOT MODIFY return this.owner; }

/** * Allows the current owner of this book store to give this book store to a new * owner. * * @param currentOwner the current owner of this book store * @param newOwner the new owner of this book store * @throws IllegalArgumentException if currentOwner reference is not the reference of the * current owner of this book store */ public void changeOwner(BookStoreOwner currentOwner, BookStoreOwner newOwner) {

// COMPLETE THIS if (currentOwner != this.getOwner()) { throw new IllegalArgumentException(); } currentOwner.setName(newOwner.getName()); currentOwner.setId(newOwner.getId()); }

/** * Adds the specified books to this book store. * * @param books a list of books to add to this book store */ public void add(List books) { // COMPLETE THIS books.addAll(books); }

/** * Returns true if this book store contains the specified book, and false * otherwise. * * @param book a book * @return true if this book store contains the specified book, and false * otherwise */ public boolean contains(Book book) {

// COMPLETE THIS if (books.containsKey(book)==true) { return true; } return false; }

/** * Allows the owner of this book store to sell a single book equal to the * specified book from this book store. * *

* If the specified user is not equal to the owner of this book store, then the * book is not sold from this book store, and null is returned. * * @param user the person trying to sell the book * @param book a book * @return a book equal to the specified book from this book store, or null * if user is not the owner of this book store @pre. the book store * contains a book equal to the specified book */ public Book sellingsingleBook(BookStoreOwner user, Book book) {

// COMPLETE THIS

}

/** * Allows the owner of this book store to sell the smallest number of books * whose total price value in dollars is equal or less than to the specified * price value in dollars. Try from the most expensive book and you may want * to use descendingKeySet() method. * *

* Returns the empty list if the specified user is not equal to the owner of * this book store. *

* * @param user the person trying to sell books from this book store * @param pricevalue a value in dollars * @return the smallest number of books whose total price value in dollars is * equal to the specified value in dollars from this book store @pre. the * book store contains a group of books whose total price value is * equal to specified value */ public List sellingBooks(BookStoreOwner user, int pricevalue) {

// COMPLETE THIS

} }

* Adds the specified books to this book store. * @param books a list of books to add to this book store */ public void add(List books) { // COMPLETE THIS books.addAll(books); * Returns true if this book store contains the specified book, and false * otherwise. * @param book a book * @return true if this book store contains the specified book, and false otherwise */ public boolean contains (Book book). { // COMPLETE THIS @Test public void test07b_sellingsingleBook() { List books = new ArrayList(); Book b1= new Book("Java 1", 2010, 160); books.add(bi); Book b2= new Book("Signals and Systems", 2011, 260); books.add(62); Book b3= new Book ("Optical Communication", 2011,30); books.add(63); Book b4= new Book ("56", 2010, 10); books.add(64); BookStoreOwner w = new BookStoreOwner("OwnerA"); BookStore b = new BookStore (w); b.add(books); Book got = b.sellingsingleBook(new BookStoreOwner("OwnerB"),bi); assertNull("remove allowed a non-owner to remove a book", got); // sellingsinglebook @Test public void testo7a_sellingsingleBook() { List books = new ArrayList(); Book b1= new Book("Java 1", 2010, 160); books.add(61); Book b2= new Book("Signals and Systems", 2011, 260); books.add(62); Book b3= new Book("Optical Communication", 2011, 30); books.add(63); Book b4= new Book("56", 2010, 10); books.add(64); BookStoreOwner w = new BookStoreOwner("OwnerA"); Bookstore b = new Bookstore (w); b.add(books); Book got = b.sellingsingleBook(w, b1); assertEquals("selling returned the wrong Book", bi, got); got = b.sellingsingleBook(w, b2); assertEquals("selling returned the wrong Book", b2, got); got = b.sellingsingleBook (w, b3); assertEquals("selling returned the wrong Book", b3, got); got = b.sellingsingleBook (w, b4); assertEquals("selling returned the wrong Book", b4, got); * Allows the owner of this book store to sell a single book equal to the specified book from this book store. *

* If the specified user is not equal to the owner of this book store, then the book is not sold from this book store, and null is returned. * @param user the person trying to sell the book * @param book a book * @return a book equal to the specified book from this book store, or null if user is not the owner of this book store @rre. the book store contains a book equal to the specified book * public Book sellingsingleBook (BookStoreOwner.usec Book book) { // COMPLETE THIS * Allows the owner of this book store to sell the smallest number of books e in dollars is equal or less than to the specified * price value in dollars. Try from the most expensive book and you may want * to use descendingKeySet() method. *

* Returns the empty list if the specified user is not equal to the owner of * this book store. *

* @param user the person trying to sell books from this book store * @param pricevalue a value in dollars * @return the smallest number of books whose total price value in dollars is equal to the specified value in dollars from this book store @rre. the book store contains a group of books whose total price value is equal to specified value public List sellingBooks (BookStoreOwnersecamint rcicevalue) { // COMPLETE THIS // contains @Test public void test06a_contains() { BookStoreOwner w = new BookStoreOwner("OwnerA"); BookStore b = new BookStore (w); Book b1= new Book ("ABC", 2018, 36); assertFalse ("contains returned true for an empty Bookstore!", b.contains(61)); @Test public void test06b_contains() { List books = new ArrayList(); Book b1= new Book("Java 1", 2010, 160); books.add(61); Book b2= new Book("Signals and Systems", 2011, 260); books.add(62); Book b3= new Book("Optical Communication", 2011, 30); books.add(63); Book b4= new Book("56", 2010, 10); books.add(b4); BookStoreOwner w = new BookstoreOwner("OwnerA"); BookStore b = new BookStore (w); b.add(books); assert True ("contains returned false for a BookStore with every book", b.contains(61)); assertTrue ("contains returned false for a Bookstore with every book

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Excel As Your Database

Authors: Paul Cornell

1st Edition

1590597516, 978-1590597514

More Books

Students also viewed these Databases questions