FileDocCategorySizeDatePackage
ProcessPaymentBean.javaAPI DocExample6613Thu May 23 17:51:32 BST 2002com.titan.processpayment

ProcessPaymentBean

public class ProcessPaymentBean extends Object implements javax.ejb.SessionBean

Fields Summary
public static final String
CASH
public static final String
CREDIT
public static final String
CHECK
public javax.ejb.SessionContext
context
Constructors Summary
Methods Summary
public booleanbyCash(com.titan.customer.CustomerRemote customer, double amount)

      return process (getCustomerID (customer), amount, CASH, null, -1, null, null);
   
public booleanbyCheck(com.titan.customer.CustomerRemote customer, CheckDO check, double amount)

      int minCheckNumber = getMinCheckNumber ();
      if (check.checkNumber > minCheckNumber)
      {
         return process (getCustomerID (customer), amount, CHECK,
                                        check.checkBarCode, check.checkNumber, 
                                        null, null);
      }
      else
      {
         throw new PaymentException ("Check number is too low. Must be at least " +
                                     minCheckNumber);
      }
   
public booleanbyCredit(com.titan.customer.CustomerRemote customer, CreditCardDO card, double amount)

      if (card.expiration.before (new java.util.Date ()))
      {
         throw new PaymentException ("Expiration date has passed");
      }
      else
      {
         return process (getCustomerID (customer), amount,
                         CREDIT, null, -1, card.number, 
                         new java.sql.Date (card.expiration.getTime ()));
      }
   
public voiddropDbTable()

      PreparedStatement ps = null;
      Connection con = null;
      
      try
      {
         con = this.getConnection ();
         
         System.out.println("Dropping table PAYMENT...");
         ps = con.prepareStatement ("DROP TABLE PAYMENT");
         ps.execute ();
         System.out.println("...done!");
      }
      catch (SQLException sql)
      {
         throw new EJBException (sql);
      }
      finally
      {
         try { ps.close (); } catch (Exception e) {}
         try { con.close (); } catch (Exception e) {}
      }
   
public voidejbActivate()

public voidejbCreate()

 // in this bean, we keep the context
   
        
public voidejbPassivate()

public voidejbRemove()

private java.sql.ConnectiongetConnection()

      try
      {
         InitialContext jndiCntx = new InitialContext ();
         DataSource ds = (DataSource)
         jndiCntx.lookup ("java:comp/env/jdbc/titanDB");
         return ds.getConnection ();
      } 
      catch(NamingException ne)
      {
         throw new EJBException (ne);
      }
   
private java.lang.IntegergetCustomerID(com.titan.customer.CustomerRemote customer)

      try
      {
         return (Integer)customer.getPrimaryKey ();
      } 
      catch(RemoteException re)
      {
         throw new EJBException (re);
      }
   
private intgetMinCheckNumber()

      try
      {
         InitialContext jndiCntx = new InitialContext ( );
         Integer value = (Integer)
         jndiCntx.lookup ("java:comp/env/minCheckNumber");
         return value.intValue ();
      }
      catch(NamingException ne)
      {
         throw new EJBException (ne);
      }
   
public voidmakeDbTable()

      PreparedStatement ps = null;
      Connection con = null;
      
      try
      {
         con = this.getConnection ();
         
         System.out.println("Creating table PAYMENT...");
         ps = con.prepareStatement ("CREATE TABLE PAYMENT ( " +
                                     "CUSTOMER_ID INT, " +
                                     "AMOUNT DECIMAL (8,2), " +
                                     "TYPE CHAR (10), " +
                                     "CHECK_BAR_CODE CHAR (50), " +
                                     "CHECK_NUMBER INTEGER, " +
                                     "CREDIT_NUMBER CHAR (20), " +
                                     "CREDIT_EXP_DATE DATE" +
                                    ")" );
         ps.execute ();
         System.out.println("...done!");
      }
      catch (SQLException sql)
      {
         throw new EJBException (sql);
      }
      finally
      {
         try { ps.close (); } catch (Exception e) {}
         try { con.close (); } catch (Exception e) {}
      }
   
private booleanprocess(java.lang.Integer customerID, double amount, java.lang.String type, java.lang.String checkBarCode, int checkNumber, java.lang.String creditNumber, java.sql.Date creditExpDate)

      
      System.out.println ("process() with customerID="+customerID+" amount="+amount);
      Connection con = null;
      PreparedStatement ps = null;
      
      try
      {
         con = getConnection ();
         ps = con.prepareStatement
            ("INSERT INTO payment (customer_id, amount, type, " + 
               "check_bar_code, check_number, credit_number, " + 
               "credit_exp_date)" +
            " VALUES (?,?,?,?,?,?,?)");
         ps.setInt (1,customerID.intValue ());
         ps.setDouble (2,amount);
         ps.setString (3,type);
         ps.setString (4,checkBarCode);
         ps.setInt (5,checkNumber);
         ps.setString (6,creditNumber);
         ps.setDate (7,creditExpDate);

         int retVal = ps.executeUpdate ();
         if (retVal!=1)
         {
            throw new EJBException ("Payment insert failed");
         }
         
         return true;
      } 
      catch(SQLException sql)
      {
         throw new EJBException (sql);
      } 
      finally
      {
         try { ps.close (); } catch (Exception e) {}
         try { con.close (); } catch (Exception e) {}
      }
   
public voidsetSessionContext(javax.ejb.SessionContext ctx)

      context = ctx;