StudentFacadeEJB.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:11k
源码类别:

Java编程

开发平台:

Java

  1. package day21ex.studentfacade;
  2. import java.util.*;
  3. import java.rmi.*;
  4. import javax.rmi.*;
  5. import javax.naming.*;
  6. import javax.ejb.*;
  7. import day21ex.enrollmentcart.*;
  8. import day21ex.signon.*;
  9. import day21ex.course.*;
  10. import day21ex.order.*;
  11. import day21ex.orderlineitem.*;
  12. import day21ex.messagesender.*;
  13. import day21ex.student.*;
  14. /* day 21 exercise */
  15. import day21ex.enrollment.*;
  16. public class StudentFacadeEJB implements SessionBean  {
  17.    private SessionContext ctx;
  18.    String  login;
  19.    EnrollmentCart cart;
  20.    public StudentFacadeEJB() {
  21.       print("The container created this instance.n");
  22.       login = null;
  23.    }
  24.    public void setSessionContext(SessionContext ctx) {
  25.       print("The container called the setSessionContext method ");
  26.       print("to associate session bean instance with its context.n");
  27.       this.ctx = ctx;
  28.    }
  29.    public void ejbCreate() throws CreateException {
  30.       print("The container called the ejbCreate method.n");
  31.       cart = getEnrollmentCart();
  32.    }
  33.    public void ejbActivate() {
  34.       print("This instance has just been reactivated.n");
  35.    }
  36.    public void ejbPassivate() {
  37.       print("The container intends to passivate the instance.n");
  38.    }
  39.    public void ejbRemove() {
  40.       print("This instance is in the process of being removed ");
  41.       print("by the container.n");
  42.    }
  43.    public void addUser(String login, String password)  throws RemoteException {
  44.       SignOn signOn = getSignOn();
  45.       signOn.addUser(login, password);
  46.       this.login = login;
  47.    }
  48.    public void addStudent(String loginName, String password, String firstName,
  49.     String lastName, String address, String emailAddress) throws RemoteException  {
  50.       try {
  51.       StudentLocalHome home = getStudentLocalHome();
  52.       addUser(loginName, password);
  53.       StudentLocal student =  home.create(loginName, firstName,
  54.                                           lastName,  address,  emailAddress);
  55.       }catch (Exception e) {
  56.          throw new EJBException(e);
  57.       }
  58.    }
  59.       
  60.    public boolean validateUser(String login, String password) 
  61.       throws InvalidLoginException, RemoteException {
  62.       SignOn signOn = getSignOn();
  63.       boolean status = signOn.validateUser(login, password);
  64.       if ( status )
  65.       {
  66.          this.login = login;
  67.       }
  68.       return status;
  69.    }
  70.    public void addCourses(String[] courseIds) throws RemoteException {
  71.       print("The container called addCourses method.n");
  72.       if ( courseIds == null) {
  73.          return;
  74.       }
  75.       cart = getEnrollmentCart();
  76.       cart.addCourses(courseIds);
  77.    }
  78.    public Collection getCartItems() throws RemoteException {
  79.       cart = getEnrollmentCart();
  80.       ArrayList items = new ArrayList();
  81.       Collection collection =  cart.getCourses();
  82.       Iterator it = collection.iterator();
  83.       while (it.hasNext()) {
  84.          String courseId = (String)it.next();
  85.          CourseItem item = null;
  86.          try {
  87.             CourseItem ci = getCourseItemDetails(courseId) ;
  88.             items.add(ci);
  89.          } catch (Exception cce) {
  90.             System.out.println("exception  caught: " + cce);
  91.          }
  92.       }
  93.       return items;
  94.    }
  95.    public void empty() throws RemoteException {
  96.       cart = getEnrollmentCart();
  97.       cart.empty();
  98.    }
  99.    void print(String s) {
  100.       System.out.println("StudentFacadeEJB:"+ s);
  101.    }
  102.    public CourseItem getCourseItemDetails(String courseId) throws NamingException, FinderException {
  103.       Context ctx = new InitialContext();
  104.       CourseLocalHome courseHome = (CourseLocalHome)
  105.          PortableRemoteObject.narrow(
  106.             ctx.lookup("day21ex/Course"), CourseLocalHome.class);
  107.       CourseLocal course=courseHome.findByPrimaryKey(courseId);
  108.       CourseItem item=new CourseItem(course.getCourseId(),course.getName(),
  109.                                      course.getFee());
  110.       return item;
  111.    }
  112.    public Vector getCourseItemList(){
  113.       try{
  114.          Context ctx = new InitialContext();
  115.          CourseLocalHome courseHome = (CourseLocalHome)
  116.             PortableRemoteObject.narrow(
  117.                ctx.lookup("day21ex/Course"), CourseLocalHome.class);
  118.          Collection courses=courseHome.findAllCourses();
  119.          Enumeration items = Collections.enumeration(courses);
  120.          Vector courseItems=new Vector();
  121.          while (items.hasMoreElements()) {
  122.             CourseLocal course= (CourseLocal) items.nextElement();
  123.             CourseItem p=new CourseItem(course.getCourseId(),course.getName(),
  124.                                         course.getFee());
  125.             courseItems.add(p);
  126.          }
  127.          return courseItems;
  128.       }catch (Exception e) {
  129.          throw new EJBException(e);
  130.       }
  131.    }
  132.    public String placeOrder() {
  133.       try {
  134.          print("placeOrder calledn");
  135.          OrderLocalHome home=getOrderLocalHome();
  136.          String orderID = makeUniqueID();
  137.          OrderLocal order=home.create(orderID, login ,"unverified",100 );
  138.          Vector orderItems=addOrderLineItems(order);
  139.          order.setLineItems(orderItems);
  140.          sendMessage(orderID);
  141.          cart.empty(); // clear shopping cart
  142.          return orderID;
  143.       } catch (Exception e) {
  144.          throw new EJBException(e);
  145.       }
  146.    }
  147.    /* day 21 exercise */
  148.    public Collection getStudentEnrollments() {
  149.       Collection collection = new ArrayList();
  150.       CourseLocal course;
  151.       StudentLocal student;
  152.       EnrollmentLocal enrollment;
  153.       try {
  154.          EnrollmentLocalHome home= getEnrollmentLocalHome();
  155.          Collection enrollments = home.findStudentEnrollments(login);
  156.          Iterator it = enrollments.iterator();
  157.          while( it != null  && it.hasNext() ) {
  158.             enrollment = (EnrollmentLocal) it.next();
  159.             try {
  160.             course = enrollment.getCourse();
  161.             student = enrollment.getStudent();
  162.             collection.add( new EnrollmentDetails( 
  163.                                enrollment.getEnrollmentId(),
  164.                                student.getStudentId(), 
  165.                                course.getCourseId(),
  166.                                course.getName() ) );
  167.             } catch (Exception e) {
  168.                e.printStackTrace();
  169.                System.err.println(e);
  170.             }
  171.          }
  172.       } catch(FinderException fe) {
  173.          print("FinderException while getStudentEnrollments :" +
  174.                             fe.getMessage() + "n" );
  175.          throw new EJBException("Unable to find enrollment"+
  176.                             " for student: " + login +
  177.                              fe.getMessage());
  178.       } catch(NamingException ne) {
  179.          print("NamingException while getStudentEnrollments :" +
  180.                             ne.getMessage() + "n");
  181.          throw new EJBException("NamingException while looking "
  182.                      + "for enrollments of student: " + login +
  183.                      ne.getMessage());
  184.       } catch(Exception e) {
  185.          print("Exception while getStudentEnrollments :" +
  186.                             e.getMessage() + "n");
  187.          throw new EJBException("Exception while looking "
  188.                      + "for enrollments of student: " + login +
  189.                      e.getMessage());
  190.       }
  191.       return collection;      
  192.    }
  193.    private Vector addOrderLineItems(OrderLocal order){
  194.       try{
  195.          Context ctx = new InitialContext();
  196.          OrderLineItemLocalHome orderLineItemLocalHome = (OrderLineItemLocalHome)
  197.             PortableRemoteObject.narrow(
  198.                ctx.lookup("day21ex/OrderLineItem"), OrderLineItemLocalHome.class); 
  199.          CourseLocalHome courseHome = (CourseLocalHome)
  200.             PortableRemoteObject.narrow(
  201.                ctx.lookup("day21ex/Course"), CourseLocalHome.class);                
  202.          Collection items =  getCartItems();
  203.          Iterator it = items.iterator();
  204.          Vector orderItems=new Vector();
  205.          while( it.hasNext() ) {
  206.             CourseItem item = (CourseItem) it.next();
  207.             CourseLocal course=courseHome.findByPrimaryKey(item.getCourseId());
  208.             String id = makeUniqueID();
  209.             OrderLineItemLocal orderLineItem = 
  210.                orderLineItemLocalHome.create(id, order, course,item.getFee()) ;
  211.             orderItems.add(orderLineItem);
  212.          }
  213.          return orderItems;
  214.       } catch (Exception e) {
  215.          throw new EJBException(e);
  216.       }
  217.    }
  218.    private void sendMessage(String message) throws Exception{
  219.       try{
  220.          print("sendMessage calledn");
  221.          MessageSender sender=new MessageSender();
  222.          sender.sendAMessage(new InitialContext(), message);
  223.       } catch(Exception e){
  224.          throw new EJBException(e);
  225.       }
  226.    }
  227.    private String makeUniqueID(){
  228.       return new Long(System.currentTimeMillis()).toString();
  229.    }
  230.    private OrderLocalHome getOrderLocalHome(){
  231.       try{
  232.          Context ctx = new InitialContext();
  233.          OrderLocalHome home = (OrderLocalHome)
  234.             ctx.lookup("day21ex/Order");
  235.          return home;
  236.       } catch (Exception e) {
  237.          throw new EJBException(e);
  238.       }
  239.    }
  240.    private StudentLocalHome getStudentLocalHome(){
  241.       try{
  242.          Context ctx = new InitialContext();
  243.          StudentLocalHome home = (StudentLocalHome)
  244.             ctx.lookup("day21ex/Student");
  245.         return home;
  246.       } catch (Exception e) {
  247.          throw new EJBException(e);
  248.       }
  249.    }
  250.    SignOn getSignOn(){
  251.       SignOn signOn = null;
  252.       try {
  253.          Context ic = getInitialContext();
  254.          Object o = initialContext.lookup("day21ex/SignOn");
  255.          SignOnHome home = (SignOnHome) 
  256.             javax.rmi.PortableRemoteObject.narrow(o, SignOnHome.class);
  257.          signOn =   home.create();
  258.       } catch (Exception e) {
  259.          print(e.toString());
  260.          throw new EJBException(e);
  261.       }
  262.       return signOn;
  263.    }
  264.    EnrollmentCart  getEnrollmentCart(){
  265.       if ( cart != null ) {
  266.          return cart;
  267.       }
  268.       try {
  269.          Context ic = getInitialContext();
  270.          Object o = initialContext.lookup("day21ex/EnrollmentCart");
  271.          EnrollmentCartHome home = (EnrollmentCartHome) javax.rmi.
  272.             PortableRemoteObject.narrow(o, EnrollmentCartHome.class);
  273.          cart = home.create();
  274.       } catch (Exception e) {
  275.          print(e.toString());
  276.          throw new EJBException(e);
  277.       }
  278.       return cart;
  279.    }
  280.    /* day 21 exercise */
  281.    private EnrollmentLocalHome getEnrollmentLocalHome() 
  282.                                    throws NamingException {
  283.         InitialContext initial = new InitialContext();
  284.         Object o = initial.lookup("day21ex/EnrollmentLocal");
  285.         return ((EnrollmentLocalHome) o);
  286.     }
  287.    Context getInitialContext() throws NamingException {
  288.       if ( initialContext == null ) {
  289.          initialContext = new InitialContext();
  290.       }
  291.       return initialContext;
  292.    }
  293.    Context initialContext = null;
  294. }