package com.books; import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Iterator; import java.util.Set; class Books { int bookIdCount = 1000; Map<Integer, StoreBook> bookMap = new HashMap<Integer, StoreBook>(); private static Books books = null; private Books() { } public static Books getInstance() { if (books == null) { books = new Books(); books.storeBook("Mastering Java", "John Zakowsi", 200); books.storeBook( "Struts in Action", "Cedric Dumoulin, David Winterfeldt, George Franciscus, and Ted Husted", 500); } return books; } public void storeBook(String bookName, String authorName, int bookCost) { StoreBook sb = new StoreBook(); bookIdCount++; sb.addBook(bookIdCount, bookName, authorName, bookCost); bookMap.put(bookIdCount, sb); } public void updateBook(int bookId, String bookName, String authorName, int bookCost) { StoreBook sb = bookMap.get(bookId); sb.updateBook(bookName, authorName, bookCost); } public Map searchBook(int bookId) { return bookMap.get(bookId).getBooks(); } public void deleteBook(int bookId) { bookMap.remove(bookId); } // Inner Class used to persist the app data ie) book details. class StoreBook { private String bookName; private String authorName; private int bookCost; private int bookId; StoreBook() { } public void addBook(int bookId, String bookName, String authorName, int bookCost) { this.bookId = bookId; this.bookName = bookName; this.authorName = authorName; this.bookCost = bookCost; } public void updateBook(String bookName, String authorName, int bookCost) { this.bookName = bookName; this.authorName = authorName; this.bookCost = bookCost; } public Map getBooks() { Map books = new HashMap(); books.put("BookId", this.bookId); books.put("BookName", this.bookName); books.put("AuthorName", this.authorName); books.put("BookCost", this.bookCost); return books; } } public List getBookList() { List booksList = new ArrayList(); Set s = bookMap.keySet(); Iterator itr = s.iterator(); while (itr.hasNext()) { booksList.add(bookMap.get((Integer) itr.next()).getBooks()); } return booksList; } }