├── 1.1 ├── .editorconfig ├── README.md ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── example │ └── Main.java ├── 1.2 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ └── java │ └── com │ └── example │ ├── Main.java │ ├── cli │ └── Cli.java │ └── warehouse │ ├── Customer.java │ ├── Order.java │ ├── Product.java │ ├── Report.java │ ├── Warehouse.java │ ├── WarehouseException.java │ ├── export │ └── Exporter.java │ └── util │ └── CsvReader.java ├── 1.3 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ └── java │ └── com │ └── example │ ├── Main.java │ ├── cli │ └── Cli.java │ └── warehouse │ ├── Customer.java │ ├── Order.java │ ├── Product.java │ ├── Report.java │ ├── Warehouse.java │ ├── WarehouseException.java │ ├── export │ └── Exporter.java │ └── util │ └── CsvReader.java ├── 1.4 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ └── java │ └── com │ └── example │ ├── Main.java │ ├── cli │ └── Cli.java │ └── warehouse │ ├── Customer.java │ ├── Order.java │ ├── Product.java │ ├── Report.java │ ├── Warehouse.java │ ├── WarehouseException.java │ ├── export │ ├── AbstractExporter.java │ ├── CsvExporter.java │ ├── ExportType.java │ └── TxtExporter.java │ └── util │ └── CsvReader.java ├── 1.5 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ └── java │ └── com │ └── example │ ├── Main.java │ ├── cli │ └── Cli.java │ └── warehouse │ ├── Customer.java │ ├── Order.java │ ├── Product.java │ ├── Report.java │ ├── Warehouse.java │ ├── WarehouseException.java │ ├── export │ ├── AbstractExporter.java │ ├── CsvExporter.java │ ├── ExportType.java │ ├── Exporter.java │ ├── HtmlExporter.java │ ├── JsonExporter.java │ └── TxtExporter.java │ └── util │ └── CsvReader.java ├── 2.1 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ └── Web.java │ └── resources │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ └── products.html.vm ├── 2.2 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ └── Web.java │ └── resources │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ └── products.html.vm ├── 2.3 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ └── Web.java │ └── resources │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ └── products.html.vm ├── 2.4 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ └── Web.java │ └── resources │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ └── products.html.vm ├── 2.5 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ └── Web.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ └── products.html.vm ├── 3.1 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── Customer.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ └── reports.html.vm ├── 3.2 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── AlternativeReportGeneration.java │ │ ├── Customer.java │ │ ├── DefaultReportGeneration.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── ReportGeneration.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ └── reports.html.vm ├── 3.3 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── AlternativeReportGeneration.java │ │ ├── Customer.java │ │ ├── DefaultReportGeneration.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── ReportDelivery.java │ │ ├── ReportGeneration.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ └── TxtExporter.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ └── reports.html.vm ├── 3.4 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── AlternativeReportGeneration.java │ │ ├── Customer.java │ │ ├── DefaultReportGeneration.java │ │ ├── EmailReportDelivery.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── ReportDelivery.java │ │ ├── ReportDeliveryException.java │ │ ├── ReportGeneration.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ ├── TxtExporter.java │ │ │ └── util │ │ │ │ └── CopyByteArrayOutputStream.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ └── reports.html.vm ├── 3.5 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── AlternativeReportGeneration.java │ │ ├── Customer.java │ │ ├── DefaultReportGeneration.java │ │ ├── DirectoryReportDelivery.java │ │ ├── EmailReportDelivery.java │ │ ├── NoReportDelivery.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── ReportDelivery.java │ │ ├── ReportDeliveryException.java │ │ ├── ReportGeneration.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ ├── TxtExporter.java │ │ │ └── util │ │ │ │ └── CopyByteArrayOutputStream.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── configure-report-delivery.html.vm │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ ├── reports.html.vm │ └── settings.html.vm ├── 4.1 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ ├── Main.java │ │ ├── cli │ │ └── Cli.java │ │ ├── warehouse │ │ ├── AlternativeReportGeneration.java │ │ ├── Customer.java │ │ ├── DefaultReportGeneration.java │ │ ├── Order.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── ReportGeneration.java │ │ ├── Warehouse.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ │ ├── AbstractDbDao.java │ │ │ ├── CustomerDao.java │ │ │ ├── DbCustomerDao.java │ │ │ ├── DbInventoryDao.java │ │ │ ├── DbOrderDao.java │ │ │ ├── DbProductDao.java │ │ │ ├── InventoryDao.java │ │ │ ├── MemoryCustomerDao.java │ │ │ ├── MemoryInventoryDao.java │ │ │ ├── MemoryOrderDao.java │ │ │ ├── MemoryProductDao.java │ │ │ ├── OrderDao.java │ │ │ └── ProductDao.java │ │ ├── delivery │ │ │ ├── AbstractReportDelivery.java │ │ │ ├── DirectoryReportDelivery.java │ │ │ ├── EmailReportDelivery.java │ │ │ ├── NoReportDelivery.java │ │ │ ├── ReportDelivery.java │ │ │ └── ReportDeliveryException.java │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── CsvExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── HtmlExporter.java │ │ │ ├── JsonExporter.java │ │ │ ├── TxtExporter.java │ │ │ └── util │ │ │ │ └── CopyByteArrayOutputStream.java │ │ └── util │ │ │ └── CsvReader.java │ │ └── web │ │ ├── Web.java │ │ └── util │ │ └── HtmlEscaperOutputStream.java │ └── resources │ ├── scripts │ └── init.sql │ ├── simplelogger.properties │ └── templates │ ├── configure-report-delivery.html.vm │ ├── customers.html.vm │ ├── error.html.vm │ ├── export-report.html.vm │ ├── footer.html.vm │ ├── header.html.vm │ ├── index.html.vm │ ├── orders.html.vm │ ├── products.html.vm │ ├── reports.html.vm │ └── settings.html.vm ├── 4.2 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── Main.java │ │ │ ├── cli │ │ │ └── Cli.java │ │ │ ├── warehouse │ │ │ ├── AlternativeReportGeneration.java │ │ │ ├── Customer.java │ │ │ ├── DefaultReportGeneration.java │ │ │ ├── Order.java │ │ │ ├── Product.java │ │ │ ├── Report.java │ │ │ ├── ReportGeneration.java │ │ │ ├── Warehouse.java │ │ │ ├── WarehouseException.java │ │ │ ├── Warehouses.java │ │ │ ├── dal │ │ │ │ ├── AbstractDbDao.java │ │ │ │ ├── CustomerDao.java │ │ │ │ ├── DbCustomerDao.java │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ └── ProductDao.java │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ ├── export │ │ │ │ ├── AbstractExporter.java │ │ │ │ ├── CsvExporter.java │ │ │ │ ├── ExportType.java │ │ │ │ ├── Exporter.java │ │ │ │ ├── HtmlExporter.java │ │ │ │ ├── JsonExporter.java │ │ │ │ ├── TxtExporter.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ │ └── web │ │ │ ├── Web.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ ├── simplelogger.properties │ │ └── templates │ │ ├── configure-report-delivery.html.vm │ │ ├── customers.html.vm │ │ ├── error.html.vm │ │ ├── export-report.html.vm │ │ ├── footer.html.vm │ │ ├── header.html.vm │ │ ├── index.html.vm │ │ ├── orders.html.vm │ │ ├── products.html.vm │ │ ├── reports.html.vm │ │ └── settings.html.vm │ └── test │ └── java │ └── com │ └── example │ └── warehouse │ └── WarehouseTest.java ├── 4.3 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── Main.java │ │ │ ├── cli │ │ │ ├── Cli.java │ │ │ └── TrialCli.java │ │ │ ├── warehouse │ │ │ ├── AlternativeReportGeneration.java │ │ │ ├── Customer.java │ │ │ ├── DefaultReportGeneration.java │ │ │ ├── Order.java │ │ │ ├── Product.java │ │ │ ├── Report.java │ │ │ ├── ReportGeneration.java │ │ │ ├── Warehouse.java │ │ │ ├── WarehouseException.java │ │ │ ├── Warehouses.java │ │ │ ├── dal │ │ │ │ ├── AbstractDbDao.java │ │ │ │ ├── CustomerDao.java │ │ │ │ ├── DbCustomerDao.java │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ └── ProductDao.java │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ ├── export │ │ │ │ ├── AbstractExporter.java │ │ │ │ ├── CsvExporter.java │ │ │ │ ├── ExportType.java │ │ │ │ ├── Exporter.java │ │ │ │ ├── HtmlExporter.java │ │ │ │ ├── JsonExporter.java │ │ │ │ ├── TxtExporter.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ │ └── web │ │ │ ├── TrialWeb.java │ │ │ ├── Web.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ ├── simplelogger.properties │ │ └── templates │ │ ├── configure-report-delivery.html.vm │ │ ├── customers.html.vm │ │ ├── error.html.vm │ │ ├── export-report.html.vm │ │ ├── footer.html.vm │ │ ├── header.html.vm │ │ ├── index.html.vm │ │ ├── orders.html.vm │ │ ├── products.html.vm │ │ ├── reports.html.vm │ │ └── settings.html.vm │ └── test │ └── java │ └── com │ └── example │ └── warehouse │ └── WarehouseTest.java ├── 4.4 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── Main.java │ │ │ ├── cli │ │ │ └── Cli.java │ │ │ ├── warehouse │ │ │ ├── AlternativeReportGeneration.java │ │ │ ├── Customer.java │ │ │ ├── DefaultReportGeneration.java │ │ │ ├── Order.java │ │ │ ├── Product.java │ │ │ ├── Report.java │ │ │ ├── ReportGeneration.java │ │ │ ├── Warehouse.java │ │ │ ├── WarehouseException.java │ │ │ ├── Warehouses.java │ │ │ ├── dal │ │ │ │ ├── AbstractDbDao.java │ │ │ │ ├── CustomerDao.java │ │ │ │ ├── DbCustomerDao.java │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ └── ProductDao.java │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ ├── export │ │ │ │ ├── AbstractExporter.java │ │ │ │ ├── CsvExporter.java │ │ │ │ ├── ExportType.java │ │ │ │ ├── Exporter.java │ │ │ │ ├── ExporterFactory.java │ │ │ │ ├── FullExporterFactory.java │ │ │ │ ├── HtmlExporter.java │ │ │ │ ├── JsonExporter.java │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ ├── TxtExporter.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ ├── plot │ │ │ │ ├── AbstractChartPlotter.java │ │ │ │ ├── ChartPlotter.java │ │ │ │ ├── ChartType.java │ │ │ │ ├── ComplexChartPlotter.java │ │ │ │ └── DummyChartPlotter.java │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ │ └── web │ │ │ ├── Web.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ ├── simplelogger.properties │ │ └── templates │ │ ├── charts.html.vm │ │ ├── configure-report-delivery.html.vm │ │ ├── customers.html.vm │ │ ├── error.html.vm │ │ ├── export-report.html.vm │ │ ├── footer.html.vm │ │ ├── header.html.vm │ │ ├── index.html.vm │ │ ├── orders.html.vm │ │ ├── plot-report.html.vm │ │ ├── products.html.vm │ │ ├── reports.html.vm │ │ └── settings.html.vm │ └── test │ └── java │ └── com │ └── example │ └── warehouse │ └── WarehouseTest.java ├── 4.5 ├── .editorconfig ├── README.md ├── customers.csv ├── inventory.csv ├── orders.csv ├── pom.xml ├── products.csv └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── example │ │ │ ├── Main.java │ │ │ ├── cli │ │ │ └── Cli.java │ │ │ ├── warehouse │ │ │ ├── AlternativeReportGeneration.java │ │ │ ├── Customer.java │ │ │ ├── DefaultReportGeneration.java │ │ │ ├── DependencyFactory.java │ │ │ ├── FullDependencyFactory.java │ │ │ ├── Order.java │ │ │ ├── Product.java │ │ │ ├── Report.java │ │ │ ├── ReportGeneration.java │ │ │ ├── TrialDependencyFactory.java │ │ │ ├── Warehouse.java │ │ │ ├── WarehouseException.java │ │ │ ├── Warehouses.java │ │ │ ├── dal │ │ │ │ ├── AbstractDbDao.java │ │ │ │ ├── CustomerDao.java │ │ │ │ ├── DbCustomerDao.java │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ └── ProductDao.java │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ ├── export │ │ │ │ ├── AbstractExporter.java │ │ │ │ ├── CsvExporter.java │ │ │ │ ├── ExportType.java │ │ │ │ ├── Exporter.java │ │ │ │ ├── ExporterFactory.java │ │ │ │ ├── FullExporterFactory.java │ │ │ │ ├── HtmlExporter.java │ │ │ │ ├── JsonExporter.java │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ ├── TxtExporter.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ ├── plot │ │ │ │ ├── AbstractChartPlotter.java │ │ │ │ ├── ChartPlotter.java │ │ │ │ ├── ChartPlotterFactory.java │ │ │ │ ├── ChartType.java │ │ │ │ ├── ComplexChartPlotter.java │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ ├── FullChartPlotterFactory.java │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ │ └── web │ │ │ ├── Web.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ ├── simplelogger.properties │ │ └── templates │ │ ├── charts.html.vm │ │ ├── configure-report-delivery.html.vm │ │ ├── customers.html.vm │ │ ├── error.html.vm │ │ ├── export-report.html.vm │ │ ├── footer.html.vm │ │ ├── header.html.vm │ │ ├── index.html.vm │ │ ├── orders.html.vm │ │ ├── plot-report.html.vm │ │ ├── products.html.vm │ │ ├── reports.html.vm │ │ └── settings.html.vm │ └── test │ └── java │ └── com │ └── example │ └── warehouse │ └── WarehouseTest.java ├── 5.1 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── Customer.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── WarehouseException.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── AbstractDbDao.java │ │ │ │ │ ├── CustomerDao.java │ │ │ │ │ ├── DbCustomerDao.java │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java └── pom.xml ├── 5.2 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── Customer.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── WarehouseException.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── AbstractDbDao.java │ │ │ │ │ ├── CustomerDao.java │ │ │ │ │ ├── DbCustomerDao.java │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java └── pom.xml ├── 5.3 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── Customer.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── WarehouseException.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── AbstractDbDao.java │ │ │ │ │ ├── CustomerDao.java │ │ │ │ │ ├── DbCustomerDao.java │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java └── pom.xml ├── 5.4 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── Customer.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── WarehouseException.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── AbstractDbDao.java │ │ │ │ │ ├── CustomerDao.java │ │ │ │ │ ├── DbCustomerDao.java │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ ├── service │ │ │ │ │ ├── ExternalCustomerService.java │ │ │ │ │ └── ExternalCustomerServiceImpl.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java └── pom.xml ├── 5.5 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── Customer.java │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ ├── AbstractDbDao.java │ │ ├── CustomerDao.java │ │ └── RestCustomerDao.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ └── Rest.java │ │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ └── simplelogger.properties ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java └── pom.xml ├── 6.1 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── Customer.java │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ ├── AbstractDbDao.java │ │ ├── CustomerDao.java │ │ └── RestCustomerDao.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ └── Rest.java │ │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ └── simplelogger.properties ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java └── pom.xml ├── 6.2 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ ├── Main.java │ │ │ │ ├── cli │ │ │ │ └── Cli.java │ │ │ │ ├── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ │ ├── DbInventoryDao.java │ │ │ │ │ ├── DbOrderDao.java │ │ │ │ │ ├── DbProductDao.java │ │ │ │ │ ├── InventoryDao.java │ │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ │ ├── MemoryProductDao.java │ │ │ │ │ ├── OrderDao.java │ │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ │ ├── NoReportDelivery.java │ │ │ │ │ ├── ReportDelivery.java │ │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ │ └── util │ │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CsvReader.java │ │ │ │ └── web │ │ │ │ ├── Web.java │ │ │ │ └── util │ │ │ │ └── HtmlEscaperOutputStream.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ ├── simplelogger.properties │ │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── Customer.java │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ ├── AbstractDbDao.java │ │ ├── CustomerDao.java │ │ └── RestCustomerDao.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ └── Rest.java │ │ └── resources │ │ ├── scripts │ │ └── init.sql │ │ └── simplelogger.properties ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java └── pom.xml ├── 6.3 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ └── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── Product.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ ├── OrderDao.java │ │ │ │ └── ProductDao.java │ │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ └── simplelogger.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-cli │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── cli │ │ ├── Cli.java │ │ └── Main.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── Customer.java │ │ ├── DependencyFactory.java │ │ ├── Report.java │ │ ├── Util.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ ├── AbstractDbDao.java │ │ ├── CustomerDao.java │ │ └── RestCustomerDao.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ ├── Main.java │ │ │ └── Rest.java │ │ ├── resources │ │ ├── scripts │ │ │ └── init.sql │ │ └── simplelogger.properties │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java ├── demo-web │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── web │ │ │ ├── Main.java │ │ │ ├── Web.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ │ ├── resources │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml └── pom.xml ├── 6.4 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ └── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ └── OrderDao.java │ │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ └── simplelogger.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-backend │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── backend │ │ │ ├── Backend.java │ │ │ ├── Main.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── demo-cli │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── cli │ │ ├── Cli.java │ │ └── Main.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ ├── Customer.java │ │ ├── DependencyFactory.java │ │ ├── Product.java │ │ ├── Report.java │ │ ├── Util.java │ │ ├── WarehouseException.java │ │ ├── dal │ │ ├── AbstractDbDao.java │ │ ├── AbstractRestDao.java │ │ ├── CustomerDao.java │ │ ├── ProductDao.java │ │ ├── RestCustomerDao.java │ │ └── RestProductDao.java │ │ ├── export │ │ ├── AbstractExporter.java │ │ ├── ExportType.java │ │ ├── Exporter.java │ │ ├── ExporterFactory.java │ │ └── TxtExporter.java │ │ └── plot │ │ ├── ChartPlotter.java │ │ ├── ChartPlotterFactory.java │ │ └── ChartType.java ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ ├── Main.java │ │ │ └── Rest.java │ │ ├── resources │ │ ├── scripts │ │ │ └── init.sql │ │ └── simplelogger.properties │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java ├── demo-web │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── web │ │ │ ├── Main.java │ │ │ └── Web.java │ │ ├── resources │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml └── pom.xml ├── 6.5 ├── .editorconfig ├── README.md ├── demo-app-full │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── FullDependencyFactory.java │ │ │ ├── export │ │ │ ├── CsvExporter.java │ │ │ ├── FullExporterFactory.java │ │ │ ├── HtmlExporter.java │ │ │ └── JsonExporter.java │ │ │ └── plot │ │ │ ├── AbstractChartPlotter.java │ │ │ ├── ComplexChartPlotter.java │ │ │ └── FullChartPlotterFactory.java │ │ └── resources │ │ └── META-INF │ │ └── factories │ │ └── com.example.warehouse.DependencyFactory ├── demo-app │ ├── customers.csv │ ├── db.json │ ├── inventory.csv │ ├── orders.csv │ ├── pom.xml │ ├── products.csv │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ ├── App.java │ │ │ │ └── warehouse │ │ │ │ ├── AlternativeReportGeneration.java │ │ │ │ ├── DefaultReportGeneration.java │ │ │ │ ├── DynamicDependencyFactory.java │ │ │ │ ├── Order.java │ │ │ │ ├── ReportGeneration.java │ │ │ │ ├── TrialDependencyFactory.java │ │ │ │ ├── Warehouse.java │ │ │ │ ├── Warehouses.java │ │ │ │ ├── dal │ │ │ │ ├── DbInventoryDao.java │ │ │ │ ├── DbOrderDao.java │ │ │ │ ├── DbProductDao.java │ │ │ │ ├── InventoryDao.java │ │ │ │ ├── MemoryCustomerDao.java │ │ │ │ ├── MemoryInventoryDao.java │ │ │ │ ├── MemoryOrderDao.java │ │ │ │ ├── MemoryProductDao.java │ │ │ │ └── OrderDao.java │ │ │ │ ├── delivery │ │ │ │ ├── AbstractReportDelivery.java │ │ │ │ ├── DirectoryReportDelivery.java │ │ │ │ ├── EmailReportDelivery.java │ │ │ │ ├── NoReportDelivery.java │ │ │ │ ├── ReportDelivery.java │ │ │ │ └── ReportDeliveryException.java │ │ │ │ ├── export │ │ │ │ ├── TrialExporterFactory.java │ │ │ │ └── util │ │ │ │ │ └── CopyByteArrayOutputStream.java │ │ │ │ ├── plot │ │ │ │ ├── DummyChartPlotter.java │ │ │ │ └── TrialChartPlotterFactory.java │ │ │ │ └── util │ │ │ │ └── CsvReader.java │ │ └── resources │ │ │ ├── scripts │ │ │ └── init.sql │ │ │ └── simplelogger.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── WarehouseTest.java ├── demo-backend │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── backend │ │ │ ├── Backend.java │ │ │ ├── Main.java │ │ │ └── util │ │ │ └── HtmlEscaperOutputStream.java │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── demo-cli │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── cli │ │ ├── Cli.java │ │ └── Main.java ├── demo-core │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── Customer.java │ │ │ ├── DependencyFactory.java │ │ │ ├── Product.java │ │ │ ├── Report.java │ │ │ ├── Util.java │ │ │ ├── WarehouseException.java │ │ │ ├── dal │ │ │ ├── AbstractDbDao.java │ │ │ ├── AbstractRestDao.java │ │ │ ├── CustomerDao.java │ │ │ ├── ProductDao.java │ │ │ ├── RestCustomerDao.java │ │ │ └── RestProductDao.java │ │ │ ├── export │ │ │ ├── AbstractExporter.java │ │ │ ├── ExportType.java │ │ │ ├── Exporter.java │ │ │ ├── ExporterFactory.java │ │ │ └── TxtExporter.java │ │ │ └── plot │ │ │ ├── ChartPlotter.java │ │ │ ├── ChartPlotterFactory.java │ │ │ └── ChartType.java │ │ └── resources │ │ └── hazelcast.xml ├── demo-rest │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── warehouse │ │ │ ├── dal │ │ │ └── DbCustomerDao.java │ │ │ └── rest │ │ │ ├── Main.java │ │ │ └── Rest.java │ │ ├── resources │ │ ├── scripts │ │ │ └── init.sql │ │ └── simplelogger.properties │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml ├── demo-tool │ ├── db.json │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── example │ │ └── warehouse │ │ └── tool │ │ └── Tool.java ├── demo-web │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── example │ │ │ └── web │ │ │ ├── Main.java │ │ │ └── Web.java │ │ ├── resources │ │ └── templates │ │ │ ├── charts.html.vm │ │ │ ├── configure-report-delivery.html.vm │ │ │ ├── customers.html.vm │ │ │ ├── error.html.vm │ │ │ ├── export-report.html.vm │ │ │ ├── footer.html.vm │ │ │ ├── header.html.vm │ │ │ ├── index.html.vm │ │ │ ├── orders.html.vm │ │ │ ├── plot-report.html.vm │ │ │ ├── products.html.vm │ │ │ ├── reports.html.vm │ │ │ └── settings.html.vm │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml └── pom.xml ├── LICENSE └── README.md /1.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /1.1/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 1, Video 1 8 | 9 | Only contains an empty skeleton. 10 | Go to the next video on branch `1.2` to continue. 11 | -------------------------------------------------------------------------------- /1.1/src/main/java/com/example/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /1.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /1.2/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /1.2/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /1.2/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /1.2/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /1.2/src/main/java/com/example/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import com.example.cli.Cli; 4 | 5 | import java.util.Arrays; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | new Cli(Arrays.asList(args)).run(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.2/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /1.3/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 1, Video 3 8 | 9 | Nothing has changed since _Section 1_, _Video 2_. 10 | 11 | The previous video explored how _not to_ add new exporter functionality to the project. 12 | Go to the next video on branch `1.4` to continue. 13 | -------------------------------------------------------------------------------- /1.3/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /1.3/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /1.3/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /1.3/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /1.3/src/main/java/com/example/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import com.example.cli.Cli; 4 | 5 | import java.util.Arrays; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | new Cli(Arrays.asList(args)).run(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.3/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /1.4/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /1.4/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /1.4/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /1.4/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /1.4/src/main/java/com/example/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import com.example.cli.Cli; 4 | 5 | import java.util.Arrays; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | new Cli(Arrays.asList(args)).run(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.4/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.4/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV; 7 | } 8 | -------------------------------------------------------------------------------- /1.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /1.5/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /1.5/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /1.5/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /1.5/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /1.5/src/main/java/com/example/Main.java: -------------------------------------------------------------------------------- 1 | package com.example; 2 | 3 | import com.example.cli.Cli; 4 | 5 | import java.util.Arrays; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | new Cli(Arrays.asList(args)).run(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.5/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1.5/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /1.5/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /2.1/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /2.1/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /2.1/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /2.1/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /2.1/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2.1/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /2.1/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.1/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /2.1/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /2.1/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /2.1/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /2.1/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /2.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /2.2/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /2.2/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /2.2/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /2.2/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /2.2/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2.2/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /2.2/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.2/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /2.2/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /2.2/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /2.2/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /2.2/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /2.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /2.3/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 2, Video 3 8 | 9 | Nothing has changed since _Section 2_, _Video 2_. 10 | -------------------------------------------------------------------------------- /2.3/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /2.3/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /2.3/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /2.3/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /2.3/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2.3/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /2.3/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.3/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /2.3/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /2.3/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /2.3/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /2.3/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /2.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /2.4/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /2.4/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /2.4/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /2.4/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | 5 | import java.util.Collection; 6 | 7 | public interface CustomerDao { 8 | 9 | Collection getCustomers(); 10 | 11 | Customer getCustomer(int id); 12 | } 13 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | 5 | import java.util.Map; 6 | 7 | public interface InventoryDao { 8 | 9 | void updateStock(Map quantities); 10 | } 11 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | 5 | import java.util.Collection; 6 | 7 | public interface OrderDao { 8 | 9 | Collection getOrders(); 10 | 11 | void addOrder(Order order); 12 | } 13 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/dal/ProductDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | 5 | import java.util.Collection; 6 | 7 | public interface ProductDao { 8 | 9 | Collection getProducts(); 10 | 11 | Product getProduct(int id); 12 | 13 | void addProduct(Product product); 14 | } 15 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /2.4/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.4/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /2.4/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /2.4/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /2.4/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /2.4/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /2.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /2.5/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /2.5/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /2.5/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /2.5/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /2.5/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /2.5/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /2.5/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /2.5/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /2.5/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /2.5/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /3.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /3.1/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 3, Video 1 8 | 9 | Changes since _Section 2_, _Video 5_. 10 | 11 | * Implemented report export functionality in the `Web` class. 12 | -------------------------------------------------------------------------------- /3.1/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /3.1/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /3.1/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /3.1/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /3.1/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /3.1/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /3.1/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /3.1/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #parse("templates/footer.html.vm") 6 | -------------------------------------------------------------------------------- /3.1/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /3.1/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /3.1/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /3.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /3.2/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /3.2/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /3.2/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /3.2/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /3.2/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /3.2/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /3.2/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /3.2/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #parse("templates/footer.html.vm") 6 | -------------------------------------------------------------------------------- /3.2/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /3.2/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /3.2/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /3.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /3.3/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /3.3/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /3.3/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /3.3/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportDelivery { 4 | 5 | void deliver(); 6 | } 7 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/export/ExportType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public enum ExportType { 4 | 5 | TXT, 6 | CSV, 7 | HTML, 8 | JSON; 9 | } 10 | -------------------------------------------------------------------------------- /3.3/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /3.3/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /3.3/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /3.3/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #parse("templates/footer.html.vm") 6 | -------------------------------------------------------------------------------- /3.3/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /3.3/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /3.3/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /3.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /3.4/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /3.4/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /3.4/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /3.4/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExportType; 4 | 5 | public interface ReportDelivery { 6 | 7 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 8 | } 9 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/ReportDeliveryException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class ReportDeliveryException extends WarehouseException { 4 | 5 | public ReportDeliveryException(String message) { 6 | super(message); 7 | } 8 | 9 | public ReportDeliveryException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.4/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /3.4/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /3.4/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /3.4/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #parse("templates/footer.html.vm") 6 | -------------------------------------------------------------------------------- /3.4/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /3.4/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /3.4/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /3.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /3.5/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /3.5/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /3.5/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /3.5/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExportType; 4 | 5 | public interface ReportDelivery { 6 | 7 | String getName(); 8 | 9 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 10 | } 11 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/ReportDeliveryException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public final class ReportDeliveryException extends WarehouseException { 4 | 5 | public ReportDeliveryException(String message) { 6 | super(message); 7 | } 8 | 9 | public ReportDeliveryException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /3.5/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /3.5/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /3.5/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /4.1/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /4.1/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /4.1/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /4.1/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /4.1/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /4.1/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4.1/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /4.2/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /4.2/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /4.2/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /4.2/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /4.2/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /4.2/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4.2/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /4.3/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /4.3/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /4.3/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /4.3/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /4.3/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /4.3/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/index.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage

3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /4.3/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /4.4/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /4.4/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /4.4/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /4.4/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/dal/CustomerDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Customer; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface CustomerDao { 9 | 10 | Collection getCustomers() throws WarehouseException; 11 | 12 | Customer getCustomer(int id) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /4.4/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /4.4/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /4.4/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java,xml}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /4.5/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /4.5/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /4.5/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /4.5/products.csv: -------------------------------------------------------------------------------- 1 | 2,computer,1234 2 | 4,sun glasses,12 3 | 6,toothbrush,2 4 | 9,piano,2600 5 | 15,tissue box,4 6 | 22,drill press,140 7 | 25,slippers,9 8 | 31,light bulb,2 9 | 32,a4 paper,2 10 | 38,flowers,15 11 | 43,bracelet,3 12 | 45,conditioner,5 13 | 57,sailboat,25000 14 | 61,plant,7 15 | 65,pen,1 16 | 77,shoelace,1 17 | 87,bed,100 18 | 89,boom box,59 19 | 99,mobile phone,159 20 | 100,rubber duck,4 21 | 112,teddy bear,10 22 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /4.5/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /4.5/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /4.5/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /5.1/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /5.1/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /5.1/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /5.1/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /5.1/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /5.1/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /5.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /5.2/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ### Section 5, Video 2 8 | 9 | Nothing has changed since _Section 5_, Video 1. 10 | -------------------------------------------------------------------------------- /5.2/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /5.2/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /5.2/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /5.2/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /5.2/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /5.2/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /5.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /5.3/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 5, Video 3 8 | 9 | Changes since _Section 5_, Video 2. 10 | 11 | * Add `demo-tool` submodule. 12 | * Update `Customer` class with new fields. 13 | * Add `db.json` to simulate, with the use of `json-server`, an external 3rd party REST API. 14 | -------------------------------------------------------------------------------- /5.3/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /5.3/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /5.3/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /5.3/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /5.3/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /5.3/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /5.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /5.4/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /5.4/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /5.4/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /5.4/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/java/com/example/warehouse/service/ExternalCustomerService.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.service; 2 | 3 | import com.example.warehouse.WarehouseException; 4 | import org.json.JSONObject; 5 | 6 | import java.util.Map; 7 | 8 | public interface ExternalCustomerService { 9 | 10 | Map fetchCustomers() throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /5.4/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /5.4/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /5.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /5.5/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /5.5/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /5.5/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /5.5/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /5.5/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /5.5/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /5.5/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.1/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /6.1/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /6.1/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /6.1/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /6.1/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /6.1/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /6.1/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /6.1/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.2/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /6.2/README.md: -------------------------------------------------------------------------------- 1 | # Design Patterns Warehouse Demo 2 | 3 | ## About 4 | 5 | Video course companion code. 6 | 7 | ## Section 6, Video 2 8 | 9 | No changes since _Section 6_, _Video 1_. 10 | -------------------------------------------------------------------------------- /6.2/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /6.2/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /6.2/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /6.2/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/java/com/example/warehouse/dal/OrderDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Order; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Collection; 7 | 8 | public interface OrderDao { 9 | 10 | Collection getOrders() throws WarehouseException; 11 | 12 | void addOrder(Order order) throws WarehouseException; 13 | } 14 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /6.2/demo-app/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /6.2/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /6.2/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.3/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /6.3/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /6.3/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /6.3/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /6.3/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /6.3/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /6.3/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /6.3/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /6.3/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.3/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.3/demo-cli/src/main/java/com/example/cli/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.cli; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Cli().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /6.3/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /6.3/demo-rest/src/main/java/com/example/warehouse/rest/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.rest; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Rest().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.3/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/java/com/example/web/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.web; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Web().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /6.3/demo-web/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.4/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /6.4/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /6.4/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /6.4/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /6.4/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /6.4/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /6.4/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /6.4/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /6.4/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.4/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.4/demo-backend/src/main/java/com/example/backend/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.backend; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Backend().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.4/demo-cli/src/main/java/com/example/cli/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.cli; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Cli().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /6.4/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /6.4/demo-rest/src/main/java/com/example/warehouse/rest/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.rest; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Rest().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.4/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/java/com/example/web/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.web; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Web().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /6.4/demo-web/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | charset = utf-8 8 | 9 | [*.{java, xml, md}] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /6.5/demo-app-full/src/main/resources/META-INF/factories/com.example.warehouse.DependencyFactory: -------------------------------------------------------------------------------- 1 | com.example.warehouse.FullDependencyFactory 2 | -------------------------------------------------------------------------------- /6.5/demo-app/customers.csv: -------------------------------------------------------------------------------- 1 | 12,John Smith 2 | 33,Franklin Alder 3 | 37,Lynda Sheldon 4 | 41,Logan Michael 5 | 67,Lorena Clyde 6 | 88,Peter Styles 7 | 102,Rupert Gordon 8 | -------------------------------------------------------------------------------- /6.5/demo-app/inventory.csv: -------------------------------------------------------------------------------- 1 | 2,2 2 | 4,10 3 | 6,100 4 | 9,1 5 | 15,49 6 | 25,33 7 | 31,999 8 | 32,10010 9 | 38,34 10 | 61,45 11 | 65,234 12 | 77,1234 13 | 87,5 14 | 89,22 15 | 99,124 16 | 100,224 17 | 112,47 18 | -------------------------------------------------------------------------------- /6.5/demo-app/orders.csv: -------------------------------------------------------------------------------- 1 | 2,12,2019-01-05,false,4x2,6x1,32x100 2 | 4,33,2019-01-11,false,2x1,87x1 3 | 5,33,2019-01-11,false,38x3 4 | 6,33,2019-01-12,false,112x1 5 | 11,67,2019-02-01,false,99x1,31x3 6 | 12,41,2019-02-02,true,25x1 7 | 19,12,2019-02-02,true,87x1 8 | 36,102,2019-02-02,false,87x1 9 | 37,41,2019-02-05,true,45x3,77x2 10 | -------------------------------------------------------------------------------- /6.5/demo-app/src/main/java/com/example/warehouse/ReportGeneration.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public interface ReportGeneration { 4 | 5 | Report generateReport(Report.Type type) throws WarehouseException; 6 | } 7 | -------------------------------------------------------------------------------- /6.5/demo-app/src/main/java/com/example/warehouse/dal/InventoryDao.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.dal; 2 | 3 | import com.example.warehouse.Product; 4 | import com.example.warehouse.WarehouseException; 5 | 6 | import java.util.Map; 7 | 8 | public interface InventoryDao { 9 | 10 | void updateStock(Map quantities) throws WarehouseException; 11 | } 12 | -------------------------------------------------------------------------------- /6.5/demo-app/src/main/java/com/example/warehouse/delivery/ReportDelivery.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.delivery; 2 | 3 | import com.example.warehouse.Report; 4 | import com.example.warehouse.export.ExportType; 5 | 6 | public interface ReportDelivery { 7 | 8 | String getName(); 9 | 10 | void deliver(Report.Type reportType, ExportType exportType, byte[] bytes) throws ReportDeliveryException; 11 | } 12 | -------------------------------------------------------------------------------- /6.5/demo-app/src/main/java/com/example/warehouse/plot/TrialChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public final class TrialChartPlotterFactory implements ChartPlotterFactory { 6 | 7 | @Override 8 | public ChartPlotter newPlotter(Report.Type reportType, ChartType chartType) { 9 | return new DummyChartPlotter(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /6.5/demo-app/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.5/demo-backend/src/main/java/com/example/backend/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.backend; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Backend().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.5/demo-cli/src/main/java/com/example/cli/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.cli; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Cli().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/DependencyFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | import com.example.warehouse.export.ExporterFactory; 4 | import com.example.warehouse.plot.ChartPlotterFactory; 5 | 6 | public interface DependencyFactory extends ExporterFactory, ChartPlotterFactory { 7 | } 8 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/WarehouseException.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse; 2 | 3 | public class WarehouseException extends Exception { 4 | 5 | public WarehouseException(String message) { 6 | super(message); 7 | } 8 | 9 | public WarehouseException(String message, Throwable cause) { 10 | super(message, cause); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/export/Exporter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | public interface Exporter { 4 | 5 | void export(); 6 | } 7 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/export/ExporterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.export; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.OutputStream; 6 | 7 | public interface ExporterFactory { 8 | 9 | Exporter newExporter(Report report, ExportType type, OutputStream out); 10 | } 11 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotter.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | import java.io.IOException; 6 | import java.io.OutputStream; 7 | 8 | public interface ChartPlotter { 9 | 10 | void plot(Report report, OutputStream out) throws IOException; 11 | } 12 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/plot/ChartPlotterFactory.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | import com.example.warehouse.Report; 4 | 5 | public interface ChartPlotterFactory { 6 | 7 | ChartPlotter newPlotter(Report.Type reportType, ChartType chartType); 8 | } 9 | -------------------------------------------------------------------------------- /6.5/demo-core/src/main/java/com/example/warehouse/plot/ChartType.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.plot; 2 | 3 | public enum ChartType { 4 | 5 | LINE, 6 | BAR 7 | } 8 | -------------------------------------------------------------------------------- /6.5/demo-rest/src/main/java/com/example/warehouse/rest/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.warehouse.rest; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Rest().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.5/demo-rest/src/main/resources/simplelogger.properties: -------------------------------------------------------------------------------- 1 | # INFO: disables verbose Spark logging. 2 | org.slf4j.simpleLogger.defaultLogLevel=WARN 3 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/java/com/example/web/Main.java: -------------------------------------------------------------------------------- 1 | package com.example.web; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | new Web().run(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/error.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

$message

3 |
$stacktrace
4 | #parse("templates/footer.html.vm") 5 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/export-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |
3 | $export
4 | 
5 | #if ($error) 6 |

$error

7 | #end 8 | #parse("templates/footer.html.vm") 9 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/footer.html.vm: -------------------------------------------------------------------------------- 1 |

Back to Index

2 | 3 | 4 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/header.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $title 6 | 7 | 8 |

$title

9 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/plot-report.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 | #if ($error) 3 |

$error

4 | #else 5 | 6 | #end 7 | #parse("templates/footer.html.vm") 8 | -------------------------------------------------------------------------------- /6.5/demo-web/src/main/resources/templates/settings.html.vm: -------------------------------------------------------------------------------- 1 | #parse("templates/header.html.vm") 2 |

Manage settings

3 | 8 | #parse("templates/footer.html.vm") 9 | --------------------------------------------------------------------------------