package no.bekk.pervers.ejb;

/**
 * @info:todo Frøstklå fod bædiry
 * @ejb:bean
 *    type="CMP"
 *    cmp-version="2.x"
 *    name="CustomerEJB"
 *    jndi-name="pervers.CustomerHome"
 *    view-type="both"
 * @ejb:pk
 * @ejb:finder
 *    signature="java.util.Collection findAll()"
 *    unchecked="true"
 *    query="WHERE id IS NOT NULL"
 *    result-type-mapping="Local"
 * @weblogic:table-name customer
 * @weblogic:data-source-name pervers.database
 * @weblogic:persistence
 * @ejb:transaction type="Required"
 * @TODO avoid these stupid tags somehow. should be able to get it from ejb:ref and weblogic:jndi-name and weblogic:local-jndi-name
 * @weblogic:ejb-reference-description ejb-ref-name="ProjectEJB" jndi-name="pervers.ProjectLocalHome"
 * @weblogic:ejb-local-reference-description ejb-ref-name="ProjectEJB" jndi-name="pervers.ProjectHome"
 *
 * @TODO these tags are redundant with ejb:bean. REMOVE THEM
 * @weblogic:jndi-name pervers.CustomerHome
 * @weblogic:local-jndi-name pervers.CustomerLocalHome
 *
 * @cmp20
 * @ejb-interface javax.ejb.EntityBean
 * @ejb-name CustomerEJB
 * @jndi-name pervers.CustomerHome pervers.CustomerLocalHome
 * @table-name customer
 * @prim-key-class java.lang.Long
 * @data-source-name pervers.database
 * @finder java.util.Collection findAll() WHERE id IS NOT NULL
 * @relation customer-project ProjectEJB one projects
 * @ejb-ref ProjectEJB Entity no.bekk.pervers.ejb.ProjectHome no.bekk.pervers.ejb.Project pervers.ProjectLocalHome
 */
public abstract class CustomerBean implements javax.ejb.EntityBean {

    /**
     * @ejb:persistent-field
     * @ejb:pk-field
     * @weblogic:dbms-column id
     *
     * @cmp-field id
     * @primkey-field
     * @local-method
     * @remote-method
     */
    public abstract java.lang.Long getId();
    public abstract void setId(java.lang.Long val);

    /**
     * @ejb:persistent-field
     * @ejb:interface-method view-type="local"
     * @ejb:interface-method view-type="remote"
     * @weblogic:dbms-column name
     *
     * @cmp-field name
     * @local-method
     * @remote-method
     */
    public abstract java.lang.String getName();

    /**
     * @ejb:interface-method view-type="local"
     * @ejb:interface-method view-type="remote"
     *
     * @local-method
     * @remote-method
     */
    public abstract void setName(java.lang.String val);

    /**
     * @ejb:interface-method view-type="local"
     * @ejb:relation
     *    name="customer-project"
     *    target-ejb="ProjectEJB"
     *    role-name="one-customer-has-many-projects"
     *    target-multiple="yes"
     *    Xmultiple="yes"
     *    Xtarget-role-name="many-projects-have-one-customer"
     *    Xtarget-cascade-delete="no"
     *    Xcascade-delete="yes"
     * @weblogic:relation
     *    name="customer-project"
     *    join-table="FOO"
     *    role-name="one-customer-has-many-projects"
     *    foreign-key-column="first_foreign_id"
     *    key-column="id"
     *
     * @cmr-field ProjectEJB one
     * @local-method
     */
    public abstract java.util.Collection getProjects();

    /**
     * @ejb:interface-method view-type="local"
     *
     * @local-method
     */
    public abstract void setProjects(java.util.Collection collection);

    //public java.lang.Long ejbCreate(java.lang.String name) { // EJBGen
    public no.bekk.pervers.interfaces.CustomerEJBPK ejbCreate(java.lang.String name) {
        setName(name);
        setId( new Long(System.currentTimeMillis()) );
        return null;
    }

    public void ejbPostCreate(java.lang.String name) {
    }

    private javax.ejb.EntityContext _entityContext;

    public void setEntityContext(javax.ejb.EntityContext entityContext) {
        _entityContext = entityContext;
    }

    public void unsetEntityContext() {
        _entityContext = null;
    }

    public void ejbLoad() {
    }

    public void ejbActivate() {
    }

    public void ejbPassivate() {
    }

    public void ejbRemove() throws javax.ejb.RemoveException {
    }

    public void ejbStore() {
    }
}
