/
Part 8 Guidance
Part 8 Guidance
- Selvyn Wright
Owned by Selvyn Wright
Problem
Working with Member and Local classes, and Lambdas.
Solution
Here is the MainUnit code
Version 10 MainUnit Expand source
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package s2s.online.gardening.v10; import java.time.LocalDate; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Selvyn */ public class MainUnit { public static void main(String[] args) { MainUnit munit = new MainUnit(); munit.bootstrap_products_items(); munit.bootstrap_customers_accounts(); munit.bootstrap_orders_accounts_items(); munit.test_serialization_writer_all_objects(); munit.test_serialization_reader_all_objects(); } public void bootstrap_products_items() { // This call will bootstrap the products Warehouse.getInstance(); } public void bootstrap_customers_accounts() { CustomerAccountMgr caMgr = CustomerAccountMgr.getInstance(); // Create the accounts first and Customers Account acc = null; Customer cc = null; acc = new Account(1); caMgr.addAccount(acc); cc = new Customer(acc, "Sevlyn", "Wright", LocalDate.of(1965, 5, 8), "Somewhere in Birmingham"); acc.setCustomer(cc); // tie acc to the customer caMgr.addCustomer("C1", cc); acc = new Account(2); caMgr.addAccount(acc); cc = new Customer(acc, "Samuel", "Wright", LocalDate.of(1982, 4, 22), "Somewhere else in Birmingham"); acc.setCustomer(cc); // tie acc to the customer caMgr.addCustomer("C2", cc); acc = new Account(3); caMgr.addAccount(acc); cc = new Customer(acc, "Graham", "Meaden", LocalDate.of(1967, 4, 3), "Somewhere down South"); acc.setCustomer(cc); // tie acc to the customer caMgr.addCustomer("C3", cc); } /* * This method will use an Order object to link the Item and Product objects * to the Customer and Account objects */ public void bootstrap_orders_accounts_items() { // Get an account and a product Account acc = CustomerAccountMgr.getInstance().getAccount(1); Product pp = Warehouse.getInstance().getProduct("JDF-001"); // only proceed if the keys were valid if( acc != null && pp != null ) { try { // create new order giving it the order number of 1 Order oo = new Order(acc, 1, LocalDate.now()); // add the order the account acc.addOrder(oo); // get an item from the product, remember Items represent real things // Products are descriptions of thise things Item itm = pp.getItem(1); // Set the quantity attribute, how many instances of the Item itm.setQuantity(3); // Only proceed if you used a valid item id if( itm != null ) oo.addItem(itm); // this call decrease the stock for this product } catch (Exception ex) { Logger.getLogger(MainUnit.class.getName()).log(Level.SEVERE, null, ex); } } } public void test_serialization_writer_all_objects() { String fname = "c:\\tmp\\all-objects.oos"; // working with a Serializable File Writer SerializableFileWriter sfw = Writer.getSerializableFileWriter(fname); // Write the object out // HashMap are Serializable, so it can be written straight out // Because all objects in the HashMap are Serializable, they will all be // written out as well sfw.write(CustomerAccountMgr.getInstance().getCustomers()); sfw.close(); } public void test_serialization_reader_all_objects() { String fname = "c:\\tmp\\all-objects.oos"; // Read the object from the filesystem InputChannel sfr = Reader.getSerializableFileReader(fname); sfr.openForReading(fname); // Read the entire object network back in HashMap< String, Customer> customersIn = (HashMap< String, Customer>) sfr.read(); // Only process the objects if the read was successful if(customersIn != null) { // Iterate over all the Customers... for (Map.Entry<String, Customer> entry : customersIn.entrySet()) { Customer cc = entry.getValue(); System.out.printf("Customer code ==> %s\n", entry.getKey()); cc.getRenderer().display(); cc.getAccount().getRenderer().display(); displayOrderDetais( cc.getAccount() ); } } } public void displayOrderDetais( Account acc ) { HashMap< Integer, Order > orders = acc.getOrders(); for(Map.Entry<Integer, Order> entry : orders.entrySet()) { Order ord = entry.getValue(); BusinessObjectRenderer handler = new BusinessObjectRenderer() { @Override public void display() { System.out.printf("Order\tORDER NO\tTOTAL COSR\tORDER DATE\n"); System.out.printf("\t%d\t\t%.2f\t\t%s\n", ord.getOrderNo(), ord.getTotalCost(), ord.getDateCreated().toString()); } }; handler.display(); displayItemDetails( ord ); } } public void displayItemDetails( Order ord ) { for( Item itm : ord.getItems()) { BusinessObjectRenderer handler = new BusinessObjectRenderer() { @Override public void display() { System.out.printf("Item\tUNIQUE ID\tQUANTITY\tCOST\n"); System.out.printf("\t%d\t\t%d\t\t%.2f\n", itm.getUniqueId(), itm.getQuantity(), itm.getItemCost()); } }; handler.display(); displayProductDetails(itm.getProduct()); } } public void displayProductDetails( Product pp ) { BusinessObjectRenderer handler = () -> { System.out.println("Product\tPRODUCT CODE\tDESCRIPTION\t\tPRICE\tQUANTITY"); System.out.printf("\t%s\t\t%s\t\t%.2f\t%d\n", pp.getProductCode(), pp.getDescription(), pp.getPrice(), pp.getQuantity()); }; handler.display(); } }
Related articles
-
Page:
-
Page:
-
Page:
-
Page:
-
Page: