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

Java编程

开发平台:

Java

  1. package day21ex.adminfacade;
  2. import java.util.*;
  3. import java.rmi.*;
  4. import javax.rmi.*;
  5. import javax.naming.*;
  6. import javax.ejb.*;
  7. import day21ex.enrollment.*;
  8. import day21ex.order.*;
  9. import day21ex.orderlineitem.*;
  10. import day21ex.enrollmentcart.*;
  11. import day21ex.course.*;
  12. import day21ex.student.*;
  13. import day21ex.mailer.*;
  14. public class AdminFacadeEJB implements SessionBean  {
  15.    private SessionContext ctx;
  16.    Context initialContext = null;
  17.    public AdminFacadeEJB() {
  18.       print("The container created this instance.n");
  19.    }
  20.    public Collection getOrdersByStatus(String status)
  21.       throws AdminFacadeException {
  22.       Collection collection = new ArrayList();
  23.       OrderLocal order;
  24.       StudentLocal student;
  25.       try {
  26.          OrderLocalHome home= getOrderLocalHome();
  27.          Collection orders = home.findByStatus(status);
  28.          Iterator it = orders.iterator();
  29.          while( it != null  && it.hasNext() ) {
  30.             order = (OrderLocal) it.next();
  31.             try {
  32.             student = order.getStudent();
  33.             collection.add( new OrderDetails( order.getOrderId(),
  34.                  student.getStudentId(), order.getOrderDate(),
  35.                  order.getAmount(),  order.getStatus() ) );
  36.             } catch (Exception e) {
  37.                e.printStackTrace();
  38.                System.err.println(e);
  39.             }
  40.          }
  41.             
  42.       } catch(FinderException fe) {
  43.          print("FinderException while getOrdersByStatus :" +
  44.                             fe.getMessage() + "n" );
  45.          throw new AdminFacadeException("Unable to find Orders"+
  46.                             " of  status : " + status +
  47.                              fe.getMessage());
  48.       } catch(NamingException ne) {
  49.          print("NamingException while getOrdersByStatus :" +
  50.                             ne.getMessage() + "n");
  51.          throw new AdminFacadeException("NamingException while looking "
  52.                      + "for Orders of status " + status +
  53.                      ne.getMessage());
  54.       } catch(Exception e) {
  55.          print("Exception while getOrdersByStatus :" +
  56.                             e.getMessage() + "n");
  57.          throw new AdminFacadeException("Exception while looking "
  58.                      + "for Orders of status " + status +
  59.                      e.getMessage());
  60.       }
  61.       return collection;
  62.    }
  63.    public void approveOrder(String orderId) 
  64.       throws AdminFacadeException {
  65.       try {
  66.          OrderLocalHome home= getOrderLocalHome();
  67.          OrderLocal order = home.findByPrimaryKey(orderId);
  68.          order.setStatus("Approved");
  69.          /* enroll the student in all the courses in the order */
  70.          Collection lineItems = order.getLineItems();
  71.          StudentLocal student = order.getStudent();
  72.          EnrollmentLocalHome enrollmentHome = 
  73.             getEnrollmentLocalHome();
  74.          Iterator it = lineItems.iterator();
  75.          while( it.hasNext() ) {
  76.             OrderLineItemLocal lineItem = (OrderLineItemLocal) it.next();
  77.             CourseLocal course = lineItem.getCourse();
  78.             EnrollmentLocal enrollment = 
  79.                enrollmentHome.create(student.getStudentId(), course.getCourseId());
  80.          }
  81.          try {
  82.             MailerHome mailerHome = getMailerHome();
  83.             Mailer mailer = mailerHome.create();
  84.             String message = "Your order id:" + order.getOrderId() + 
  85.                " is approved for enrollment";
  86.             print("Sending email to:" + student.getEmailAddress() +
  87.                   ":" + message);
  88.             mailer.sendMail(student.getEmailAddress(), message);
  89.       } catch(Exception e) {
  90.          System.err.println("Could not send e-mail.");
  91.          e.printStackTrace();
  92.       }
  93.       } catch(Exception e) {
  94.          e.printStackTrace();
  95.          print("Exception while approveOrder :" +
  96.                             e.getMessage() + "n");
  97.          throw new AdminFacadeException("Exception while approveOrder :" +
  98.                                         e.getMessage() + "n");
  99.       }
  100.    }
  101.    private OrderLocalHome getOrderLocalHome() throws NamingException {
  102.         InitialContext initial = new InitialContext();
  103.         Object o = initial.lookup("day21ex/Order");
  104.         return ((OrderLocalHome) o);
  105.     }
  106.    private MailerHome getMailerHome() throws NamingException {
  107.         InitialContext initial = new InitialContext();
  108.         Object o = initial.lookup("day21ex/Mailer");
  109.         return ((MailerHome) o);
  110.     }
  111.    private EnrollmentLocalHome getEnrollmentLocalHome() 
  112.                                    throws NamingException {
  113.         InitialContext initial = new InitialContext();
  114.         Object o = initial.lookup("day21ex/EnrollmentLocal");
  115.         return ((EnrollmentLocalHome) o);
  116.     }
  117.       
  118.    public void setSessionContext(SessionContext ctx) {
  119.       print("The container called the setSessionContext method ");
  120.       print("to associate session bean instance with its context.n");
  121.       this.ctx = ctx;
  122.    }
  123.    public void ejbCreate() throws CreateException {
  124.       print("The container called the ejbCreate method.n");
  125.    }
  126.    public void ejbActivate() {
  127.       print("This instance has just been reactivated.n");
  128.    }
  129.    public void ejbPassivate() {
  130.       print("The container intends to passivate the instance.n");
  131.    }
  132.    public void ejbRemove() {
  133.       print("This instance is in the process of being removed ");
  134.       print("by the container.n");
  135.    }
  136.    void print ( String str ) {
  137.       System.out.print(str);
  138.    }
  139. }