lab1/server/src/main/java/com/amazon/aws/partners/saasfactory/repository/OrderDaoImpl.java [82:146]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private Order insertOrder(Order order) throws Exception {
        logger.info("OrderDao::insertOrder " + order);
        // First, make sure we have an updated purchaser
        Purchaser purchaser = order.getPurchaser();
        Integer purchaserId = null;
        if (purchaser != null) {
            purchaserId = purchaser.getId();
            if (purchaserId == null || purchaserId < 1) {
                KeyHolder keyHolder = new GeneratedKeyHolder();
                jdbc.update(connection -> {
                    PreparedStatement ps = connection.prepareStatement("INSERT INTO purchaser (first_name, last_name) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS);
                    ps.setString(1, purchaser.getFirstName());
                    ps.setString(2, purchaser.getLastName());
                    return ps;
                }, keyHolder);
                if (!keyHolder.getKeys().isEmpty()) {
                    purchaser.setId((Integer) keyHolder.getKeys().get("purchaser_id"));
                } else {
                    purchaser.setId(keyHolder.getKey().intValue());
                }
            }
            order.setPurchaser(purchaser);
        }

        // Now insert the order
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbc.update(connection -> {
            PreparedStatement ps = connection.prepareStatement(INSERT_ORDER_SQL, Statement.RETURN_GENERATED_KEYS);
            ps.setDate(1, order.getOrderDate() != null ? new java.sql.Date(order.getOrderDate().getTime()) : null);
            ps.setDate(2, order.getShipDate() != null ? new java.sql.Date(order.getShipDate().getTime()) : null);
            ps.setInt(3, order.getPurchaser() != null ? order.getPurchaser().getId() : null);
            Address shipAddress = order.getShipAddress();
            if (shipAddress == null) {
                shipAddress = new Address();
            }
            ps.setString(4, shipAddress.getLine1());
            ps.setString(5, shipAddress.getLine2());
            ps.setString(6, shipAddress.getCity());
            ps.setString(7, shipAddress.getState());
            ps.setString(8, shipAddress.getPostalCode());

            Address billAddress = order.getBillAddress();
            if (billAddress == null) {
                billAddress = new Address();
            }
            ps.setString(9, billAddress.getLine1());
            ps.setString(10, billAddress.getLine2());
            ps.setString(11, billAddress.getCity());
            ps.setString(12, billAddress.getState());
            ps.setString(13, billAddress.getPostalCode());

            return ps;
        }, keyHolder);
        if (!keyHolder.getKeys().isEmpty()) {
            order.setId((Integer) keyHolder.getKeys().get("order_fulfillment_id"));
        } else {
            order.setId(keyHolder.getKey().intValue());
        }

        // Now we can save the line items for this order
        List<OrderLineItem> lineItems = saveOrderLineItems(order.getId(), order.getLineItems());
        order.setLineItems(lineItems);

        return order;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



lab2/server/src/main/java/com/amazon/aws/partners/saasfactory/repository/OrderDaoImpl.java [81:145]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private Order insertOrder(Order order) throws Exception {
        logger.info("OrderDao::insertOrder " + order);
        // First, make sure we have an updated purchaser
        Purchaser purchaser = order.getPurchaser();
        Integer purchaserId = null;
        if (purchaser != null) {
            purchaserId = purchaser.getId();
            if (purchaserId == null || purchaserId < 1) {
                KeyHolder keyHolder = new GeneratedKeyHolder();
                jdbc.update(connection -> {
                    PreparedStatement ps = connection.prepareStatement("INSERT INTO purchaser (first_name, last_name) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS);
                    ps.setString(1, purchaser.getFirstName());
                    ps.setString(2, purchaser.getLastName());
                    return ps;
                }, keyHolder);
                if (!keyHolder.getKeys().isEmpty()) {
                    purchaser.setId((Integer) keyHolder.getKeys().get("purchaser_id"));
                } else {
                    purchaser.setId(keyHolder.getKey().intValue());
                }
            }
            order.setPurchaser(purchaser);
        }

        // Now insert the order
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbc.update(connection -> {
            PreparedStatement ps = connection.prepareStatement(INSERT_ORDER_SQL, Statement.RETURN_GENERATED_KEYS);
            ps.setDate(1, order.getOrderDate() != null ? new java.sql.Date(order.getOrderDate().getTime()) : null);
            ps.setDate(2, order.getShipDate() != null ? new java.sql.Date(order.getShipDate().getTime()) : null);
            ps.setInt(3, order.getPurchaser() != null ? order.getPurchaser().getId() : null);
            Address shipAddress = order.getShipAddress();
            if (shipAddress == null) {
                shipAddress = new Address();
            }
            ps.setString(4, shipAddress.getLine1());
            ps.setString(5, shipAddress.getLine2());
            ps.setString(6, shipAddress.getCity());
            ps.setString(7, shipAddress.getState());
            ps.setString(8, shipAddress.getPostalCode());

            Address billAddress = order.getBillAddress();
            if (billAddress == null) {
                billAddress = new Address();
            }
            ps.setString(9, billAddress.getLine1());
            ps.setString(10, billAddress.getLine2());
            ps.setString(11, billAddress.getCity());
            ps.setString(12, billAddress.getState());
            ps.setString(13, billAddress.getPostalCode());

            return ps;
        }, keyHolder);
        if (!keyHolder.getKeys().isEmpty()) {
            order.setId((Integer) keyHolder.getKeys().get("order_fulfillment_id"));
        } else {
            order.setId(keyHolder.getKey().intValue());
        }

        // Now we can save the line items for this order
        List<OrderLineItem> lineItems = saveOrderLineItems(order.getId(), order.getLineItems());
        order.setLineItems(lineItems);

        return order;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



