| LocalHomeインターフェース | 
    
    
      package refactor; 
       
      import javax.ejb.*; 
       
      public interface CustomerHome extends javax.ejb.EJBLocalHome { 
        public Customer create(String custname) throws CreateException; 
        public Customer findByPrimaryKey(String custname) throws FinderException; 
      } | 
    
    
      | Localインターフェース | 
    
    
      package refactor; 
       
      import java.util.*; 
       
      public interface Customer extends javax.ejb.EJBLocalObject { 
        public String getCustname(); 
        public void setRental(Collection rental); // Rentalエンティティビーンへのリレーションシップ 
        public Collection getRental(); // Rentalエンティティビーンへのリレーションシップ 
        public String statement(); 
        public String htmlStatement(); 
      } | 
    
    
      | Beanクラス | 
    
    
      package refactor; 
       
      import javax.ejb.*; 
      import java.util.*; 
       
      abstract public class CustomerBean implements EntityBean { 
        EntityContext entityContext; 
        public java.lang.String ejbCreate(java.lang.String custname) throws CreateException
      { 
          setCustname(custname); 
          return null; 
        } 
        public void ejbPostCreate(java.lang.String
      custname) throws CreateException { 
        } 
        public void ejbRemove() throws
      RemoveException { 
        } 
        public abstract void setCustname(java.lang.String
      custname); 
        public abstract void setRental(java.util.Collection
      rental); 
                                                    //
      Rentalエンティティビーンへのリレーションシップ 
        public abstract java.lang.String getCustname(); 
        public abstract java.util.Collection getRental(); 
                                                    //
      Rentalエンティティビーンへのリレーションシップ 
        public void ejbLoad() { 
        } 
        public void ejbStore() { 
        } 
        public void ejbActivate() { 
        } 
        public void ejbPassivate() { 
        } 
        public void unsetEntityContext()
      { 
          this.entityContext
      = null; 
        } 
        public void setEntityContext(EntityContext
      entityContext) { 
          this.entityContext
      = entityContext; 
        } 
       
        /** 
          * @return 
          */ 
        private double getTotalCharge() { 
          double result = 0; 
          Iterator rentals
      = getRental().iterator(); 
          while( rentals.hasNext()
      ) { 
            Rental
      each = (Rental)rentals.next(); 
            result
      += each.getCharge(); 
          } 
          return result; 
        } 
       
        /** 
          * @return 
          */ 
        private int getTotalFrequentRenterPoints() { 
          int result = 0; 
          Iterator rentals
      = getRental().iterator(); 
          while( rentals.hasNext()
      ) { 
            Rental
      each = (Rental)rentals.next(); 
            result
      += each.getFrequentRenterPoints(); 
          } 
          return result; 
        } 
       
        /** 
          * @return 
          */ 
        public java.lang.String statement() { 
          Iterator rentals
      = getRental().iterator(); 
          String result = "Rental
      Record for " + getCustname() + "\n"; 
          while( rentals.hasNext()
      ) { 
          Rental each = (Rental)rentals.next(); 
            // この貸し出しに関する数値の表示 
            result
      += "\t" + each.getMovie().getTitle()
      + "\t" + String.valueOf(each.getCharge())
      + "\n"; 
          } 
          // フッタ部分の追加 
          result += "Amount
      owed is " + String.valueOf(getTotalCharge())
      + "\n"; 
          result += "You
      earned " + String.valueOf(getTotalFrequentRenterPoints())
      + " frequent renter points"; 
          return result; 
        } 
       
        /** 
          * @return 
          */ 
        public java.lang.String htmlStatement() { 
          Iterator rentals
      = getRental().iterator(); 
          String result = "<H1>Rentals
      for <EM>" + getCustname() + "</EM></H1><P>\n"; 
          while( rentals.hasNext()
      ) { 
            Rental
      each = (Rental)rentals.next(); 
            // この貸し出しに関する数値の表示 
            result
      += each.getMovie().getTitle() + ": "
      + String.valueOf(each.getCharge()) + "<BR>\n"; 
          } 
          // フッタ部分の追加 
          result += "<P>You
      owe <EM>" + String.valueOf(getTotalCharge())
      + "</EM><P>\n"; 
          result += "On
      this rental you earned <EM>" +
      String.valueOf(getTotalFrequentRenterPoints())
      + 
          "</EM>
      frequent renter points<P>"; 
          return result; 
        } 
      } |