package no.bekk.pervers.ejb;

/**
 * @info:todo Rename this class maybe?
 *
 * @ejb:bean
 *    type="CMP"
 *    cmp-version="2.x"
 *    name="ProjectEJB"
 *    jndi-name="pervers.ProjectHome"
 *    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 project
 * @weblogic:data-source-name pervers.database
 * @weblogic:persistence
 * @ejb:transaction type="Required"
 * @TODO avoid these stupid tags somehow
 * @weblogic:ejb-reference-description ejb-ref-name="CustomerEJB" jndi-name="pervers.CustomerLocalHome"
 * @weblogic:ejb-local-reference-description ejb-ref-name="CustomerEJB" jndi-name="pervers.CustomerHome"
 *
 * @TODO these tags are redundant with ejb:bean. REMOVE THEM
 * @weblogic:jndi-name pervers.ProjectHome
 * @weblogic:local-jndi-name pervers.ProjectLocalHome
 *
 * @cmp20
 * @ejb-interface javax.ejb.EntityBean
 * @ejb-name ProjectEJB
 * @jndi-name pervers.ProjectHome pervers.ProjectLocalHome
 * @table-name project
 * @prim-key-class java.lang.Long
 * @data-source-name pervers.database
 * @finder java.util.Collection findAll() WHERE id IS NOT NULL
 * @relation customer-project CustomerEJB many customer customer_id
 * @ejb-ref CustomerEJB Entity no.bekk.pervers.ejb.CustomerHome no.bekk.pervers.ejb.Customer pervers.CustomerLocalHome
 * @ejb-ref ToolUseEJB Entity no.bekk.pervers.ejb.ToolUseHome no.bekk.pervers.ejb.ToolUse pervers.ToolUseLocalHome
 */
public abstract class ProjectBean implements javax.ejb.EntityBean {

    /**
     * @info:todo Foo the bar in the jar
     * @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:persistent-field
     * @ejb:interface-method view-type="local"
     * @ejb:interface-method view-type="remote"
     * @weblogic:dbms-column description
     *
     * @cmp-field description
     * @local-method
     * @remote-method
     */
    public abstract java.lang.String getDescription();
    /**
     * @ejb:interface-method view-type="local"
     * @ejb:interface-method view-type="remote"
     *
     * @local-method
     * @remote-method
     */
    public abstract void setDescription(java.lang.String val);

    /**
     * @ejb:interface-method view-type="local"
     * @Xejb:relation
     *    name="customer-project"
     *    Xtarget-ejb="CustomerEJB"
     *    role-name="many-projects-have-one-customer"
     *    Xcascade-delete="yes"
     *    target-role-name="one-customer-has-many-projects"
     *    target-multiple="yes"
     *    Xtarget-cascade-delete="no"
     * @weblogic:column-map foreign-key-column="customer_id" key-column="id"
     * @weblogic:relation
     *    name="customer-project"
     *    join-table="BAR"
     *    role-name="many-projects-have-one-customer"
     *    foreign-key-column="second_foreign_id"
     *    key-column="id"
     *
     * @cmr-field CustomerEJB many
     * @local-method
     */
    //public abstract LocalCustomer getCustomer();
    public abstract no.bekk.pervers.interfaces.CustomerEJBLocal getCustomer();

    /**
     * @ejb:interface-method view-type="local"
     *
     * @local-method
     */
    //public abstract void setCustomer(LocalCustomer val);
    public abstract void setCustomer(no.bekk.pervers.interfaces.CustomerEJBLocal val);

    //public java.lang.Long ejbCreate(java.lang.String name, java.lang.String description) { // EJBGen
    public no.bekk.pervers.interfaces.ProjectEJBPK ejbCreate(java.lang.String name, java.lang.String description) {
        setName(name);
        setDescription(description);
        setId( new Long(System.currentTimeMillis()) );
        return null;
    }

    public void ejbPostCreate(java.lang.String name, java.lang.String description) {
    }

    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() {
    }
}
