package addressbook.ejb;

import javax.ejb.*;
import java.rmi.*;

public class AddressEntryBean
extends Object 
implements EntityBean {

   public static int instanceCount = 0;

   private transient TraceHelper tracer;

   //-------------------------------------------------------------------------
   // Constructor
   //-------------------------------------------------------------------------

   public AddressEntryBean() {
      int instanceNr = instanceCount++;
      tracer = new TraceHelper("AddressEntryBean[" + instanceCount + ']');
      tracer.trace("<init>");
   }


   //-------------------------------------------------------------------------
   // Fields to be persisted
   //-------------------------------------------------------------------------

   public String name;
   public String address;
   public String city;


   //-------------------------------------------------------------------------
   // Implementation of the "AddressEntry" interface
   //-------------------------------------------------------------------------

   public String getName() {
      tracer.trace("getName", name);
      return name;
   }

   public String getAddress() {
      tracer.trace("getAddress", address);
      return address;
   }

   public String getCity() {
      tracer.trace("getCity", city);
      return city;
   }

   public void setAddress(String newAddress) {
      tracer.trace("setAddress", new String[] { newAddress });
      address = newAddress;
   }

   public void setCity(String newCity) {
      tracer.trace("setCity", new String[] { newCity });
      city = newCity;
   }


   //-------------------------------------------------------------------------
   // Implementation of the Entity Bean methods
   //-------------------------------------------------------------------------

   public void ejbActivate() {
      tracer.trace("ejbActivate");
   }

   public void ejbStore() {
      tracer.trace("ejbStore");
   }

   public void setEntityContext(EntityContext entityContext) {
      tracer.trace("setEntityContext",
            new String[] { String.valueOf(entityContext) });
   }

   public void unsetEntityContext() {
      tracer.trace("unsetEntityContext");
   }

   public void ejbPassivate() {
      tracer.trace("ejbPassivate");
   }

   public void ejbLoad() {
      tracer.trace("ejbLoad");
   }

   public void ejbRemove() {
      tracer.trace("ejbRemove");
   }

   public String ejbCreate(String initialName,
                           String initialAddress,
                           String initialCity)
   throws CreateException, RemoteException {
      tracer.trace("ejbCreate", new String[] { initialName,
                                               initialAddress,
                                               initialCity }, initialName);
      name    = initialName;
      address = initialAddress;
      city    = initialCity;
      return initialName;
   }

   public void ejbPostCreate(String initialName,
                             String initialAddress,
                             String initialCity)
   throws CreateException, RemoteException {
      tracer.trace("ejbPostCreate", new String[] { initialName,
                                            initialAddress,
                                            initialCity} );
   }
}