Project 2 -
Extend Project 1 to use advanced data structures and support sorting on various keys. The project will be graded according the criteria for the final project - see below.
Elaboration:
- Use the Map class to      support efficient searching on book and author indices. 
 
- Implement comparators to      support sorting by title, genre, price and index 
 
- Extend the GUI from      Project 1 to allow the user to: sort       by title, genre, price and index 
 
- Again, the GUI elements      should be distinct from the other classes in the program. 
 
Project 3 - 
Implement a GUI interface using advanced Java Swing classes.
The project will be graded according the criteria for the final project - see below.
Elaboration:
- Extend Project 2 to use      the Swing class JTable and JTree effectively to display the contents of      the Library. See       Liang, Chapter 36. 
 
- As before, the GUI      elements should be distinct from the other classes in the program
 
Final Project - 
Implement a program to query and update the text database for a library using a client/server model allowing multiple clients safe access to the database, and using a producer-consumer model to control the inventory of each item.
The project will be graded according the criteria for the final project - see below.
Elaboration:
- Multiple instances of a      client class should be supported. 
 
- Use threads and locks to      provide safe access to the database. 
 
- Add a field to each      record in the database representing the maximum number of that book the      library will hold. This number should be given a default value if the      field is not present in the text file. 
 
- Functions should include:       
- Returning       a book to the library, blocking if the maximum number of that book is       reached until a book is borrowed. 
 
- Borrowing       a book, blocking if the desired book is not in the library until a book       is returned. 
 
- Allow       a client to cancel a request that has been blocked.