package org.springframework.autobuilds.jpetstore.dao.ibatis;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapDaoSupport;
import org.springframework.autobuilds.jpetstore.dao.ItemDao;
import org.springframework.autobuilds.jpetstore.domain.Item;
import org.springframework.autobuilds.jpetstore.domain.LineItem;
import org.springframework.autobuilds.jpetstore.domain.Order;
public class SqlMapItemDao extends SqlMapDaoSupport implements ItemDao {
public void updateQuantity(Order order) throws DataAccessException {
for (int i = 0; i < order.getLineItems().size(); i++) {
LineItem lineItem = (LineItem) order.getLineItems().get(i);
String itemId = lineItem.getItemId();
Integer increment = new Integer(lineItem.getQuantity());
Map param = new HashMap(2);
param.put("itemId", itemId);
param.put("increment", increment);
getSqlMapTemplate().executeUpdate("updateInventoryQuantity", param);
}
}
public boolean isItemInStock(String itemId) throws DataAccessException {
Integer i = (Integer) getSqlMapTemplate().executeQueryForObject("getInventoryQuantity", itemId);
return (i != null && i.intValue() > 0);
}
public List getItemListByProduct(String productId) throws DataAccessException {
return getSqlMapTemplate().executeQueryForList("getItemListByProduct", productId);
}
public Item getItem(String itemId) throws DataAccessException {
Item item = (Item) getSqlMapTemplate().executeQueryForObject("getItem", itemId);
if (item != null) {
Integer qty = (Integer) getSqlMapTemplate().executeQueryForObject("getInventoryQuantity", itemId);
item.setQuantity(qty.intValue());
}
return item;
}
}