├── .gitignore
├── Dean's solutions
├── .DS_Store
├── Exercise1-NamingAndLongMethods
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── CleanCode_README.txt
│ ├── MeaningfulNames.html
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ └── servlet-api.jar
│ └── src
│ │ └── com
│ │ └── objectmentor
│ │ └── library
│ │ ├── Catalog.java
│ │ ├── CatalogTest.java
│ │ ├── IsbnService.java
│ │ ├── Library.java
│ │ ├── LibraryBorrowingTest.java
│ │ ├── data
│ │ ├── DataServices.java
│ │ ├── IsbnDoesNotExistException.java
│ │ └── PatronDoesNotExistException.java
│ │ ├── mocks
│ │ ├── MockDataServices.java
│ │ ├── MockDataServicesBookAccessTest.java
│ │ └── MockDataServicesPatronAccessTest.java
│ │ └── models
│ │ ├── Address.java
│ │ ├── Book.java
│ │ ├── BookTitle.java
│ │ ├── Patron.java
│ │ ├── PatronTest.java
│ │ └── Receipt.java
├── Exercise2-SRP
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── SRP_README.txt
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ └── servlet-api.jar
│ └── src
│ │ └── com
│ │ └── objectmentor
│ │ └── library
│ │ ├── BookCatalog.java
│ │ ├── BookCatalogTest.java
│ │ ├── BookCatalogWhenEmptyTest.java
│ │ ├── BookCatalogWithOneCopyTest.java
│ │ ├── Library.java
│ │ ├── LibraryBorrowingTest.java
│ │ ├── LibraryReturnCopyTest.java
│ │ ├── Money.java
│ │ ├── MoneyTest.java
│ │ ├── PrintRecord.java
│ │ ├── PrintUsage.java
│ │ ├── PrinterUsageTest.java
│ │ ├── StandardTimeSource.java
│ │ ├── TimeSource.java
│ │ ├── data
│ │ ├── DataServices.java
│ │ ├── IsbnDoesNotExistException.java
│ │ └── PatronDoesNotExistException.java
│ │ ├── mocks
│ │ ├── MockDataServices.java
│ │ ├── MockDataServicesBookAccessTest.java
│ │ ├── MockDataServicesPatronAccessTest.java
│ │ └── MockTimeSource.java
│ │ ├── models
│ │ ├── BookCopy.java
│ │ ├── BookTitle.java
│ │ ├── BorrowedReceipt.java
│ │ ├── Patron.java
│ │ ├── PatronTest.java
│ │ └── ReturnReceipt.java
│ │ └── utils
│ │ ├── DateUtil.java
│ │ └── DateUtilTest.java
├── Exercise3-DIP
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── DIP_README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── MediaGatewayTest.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ ├── PatronGateway.java
│ │ │ └── PatronGatewayTest.java
│ │ │ ├── libraryRules
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockPageContext.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── services
│ │ │ ├── CardPrinter.java
│ │ │ ├── CompactDiscService.java
│ │ │ ├── IsbnService.java
│ │ │ └── IsbnServiceTest.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── tomcat-users.xml.example
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise4-OCP
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── OCP_README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscService.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── IsbnService.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── LibraryWithMockServices.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── MediaCatalogWhenEmptyTest.java
│ │ │ ├── MediaCatalogWithOneCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockLibraryContext.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockMediaGatewayTest.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ ├── MockPatronGatewayTest.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── services
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ └── BooksController_CheckoutTest.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ ├── accept.jsp
│ │ │ │ ├── delete.jsp
│ │ │ │ ├── manage.jsp
│ │ │ │ └── modify.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── checkin.jsp
│ │ │ │ │ └── checkout.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ └── LibraryTags.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise5-LSP
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── LSP_README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── reports
│ │ │ ├── LoanedBookFormatReport.java
│ │ │ └── LoanedBookFormatReportTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise6-ISP
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── ISP_README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise7-LOD
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── LOD_README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ ├── Periodical.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise8-Packaging
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── Packaging-README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── jdepend.properties
│ ├── jdepend_report.dot
│ ├── jdepend_report.png
│ ├── jdepend_report.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ ├── Periodical.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ ├── InMemoryPatronGatewayFindLikeTest.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServlet_OnlineVsOfflineTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise9-PackageDecoupling
│ ├── .classpath
│ ├── .project
│ ├── .settings
│ │ ├── org.eclipse.jdt.core.prefs
│ │ ├── org.eclipse.jdt.ui.prefs
│ │ ├── org.eclipse.jst.common.project.facet.core.prefs
│ │ ├── org.eclipse.wst.common.component
│ │ └── org.eclipse.wst.common.project.facet.core.xml
│ ├── PackageDecoupling-README.txt
│ ├── build.properties
│ ├── build.xml
│ ├── jdepend.properties
│ ├── jdepend_report.dot
│ ├── jdepend_report.png
│ ├── jdepend_report.xml
│ ├── lib
│ │ ├── catalina-ant.jar
│ │ ├── javax.servlet.jsp.jar
│ │ ├── servlet-api.jar
│ │ └── servlet.jar
│ ├── src
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── application
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ └── PatronRegistrar.java
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ └── ReturnCondition.java
│ │ │ ├── mocks
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCardPrinterTest.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ └── MockPatronGateway.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ ├── InMemoryPatronGatewayFindLikeTest.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CardPrinter.java
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ ├── MockTimeSource.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── StandardTimeSource.java
│ │ │ ├── StringUtil.java
│ │ │ └── TimeSource.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── LibraryController.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── framework
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletOnlineVsOfflineTest.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── version notes.txt
│ └── web
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── lib
│ │ │ ├── jstl.jar
│ │ │ └── standard.jar
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
└── InstructorNotes
│ ├── .project
│ ├── CleanCode.txt
│ ├── Cohesion.txt
│ ├── Coupling.txt
│ ├── DIP.txt
│ ├── ISP.txt
│ ├── LSP.txt
│ ├── LoD.txt
│ ├── OCP.txt
│ ├── SRP.txt
│ ├── findbugs_usage.txt
│ ├── jdepend_usage.txt
│ ├── om_web_framework.txt
│ ├── tomcat-users.xml.example
│ ├── tomcat_usage.txt
│ └── web_architecture_notes.txt
├── PPP_readmes
├── .DS_Store
├── 0_InitialSetup_README.txt
├── 1_CleanCode_README.txt
├── 2_SRP_README.txt
├── 3_DIP_README.txt
├── 4_OCP_README.txt
├── 5_LSP_README.txt
├── 6_ISP_README.txt
├── 7_LOD_README_Exercise1.txt
├── 7_LOD_README_Exercise2.txt
├── 8_Cohesion_README.txt
└── 9_PackageDecoupling-README.txt
├── RAD_Object_Mentor
├── .DS_Store
├── .metadata
│ ├── .lock
│ ├── .log
│ ├── .plugins
│ │ ├── com.ibm.etools.emf.workbench.ui
│ │ │ └── dialog_settings.xml
│ │ ├── com.ibm.etools.index
│ │ │ ├── .index
│ │ │ ├── .index_table
│ │ │ ├── 1150296566.index
│ │ │ ├── 1202448111.index
│ │ │ ├── 1203356938.index
│ │ │ ├── 1204290844.index
│ │ │ ├── 1205211978.index
│ │ │ ├── 1206132616.index
│ │ │ ├── 1207058884.index
│ │ │ ├── 1464562173.index
│ │ │ ├── 1468890759.index
│ │ │ ├── 1843695493.index
│ │ │ ├── 2135673431.index
│ │ │ ├── 2138569100.index
│ │ │ ├── 547630299.index
│ │ │ └── 547637131.index
│ │ ├── com.ibm.etools.siteedit
│ │ │ ├── .multisiteinfo
│ │ │ ├── .newpages
│ │ │ ├── .sitePageModel.dat
│ │ │ ├── .sitepageinfo
│ │ │ └── .sitesettings
│ │ ├── com.ibm.etools.table.datasource.creator.v6
│ │ │ ├── DB2Connection.properties
│ │ │ ├── MssqlConnection.properties
│ │ │ └── OracleConnection.properties
│ │ ├── com.ibm.etools.webpage.template
│ │ │ ├── Exercise3-DIP.index
│ │ │ ├── Exercise4-OCP.index
│ │ │ ├── Exercise5-LSP.index
│ │ │ ├── Exercise6-ISP.index
│ │ │ ├── Exercise7-LOD.index
│ │ │ ├── Exercise8-Packaging.index
│ │ │ ├── Exercise9-PackageDecoupling.index
│ │ │ ├── Library.index
│ │ │ └── Library_Test.index
│ │ ├── com.ibm.sse.model.jsp
│ │ │ ├── 1082322043.index
│ │ │ ├── 1128216620.index
│ │ │ ├── 113274967.index
│ │ │ ├── 1154183132.index
│ │ │ ├── 1208497726.index
│ │ │ ├── 1437435697.index
│ │ │ ├── 1550916357.index
│ │ │ ├── 1596006825.index
│ │ │ ├── 1637070500.index
│ │ │ ├── 1651835625.index
│ │ │ ├── 167380550.index
│ │ │ ├── 1688059909.index
│ │ │ ├── 1702974745.index
│ │ │ ├── 1715241294.index
│ │ │ ├── 1847093813.index
│ │ │ ├── 1953374687.index
│ │ │ ├── 2030119530.index
│ │ │ ├── 2190756397.index
│ │ │ ├── 2278485082.index
│ │ │ ├── 2311410548.index
│ │ │ ├── 2363661498.index
│ │ │ ├── 2515895853.index
│ │ │ ├── 2583289033.index
│ │ │ ├── 2659159116.index
│ │ │ ├── 2754225944.index
│ │ │ ├── 3001134123.index
│ │ │ ├── 3008130059.index
│ │ │ ├── 3136339906.index
│ │ │ ├── 3234390773.index
│ │ │ ├── 323477219.index
│ │ │ ├── 3240931571.index
│ │ │ ├── 3333421499.index
│ │ │ ├── 335005955.index
│ │ │ ├── 3366035057.index
│ │ │ ├── 339068873.index
│ │ │ ├── 342359938.index
│ │ │ ├── 3547575625.index
│ │ │ ├── 3564131721.index
│ │ │ ├── 3653056537.index
│ │ │ ├── 3661295800.index
│ │ │ ├── 3711425653.index
│ │ │ ├── 3750423956.index
│ │ │ ├── 3778952184.index
│ │ │ ├── 3824128035.index
│ │ │ ├── 3885161926.index
│ │ │ ├── 3899506543.index
│ │ │ ├── 398699168.index
│ │ │ ├── 4045062554.index
│ │ │ ├── 4081010022.index
│ │ │ ├── 408534318.index
│ │ │ ├── 4085920441.index
│ │ │ ├── 4149163945.index
│ │ │ ├── 4201838532.index
│ │ │ ├── 523835709.index
│ │ │ ├── 551423136.index
│ │ │ ├── 569868179.index
│ │ │ ├── 793013107.index
│ │ │ ├── 848014076.index
│ │ │ ├── 885066967.index
│ │ │ ├── 905556950.index
│ │ │ └── 981404053.index
│ │ ├── com.ibm.sse.snippets
│ │ │ ├── hidden.xml
│ │ │ └── user.xml
│ │ ├── com.ibm.ws.ast.st.v6
│ │ │ └── console.properties
│ │ ├── com.ibm.ws.rapiddeploy.core
│ │ │ ├── resource.gens3
│ │ │ ├── resource.jar.loc3
│ │ │ └── resource.maps3
│ │ ├── com.ibm.ws.rapiddeploy.websphere
│ │ │ ├── publishdata
│ │ │ └── wsservers.xml
│ │ ├── com.ibm.wtp.j2ee
│ │ │ ├── Exercise1-NamingAndLongMethods
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise2-SRP
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise3-DIP
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise4-OCP
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise5-LSP
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise6-ISP
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise7-LOD
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise8-Packaging
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Exercise9-PackageDecoupling
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Library
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ ├── Library_Test
│ │ │ │ ├── link_scr_states.txt
│ │ │ │ └── link_table_states.txt
│ │ │ └── looseconfigurations
│ │ │ │ └── Library_EAR
│ │ │ │ └── looseconfig.xmi
│ │ ├── com.ibm.wtp.server.core
│ │ │ └── servers.xml
│ │ ├── com.parasoft.eclipse.checker.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker.java.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker.java.standards.core
│ │ │ ├── doc
│ │ │ │ ├── ClassVisibility.28.html
│ │ │ │ ├── DAXComment.1.html
│ │ │ │ ├── DAXComment.16.html
│ │ │ │ ├── DAXComment.2.html
│ │ │ │ ├── DAXComment.3.html
│ │ │ │ ├── DAXComment.4.html
│ │ │ │ ├── DAXComment.5.html
│ │ │ │ ├── DAXComment.6.html
│ │ │ │ ├── DAXComment.7.html
│ │ │ │ ├── InnerClassTypeRule.29.html
│ │ │ │ ├── JAVADOC.RFDT.html
│ │ │ │ ├── MISC.BBDCC.html
│ │ │ │ ├── MethodRule.10.html
│ │ │ │ ├── MethodRule.11.html
│ │ │ │ ├── MethodRule.12.html
│ │ │ │ ├── MethodRule.26.html
│ │ │ │ ├── Migration.J2EE2.3.html
│ │ │ │ ├── Migration.J2SE-ObjectStream.html
│ │ │ │ ├── Migration.J2SE-StringBuilder.html
│ │ │ │ ├── Migration.J2SE5-ApacheJaxp.html
│ │ │ │ ├── Migration.J2SE5-Proxy.html
│ │ │ │ ├── Migration.J2SE5-SocketImpl.html
│ │ │ │ ├── Migration.J2SE5-enumClass.html
│ │ │ │ ├── Migration.J2SE5-enumField.html
│ │ │ │ ├── Migration.J2SE5-enumLocal.html
│ │ │ │ ├── Migration.J2SE5-integerValueOf.html
│ │ │ │ ├── Migration.J2SE5-unnamedImport.html
│ │ │ │ ├── Migration.J2SE5.Queue.html
│ │ │ │ ├── NAMING.LCIN.html
│ │ │ │ ├── NamingRule.18.html
│ │ │ │ ├── NamingRule.2223.html
│ │ │ │ ├── OPT.RTEX.html
│ │ │ │ ├── OPT.SB2.html
│ │ │ │ ├── ObjectType.26.html
│ │ │ │ ├── ReturnObject.8.html
│ │ │ │ ├── ReturnObject.9.html
│ │ │ │ └── Vanguard.TE-1.html
│ │ │ ├── pref_store.ini
│ │ │ └── trules
│ │ │ │ ├── ClassVisibility_28.rule
│ │ │ │ ├── DAXComment_1.rule
│ │ │ │ ├── DAXComment_16.rule
│ │ │ │ ├── DAXComment_2.rule
│ │ │ │ ├── DAXComment_3.rule
│ │ │ │ ├── DAXComment_4.rule
│ │ │ │ ├── DAXComment_5.rule
│ │ │ │ ├── DAXComment_6.rule
│ │ │ │ ├── DAXComment_7.rule
│ │ │ │ ├── InnerClass_29.rule
│ │ │ │ ├── JAVADOC_RFDT.rule
│ │ │ │ ├── MISC_BBDCC_7.rule
│ │ │ │ ├── MethodRule_12.rule
│ │ │ │ ├── Method_10.rule
│ │ │ │ ├── Method_11.rule
│ │ │ │ ├── Method_26.rule
│ │ │ │ ├── NAMING_LCIN.rule
│ │ │ │ ├── NamingRule_18.rule
│ │ │ │ ├── NamingRule_2223.rule
│ │ │ │ ├── OPT_RTEX.rule
│ │ │ │ ├── OPT_SB2.rule
│ │ │ │ ├── ObjectStream.rule
│ │ │ │ ├── ObjectType_27.rule
│ │ │ │ ├── ReturnObject_8.rule
│ │ │ │ ├── ReturnObject_9.rule
│ │ │ │ ├── SocketImpl.rule
│ │ │ │ ├── apacheJaxp.rule
│ │ │ │ ├── enumClass.rule
│ │ │ │ ├── enumField.rule
│ │ │ │ ├── enumLocal.rule
│ │ │ │ ├── getQueryString.rule
│ │ │ │ ├── integerValueOf.rule
│ │ │ │ ├── netProxy.rule
│ │ │ │ ├── nonFinalStatic.rule
│ │ │ │ ├── stringBuilder.rule
│ │ │ │ ├── unnamedImport.rule
│ │ │ │ └── utilQueue.rule
│ │ ├── com.parasoft.eclipse.checker.java.standards
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker.java.unit.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker.java.unit
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker.java
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.checker
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.java.parsers.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.pmt.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.pmt
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.util.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.util.java.core
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.util.java
│ │ │ └── pref_store.ini
│ │ ├── com.parasoft.eclipse.util
│ │ │ └── pref_store.ini
│ │ ├── net.sourceforge.metrics
│ │ │ ├── metricsdb.db
│ │ │ └── metricsdb.lg
│ │ ├── org.eclipse.core.resources
│ │ │ ├── .history
│ │ │ │ ├── 0
│ │ │ │ │ └── 107bdd5e014e001d1791de926c193726
│ │ │ │ ├── 7
│ │ │ │ │ └── 50e9b3a1fd4d001d1791de926c193726
│ │ │ │ ├── 8
│ │ │ │ │ ├── 4009d2dcfd4d001d1791de926c193726
│ │ │ │ │ └── c046da5e014e001d1791de926c193726
│ │ │ │ ├── 11
│ │ │ │ │ └── 304f5f42fd4d001d1791de926c193726
│ │ │ │ ├── 12
│ │ │ │ │ └── 5006059a004e001d1791de926c193726
│ │ │ │ ├── 13
│ │ │ │ │ ├── 8067afb2fc4d001d1791de926c193726
│ │ │ │ │ ├── d02c621d014e001d1791de926c193726
│ │ │ │ │ ├── d0752a95ff4d001d1791de926c193726
│ │ │ │ │ └── e0b2d55e014e001d1791de926c193726
│ │ │ │ ├── 15
│ │ │ │ │ └── 9090dcdcfd4d001d1791de926c193726
│ │ │ │ ├── 16
│ │ │ │ │ ├── 90cccdb6004e001d1791de926c193726
│ │ │ │ │ └── d0cd039a004e001d1791de926c193726
│ │ │ │ ├── 20
│ │ │ │ │ ├── 70598171fd4d001d1791de926c193726
│ │ │ │ │ └── f09e8875ff4d001d1791de926c193726
│ │ │ │ ├── 21
│ │ │ │ │ └── e07e04b7fe4d001d1791de926c193726
│ │ │ │ ├── 25
│ │ │ │ │ └── 1028d65e014e001d1791de926c193726
│ │ │ │ ├── 26
│ │ │ │ │ └── 20afff99004e001d1791de926c193726
│ │ │ │ ├── 28
│ │ │ │ │ └── 4098cfdcfd4d001d1791de926c193726
│ │ │ │ ├── 30
│ │ │ │ │ ├── 3033f65e014e001d1791de926c193726
│ │ │ │ │ ├── 30413affff4d001d1791de926c193726
│ │ │ │ │ └── d07afc99004e001d1791de926c193726
│ │ │ │ ├── 33
│ │ │ │ │ ├── 2091049a004e001d1791de926c193726
│ │ │ │ │ └── 50c4d65e014e001d1791de926c193726
│ │ │ │ ├── 34
│ │ │ │ │ └── 407fdb5e014e001d1791de926c193726
│ │ │ │ ├── 35
│ │ │ │ │ ├── 3054339afe4d001d1791de926c193726
│ │ │ │ │ └── 80a39a04014e001d1791de926c193726
│ │ │ │ ├── 36
│ │ │ │ │ └── a0f265bcff4d001d1791de926c193726
│ │ │ │ ├── 37
│ │ │ │ │ └── d06b0daefe4d001d1791de926c193726
│ │ │ │ ├── 41
│ │ │ │ │ └── d0eef94efd4d001d1791de926c193726
│ │ │ │ ├── 44
│ │ │ │ │ └── b061089a004e001d1791de926c193726
│ │ │ │ ├── 48
│ │ │ │ │ └── f0f7d05e014e001d1791de926c193726
│ │ │ │ ├── 49
│ │ │ │ │ └── 40e3e1f9004e001d1791de926c193726
│ │ │ │ ├── 53
│ │ │ │ │ └── 607ad45e014e001d1791de926c193726
│ │ │ │ ├── 54
│ │ │ │ │ └── 10013e03fe4d001d1791de926c193726
│ │ │ │ ├── 57
│ │ │ │ │ └── 0025099a004e001d1791de926c193726
│ │ │ │ ├── 58
│ │ │ │ │ └── b076f87ffc4d001d16fffe68dd403490
│ │ │ │ ├── 60
│ │ │ │ │ ├── 50ad89f7fe4d001d1791de926c193726
│ │ │ │ │ └── 6057fbd8004e001d1791de926c193726
│ │ │ │ ├── 63
│ │ │ │ │ ├── 00778851ff4d001d1791de926c193726
│ │ │ │ │ ├── 106ed84bfe4d001d1791de926c193726
│ │ │ │ │ └── 706876e5fd4d001d1791de926c193726
│ │ │ │ ├── 67
│ │ │ │ │ └── 90cca085ff4d001d1791de926c193726
│ │ │ │ ├── 68
│ │ │ │ │ ├── 80b7fb99004e001d1791de926c193726
│ │ │ │ │ └── e0936b09fe4d001d1791de926c193726
│ │ │ │ ├── 69
│ │ │ │ │ ├── 10d2f99dfe4d001d1791de926c193726
│ │ │ │ │ └── 40f0829afd4d001d1791de926c193726
│ │ │ │ ├── 71
│ │ │ │ │ ├── 60b27947ff4d001d1791de926c193726
│ │ │ │ │ └── b0b90fdffc4d001d1791de926c193726
│ │ │ │ ├── 72
│ │ │ │ │ ├── 5083d9dcfd4d001d1791de926c193726
│ │ │ │ │ └── d02f52b3ff4d001d1791de926c193726
│ │ │ │ ├── 76
│ │ │ │ │ └── d0e824b3004e001d1791de926c193726
│ │ │ │ ├── 79
│ │ │ │ │ ├── 400d4433ff4d001d1791de926c193726
│ │ │ │ │ └── 40bbd15e014e001d1791de926c193726
│ │ │ │ ├── 80
│ │ │ │ │ └── b09dfe99004e001d1791de926c193726
│ │ │ │ ├── 83
│ │ │ │ │ ├── 20aac722004e001d1791de926c193726
│ │ │ │ │ └── d05c019a004e001d1791de926c193726
│ │ │ │ ├── 85
│ │ │ │ │ └── 20aa1d6eff4d001d1791de926c193726
│ │ │ │ ├── 87
│ │ │ │ │ ├── 7004eb7afd4d001d1791de926c193726
│ │ │ │ │ └── e08df05e014e001d1791de926c193726
│ │ │ │ ├── 88
│ │ │ │ │ └── 9042dc5e014e001d1791de926c193726
│ │ │ │ ├── 90
│ │ │ │ │ └── 80e3ea76fe4d001d1791de926c193726
│ │ │ │ ├── 95
│ │ │ │ │ └── e053dddcfd4d001d1791de926c193726
│ │ │ │ ├── .index.1215623326600
│ │ │ │ ├── 1b
│ │ │ │ │ └── 70c5079a004e001d1791de926c193726
│ │ │ │ ├── 1c
│ │ │ │ │ ├── 1041d56cfe4d001d1791de926c193726
│ │ │ │ │ └── 2048b5ff004e001d1791de926c193726
│ │ │ │ ├── 1d
│ │ │ │ │ └── f045d1dcfd4d001d1791de926c193726
│ │ │ │ ├── 1e
│ │ │ │ │ └── 8026b87c014e001d1791de926c193726
│ │ │ │ ├── 1f
│ │ │ │ │ └── 7001fe99004e001d1791de926c193726
│ │ │ │ ├── 2d
│ │ │ │ │ └── 303cc3dcfd4d001d1791de926c193726
│ │ │ │ ├── 2f
│ │ │ │ │ └── 403ededcfd4d001d1791de926c193726
│ │ │ │ ├── 3a
│ │ │ │ │ └── 50099bcdfc4d001d1791de926c193726
│ │ │ │ ├── 3b
│ │ │ │ │ └── 5024009a004e001d1791de926c193726
│ │ │ │ ├── 3c
│ │ │ │ │ └── c094dadcfd4d001d1791de926c193726
│ │ │ │ ├── 3d
│ │ │ │ │ └── f0051a25fd4d001d1791de926c193726
│ │ │ │ ├── 3e
│ │ │ │ │ └── c0f3d25e014e001d1791de926c193726
│ │ │ │ ├── 3f
│ │ │ │ │ └── 20ad1894fe4d001d1791de926c193726
│ │ │ │ ├── 4d
│ │ │ │ │ ├── 5037fab4fb4d001d16fffe68dd403490
│ │ │ │ │ └── f098d8dcfd4d001d1791de926c193726
│ │ │ │ ├── 5a
│ │ │ │ │ └── e0adcedcfd4d001d1791de926c193726
│ │ │ │ ├── 5b
│ │ │ │ │ └── 00c5df5e014e001d1791de926c193726
│ │ │ │ ├── 5c
│ │ │ │ │ ├── 30c1fde6fc4d001d1791de926c193726
│ │ │ │ │ └── e092ccaffc4d001d1791de926c193726
│ │ │ │ ├── 5d
│ │ │ │ │ └── e012ff99004e001d1791de926c193726
│ │ │ │ ├── 5f
│ │ │ │ │ ├── 90d1d95e014e001d1791de926c193726
│ │ │ │ │ └── c076dfdcfd4d001d1791de926c193726
│ │ │ │ ├── 6a
│ │ │ │ │ ├── 50e1c191fd4d001d1791de926c193726
│ │ │ │ │ └── 70f76aa8fd4d001d1791de926c193726
│ │ │ │ ├── 6c
│ │ │ │ │ └── 20d7f22aff4d001d1791de926c193726
│ │ │ │ ├── 6f
│ │ │ │ │ └── f0cd13f0fc4d001d1791de926c193726
│ │ │ │ ├── 7b
│ │ │ │ │ ├── 3088e0dcfd4d001d1791de926c193726
│ │ │ │ │ └── 6050c206ff4d001d1791de926c193726
│ │ │ │ ├── 7c
│ │ │ │ │ └── 603ede5e014e001d1791de926c193726
│ │ │ │ ├── 8c
│ │ │ │ │ └── 807e0122014e001d1791de926c193726
│ │ │ │ ├── 9c
│ │ │ │ │ ├── 004df35e014e001d1791de926c193726
│ │ │ │ │ └── c0744030004e001d1791de926c193726
│ │ │ │ ├── 9d
│ │ │ │ │ └── 5035d95e014e001d1791de926c193726
│ │ │ │ ├── 9e
│ │ │ │ │ ├── 7078761e004e001d1791de926c193726
│ │ │ │ │ └── 90acf45e014e001d1791de926c193726
│ │ │ │ ├── 9f
│ │ │ │ │ └── 30b08bf6fc4d001d1791de926c193726
│ │ │ │ ├── a
│ │ │ │ │ └── 406eb265fd4d001d1791de926c193726
│ │ │ │ ├── a0
│ │ │ │ │ ├── f095928afd4d001d1791de926c193726
│ │ │ │ │ └── f099fee7fd4d001d1791de926c193726
│ │ │ │ ├── a1
│ │ │ │ │ └── 5012d7dcfd4d001d1791de926c193726
│ │ │ │ ├── a4
│ │ │ │ │ ├── 10b009cbfc4d001d1791de926c193726
│ │ │ │ │ └── a0dade5e014e001d1791de926c193726
│ │ │ │ ├── a5
│ │ │ │ │ └── b0f0059a004e001d1791de926c193726
│ │ │ │ ├── a6
│ │ │ │ │ └── 5010f45e014e001d1791de926c193726
│ │ │ │ ├── a8
│ │ │ │ │ ├── 7062bc8fff4d001d1791de926c193726
│ │ │ │ │ ├── a016d55e014e001d1791de926c193726
│ │ │ │ │ └── d0d39c3ffd4d001d1791de926c193726
│ │ │ │ ├── aa
│ │ │ │ │ └── d040bcc8004e001d1791de926c193726
│ │ │ │ ├── ac
│ │ │ │ │ └── b0eef84cfd4d001d1791de926c193726
│ │ │ │ ├── ad
│ │ │ │ │ └── 20d72482fd4d001d1791de926c193726
│ │ │ │ ├── ae
│ │ │ │ │ └── c0b7dc5e014e001d1791de926c193726
│ │ │ │ ├── af
│ │ │ │ │ └── a054d0ee004e001d1791de926c193726
│ │ │ │ ├── b0
│ │ │ │ │ └── 705e43c0004e001d1791de926c193726
│ │ │ │ ├── b1
│ │ │ │ │ └── 5009f8e4004e001d1791de926c193726
│ │ │ │ ├── b2
│ │ │ │ │ └── e0e9c4dcfd4d001d1791de926c193726
│ │ │ │ ├── b4
│ │ │ │ │ ├── 0055e932fd4d001d1791de926c193726
│ │ │ │ │ └── 1003f15e014e001d1791de926c193726
│ │ │ │ ├── b7
│ │ │ │ │ └── 500554c6fe4d001d1791de926c193726
│ │ │ │ ├── b8
│ │ │ │ │ └── 704ed6b9fc4d001d1791de926c193726
│ │ │ │ ├── c
│ │ │ │ │ ├── a0cfdaa6ff4d001d1791de926c193726
│ │ │ │ │ └── b0a9d0dcfd4d001d1791de926c193726
│ │ │ │ ├── c0
│ │ │ │ │ └── 207fdbdcfd4d001d1791de926c193726
│ │ │ │ ├── c1
│ │ │ │ │ ├── 10f9019a004e001d1791de926c193726
│ │ │ │ │ └── f0db54bdfe4d001d1791de926c193726
│ │ │ │ ├── c2
│ │ │ │ │ └── 60bb5f0b014e001d1791de926c193726
│ │ │ │ ├── c3
│ │ │ │ │ └── d0fcd75e014e001d1791de926c193726
│ │ │ │ ├── c4
│ │ │ │ │ └── a0dcc1dcfd4d001d1791de926c193726
│ │ │ │ ├── c8
│ │ │ │ │ └── b06ad76afd4d001d1791de926c193726
│ │ │ │ ├── c9
│ │ │ │ │ └── 00e3da5e014e001d1791de926c193726
│ │ │ │ ├── cb
│ │ │ │ │ └── 50122efb004e001d1791de926c193726
│ │ │ │ ├── cc
│ │ │ │ │ └── e0bafa27014e001d1791de926c193726
│ │ │ │ ├── cd
│ │ │ │ │ └── d048f55e014e001d1791de926c193726
│ │ │ │ ├── d1
│ │ │ │ │ ├── 20cdfa99004e001d1791de926c193726
│ │ │ │ │ └── 505825c9ff4d001d1791de926c193726
│ │ │ │ ├── d2
│ │ │ │ │ └── a043ef6cfc4d001d16fffe68dd403490
│ │ │ │ ├── d4
│ │ │ │ │ └── b0e5c6dcfd4d001d1791de926c193726
│ │ │ │ ├── d8
│ │ │ │ │ └── 90713420ff4d001d1791de926c193726
│ │ │ │ ├── d9
│ │ │ │ │ └── 30d0f762ff4d001d1791de926c193726
│ │ │ │ ├── db
│ │ │ │ │ └── f0b6d3dcfd4d001d1791de926c193726
│ │ │ │ ├── dd
│ │ │ │ │ ├── 406e029a004e001d1791de926c193726
│ │ │ │ │ └── 90c0009a004e001d1791de926c193726
│ │ │ │ ├── e0
│ │ │ │ │ ├── 10b7d35e014e001d1791de926c193726
│ │ │ │ │ └── b056c101ff4d001d1791de926c193726
│ │ │ │ ├── e5
│ │ │ │ │ └── 600495dffe4d001d1791de926c193726
│ │ │ │ ├── e6
│ │ │ │ │ └── d0bcb34a014e001d1791de926c193726
│ │ │ │ ├── ea
│ │ │ │ │ ├── b0d24a36014e001d1791de926c193726
│ │ │ │ │ └── d01db35cfd4d001d1791de926c193726
│ │ │ │ ├── eb
│ │ │ │ │ └── 2086c5dcfd4d001d1791de926c193726
│ │ │ │ ├── ec
│ │ │ │ │ ├── 205eaba2fc4d001d1791de926c193726
│ │ │ │ │ └── 20a4b026004e001d1791de926c193726
│ │ │ │ ├── ed
│ │ │ │ │ ├── 7049c6dcfd4d001d1791de926c193726
│ │ │ │ │ └── f0e1ce76fc4d001d16fffe68dd403490
│ │ │ │ ├── ef
│ │ │ │ │ ├── 006b8b30014e001d1791de926c193726
│ │ │ │ │ └── c0b2d5dcfd4d001d1791de926c193726
│ │ │ │ ├── f
│ │ │ │ │ └── b08b883f014e001d1791de926c193726
│ │ │ │ ├── f2
│ │ │ │ │ └── 4039e079ff4d001d1791de926c193726
│ │ │ │ ├── f5
│ │ │ │ │ └── 3029079a004e001d1791de926c193726
│ │ │ │ ├── f8
│ │ │ │ │ ├── 20f7c7dcfd4d001d1791de926c193726
│ │ │ │ │ └── d061aa13014e001d1791de926c193726
│ │ │ │ ├── f9
│ │ │ │ │ └── a058039a004e001d1791de926c193726
│ │ │ │ ├── fa
│ │ │ │ │ └── b01ad3dcfd4d001d1791de926c193726
│ │ │ │ ├── fb
│ │ │ │ │ └── c0bc8afefe4d001d1791de926c193726
│ │ │ │ ├── fc
│ │ │ │ │ └── f069972c004e001d1791de926c193726
│ │ │ │ └── fd
│ │ │ │ │ └── a0e0e3e0004e001d1791de926c193726
│ │ │ ├── .projects
│ │ │ │ ├── CourseExamples_LOD
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── e4
│ │ │ │ │ │ │ └── 11
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── CourseExamples_SRP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 2.tree
│ │ │ │ ├── Exercise1-NamingAndLongMethods
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── fd
│ │ │ │ │ │ │ └── 81
│ │ │ │ │ │ │ │ └── 40
│ │ │ │ │ │ │ │ └── bb
│ │ │ │ │ │ │ │ ├── 29
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── aa
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Exercise2-SRP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── fd
│ │ │ │ │ │ │ └── 81
│ │ │ │ │ │ │ │ └── 40
│ │ │ │ │ │ │ │ └── bb
│ │ │ │ │ │ │ │ ├── 29
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── aa
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ ├── 1.tree
│ │ │ │ │ └── 2.tree
│ │ │ │ ├── Exercise3-DIP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── fd
│ │ │ │ │ │ │ └── 81
│ │ │ │ │ │ │ │ └── 40
│ │ │ │ │ │ │ │ └── bb
│ │ │ │ │ │ │ │ ├── 4
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 29
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 51
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 54
│ │ │ │ │ │ │ │ ├── 45
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── 9c
│ │ │ │ │ │ │ │ │ ├── 1b
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 96
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 5e
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── b1
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ ├── 1.tree
│ │ │ │ │ └── 2.tree
│ │ │ │ ├── Exercise4-OCP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── fd
│ │ │ │ │ │ │ └── 81
│ │ │ │ │ │ │ │ └── 40
│ │ │ │ │ │ │ │ └── bb
│ │ │ │ │ │ │ │ ├── 4
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 29
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 51
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 54
│ │ │ │ │ │ │ │ ├── 45
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── 9c
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 96
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── b1
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ ├── 1.tree
│ │ │ │ │ └── 2.tree
│ │ │ │ ├── Exercise5-LSP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ ├── fd
│ │ │ │ │ │ │ └── 81
│ │ │ │ │ │ │ │ └── 40
│ │ │ │ │ │ │ │ └── bb
│ │ │ │ │ │ │ │ ├── 4
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 29
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 51
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 54
│ │ │ │ │ │ │ │ └── 9c
│ │ │ │ │ │ │ │ │ ├── 1b
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 96
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ ├── 1d
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ │ │ └── b1
│ │ │ │ │ │ │ │ └── history.index
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Exercise6-ISP
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Exercise7-LOD
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Exercise8-Packaging
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Exercise9-PackageDecoupling
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Library
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ ├── Library_Test
│ │ │ │ │ ├── .indexes
│ │ │ │ │ │ └── properties.index
│ │ │ │ │ ├── .location
│ │ │ │ │ ├── .markers
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .properties
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ │ └── Libs
│ │ │ │ │ ├── .markers.snap
│ │ │ │ │ ├── .syncinfo.snap
│ │ │ │ │ └── 1.tree
│ │ │ ├── .root
│ │ │ │ ├── .indexes
│ │ │ │ │ ├── history.version
│ │ │ │ │ ├── properties.index
│ │ │ │ │ └── properties.version
│ │ │ │ ├── .markers.snap
│ │ │ │ ├── .properties
│ │ │ │ └── 6.tree
│ │ │ ├── .safetable
│ │ │ │ ├── com.ibm.ws.rapiddeploy.core.3
│ │ │ │ └── org.eclipse.core.resources
│ │ │ └── .snap
│ │ ├── org.eclipse.core.runtime
│ │ │ └── .settings
│ │ │ │ ├── com.ibm.etools.websphere.runtime.core.prefs
│ │ │ │ ├── com.ibm.sse.editor.prefs
│ │ │ │ ├── com.ibm.sse.model.jsp.prefs
│ │ │ │ ├── com.ibm.wtp.migration.prefs
│ │ │ │ ├── com.ibm.wtp.server.core.prefs
│ │ │ │ ├── org.eclipse.core.resources.prefs
│ │ │ │ ├── org.eclipse.debug.ui.prefs
│ │ │ │ ├── org.eclipse.equinox.p2.ui.sdk.prefs
│ │ │ │ ├── org.eclipse.jdt.core.prefs
│ │ │ │ ├── org.eclipse.jdt.junit.prefs
│ │ │ │ ├── org.eclipse.jdt.launching.prefs
│ │ │ │ ├── org.eclipse.jdt.ui.prefs
│ │ │ │ ├── org.eclipse.team.ui.prefs
│ │ │ │ ├── org.eclipse.ui.editors.prefs
│ │ │ │ ├── org.eclipse.ui.ide.prefs
│ │ │ │ ├── org.eclipse.ui.prefs
│ │ │ │ └── org.eclipse.webbrowser.prefs
│ │ ├── org.eclipse.debug.core
│ │ │ └── .launches
│ │ │ │ ├── CourseExamples_SRP.launch
│ │ │ │ ├── Exercise1-NamingAndLongMethods.launch
│ │ │ │ ├── Exercise2-SRP.launch
│ │ │ │ ├── Exercise3-DIP.launch
│ │ │ │ ├── Exercise4-OCP.launch
│ │ │ │ ├── Exercise5-LSP.launch
│ │ │ │ ├── Exercise6-ISP.launch
│ │ │ │ ├── Exercise7-LOD.launch
│ │ │ │ ├── Exercise8-Packaging.launch
│ │ │ │ ├── Exercise9-PackageDecoupling.launch
│ │ │ │ ├── JavaSource (1).launch
│ │ │ │ ├── JavaSource (10).launch
│ │ │ │ ├── JavaSource (2).launch
│ │ │ │ ├── JavaSource (3).launch
│ │ │ │ ├── JavaSource (4).launch
│ │ │ │ ├── JavaSource (5).launch
│ │ │ │ ├── JavaSource (6).launch
│ │ │ │ ├── JavaSource (7).launch
│ │ │ │ ├── JavaSource (8).launch
│ │ │ │ ├── JavaSource (9).launch
│ │ │ │ ├── JavaSource.launch
│ │ │ │ ├── Library.launch
│ │ │ │ ├── WebSphere Application Server v6.0.launch
│ │ │ │ └── WebSphere v6.0 Server Launcher.launch
│ │ ├── org.eclipse.debug.ui
│ │ │ └── launchConfigurationHistory.xml
│ │ ├── org.eclipse.jdt.core
│ │ │ ├── 1104375426.index
│ │ │ ├── 1260857765.index
│ │ │ ├── 1271342938.index
│ │ │ ├── 129576637.index
│ │ │ ├── 1374977043.index
│ │ │ ├── 1384487945.index
│ │ │ ├── 156905802.index
│ │ │ ├── 1791931649.index
│ │ │ ├── 1819685514.index
│ │ │ ├── 183168184.index
│ │ │ ├── 1833648217.index
│ │ │ ├── 2068318559.index
│ │ │ ├── 2293455564.index
│ │ │ ├── 233864429.index
│ │ │ ├── 2357671672.index
│ │ │ ├── 2545238116.index
│ │ │ ├── 2561738076.index
│ │ │ ├── 2761146558.index
│ │ │ ├── 2897855411.index
│ │ │ ├── 3005166254.index
│ │ │ ├── 3055931853.index
│ │ │ ├── 3187238971.index
│ │ │ ├── 3224793320.index
│ │ │ ├── 3266567714.index
│ │ │ ├── 3301410802.index
│ │ │ ├── 3302703152.index
│ │ │ ├── 3321539481.index
│ │ │ ├── 3454832323.index
│ │ │ ├── 3484204191.index
│ │ │ ├── 3712507179.index
│ │ │ ├── 3941738062.index
│ │ │ ├── 4043959229.index
│ │ │ ├── 4111408494.index
│ │ │ ├── 4184060736.index
│ │ │ ├── 4238209716.index
│ │ │ ├── 4289848332.index
│ │ │ ├── 524800163.index
│ │ │ ├── 639426186.index
│ │ │ ├── 788406425.index
│ │ │ ├── 790664647.index
│ │ │ ├── 818298852.index
│ │ │ ├── externalLibsTimeStamps
│ │ │ ├── savedIndexNames.txt
│ │ │ └── variablesAndContainers.dat
│ │ ├── org.eclipse.jdt.junit
│ │ │ ├── dialog_settings.xml
│ │ │ └── history
│ │ │ │ ├── 20080709-162017.367.xml
│ │ │ │ ├── 20080709-162120.460.xml
│ │ │ │ ├── 20080709-162622.525.xml
│ │ │ │ ├── 20080709-162904.367.xml
│ │ │ │ ├── 20080709-163500.341.xml
│ │ │ │ ├── 20080709-164434.442.xml
│ │ │ │ └── 20080709-165220.623.xml
│ │ ├── org.eclipse.jdt.launching
│ │ │ └── libraryInfos.xml
│ │ ├── org.eclipse.jdt.ui
│ │ │ ├── OpenTypeHistory.xml
│ │ │ ├── QualifiedTypeNameHistory.xml
│ │ │ ├── dialog_settings.xml
│ │ │ └── jdt-images
│ │ │ │ ├── 0.png
│ │ │ │ ├── 1.png
│ │ │ │ └── 2.png
│ │ ├── org.eclipse.ltk.core.refactoring
│ │ │ └── .refactorings
│ │ │ │ ├── .workspace
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── CourseExamples_LOD
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── CourseExamples_SRP
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── Exercise1-NamingAndLongMethods
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── Exercise3-DIP
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── Exercise4-OCP
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── Exercise5-LSP
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ ├── Exercise6-ISP
│ │ │ │ └── 2008
│ │ │ │ │ └── 7
│ │ │ │ │ └── 28
│ │ │ │ │ ├── refactorings.history
│ │ │ │ │ └── refactorings.index
│ │ │ │ └── Exercise7-LOD
│ │ │ │ └── 2008
│ │ │ │ └── 7
│ │ │ │ └── 28
│ │ │ │ ├── refactorings.history
│ │ │ │ └── refactorings.index
│ │ ├── org.eclipse.ltk.ui.refactoring
│ │ │ └── dialog_settings.xml
│ │ ├── org.eclipse.ui.ide
│ │ │ └── dialog_settings.xml
│ │ ├── org.eclipse.ui.workbench
│ │ │ ├── dialog_settings.xml
│ │ │ ├── workbench.xml
│ │ │ └── workingsets.xml
│ │ └── org.eclipse.ui
│ │ │ └── dialog_settings.xml
│ ├── CommonBaseEvents.log.lck
│ ├── CommonBaseEvents1178209054636.log
│ └── version.ini
├── CourseExamples_LOD
│ ├── .classpath
│ ├── .project
│ └── src
│ │ ├── lod1
│ │ ├── Address.java
│ │ ├── Bank.java
│ │ ├── BankAccount.java
│ │ ├── Benefits.java
│ │ ├── Database.java
│ │ ├── Employee.java
│ │ ├── Employer.java
│ │ ├── FedTaxCalculator.java
│ │ ├── FedTaxDeductionsCalculator.java
│ │ ├── FicaTaxCalculator.java
│ │ ├── FicaTaxDeductionCalculator.java
│ │ ├── HourlyPayClassification.java
│ │ ├── LocalTaxCalculator.java
│ │ ├── LocalTaxDeductionCalculator.java
│ │ ├── MedTaxCalculator.java
│ │ ├── MedTaxDeductionCalculator.java
│ │ ├── MedicalPlan.java
│ │ ├── MockDatabase.java
│ │ ├── MockFedTaxcalculator.java
│ │ ├── MockFicaTaxDeductionCalculator.java
│ │ ├── MockLocalTaxDeductionCalculator.java
│ │ ├── MockPreTaxDeductionCalculator.java
│ │ ├── MockServiceLocator.java
│ │ ├── MockStateTaxDeductionCalculator.java
│ │ ├── MockTransferMoneyService.java
│ │ ├── MocktMedTaxDeuctionCalculator.java
│ │ ├── Money.java
│ │ ├── PayClassification.java
│ │ ├── PayEmployeeTransaction.java
│ │ ├── PayEmployeeTransactionTest.java
│ │ ├── PayStub.java
│ │ ├── Plan401K.java
│ │ ├── PreTaxCalculator.java
│ │ ├── PreTaxDeductionsCalculator.java
│ │ ├── ServiceLocator.java
│ │ ├── StateTaxCalculator.java
│ │ ├── StateTaxDeductionCalculator.java
│ │ ├── TaxInfo.java
│ │ ├── Timecard.java
│ │ ├── TransferMoneyService.java
│ │ ├── W4Form.java
│ │ └── YtdPay.java
│ │ └── lod2
│ │ ├── CompositeDeductionCalculator.java
│ │ ├── DeductionCalculator.java
│ │ ├── Employee.java
│ │ ├── FedTaxCalculator.java
│ │ ├── FicaTaxCalculator.java
│ │ ├── HourlyPayClassification.java
│ │ ├── MedicalPlan.java
│ │ ├── Money.java
│ │ ├── PayClassification.java
│ │ ├── PayStub.java
│ │ ├── PaymentMethod.java
│ │ └── Timecard.java
├── CourseExamples_SRP
│ ├── .classpath
│ ├── .project
│ ├── bin
│ │ └── srp1
│ │ │ └── diagrams
│ │ │ ├── EmployeeSrpImproved-Facade.uxf
│ │ │ ├── EmployeeSrpImproved-ReverseDependencies.uxf
│ │ │ ├── EmployeeSrpImproved-Template.uxf
│ │ │ ├── EmployeeSrpImproved-Visitor.uxf
│ │ │ └── EmployeeSrpProblem.uxf
│ └── src
│ │ ├── srp1
│ │ ├── Bank.java
│ │ ├── Database.java
│ │ ├── Employee.java
│ │ ├── EmployeeReport.java
│ │ ├── Money.java
│ │ ├── PayrollReport.java
│ │ ├── TaxReport.java
│ │ └── diagrams
│ │ │ ├── EmployeeSrpImproved-Facade.uxf
│ │ │ ├── EmployeeSrpImproved-ReverseDependencies.uxf
│ │ │ ├── EmployeeSrpImproved-Template.uxf
│ │ │ ├── EmployeeSrpImproved-Visitor.uxf
│ │ │ └── EmployeeSrpProblem.uxf
│ │ ├── srp2
│ │ ├── Bank.java
│ │ ├── Database.java
│ │ ├── Employee.java
│ │ ├── EmployeeGateway.java
│ │ ├── EmployeeReport.java
│ │ ├── Money.java
│ │ ├── PayrollReport.java
│ │ └── TaxReport.java
│ │ ├── srp3
│ │ ├── Bank.java
│ │ ├── Employee.java
│ │ ├── EmployeeFacade.java
│ │ ├── EmployeeGateway.java
│ │ ├── EmployeeInfo.java
│ │ ├── EmployeeReport.java
│ │ ├── EmployeeReportHelper.java
│ │ ├── ParyollReport.java
│ │ └── TaxReport.java
│ │ ├── srp4
│ │ ├── Bank.java
│ │ ├── Employee.java
│ │ ├── EmployeeDatabase.java
│ │ ├── EmployeeGateway.java
│ │ ├── EmployeeList.java
│ │ ├── EmployeeReport.java
│ │ ├── EmployeeReporter.java
│ │ ├── Money.java
│ │ ├── PayrollReport.java
│ │ └── TaxReport.java
│ │ └── srp5
│ │ ├── Employee.java
│ │ ├── EmployeeList.java
│ │ ├── EmployeeReport.java
│ │ ├── EmployeeReporter.java
│ │ ├── Money.java
│ │ ├── PayrollReport.java
│ │ ├── PersonelReport.java
│ │ └── TaxReport.java
├── Exercise1-NamingAndLongMethods
│ ├── .classpath
│ ├── .compatibility
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── Catalog.java
│ │ │ ├── CatalogTest.java
│ │ │ ├── IsbnService.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── data
│ │ │ ├── DataServices.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ └── PatronDoesNotExistException.java
│ │ │ ├── mocks
│ │ │ ├── MockDataServices.java
│ │ │ ├── MockDataServicesBookAccessTest.java
│ │ │ └── MockDataServicesPatronAccessTest.java
│ │ │ └── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── BookTitle.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── Receipt.java
│ └── WebContent
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ └── WEB-INF
│ │ ├── ibm-web-bnd.xmi
│ │ ├── ibm-web-ext.xmi
│ │ └── web.xml
├── Exercise2-SRP
│ ├── .classpath
│ ├── .compatibility
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── BookCatalogWhenEmptyTest.java
│ │ │ ├── BookCatalogWithOneCopyTest.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── StandardTimeSource.java
│ │ │ ├── TimeSource.java
│ │ │ ├── data
│ │ │ ├── DataServices.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ └── PatronDoesNotExistException.java
│ │ │ ├── mocks
│ │ │ ├── MockDataServices.java
│ │ │ ├── MockDataServicesBookAccessTest.java
│ │ │ ├── MockDataServicesPatronAccessTest.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── BookCopy.java
│ │ │ ├── BookTitle.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── Receipt.java
│ │ │ └── utils
│ │ │ ├── DateUtil.java
│ │ │ └── DateUtilTest.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ └── web.xml
│ │ └── theme
│ │ │ └── Master.css
│ └── junit.jar
├── Exercise3-DIP
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── MediaGatewayTest.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ ├── PatronGateway.java
│ │ │ └── PatronGatewayTest.java
│ │ │ ├── libraryRules
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockPageContext.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── services
│ │ │ ├── CardPrinter.java
│ │ │ ├── CompactDiscService.java
│ │ │ ├── IsbnService.java
│ │ │ └── IsbnServiceTest.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ └── WebContent
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── ibm-web-bnd.xmi
│ │ ├── ibm-web-ext.xmi
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise4-OCP
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscService.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── IsbnService.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── LibraryWithMockServices.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── MediaCatalogWhenEmptyTest.java
│ │ │ ├── MediaCatalogWithOneCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockLibraryContext.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockMediaGatewayTest.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ ├── MockPatronGatewayTest.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── services
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ └── BooksController_CheckoutTest.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ └── WebContent
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── ibm-web-bnd.xmi
│ │ ├── ibm-web-ext.xmi
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ ├── accept.jsp
│ │ │ │ ├── delete.jsp
│ │ │ │ ├── manage.jsp
│ │ │ │ └── modify.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── checkin.jsp
│ │ │ │ │ └── checkout.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ └── LibraryTags.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise5-LSP
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── MediaCatalog.java
│ │ │ ├── MediaCatalogTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── BookTest.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── reports
│ │ │ ├── BookFormatReport.java
│ │ │ └── BookFormatReportTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ ├── pages
│ │ │ │ ├── books
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── compactDiscs
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── debug
│ │ │ │ │ └── setDate.jsp
│ │ │ │ ├── handler_result.jsp
│ │ │ │ ├── patrons
│ │ │ │ │ ├── books
│ │ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ │ └── returnCopy.jsp
│ │ │ │ │ ├── history.jsp
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── template.jsp
│ │ │ │ └── welcome.jsp
│ │ │ ├── tld
│ │ │ │ ├── LibraryTags.tld
│ │ │ │ ├── c.tld
│ │ │ │ ├── fmt.tld
│ │ │ │ ├── sql.tld
│ │ │ │ └── x.tld
│ │ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
│ └── junit.jar
├── Exercise6-ISP
│ ├── .DS_Store
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CDGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ └── WebContent
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── ibm-web-bnd.xmi
│ │ ├── ibm-web-ext.xmi
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise7-LOD
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ ├── Periodical.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServletTest_OnlineVsOffline.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ └── WebContent
│ │ ├── META-INF
│ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ ├── ibm-web-bnd.xmi
│ │ ├── ibm-web-ext.xmi
│ │ ├── pages
│ │ │ ├── books
│ │ │ │ └── manage.jsp
│ │ │ ├── compactDiscs
│ │ │ │ └── manage.jsp
│ │ │ ├── debug
│ │ │ │ └── setDate.jsp
│ │ │ ├── handler_result.jsp
│ │ │ ├── patrons
│ │ │ │ ├── books
│ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ └── returnCopy.jsp
│ │ │ │ ├── history.jsp
│ │ │ │ └── manage.jsp
│ │ │ ├── template.jsp
│ │ │ └── welcome.jsp
│ │ ├── tld
│ │ │ ├── LibraryTags.tld
│ │ │ ├── c.tld
│ │ │ ├── fmt.tld
│ │ │ ├── sql.tld
│ │ │ └── x.tld
│ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
├── Exercise8-Packaging
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CardPrinterTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── PrintAuthorization.java
│ │ │ ├── PrintAuthorizationTest.java
│ │ │ ├── PrintRecord.java
│ │ │ ├── PrintUsage.java
│ │ │ ├── PrinterUsageTest.java
│ │ │ ├── ReturnCondition.java
│ │ │ ├── StandardTimeSource.java
│ │ │ └── TimeSource.java
│ │ │ ├── mocks
│ │ │ ├── CardPrinter.java
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockTimeSource.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ ├── Periodical.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ ├── InMemoryPatronGatewayFindLikeTest.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ └── StringUtil.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── servlet
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerServlet_OnlineVsOfflineTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ ├── pages
│ │ │ │ ├── books
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── compactDiscs
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── debug
│ │ │ │ │ └── setDate.jsp
│ │ │ │ ├── handler_result.jsp
│ │ │ │ ├── patrons
│ │ │ │ │ ├── books
│ │ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ │ └── returnCopy.jsp
│ │ │ │ │ ├── history.jsp
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── template.jsp
│ │ │ │ └── welcome.jsp
│ │ │ ├── tld
│ │ │ │ ├── LibraryTags.tld
│ │ │ │ ├── c.tld
│ │ │ │ ├── fmt.tld
│ │ │ │ ├── sql.tld
│ │ │ │ └── x.tld
│ │ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
│ └── junit.jar
├── Exercise9-PackageDecoupling
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── application
│ │ │ ├── Application.java
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BookCatalog.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── PatronRegistrar.java
│ │ │ └── ServiceProvider.java
│ │ │ ├── gateways
│ │ │ ├── BookGateway.java
│ │ │ ├── CdDoesNotExistException.java
│ │ │ ├── CompactDiscGateway.java
│ │ │ ├── ComputerDoesNotExistException.java
│ │ │ ├── ComputerGateway.java
│ │ │ ├── IsbnDoesNotExistException.java
│ │ │ ├── MediaGateway.java
│ │ │ ├── PatronDoesNotExistException.java
│ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ ├── ComputerCatalog.java
│ │ │ ├── ComputerLoanReceipt.java
│ │ │ ├── Damageable.java
│ │ │ ├── DamagedCondition.java
│ │ │ ├── Library.java
│ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ ├── LibraryBorrowingTest.java
│ │ │ ├── LibraryCDTest.java
│ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ ├── LibraryReturnCopyTest.java
│ │ │ └── ReturnCondition.java
│ │ │ ├── mocks
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCardPrinterTest.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockJspWriter.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPageContext.java
│ │ │ └── MockPatronGateway.java
│ │ │ ├── models
│ │ │ ├── Address.java
│ │ │ ├── Book.java
│ │ │ ├── CompactDisc.java
│ │ │ ├── CompactDiscTest.java
│ │ │ ├── Computer.java
│ │ │ ├── LoanReceipt.java
│ │ │ ├── Media.java
│ │ │ ├── MediaCopy.java
│ │ │ ├── MediaCopyTest.java
│ │ │ ├── Patron.java
│ │ │ ├── PatronTest.java
│ │ │ └── ReturnReceipt.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ ├── InMemoryPatronGatewayFindLikeTest.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ ├── WorldCatIsbnService.java
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── services
│ │ │ ├── CardPrinter.java
│ │ │ ├── CompactDiscService.java
│ │ │ └── IsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── DateUtilTest.java
│ │ │ ├── MockTimeSource.java
│ │ │ ├── Money.java
│ │ │ ├── MoneyTest.java
│ │ │ ├── StandardTimeSource.java
│ │ │ ├── StringUtil.java
│ │ │ └── TimeSource.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── ActionResult.java
│ │ │ ├── ActionResultTest.java
│ │ │ ├── BooksController.java
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── DebugController.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── LibraryController.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── MockServiceProvider.java
│ │ │ ├── OffLineServiceProvider.java
│ │ │ ├── OnLineServiceProvider.java
│ │ │ ├── PatronsController.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── TestController.java
│ │ │ ├── WelcomeController.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ ├── BooksController_ReturnTest.java
│ │ │ │ └── LoanRecord.java
│ │ │ ├── framework
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ControllerServletOnlineVsOfflineTest.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── ServletHelper.java
│ │ │ └── ServletHelperTest.java
│ │ │ ├── tags
│ │ │ ├── ActionPathTag.java
│ │ │ └── ActionPathTagTest.java
│ │ │ └── utils
│ │ │ └── ControllerTestHelper.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ ├── pages
│ │ │ │ ├── books
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── compactDiscs
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── debug
│ │ │ │ │ └── setDate.jsp
│ │ │ │ ├── handler_result.jsp
│ │ │ │ ├── patrons
│ │ │ │ │ ├── books
│ │ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ │ └── returnCopy.jsp
│ │ │ │ │ ├── history.jsp
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── template.jsp
│ │ │ │ └── welcome.jsp
│ │ │ ├── tld
│ │ │ │ ├── LibraryTags.tld
│ │ │ │ ├── c.tld
│ │ │ │ ├── fmt.tld
│ │ │ │ ├── sql.tld
│ │ │ │ └── x.tld
│ │ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
│ └── junit.jar
├── Library
│ ├── .classpath
│ ├── .compatibility
│ ├── .eisConnections
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── application
│ │ │ ├── Application.java
│ │ │ ├── BookCatalog.java
│ │ │ ├── CompactDiscCatalog.java
│ │ │ ├── PatronRegistrar.java
│ │ │ ├── ServiceProvider.java
│ │ │ ├── gateways
│ │ │ │ ├── BookGateway.java
│ │ │ │ ├── CdDoesNotExistException.java
│ │ │ │ ├── CompactDiscGateway.java
│ │ │ │ ├── ComputerDoesNotExistException.java
│ │ │ │ ├── ComputerGateway.java
│ │ │ │ ├── IsbnDoesNotExistException.java
│ │ │ │ ├── MediaGateway.java
│ │ │ │ ├── PatronDoesNotExistException.java
│ │ │ │ └── PatronGateway.java
│ │ │ ├── libraryRules
│ │ │ │ ├── ComputerCatalog.java
│ │ │ │ ├── ComputerLoanReceipt.java
│ │ │ │ ├── Damageable.java
│ │ │ │ ├── DamagedCondition.java
│ │ │ │ ├── Library.java
│ │ │ │ └── ReturnCondition.java
│ │ │ ├── models
│ │ │ │ ├── Address.java
│ │ │ │ ├── Book.java
│ │ │ │ ├── CompactDisc.java
│ │ │ │ ├── Computer.java
│ │ │ │ ├── LoanReceipt.java
│ │ │ │ ├── Media.java
│ │ │ │ ├── MediaCopy.java
│ │ │ │ ├── Patron.java
│ │ │ │ └── ReturnReceipt.java
│ │ │ └── services
│ │ │ │ ├── CardPrinter.java
│ │ │ │ ├── CompactDiscService.java
│ │ │ │ └── IsbnService.java
│ │ │ ├── mocks
│ │ │ ├── MockCardPrinter.java
│ │ │ ├── MockCompactDiscService.java
│ │ │ ├── MockComputerGateway.java
│ │ │ ├── MockIsbnService.java
│ │ │ ├── MockMediaGateway.java
│ │ │ ├── MockPatronGateway.java
│ │ │ └── MockServiceProvider.java
│ │ │ ├── offline
│ │ │ ├── InMemoryCardPrinter.java
│ │ │ ├── InMemoryCompactDiscService.java
│ │ │ ├── InMemoryComputerGateway.java
│ │ │ ├── InMemoryIsbnService.java
│ │ │ ├── InMemoryMediaGateway.java
│ │ │ ├── InMemoryPatronGateway.java
│ │ │ └── OffLineServiceProvider.java
│ │ │ ├── online
│ │ │ ├── OnLineServiceProvider.java
│ │ │ └── WorldCatIsbnService.java
│ │ │ ├── utils
│ │ │ ├── DateUtil.java
│ │ │ ├── MockTimeSource.java
│ │ │ ├── Money.java
│ │ │ ├── StandardTimeSource.java
│ │ │ ├── StringUtil.java
│ │ │ └── TimeSource.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── BooksController.java
│ │ │ ├── CompactDiscsController.java
│ │ │ ├── DebugController.java
│ │ │ ├── LibraryController.java
│ │ │ ├── LibraryServlet.java
│ │ │ ├── MediaController.java
│ │ │ ├── MediaCopyIdComparator.java
│ │ │ ├── PatronsController.java
│ │ │ ├── WelcomeController.java
│ │ │ └── patrons
│ │ │ │ ├── BooksController.java
│ │ │ │ └── LoanRecord.java
│ │ │ └── framework
│ │ │ ├── ActionResult.java
│ │ │ ├── Controller.java
│ │ │ ├── ControllerFinder.java
│ │ │ ├── ControllerServlet.java
│ │ │ ├── ServletHelper.java
│ │ │ └── tags
│ │ │ └── ActionPathTag.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ ├── pages
│ │ │ │ ├── books
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── compactDiscs
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── debug
│ │ │ │ │ └── setDate.jsp
│ │ │ │ ├── handler_result.jsp
│ │ │ │ ├── patrons
│ │ │ │ │ ├── books
│ │ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ │ └── returnCopy.jsp
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── template.jsp
│ │ │ │ └── welcome.jsp
│ │ │ ├── tld
│ │ │ │ ├── LibraryTags.tld
│ │ │ │ ├── c.tld
│ │ │ │ ├── fmt.tld
│ │ │ │ ├── sql.tld
│ │ │ │ └── x.tld
│ │ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── images
│ │ │ └── OMI.gif
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
│ └── junit.jar
├── Library_EAR
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ └── META-INF
│ │ ├── .modulemaps
│ │ ├── application.xml
│ │ └── ibmconfig
│ │ └── cells
│ │ └── defaultCell
│ │ ├── applications
│ │ └── defaultApp
│ │ │ └── deployments
│ │ │ └── defaultApp
│ │ │ ├── deployment.xml
│ │ │ ├── resources.xml
│ │ │ └── variables.xml
│ │ └── security.xml
├── Library_Test
│ ├── .classpath
│ ├── .compatibility
│ ├── .j2ee
│ ├── .project
│ ├── .runtime
│ ├── .websettings
│ ├── .website-config
│ ├── JavaSource
│ │ └── com
│ │ │ └── objectmentor
│ │ │ └── library
│ │ │ ├── application
│ │ │ ├── ApplicationTest.java
│ │ │ ├── BookCatalogTest.java
│ │ │ ├── CompactDiscCatalogTest.java
│ │ │ ├── libraryRules
│ │ │ │ ├── LibraryAcceptComputerTest.java
│ │ │ │ ├── LibraryBorrowComputerTest.java
│ │ │ │ ├── LibraryBorrowingTest.java
│ │ │ │ ├── LibraryCDTest.java
│ │ │ │ ├── LibraryRegisterPatronTest.java
│ │ │ │ └── LibraryReturnCopyTest.java
│ │ │ └── models
│ │ │ │ ├── CompactDiscTest.java
│ │ │ │ ├── MediaCopyTest.java
│ │ │ │ └── PatronTest.java
│ │ │ ├── mocks
│ │ │ └── MockCardPrinterTest.java
│ │ │ ├── offline
│ │ │ ├── InMemoryMediaGatewayTest.java
│ │ │ ├── InMemoryPatronGatewayFindLikeTest.java
│ │ │ └── InMemoryPatronGatewayTest.java
│ │ │ ├── online
│ │ │ └── WorldCatIsbnServiceTest.java
│ │ │ ├── utils
│ │ │ ├── DateUtilTest.java
│ │ │ └── MoneyTest.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ ├── BooksController_DeleteBooksTest.java
│ │ │ ├── BooksController_ManageTest.java
│ │ │ ├── BooksController_NewBooksTest.java
│ │ │ ├── CompactDiscsController_GetTest.java
│ │ │ ├── CompactDiscsController_PostTest.java
│ │ │ ├── DebugControllerTest.java
│ │ │ ├── LibraryControllerTest.java
│ │ │ ├── LibraryServletOnlineVsOfflineTest.java
│ │ │ ├── MediaCopyIdComparatorTest.java
│ │ │ ├── PatronsController_DeletedPatronTest.java
│ │ │ ├── PatronsController_ModifyPatronTest.java
│ │ │ ├── PatronsController_NewPatronTest.java
│ │ │ ├── WelcomeControllerTest.java
│ │ │ ├── patrons
│ │ │ │ ├── BooksController_LoanTest.java
│ │ │ │ └── BooksController_ReturnTest.java
│ │ │ └── utils
│ │ │ │ └── ControllerTestHelper.java
│ │ │ └── framework
│ │ │ ├── ActionResultTest.java
│ │ │ ├── ControllerFinderTest.java
│ │ │ ├── ControllerServletTest.java
│ │ │ ├── ControllerTest.java
│ │ │ ├── ServletHelperTest.java
│ │ │ ├── TestController.java
│ │ │ ├── mocks
│ │ │ ├── MockHttpServletRequest.java
│ │ │ ├── MockHttpServletResponse.java
│ │ │ ├── MockHttpSession.java
│ │ │ ├── MockJspWriter.java
│ │ │ └── MockPageContext.java
│ │ │ └── tags
│ │ │ └── ActionPathTagTest.java
│ ├── WebContent
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── WEB-INF
│ │ │ ├── ibm-web-bnd.xmi
│ │ │ ├── ibm-web-ext.xmi
│ │ │ ├── pages
│ │ │ │ ├── books
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── compactDiscs
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── debug
│ │ │ │ │ └── setDate.jsp
│ │ │ │ ├── handler_result.jsp
│ │ │ │ ├── patrons
│ │ │ │ │ ├── books
│ │ │ │ │ │ ├── identifyPatron.jsp
│ │ │ │ │ │ ├── loanBook.jsp
│ │ │ │ │ │ ├── loanRecords.jsp
│ │ │ │ │ │ ├── loanToPatron.jsp
│ │ │ │ │ │ ├── patronSelector.jsp
│ │ │ │ │ │ └── returnCopy.jsp
│ │ │ │ │ └── manage.jsp
│ │ │ │ ├── template.jsp
│ │ │ │ └── welcome.jsp
│ │ │ ├── tld
│ │ │ │ ├── LibraryTags.tld
│ │ │ │ ├── c.tld
│ │ │ │ ├── fmt.tld
│ │ │ │ ├── sql.tld
│ │ │ │ └── x.tld
│ │ │ └── web.xml
│ │ ├── debug.jsp
│ │ ├── error.jsp
│ │ ├── index.jsp
│ │ ├── library.js
│ │ └── styles.css
│ └── junit.jar
├── Libs
│ ├── .project
│ ├── javax.servlet.jar
│ └── javax.servlet.jsp.jar
└── wrd.log
└── README
/.gitignore:
--------------------------------------------------------------------------------
1 | *.class
2 | *.iml
3 | *.iws
4 | *.ipr
5 |
6 |
--------------------------------------------------------------------------------
/Dean's solutions/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/.DS_Store
--------------------------------------------------------------------------------
/Dean's solutions/Exercise1-NamingAndLongMethods/lib/catalina-ant.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise1-NamingAndLongMethods/lib/catalina-ant.jar
--------------------------------------------------------------------------------
/Dean's solutions/Exercise1-NamingAndLongMethods/lib/servlet-api.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise1-NamingAndLongMethods/lib/servlet-api.jar
--------------------------------------------------------------------------------
/Dean's solutions/Exercise1-NamingAndLongMethods/src/com/objectmentor/library/IsbnService.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library;
2 |
3 | import com.objectmentor.library.data.DataServices;
4 |
5 | public interface IsbnService extends DataServices {
6 | }
7 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise1-NamingAndLongMethods/src/com/objectmentor/library/data/IsbnDoesNotExistException.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library.data;
2 |
3 | public class IsbnDoesNotExistException extends RuntimeException {
4 |
5 | private static final long serialVersionUID = 1L;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise1-NamingAndLongMethods/src/com/objectmentor/library/data/PatronDoesNotExistException.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library.data;
2 |
3 | public class PatronDoesNotExistException extends Exception {
4 |
5 | private static final long serialVersionUID = 1L;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/lib/catalina-ant.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise2-SRP/lib/catalina-ant.jar
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/lib/servlet-api.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise2-SRP/lib/servlet-api.jar
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/src/com/objectmentor/library/StandardTimeSource.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library;
2 |
3 | import java.util.Date;
4 |
5 | class StandardTimeSource implements TimeSource {
6 | public Date getTime() {
7 | return new Date();
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/src/com/objectmentor/library/TimeSource.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library;
2 |
3 | import java.util.Date;
4 |
5 | public interface TimeSource {
6 | public Date getTime();
7 | }
8 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/src/com/objectmentor/library/data/IsbnDoesNotExistException.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library.data;
2 |
3 | public class IsbnDoesNotExistException extends RuntimeException {
4 |
5 | private static final long serialVersionUID = 1L;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise2-SRP/src/com/objectmentor/library/data/PatronDoesNotExistException.java:
--------------------------------------------------------------------------------
1 | package com.objectmentor.library.data;
2 |
3 | public class PatronDoesNotExistException extends Exception {
4 |
5 | private static final long serialVersionUID = 1L;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/Dean's solutions/Exercise3-DIP/.settings/org.eclipse.jdt.ui.prefs:
--------------------------------------------------------------------------------
1 | #Wed Jan 10 13:48:31 CST 2007
2 | eclipse.preferences.version=1
3 | internal.default.compliance=default
4 | org.eclipse.jdt.ui.text.custom_code_templates=
Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise3-DIP/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise3-DIP/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise3-DIP/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise4-OCP/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise4-OCP/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise4-OCP/web/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect(request.getContextPath() + "/welcome/index.do"); 3 | %> 4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise5-LSP/.settings/org.eclipse.jdt.ui.prefs: -------------------------------------------------------------------------------- 1 | #Wed Jan 10 13:48:31 CST 2007 2 | eclipse.preferences.version=1 3 | internal.default.compliance=default 4 | org.eclipse.jdt.ui.text.custom_code_templates=Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise5-LSP/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise5-LSP/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise5-LSP/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise6-ISP/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise6-ISP/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise6-ISP/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise7-LOD/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise7-LOD/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise7-LOD/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise8-Packaging/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise8-Packaging/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise8-Packaging/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /Dean's solutions/Exercise9-PackageDecoupling/web/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/Dean's solutions/Exercise9-PackageDecoupling/web/images/OMI.gif -------------------------------------------------------------------------------- /Dean's solutions/Exercise9-PackageDecoupling/web/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise3-DIP/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise3-DIP/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise3-DIP/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise4-OCP/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise4-OCP/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise4-OCP/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect(request.getContextPath() + "/welcome/index.do"); 3 | %> 4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise5-LSP/.compatibility: -------------------------------------------------------------------------------- 1 | #Mon Mar 26 14:37:38 EST 2007 2 | .j2ee=2537 3 | .websettings=2539 4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise5-LSP/.eisConnections: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise5-LSP/.eisConnections -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise5-LSP/.j2ee: -------------------------------------------------------------------------------- 1 | 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise5-LSP/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise5-LSP/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise5-LSP/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise6-ISP/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise6-ISP/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise6-ISP/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise7-LOD/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise7-LOD/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise7-LOD/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise8-Packaging/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise8-Packaging/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise8-Packaging/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise9-PackageDecoupling/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Exercise9-PackageDecoupling/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Exercise9-PackageDecoupling/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Library/WebContent/images/OMI.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unclebob/PPP/8eeb6f25c98a97cc7658a2029d5efff19b79dea7/RAD_Object_Mentor/Library/WebContent/images/OMI.gif -------------------------------------------------------------------------------- /RAD_Object_Mentor/Library/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |Please select a task in the left-hand side bar.
4 | -------------------------------------------------------------------------------- /RAD_Object_Mentor/Library_Test/WebContent/index.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %> 2 |