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.
- 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 dok kooatabase 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.
- Java source code files
- any configuration files used
- a well-written Word document describing:
- your overall design, including a UML class diagram showing the type of the class relationships
- description of how to set up your application
- your test plan, including test data and results, with screen snapshots of each of your test cases
- your approach, lessons learned, design strengths and limitations, and suggestions for future improvement and alternative approaches