package ejava.transactions.demo;

import javax.ejb.EntityBean;
import javax.ejb.EntityContext;

public abstract class AccountEJB implements EntityBean {
   private EntityContext ctx_;
   public abstract void setId(String id);
   public abstract String getId();
   public abstract void setBalance(float balance);
   public abstract float getBalance();
   
   public void reset() { setBalance(0.0F); }

   public void deposit(float amount) throws AccountException {
      setBalance(getBalance() + amount);
   }

   public void withdraw(float amount) throws AccountException {

      float balance = getBalance();
      if ((balance - amount) >= 0) {
         setBalance(balance - amount);
      }
      else {
         setBalance(balance - 1.0F); //subtract fee
	 throw new AccountException("overdraw");
      }
   }

   public String ejbCreate(String id) {
      setId(id); setBalance(0.0F); return null; 
   }
   public void ejbPostCreate(String id) {}
   public void ejbActivate() {}
   public void ejbPassivate() {}
   public void ejbLoad() {}
   public void ejbStore() {}
   public void ejbRemove() {}
   public void setEntityContext(EntityContext ctx) { ctx_ = ctx; }
   public void unsetEntityContext() { ctx_ = null; }
}
