Kimes

Library

Mar 28th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.58 KB | None | 0 0
  1. package pl.kimes.core;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         Library library = new Library();
  7.  
  8.         library.addBook("Java For Begginers", "2017", "Jakub Niedzielski");
  9.         library.addBook("Java For Begginers", "2017", "Jakub Niedzielski");
  10.         library.addBook("Java For Begginers", "2017", "Jakub Niedzielski");
  11.         library.addBook("Java For Begginers", "2017", "Jakub Niedzielski");
  12.         library.addBook("Java Podstawy Wydanie X", "2016", "Cay S. Horstmann");
  13.         library.addBook("Java Podstawy Wydanie X", "2016", "Cay S. Horstmann");
  14.         library.addBook("Java For Begginers", "2017", "Jakub Niedzielski");
  15.         library.addBook("Java. Przewodnik dla początkujących. Wydanie V", "2012", "Herbert Schildt");
  16.         library.addBook("Capitalism: The unknown ideal", "1966", "Ayn Rand");
  17.         library.addBook("Atlas shrugged", "1957", "Ayn Rand");
  18.         library.addBook("Java For Dumbasses", "2017", "Jakub Niedzielski");
  19.         library.addBook("Effective Java: Programming Language Guide", "2017", "Joshua Bloch");
  20.         library.addBook("Java Performance", "2016", "Charlie Hunt");
  21.         library.addBook("Biografia", "2010", "Jakub Niedzielski");
  22.         library.addBook("Biografia", "2010", "Jakub Niedzielski");
  23.         library.addBook("Java Podstawy Wydanie X", "2016", "Cay S. Horstmann");
  24.         library.addBook("Java Podstawy Wydanie X", "2016", "Cay S. Horstmann");
  25.  
  26.         library.lendBook(1, "Trzos");
  27.         library.lendBook(1, "Niedzielski");
  28.         library.lendBook(1, "Kruger");
  29.         library.lendBook(1, "Kowalski");
  30.         library.lendBook(1, "Nowak");
  31.         library.getAllBooks();
  32.        
  33.     }
  34.        
  35. }
  36. package pl.kimes.core;
  37.  
  38. import java.util.HashMap;
  39. import java.util.Map;
  40.  
  41. public class Library {
  42.  
  43.     private int uniqueID;
  44.     private Map<Integer, Book> bookMap = new HashMap<>();
  45.  
  46.     public void addBook(String title, String year, String author) {
  47.         Book copy = null;
  48.         for (Book book : bookMap.values()) {
  49.             if (book.getTitle().equals(title) && (book.getYear().equals(year)) && (book.getAuthor().equals(author))) {
  50.                 copy = book;
  51.                 break;
  52.             }
  53.         }
  54.  
  55.         if (copy == null) {
  56.             uniqueID++;
  57.             Book newBook = new Book(title, year, author, uniqueID);
  58.             bookMap.put(uniqueID, newBook);
  59.         } else {
  60.             copy.addCopy();
  61.         }
  62.     }
  63.  
  64.     public void getInfoByID(Integer bookID) {
  65.         Book book = bookMap.get(bookID);
  66.         if (book != null) {
  67.             book.print();
  68.         }
  69.     }
  70.  
  71.     public void getStatusInfo(Integer bookID) {
  72.         Book statusInfo = bookMap.get(bookID);
  73.         System.out.println("The book of ID: " + bookID + " is " + statusInfo.getBookStatus());
  74.     }
  75.  
  76.     public void lendBook(Integer bookID, String borrowersName) {
  77.         Book bookStatus = bookMap.get(bookID);
  78.         if (bookStatus.getEnumBookStatus().equals(BookStatus.AVAILABLE)) {
  79.             bookStatus.lendBook(borrowersName);
  80.         } else {
  81.             System.out.println("This book is already lent by " + bookStatus.getBorrowersName());
  82.         }
  83.  
  84.     }
  85.  
  86.     public void returnBook(Integer bookID, String returnersName) {
  87.         Book bookStatus = bookMap.get(bookID);
  88.         bookStatus.returnBook(returnersName);
  89.     }
  90.  
  91.     public void removeBook(Integer bookID) {
  92.         Book value = bookMap.get(bookID);
  93.         if (value != null) {
  94.             if (value.getEnumBookStatus().equals(BookStatus.AVAILABLE)) {
  95.                 bookMap.remove(bookID);
  96.             } else {
  97.                 System.out.println("Can't remove that book right now, it's lent by " + value.getBorrowersName());
  98.             }
  99.         } else {
  100.             System.out.println("Invalid ID number");
  101.  
  102.         }
  103.  
  104.     }
  105.  
  106.     public void getAllBooks() {
  107.         for (Book book : bookMap.values()) {
  108.             book.print();
  109.  
  110.         }
  111.     }
  112.  
  113.     public void getAllByTitle(String title) {
  114.         for (Book book : bookMap.values()) {
  115.             if (title.equals(book.getTitle())) {
  116.                 book.print();
  117.             }
  118.         }
  119.  
  120.     }
  121.  
  122.     public void getAllByAuthor(String author) {
  123.         for (Book book : bookMap.values()) {
  124.             if (author.equals(book.getAuthor())) {
  125.                 book.print();
  126.             }
  127.         }
  128.     }
  129.  
  130.     public void getAllByYear(String year) {
  131.         for (Book book : bookMap.values()) {
  132.             if (year.equals(book.getYear())) {
  133.                 book.print();
  134.             }
  135.         }
  136.     }
  137.  
  138.     public void getAllByAuthorAndYear(String author, String year) {
  139.         for (Book book : bookMap.values()) {
  140.             if (author.equals(book.getAuthor()) && (year.equals(book.getYear()))) {
  141.                 book.print();
  142.             }
  143.         }
  144.     }
  145.  
  146.     public Library() {
  147.  
  148.     }
  149.  
  150. }
  151. package pl.kimes.core;
  152.  
  153. import java.util.ArrayList;
  154. import java.util.List;
  155.  
  156. public class Book {
  157.  
  158.     private int id;
  159.     private String title;
  160.     private String year;
  161.     private String author;
  162.     private BookStatus bookStatus = BookStatus.AVAILABLE;
  163.     private String borrowersName;
  164.     private int numberOfCopies;
  165.     private List<String> borrwersList = new ArrayList<>();
  166.  
  167.     public Book(String title, String year, String author, int uniqueID) {
  168.         this.id = uniqueID;
  169.         this.title = title;
  170.         this.year = year;
  171.         this.author = author;
  172.         this.numberOfCopies = 1;
  173.     }
  174.  
  175.     public String getTitle() {
  176.         return title;
  177.     }
  178.  
  179.     public String getYear() {
  180.         return year;
  181.     }
  182.  
  183.     public String getAuthor() {
  184.         return author;
  185.     }
  186.  
  187.     public int getId() {
  188.         return id;
  189.     }
  190.  
  191.     public void lendBook(String borrowersName) {
  192.         numberOfCopies--;
  193.         if (numberOfCopies == 0) {
  194.             bookStatus = BookStatus.NON_AVAILABLE;
  195.         }
  196.         this.borrowersName = borrowersName;
  197.         borrwersList.add(borrowersName);
  198.     }
  199.  
  200.     public void returnBook(String returnersName) {
  201.         if (borrwersList.isEmpty()) {
  202.             System.out.println("Cannot return this book, it wasn't lent by anyone");
  203.         } else {
  204.             numberOfCopies++;
  205.             borrwersList.remove(returnersName);
  206.             bookStatus = BookStatus.AVAILABLE;
  207.         }
  208.     }
  209.  
  210.     public String getBookStatus() {
  211.         return bookStatus.toString();
  212.     }
  213.  
  214.     public BookStatus getEnumBookStatus() {
  215.         return bookStatus;
  216.     }
  217.  
  218.     public String getBorrowersName() {
  219.         return borrowersName;
  220.     }
  221.  
  222.     public void addCopy() {
  223.         numberOfCopies++;
  224.     }
  225.  
  226.     public int getNumberOfCopies() {
  227.         return numberOfCopies;
  228.     }
  229.  
  230.     public void print() {
  231.         System.out.println("-----");
  232.         System.out.println("ID number: " + this.getId());
  233.         System.out.println("Title: " + this.getTitle());
  234.         System.out.println("Year: " + this.getYear());
  235.         System.out.println("Author: " + this.getAuthor());
  236.         if (this.bookStatus.equals(BookStatus.NON_AVAILABLE)) {
  237.             System.out.println("This book is " + this.getBookStatus() + ", "
  238.                     + borrwersList.toString().replace("[", "").replace("]", "") + " borrowed it");
  239.         } else {
  240.             System.out.println("This book is " + this.getBookStatus());
  241.         }
  242.         System.out.println("Number of copies: " + this.getNumberOfCopies());
  243.     }
  244.  
  245. }
  246. package pl.kimes.core;
  247.  
  248. enum BookStatus {
  249.     AVAILABLE {
  250.         @Override
  251.         public String toString() {
  252.             return "available";
  253.         }
  254.     },
  255.     NON_AVAILABLE {
  256.         @Override
  257.         public String toString() {
  258.             return "non available";
  259.         }
  260.     }
  261.  
  262. }
Advertisement
Add Comment
Please, Sign In to add comment