代码如下,改了几次都编译错误,谁来帮帮忙啊?
import java.rmi.*;
import javax.rmi.*;
import java.sql.*;
import java.util.*;
import javax.ejb.*;
import javax.sql.*;
import javax.naming.InitialContext;
import java.lang.*;
public class CartBean implements SessionBean
{
private SessionContext ctx;
InitialContext ic;
Object object ; private Integer customerid;
private String customername; private OrderHome orderHome;
private OrderItemHome orderitemHome; private ArrayList items; public void ejbCreate(Integer customerid, String customername)
{
this. customerid=customerid;
this.customername=customername;
}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){} public void setSessionContext(SessionContext ctx)
{
this.ctx = ctx;
try
{
ic=new InitialContext();
object = ic.lookup("java:comp/env/ejb/OrderItem");
orderitemHome = (OrderItemHome)PortableRemoteObject.narrow(object,OrderItemHome.class);
object = ic.lookup("java:comp/env/ejb/Order");
orderHome = (OrderHome)PortableRemoteObject.narrow(object,OrderHome.class); 

items = new ArrayList();
}
catch (Exception e)
{
throw new EJBException(e);
}
}
public void addToCart(Integer bookid, Integer quantity)
{
items.add(bookid);
items.add(quantity);
}
     
           
public Integer purchase()
{
Integer orderid=null;
try
{
Iterator it=items.iterator();
Order order=this.getNewOrder(customerid);
orderid=order.getOrderid();
while(it.hasNext())
{
Integer bookid=(Integer)it.next();
Integer quantity=(Integer)it.next();
OrderItem newItem=orderitemHome.create(orderid, bookid, quantity);
//order.addOrderItem(newItem);
}
items.clear();
}
catch (Exception e)
{
System.out.println("purchase "+e);
}
return orderid;
}
      

          
private Order getNewOrder(Integer customerid)
{
Order order=null;
try
{
int id=0;
String sql="SELECT MAX(orderid) FROM orderr";

DataSource ds=(DataSource)ic.lookup("java:comp/env/jdbc/CloudscapeDB");
Statement statement=ds.getConnection().createStatement();
ResultSet rs=statement.executeQuery(sql);
while(rs.next())
{
id=rs.getInt(1)+1;
}
try
{
Calendar c=Calendar.getInstance();
String s=c.get(1)+"-"+c.get(2)+"-"+c.get(3);
java.sql.Date d=java.sql.Date.valueOf(s);
order=orderHome.create(new Integer(id),customerid, d);
}
catch (Exception e)
{
System.out.println(e);
}
try
{
rs.close();
statement.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
catch (Exception e)
{
System.out.println(e);
}

return order;
} public Collection getCartBooks()
{
Collection a=new ArrayList();
Iterator it=items.iterator();
try
{
javax.naming.Context context=new javax.naming.InitialContext();
Object object = context.lookup("java:comp/env/ejb/Book");
BookHome bookHome = (BookHome)PortableRemoteObject.narrow(object,BookHome.class); 
while(it.hasNext())
{
Integer bookid=(Integer)it.next();
Integer quantity=(Integer)it.next();
Book book=bookHome.findByPrimaryKey(bookid);
a.add(bookid);
a.add(book.getName());
a.add(book.getAuthor());
a.add(quantity);
                                
}
}
catch (Exception e)
{
System.out.println(e);
}
return a;
}
           
            
       
}

解决方案 »

  1.   

    用ArrayList的话,里面只放的是bookid和quantity 如果多放几个你怎么区分几个bookid对应的quantity啊?
    public void addToCart(Integer bookid, Integer quantity)
    {
    items.add(bookid);
    items.add(quantity);

    建议作成Map的,用bookid做key,对象做value ,当然quantity应该在book类中定义一个新的字段了。
    到时添加与删除的时候可以用:items.put(book.getBookid(), book);//添加
    items.remove(book.getBookid());//删除