package com.ewolff.orderhandling.dao; import java.util.List; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import com.ewolff.orderhandling.domain.Order; import com.ewolff.orderhandling.domain.OrderItem; @Repository public class OrderDao { private JdbcTemplate jdbcTemplate; public void create(Order order) { jdbcTemplate .update( "INSERT INTO T_ORDER(C_CUSTOMER, C_PROCESSED, C_EXPRESS, C_INVOICED) VALUES(?, ?, ?, ?)", order.getCustomer(), order.isProcessed(), order .isExpress(), order.isInvoiced()); order.setId(jdbcTemplate.queryForInt("call identity()")); for (OrderItem orderItem : order.getOrderItem()) { jdbcTemplate .update( "INSERT INTO T_ORDERITEM(C_COUNT, C_ITEM, ID_ORDER) VALUES(?,?,?)", orderItem.getCount(), orderItem.getItem(), order .getId()); orderItem.setId(jdbcTemplate.queryForInt("call identity()")); } } public List<Order> findAllOrder() { List<Order> result = jdbcTemplate .query( "SELECT * FROM T_ORDER o", new OrderRowMapper()); for (Order order : result) { for (OrderItem orderItem : jdbcTemplate.query( "SELECT * FROM T_ORDERITEM i WHERE i.ID_ORDER=? ", new OrderItemRowMapper(), order.getId())) { order.addOrderItem(orderItem); } } return result; } public Order findById(int id) { Order order = jdbcTemplate.queryForObject( "SELECT * FROM T_ORDER o WHERE o.id=?", new OrderRowMapper(), id); for (OrderItem orderItem : jdbcTemplate.query( "SELECT * FROM T_ORDERITEM i WHERE i.ID_ORDER=? ", new OrderItemRowMapper(), id)) { order.addOrderItem(orderItem); } return order; } public void update(Order order) { jdbcTemplate .update( "UPDATE T_ORDER SET C_PROCESSED=?, C_EXPRESS=?, C_CUSTOMER=?, C_INVOICED=? WHERE ID=?", order.isProcessed(), order.isExpress(), order .getCustomer(), order.isInvoiced(), order.getId()); for (OrderItem orderItem : order.getOrderItem()) { jdbcTemplate.update( "UPDATE T_ORDERITEM SET C_COUNT=?, C_ITEM=? WHERE ID=?", orderItem.getCount(), orderItem.getItem(), orderItem .getId()); } } @Autowired public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } }