diff --git a/.travis.yml b/.travis.yml index 2dde814..9b32576 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,5 +5,5 @@ deploy: provider: script script: "mvn test" skip_cleanup: true - on: + tags: true diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c5f3f6b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index bde0b59..fee48b8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,12 +1,36 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.zipcodewilmington central-library 1.0-SNAPSHOT + + + com.fasterxml.jackson.core + jackson-databind + 2.16.1 + + + org.junit.jupiter + junit-jupiter + 5.10.0 + test + + + junit + junit + 4.13.2 + + - \ No newline at end of file + + 17 + 17 + + + + diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Address.java b/src/main/java/com/zipcodewilmington/centrallibrary/Address.java new file mode 100644 index 0000000..9b2be00 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Address.java @@ -0,0 +1,32 @@ +package com.zipcodewilmington.centrallibrary; + + +public class Address{ + private String street; + private String city; + private String state; + private String zipcode; + + public Address(String street, String city, String state, String zipcode) { + this.street = street; + this.city = city; + this.state = state; + this.zipcode = zipcode; + } + + public String getStreet() {return street; } + public String getCity() {return city; } + public String getState() {return state; } + public String getZipcode() {return zipcode; } + + public void setStreet(String street) {this.street = street; } + public void setCity(String city) {this.city = city; } + public void setState(String state) {this.state = state; } + public void setZipcode(String zipCode) {this.zipcode = zipCode; } + + @Override + public String toString() { + return street + ", " + city + ", " + state + ", " + zipcode; + } +} + diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Book.java b/src/main/java/com/zipcodewilmington/centrallibrary/Book.java new file mode 100644 index 0000000..803ab55 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Book.java @@ -0,0 +1,45 @@ +package com.zipcodewilmington.centrallibrary; + +public class Book extends LibraryItem { + + private String author; + private String genre; // move this also remove the getter and setter of isbn + private int pages; + + public Book(String id, String title, String location, String author, String genre, String publicationDate, String isbn, int numberOfPages) { + super(id, title, location); + this.author = author; + this.genre = genre; + this.pages = numberOfPages; + //implement searchable fields + } + + public String getAuthor() { + return author; + } + public void setAuthor(String author) { + this.author = author; + + } + + public String getGenre() { + return genre; + } + public void setGenre(String genre) { + this.genre = genre; + } + + public int getPages() { + return pages; + } + public void setPages(int pages) { + this.pages = pages; + + } + + public String[] getSearchableFields() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getSearchableFields'"); + } +} + diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/BookTest.java b/src/main/java/com/zipcodewilmington/centrallibrary/BookTest.java new file mode 100644 index 0000000..63dbcd8 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/BookTest.java @@ -0,0 +1,20 @@ +package com.zipcodewilmington.centrallibrary; + +public class BookTest { + +public static void main(String[] args) { + + Book book = new Book("1", "The Great Gatsby", "Aisle 3", "F. Scott Fitzgerald", "Classic", "1925", "978-0743273565", 180); + + System.out.println(book.getAuthor()); + System.out.println(book.getGenre()); + System.out.println(book.getPages()); + System.out.println(book.isAvailable()); + System.out.println(book.getLocation()); + System.out.println(book.getId()); + System.out.println(book.getTitle()); + +} + +//something +} diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/DVD.java b/src/main/java/com/zipcodewilmington/centrallibrary/DVD.java new file mode 100644 index 0000000..917377a --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/DVD.java @@ -0,0 +1,54 @@ +package com.zipcodewilmington.centrallibrary; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; + +// Base class (superclass) DVD +public abstract class DVD extends LibraryItem implements Reservable { + private String Title; + private String Director; + private String Duration; + private String Rating; + private String Genre; + private boolean Borrowed; + + public String getTitle() { + return Title; +} + + public String getDirector() { + return Director; + } + + public String getGenre() { + return Genre; + } + +public String getRating() { + return Rating; +} + + public interface Reserveable { + void reserve(String user); + boolean isReserved(); +} + + + public String getType() { + return "DVD"; +} + + + public int getBorrowedDays() { + return 7; + } + + + public double getLateFeePerDay() { + return 1.00; + } + +} \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Library.java b/src/main/java/com/zipcodewilmington/centrallibrary/Library.java new file mode 100644 index 0000000..85da9e2 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Library.java @@ -0,0 +1,76 @@ +package com.zipcodewilmington.centrallibrary; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Library { + private String name; + private Address address; + private List items; + private List members; + private List librarians; + + + public Library(String name, Address address) { + this.name = name; + this.address = address; + this.items = new ArrayList<>(); + this.members = new ArrayList<>(); + this.librarians = new ArrayList<>(); + } + + public String getName() { + return name; + } + public Address getAddress() { + return address; + } + public List getItems() { + return items; + } + public List getMembers() { + return members; + } + public List getLibrarians() { + return librarians; + } + + public void addItem(LibraryItem item) { + items.add(item); + } + public void removeItem(LibraryItem item) { + items.remove(item); + } + public void addMember(LibraryMember member) { + members.add(member); + } + public void addLibrarian(Librarian librarian) { + librarians.add(librarian); + } + + public List search(String keyword) { + List results = new ArrayList<>(); + for (LibraryItem item : items) { + if (item.matchesKeyword(keyword)) { + results.add(item); + } + } + return results; + } + public void displayAllItems() { + for (LibraryItem item : items) { + System.out.println(item.getItemType() + " | " + item.getTitle() + " | " + (item.isAvailable() ? "Available" : "Checked Out")); + } + } + + public void generateLateFeeReport() { + for (LibraryMember member : members) { + System.out.println("Member: " + member.getName()); + for (LibraryItem item : member.getBorrowedItems()) { + System.out.println(" - " + item.getTitle() + + " | Max Days: " + item.getMaxBorrowDays() + + " | Daily Fee: $" + item.calculateLateFee(1)); + } + } + } +} diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/LibraryItem.java b/src/main/java/com/zipcodewilmington/centrallibrary/LibraryItem.java new file mode 100644 index 0000000..d65a422 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/LibraryItem.java @@ -0,0 +1,83 @@ +package com.zipcodewilmington.centrallibrary; + +public class LibraryItem { + + private String id; + private String title; + private String location; + private boolean isAvailable; + private String isbn; + + +//constructor + public LibraryItem() { + + } + + public LibraryItem(String id, String title, String location){ + this.id = id; + this.title = title; + this.location = location; + this.isAvailable = true; + + } + + + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + + public String getLocation() { + return location; + } + public void setLocation(String location) { + this.location = location; + } + + public boolean isAvailable() { + return isAvailable; + } + public void setAvailable(boolean available) { + isAvailable = available; + } + + public void checkOut() { + if (!isAvailable) throw new IllegalStateException(title + " is already checked out."); + this.isAvailable = false; + + } + + public void checkIn() { + this.isAvailable = true; + + } + public String getIsbn() { + return isbn; + } + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + + public boolean matchesKeyword(String keyword) { + for (String field : getSearchableFields()) { + if (field != null && field.toLowerCase().contains(keyword.toLowerCase())) { + return true; + } + } + return false; + } +} + + diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/LibraryMember b/src/main/java/com/zipcodewilmington/centrallibrary/LibraryMember new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/MainApplication.java b/src/main/java/com/zipcodewilmington/centrallibrary/MainApplication.java index c914d10..d8e8bed 100644 --- a/src/main/java/com/zipcodewilmington/centrallibrary/MainApplication.java +++ b/src/main/java/com/zipcodewilmington/centrallibrary/MainApplication.java @@ -1,4 +1,4 @@ -package com.zipcodewilmington.centralibrary; +package com.zipcodewilmington.centrallibrary; /** * Created by n3pjk on 6/9/2025. diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Movie.java b/src/main/java/com/zipcodewilmington/centrallibrary/Movie.java new file mode 100644 index 0000000..da0400f --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Movie.java @@ -0,0 +1,46 @@ +package com.zipcodewilmington.centrallibrary; + +public class Movie extends LibraryItem { + private String director; + private int duration; + private String rating; + private String genre; + public Movie(String id, String title, String location, String director, int duration, String rating, String genre) { + super(id, title, location); + this.director = director; + this.duration = duration; + this.rating = rating; + this.genre = genre; + + + } + public String getDirector() { + return director; + } + public void setDirector(String director) { + this.director = director; + } + + public int getDuration() { + return duration; + } + public void setDuration(int duration) { + this.duration = duration; + } + + public String getRating() { + return rating; + } + public void setRating(String rating) { + this.rating = rating; + } + + public String getGenre() { + return genre; + } + public void setGenre(String genre) { + this.genre = genre; + } + // add in the rating + +} diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Periodical.java b/src/main/java/com/zipcodewilmington/centrallibrary/Periodical.java new file mode 100644 index 0000000..0d03cfe --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Periodical.java @@ -0,0 +1,45 @@ +package com.zipcodewilmington.centrallibrary; + +public class Periodical extends LibraryItem { + private String publisher; + private String issn; + private String volume; + private String issueNumber; + private String publicationDate; + + public Periodical(String id, String title, String location, String publisher, String issn, String volume, String issueNumber, String publicationDate) { + super(id, title, location); + this.publisher = publisher; + this.issn = issn; + this.volume = volume; + this.issueNumber = issueNumber; + this.publicationDate = publicationDate; + } + + public String getPublisher() {return publisher;} + public String getIssn() {return issn;} + public String getVolume() {return volume;} + public String getIssueNumber() {return issueNumber;} + public String getPublicationDate() {return publicationDate;} + + + public double calculateLateFee(int daysLate) { + return daysLate * 0.25; + } + + + public int getMaxBorrowDays() { + return 7; + } + + + public String getItemType() { + return "Periodical"; + } + + + @Override + public String[] getSearchableFields() { + return new String[]{getTitle(), publisher, issn}; + } +} diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Reservable.java b/src/main/java/com/zipcodewilmington/centrallibrary/Reservable.java new file mode 100644 index 0000000..8c21263 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Reservable.java @@ -0,0 +1,9 @@ +package com.zipcodewilmington.centrallibrary; + + +public interface Reservable { + void reserve(LibraryMember member); + void cancelReserve(LibraryMember member); + boolean isReserved(); + +} diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/Searchable.java b/src/main/java/com/zipcodewilmington/centrallibrary/Searchable.java new file mode 100644 index 0000000..e935ee3 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/Searchable.java @@ -0,0 +1,6 @@ +package com.zipcodewilmington.centrallibrary; +public interface Searchable { + boolean matchesKeyword(String keyword); + String[] getSearchableFields(); +} + diff --git a/src/main/java/com/zipcodewilmington/centrallibrary/person.java b/src/main/java/com/zipcodewilmington/centrallibrary/person.java new file mode 100644 index 0000000..bdf2be3 --- /dev/null +++ b/src/main/java/com/zipcodewilmington/centrallibrary/person.java @@ -0,0 +1,51 @@ +package com.zipcodewilmington.centrallibrary; + +public class Person { + private String name; + private String email; + private String phoneNumber; + private int age; + //constructor initialized variable instances that belong to the person class + + public Person(String name, int age, String phoneNumber, String email) { + this.name = name; + this.email = email; + this.phoneNumber = phoneNumber; + this.age = age; + } + //getters and setters for the person class + public String getName() { + return name; + } + public int getAge() { + return age; + } + public String getEmail() { + return email; + } + public String getPhoneNumber() { + return phoneNumber; + } + + public void setName(String name) { + this.name = name; + } + public void setEmail(String email) { + this.email = email; + } + public void setPhoneNumber(String phoneNumber) { + if (phoneNumber == null || phoneNumber.trim().isEmpty()) { + throw new IllegalArgumentException("Phone number cannot be null or empty"); + } + this.phoneNumber = phoneNumber; +} +@Override + public String toString() { + return "person{" + "name='" + name + '\'' + ", email='" + email + '\'' + ", phoneNumber='" + phoneNumber + '\'' + ", age=" + age +'}'; + } + + + void setAge(int i) { + throw new UnsupportedOperationException("Not supported yet."); + } +} diff --git a/src/main/resources/library.json b/src/main/resources/library.json new file mode 100644 index 0000000..e69de29 diff --git a/src/test/LibraryMember.java b/src/test/LibraryMember.java new file mode 100644 index 0000000..3304e4c --- /dev/null +++ b/src/test/LibraryMember.java @@ -0,0 +1,80 @@ +package com.zipcodewilmington.centrallibrary; +import java.util.ArrayList; +import java.util.List; + +public class LibraryMember extends Person{ + private String memberId; + private double outstandingFees; + private String membershipDate; + private List borrowedItems; + private Address address; + + public LibraryMember(String name, int age, String email, String phoneNumber, String memberId, Address address) { + super(name, age, email, phoneNumber); + setMemberId(memberId); + this.membershipDate = membershipDate; + this.borrowedItems = new ArrayList<>(); + this.outstandingFees = 0.0; + this.address = address; + } + public String getMemberId() { + return memberId; + } + public String getMembershipDate() { + return membershipDate; +} + public List getBorrowedItems() { + return borrowedItems; + } + public double getOutstandingFees() { + return outstandingFees; + } + public Address getAddress() { + return address; + } + + public void setMemberId(String memberId) { + if (memberId == null || memberId.trim().isEmpty()) { + throw new IllegalArgumentException("Member ID cannot be null or empty."); + } + this.memberId = memberId; + } + + public void setAddress(Address address) { + if (address == null) { + throw new IllegalArgumentException("Address cannot be null."); + } + this.address = address; + } + + public void borrowItem(LibraryItem item) { + if (!item.isAvailable()) + throw new IllegalStateException(item.getTitle() + " is not available."); + item.checkOut(); + borrowedItems.add(item); + System.out.println(getName() + " borrowed: " + item.getTitle()); + } + public void returnItem(LibraryItem item, int daysLate) { + item.checkIn(); + borrowedItems.remove(item); + double fee = item.calculateLateFee(daysLate); + outstandingFees += fee; + System.out.println(getName() + " returned: " + item.getTitle() + " | Late Fee: $" + fee); + } + public void payFees(double amount) { + if (amount <= 0) { + throw new IllegalArgumentException("Payment amount must be positive."); + } + if (amount > outstandingFees) { + throw new IllegalArgumentException("Payment exceeds outstanding fees."); + } + outstandingFees -= amount; + System.out.println(getName() + " paid: $" + amount + " | Remaining Fees: $" + outstandingFees); + + } +@Override +public String toString() { + return "LibraryMember{name='" + getName() + "', memberId='" + memberId + +"', outstandingFees=" + outstandingFees + ", address=" + address + "}"; +} +} \ No newline at end of file diff --git a/src/test/java/com/DVDTest.java b/src/test/java/com/DVDTest.java new file mode 100644 index 0000000..7689a64 --- /dev/null +++ b/src/test/java/com/DVDTest.java @@ -0,0 +1,55 @@ +package com; + +public class DVDTest { + +} +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; + +// Base class (superclass) DVD +public abstract class DVD extends LibraryItem implements Reservable { + private String Title; + private String Director; + private String Duration; + private String Rating; + private String Genre; + private boolean Borrowed; + + public String getTitle() { + return Title; +} + + public String getDirector() { + return Director; + } + + public String getGenre() { + return Genre; + } + +public String getRating() { + return Rating; +} + + public interface Reserveable { + void reserve(String user); + boolean isReserved(); +} + + + public String getType() { + return "DVD"; +} + + + public int getBorrowedDays() { + return 7; + } + + + public double getLateFeePerDay() { + return 1.00; + } diff --git a/src/test/java/com/Main.java b/src/test/java/com/Main.java new file mode 100644 index 0000000..d709fd1 --- /dev/null +++ b/src/test/java/com/Main.java @@ -0,0 +1,7 @@ +package com; + +public class Main { + public static void main(String[] args) { + + } +} diff --git a/src/test/java/com/zipcodewilmington/Library.java b/src/test/java/com/zipcodewilmington/Library.java new file mode 100644 index 0000000..a2e0ba1 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/Library.java @@ -0,0 +1,76 @@ +package com.zipcodewilmington.centrallibrary; + +import java.util.ArrayList; +import java.util.List; + +public abstract class Library { + private String name; + private Address address; + private List items; + private List members; + private List librarians; + + + public Library(String name, Address address) { + this.name = name; + this.address = address; + this.items = new ArrayList<>(); + this.members = new ArrayList<>(); + this.librarians = new ArrayList<>(); + } + + public String getName() { + return name; + } + public Address getAddress() { + return address; + } + public List getItems() { + return items; + } + public List getMembers() { + return members; + } + public List getLibrarians() { + return librarians; + } + + public void addItem(LibraryItem item) { + items.add(item); + } + public void removeItem(LibraryItem item) { + items.remove(item); + } + public void addMember(LibraryMember member) { + members.add(member); + } + public void addLibrarian(Librarian librarian) { + librarians.add(librarian); + } + + public List search(String keyword) { + List results = new ArrayList<>(); + for (LibraryItem item : items) { + if (item.matchesKeyword(keyword)) { + results.add(item); + } + } + return results; + } + public void displayAllItems() { + for (LibraryItem item : items) { + System.out.println(item.getItemType() + " | " + item.getTitle() + " | " + (item.isAvailable() ? "Available" : "Checked Out")); + } + } + + public void generateLateFeeReport() { + for (LibraryMember member : members) { + System.out.println("Member: " + member.getName()); + for (LibraryItem item : member.getBorrowedItems()) { + System.out.println(" - " + item.getTitle() + + " | Max Days: " + item.getMaxBorrowDays() + + " | Daily Fee: $" + item.calculateLateFee(1)); + } + } + } +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/AddressTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/AddressTest.java new file mode 100644 index 0000000..1a48f82 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/AddressTest.java @@ -0,0 +1,25 @@ +package com.zipcodewilmington.centrallibrary; + +import org.junit.Assert; +import org.junit.Test; + +public class AddressTest { + + @Test + public void testAddressConstructorAndGetters() { + // given + String street = "123 North St."; + String city = "Narnia"; + String state = "Fairytaleland"; + String zipcode = "12345"; + + // when + Address address = new Address (street, city, state,zipcode); + + Assert.assertEquals(street, address.getStreet()); + Assert.assertEquals(city, address.getCity()); + Assert.assertEquals(state, address.getState()); + Assert.assertEquals(zipcode, address.getZipcode()); + } + +} diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/BookTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/BookTest.java new file mode 100644 index 0000000..2b9e127 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/BookTest.java @@ -0,0 +1,22 @@ +package com.zipcodewilmington.centrallibrary; + + + +public class BookTest { + +public static void main(String[] args) { + + Book book = new Book("A100", "The Great Gatsby", "Aisle 3", "John Smith", "Horror", "2/2/22", "293849595934", 9); + + System.out.println(book.getAuthor()); + System.out.println(book.getGenre()); + System.out.println(book.getPages()); + System.out.println(book.isAvailable()); + System.out.println(book.getLocation()); + System.out.println(book.getId()); + System.out.println(book.getTitle()); + +} + +//something +} diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/DVDTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/DVDTest.java new file mode 100644 index 0000000..180eea5 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/DVDTest.java @@ -0,0 +1,54 @@ +package com.zipcodewilmington.centrallibrary; + +public class DVDTest { +} +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.time.LocalDate; +import java.time.temporal.ChronoUnit; + +// Base class (superclass) DVD +public abstract class DVD extends LibraryItem implements Reservable { + private String Title; + private String Director; + private String Duration; + private String Rating; + private String Genre; + private boolean Borrowed; + + public String getTitle() { + return Title; +} + + public String getDirector() { + return Director; + } + + public String getGenre() { + return Genre; + } + +public String getRating() { + return Rating; +} + + public interface Reserveable { + void reserve(String user); + boolean isReserved(); +} + + + public String getType() { + return "DVD"; +} + + + public int getBorrowedDays() { + return 7; + } + + + public double getLateFeePerDay() { + return 1.00; + } diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/Librarian.java b/src/test/java/com/zipcodewilmington/centrallibrary/Librarian.java new file mode 100644 index 0000000..f23d10a --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/Librarian.java @@ -0,0 +1,73 @@ +package com.zipcodewilmington.centrallibrary; + +import com.zipcodewilmington.centrallibrary.Library; +import com.zipcodewilmington.centrallibrary.LibraryItem; +import com.zipcodewilmington.centrallibrary.Person; + +public class Librarian extends Person { + private String employeeId; + private String department; + private double salary; + + public Librarian(String name, int age, String email, String phoneNumber, String employeeId, String department, double salary) { + super(name, age, email, phoneNumber); + setEmployeeId(employeeId); + setDepartment(department); + setSalary(salary); + } + + public String getEmployeeId() { + return employeeId; + } + public String getDepartment() { + return department; + } + public double getSalary() { + return salary; + } + +public void setEmployeeId(String employeeId) { + if (employeeId == null || employeeId.trim().isEmpty()) { + throw new IllegalArgumentException("Employee ID cannot be null or empty."); + } + this.employeeId = employeeId; + } + + public void setDepartment(String department) { + if (department == null || department.trim().isEmpty()) { + throw new IllegalArgumentException("Department cannot be null or empty."); + } + this.department = department; + } + + public void setSalary(double salary) { + if (salary < 0) { + throw new IllegalArgumentException("Salary cannot be negative."); + } + this.salary = salary; + } + + +public void addItemToLibrary(Library library, LibraryItem item) { + library.addItem(item); + System.out.println(getName() + " added: " + item.getTitle()); + } + + public void removeItemFromLibrary(Library library, LibraryItem item) { + library.removeItem(item); + System.out.println(getName() + " removed: " + item.getTitle()); + } +@Override + public String toString() { + return "Librarian{" + + "employeeId='" + employeeId + '\'' + + ", department='" + department + '\'' + + ", salary=" + salary + + ", name='" + getName() + '\'' + + ", age=" + getAge() + + ", email='" + getEmail() + '\'' + + ", phoneNumber='" + getPhoneNumber() + '\'' + + '}'; + } + +} \ No newline at end of file diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/MainApplicationTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/MainApplicationTest.java index f706f32..daa47d7 100644 --- a/src/test/java/com/zipcodewilmington/centrallibrary/MainApplicationTest.java +++ b/src/test/java/com/zipcodewilmington/centrallibrary/MainApplicationTest.java @@ -1,7 +1,9 @@ -package com.zipcodewilmington.centralibrary; +package com.zipcodewilmington.centrallibrary; /** * Created by n3pjk on 6/9/2025. */ public class MainApplicationTest { + + } diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/PeriodicalTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/PeriodicalTest.java new file mode 100644 index 0000000..26ac4b7 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/PeriodicalTest.java @@ -0,0 +1,48 @@ +package com.zipcodewilmington.centrallibrary; + +import org.junit.Assert; +import org.junit.Test; + +public class PeriodicalTest { + + @Test + public void testPeriodicalConstructorAndGetters() { + // given + String id = "P001"; + String title = "Cool Magazine"; + String location = "Wilmington"; + String publisher = "Pixar"; + String issn = "394851939422"; + String volume = "4"; + String issueNumber = "2"; + String publicationDate = "2/2/22"; + + // when + Periodical periodical = new Periodical (id, title, location, publisher, issn, volume, issueNumber, publicationDate); + + Assert.assertEquals(publisher, periodical.getPublisher()); + Assert.assertEquals(issn, periodical.getIssn()); + Assert.assertEquals(volume, periodical.getVolume()); + Assert.assertEquals(issueNumber, periodical.getIssueNumber()); + Assert.assertEquals(publicationDate, periodical.getPublicationDate()); + } + + @Test + public void testPeriodicalLateFee() { + // given + Periodical periodical = new Periodical("P001", "Byte", "P1", "McGraw-Hill", "0360-5280", "6", "8", "08/01/1981"); + + // then + Assert.assertEquals(2.50, periodical.calculateLateFee(10), 0.001); + } + + + @Test + public void testPeriodicalMaxBorrowDays() { + // given + Periodical periodical = new Periodical("P001", "Byte", "P1", "McGraw-Hill", "0360-5280", "6", "8", "08/01/1981"); + + // then + Assert.assertEquals(7, periodical.getMaxBorrowDays()); + } +} diff --git a/src/test/java/com/zipcodewilmington/centrallibrary/PersonTest.java b/src/test/java/com/zipcodewilmington/centrallibrary/PersonTest.java new file mode 100644 index 0000000..24df9b0 --- /dev/null +++ b/src/test/java/com/zipcodewilmington/centrallibrary/PersonTest.java @@ -0,0 +1,34 @@ +package com.zipcodewilmington.centrallibrary; + + +import org.junit.Assert; +import org.junit.Test; + + +public class PersonTest { + + @Test + public void testPersonConstructorAndGetters() { + // given + String name = "Joe"; + int age = 30; + String email = "joeschmo@gmail.com"; + String phoneNumber = "302-555-1111"; + + // when + Person person = new Person(name, age, email, phoneNumber); + + Assert.assertEquals(name, person.getName()); + Assert.assertEquals(age, person.getAge()); + Assert.assertEquals(email, person.getEmail()); + Assert.assertEquals(phoneNumber, person.getPhoneNumber()); + } + @Test + public void testSetAge_negativeAge_throwsException() { + Person person = new Person("Joe", 30, "123-456-7890", "joeschmo@gmail.com"); + + Assert.assertThrows(IllegalArgumentException.class, () -> { + person.setAge(-1); + }); + } +}