package pe.ejb.ejb30.persistence.toplinksample.ejb;
import javax.ejb.*;
import javax.persistence.*;
import javax.annotation.*;
import javax.sql.*;
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
import pe.ejb.ejb30.persistence.toplinksample.ejb.*;
import java.util.*;
@Stateless
@Remote({StatelessInterface.class})
public class StatelessBean implements StatelessInterface {
@Resource SessionContext sc;
@PersistenceContext EntityManager em;
CustomerEntity c1 = new CustomerEntity(1, "Alice", "Santa Clara");
CustomerEntity c2 = new CustomerEntity(2, "Betty", "Sunnyvale");
OrderEntity o1 = new OrderEntity(100, 1);
OrderEntity o2 = new OrderEntity(101, 2);
ItemEntity i1 = new ItemEntity(100, "Camcorder");
ItemEntity i2 = new ItemEntity(101, "PlayStation");
private String message = "hello";
public void setUp() {
System.out.println("StatelessBean:setUp:persisting...");
em.flush();
em.persist(c1);
em.persist(c2);
em.persist(o1);
em.persist(o2);
em.persist(i1);
System.out.println("Stateless:setUp:Entities persisted");
}
public List getCustomers(String name, String city) {
System.out.println("StatelessBean: getting customers...");
List result = em.createNamedQuery("findAllCustomersWithLike")
.setParameter("name", name)
.setParameter("city", city)
.getResultList();
return result;
}
public List getAllCustomers() {
System.out.println("StatelessBean: getting ALL customers...");
List result = em.createNamedQuery("findAllCustomers").getResultList();
return result;
}
public Collection getCustomerOrders(int custId) {
System.out.println("StatelessBean:getCustomerOrders");
CustomerEntity customer = em.find(CustomerEntity.class, new Integer(custId));
if(customer == null){
System.out.println("StatelessBean:getCustomerOrders:Customer not found!");
return null;
} else {
OrderEntity order1 = em.find(OrderEntity.class, new Integer(100));
OrderEntity order2 = em.find(OrderEntity.class, new Integer(101));
ItemEntity item1 = em.find(ItemEntity.class, new Integer(101));
order1.setItem(item1);
//ArrayList al = new ArrayList();
//al.add(o1);
//al.add(o2);
//c1.setOrders(al);
customer.addOrder(order1);
customer.addOrder(order2);
//em.persist(customer);
System.out.println("StatelessBean:getCustomerOrders:"+
"Customer found, returning orders");
Collection<OrderEntity> coe = customer.getOrders();
if(coe ==null) {
System.out.println("StatelessBean:getCustomerOrders: "+
"NULL collection returned");
} else {
System.out.println("StatelessBean:getCustomerOrders: "+
"collection class returned:"+coe.getClass().getName());
}
return coe;
}
}
public List getAllItemsByName() {
System.out.println("StatelessBean: getting ALL customers...");
List result = em.createNamedQuery("findAllItemsByName")
.setParameter("1", "Camcorder")
.getResultList();
return result;
}
public List getAllOrdersByItem() {
System.out.println("StatelessBean: getting ALL customers...");
List result = em.createNamedQuery("findAllOrdersByItem")
.setParameter("id", "1")
.getResultList();
return result;
}
public void cleanUp() {
System.out.println("StatelessBean:cleanUp:");
em.merge(c1);
if(em.contains(c1)) em.remove(c1);
em.merge(c2);
if(em.contains(c2)) em.remove(c2);
//em.merge(o1); // o1 will be removed as a result of cascade, after removing customer1
//if(em.contains(o1)) em.remove(o1);
//em.merge(o2); // o2 will be removed as a result of cascade, after removing customer1
//if(em.contains(o2)) em.remove(o2);
em.merge(i1);
if(em.contains(i1)) em.remove(i1);
em.merge(i2); // why isn't this throwing an exception?
if(em.contains(i2)) em.remove(i2); // why isn't this throwing an exception?
System.out.println("Stateless:cleanUp:Entities removed");
}
public void setMessage(String message) {
System.out.println("Stateless:setMessage:" + message);
this.message = message;
}
public String getMessage() { return message; }
}