package ejava.examples.checkouts.ejb;

import ejava.examples.personnel.ejb20.PersonLocal;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import java.util.Set;
import java.util.Date;

/**
*/
public abstract class BorrowerEJB implements BorrowerLBI, EntityBean {

   public abstract void setId(String id);
   public abstract String getId();
   public abstract void setBeginDate(Date id);
   public abstract Date getBeginDate();
   public abstract void setEndDate(Date id);
   public abstract Date getEndDate();
   public abstract void setIdentity(PersonLocal person);
   public abstract PersonLocal getIdentity();
   public abstract void setCheckouts(Set checkouts);
   public abstract Set getCheckouts();

   public String getName() {
      return getIdentity().getFirstName() + " " + getIdentity().getLastName();
   }

   public String getPhoneNumber() {
      return getIdentity().getPhoneNumber();
   }

   public String getAddress() {
      return getIdentity().getAddress();
   }

   public void addCheckout(CheckoutLocal checkout) throws CheckoutException {
      if (isValid()) {
         getCheckouts().add(checkout);
      }
      else {
         throw new CheckoutException("invalid borrower");
      }
   }

   public void terminate() {
      setEndDate(new Date());
   }

   public boolean isValid() {
      return getEndDate() == null;  //date gets set when terminated
   }


   public String ejbCreate(PersonLocal identity) throws BorrowerException {
      setId(identity.getId());
      setBeginDate(new Date());
      return null;
   }
   public void ejbPostCreate(PersonLocal identity) { 
      setIdentity(identity);
   }

   public void ejbPassivate() {}
   public void ejbActivate() {}
   public void ejbLoad() {}
   public void ejbStore() {}
   public void ejbRemove() {}
   public void setEntityContext(EntityContext ctx) {}
   public void unsetEntityContext() {}
}
