package www.mary.Bean;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import www.mary.access.*;
public class Cart {
private Map map=Collections.synchronizedMap(new HashMap());//该属性用来存采购的产品项,是按照id号作索引,以nember记录存入多少相同的实例
public Cart()
{
}
public void additem(String itemid,int number){
//先判断购物车中有没有重复的产品
boolean is=this.isContain(itemid);
if(is){
CarItem caritem=(CarItem)map.get(itemid);
caritem.add(number);
}else{
//如果购物车中没有该产品项
ItemBean item=PowerAccess.getOneItem(itemid);
CarItem caritem=new CarItem(item,number);//?
map.put(itemid,caritem); //?
}
}
//这类是判断是否有相同的产品,以itemid作为索引来查询
public boolean isContain(String itemid){
return map.containsKey(itemid);
}
//这里是更行
public void updateNumber(String itemid,int number)
{
CarItem caritem=(CarItem)map.get(itemid);
caritem.setNumber(number);
}
public void removeItem(String itemid)
{
map.remove(itemid);
}
//得到某种产品项的总价格
public double getItemTotalPrice(String itemid)
{
CarItem caritem=(CarItem)map.get(itemid); //通过itemid得到map存的实例
double listprice=caritem.getItem().getLISTPRICE(); //得到价格
int number=caritem.getNumber(); //得到数量
return listprice*number; //得到行的总金额
}
public double getTotalPrice() //得到列的总金额
{
double totalprice=0.0; //如果没有产品,初始值为0.0
Iterator iter=map.values().iterator(); //迭代展现map
while(iter.hasNext())
{
CarItem caritem=(CarItem)iter.next(); //得到cartitem实例
double listprice=caritem.getItem().getLISTPRICE(); //先得到行的总金额
int number=caritem.getNumber(); //再得到每行的数量
totalprice+=listprice*number; //然后随着循环累加金额
}
return totalprice;
}
public Map getMap() {
return map;
}
}