

package com.provider.providerorg.ejb;

// Java imorts
import java.util.Collection;
import javax.ejb.CreateException;
import javax.ejb.EntityBean;

import com.common.BaseBean;
import com.common.uid.interfaces.UIDGeneratorUtil;


import com.provider.coderepository.interfaces.SpecialtyCodeValue;
import com.provider.coderepository.interfaces.SpecialtyCodeLocal;

import com.provider.providerorg.interfaces.MyEntityValue;

/**
 * 
 * @ejb.bean
 *  display-name="MyEntity Entity Bean"
 *  name="MyEntity"
 *  view-type="local"
 *  type="CMP"
 *  transaction-type="container"
 *  cmp-version="2.x"
 *  primkey-field="ID"
 *  schema="MyEntityEJB"
 * 
 * @ejb.persistence
 *      table-name="MyEntity" 
 * 
 * @ejb.transaction
 *      type="Mandatory"
 * 
 * @ejb.pk
 *  class="java.lang.Integer"
 *  package="java.lang"
 *  generate="false"  
 * 
 * @ejb.finder
 *  description="Find all MyEntitys"
 *  signature="java.util.Collection findAllMyEntitys()"
 *  query="SELECT OBJECT(o) FROM MyEntityEJB o"
 * 
 * @ejb.value-object
 *      name="MyEntity"
 *      match="*"
 * 
 * @ejb.external-ref
 * 		view-type="local"
 * 		link="com.provider.coderepository.ejb.SpecialtyCode"
 * 		ref-name="ejb/SpecialtyCode"
 * 		type="Entity"
 * 		home="com.provider.coderepository.interfaces.SpecialtyCodeLocalHome"
 * 		business="com.provider.coderepository.interfaces.SpecialtyCodeLocal"
 */
public abstract class MyEntityBean extends BaseBean implements EntityBean
{
	
	/**
	 * @return
	 * 
	 * @ejb.persistence
	 *      column-name="ID"
	 *      jdbc-type="INTEGER"
	 *      sql-type="INTEGER"
	 * @ejb.pk-field
	 * @ejb.interface-method
	 *
	 */
	public abstract Integer getID();
	
	/**
	 * @ejb.interface-method
	 */
	public abstract void setID(Integer pID);	
	
	
	/**
		 * @return
		 * 
		 * @ejb.persistence
		 *      column-name="MyEntityID"
		 *      jdbc-type="VARCHAR"
		 *      sql-type="varchar(30)"
		 * @ejb.interface-method
		 *
		 */
	public abstract String getMyEntityID();
	
	/**
	 * @ejb.interface-method
	 */
	public abstract void setMyEntityID(String pMyEntityID);	
	
	/**
	 * @return
	 * 
	 * @ejb.persistence
	 *      column-name="FIRSTNAME"
	 *      jdbc-type="VARCHAR"
	 *      sql-type="varchar(30)"
	 * @ejb.interface-method
	 *
	 */
	public abstract String getFirstName();

	/**
	 * @ejb.interface-method
	 */
	public abstract void setFirstName(String pFirstName);

	/**
		 * @return
		 * 
		 * @ejb.persistence
		 *      column-name="LASTNAME"
		 *      jdbc-type="VARCHAR"
		 *      sql-type="varchar(30)"
		 * @ejb.interface-method
		 *
		 */
	public abstract String getLastName();

	/**
	 * @ejb.interface-method
	 */
	public abstract void setLastName(String pLastName);
	
	/**
		 * @ejb.interface-method
		 * @ejb.transaction
		 *    type="Mandatory"
		 */
	public abstract MyEntityValue getMyEntityValue();

	/**
	 * @ejb.interface-method
	 */
	public abstract void setMyEntityValue(MyEntityValue pMyEntityVal);
 

	/**
	 * @ejb.create-method
	 */
	public Integer ejbCreate() throws CreateException
	{
		mLog.info("Creating New MyEntityBean default method");
		return null;
	}
		
	/**
	 * @ejb.create-method
	 */
	public Integer ejbCreate(MyEntityValue value) throws CreateException
	{
		mLog.info("Creating MyEntityBean " + value);

		try
		{
			setID(
				new Integer(
					UIDGeneratorUtil.getHome().create().getNextSequence(
			OrgNodeBean.class.getName())));

			value.setID(getID());
		}
		catch (Exception e)
		{
			CreateException ex =
				new CreateException("Could not Create new " + OrgNodeBean.class.getName());
			ex.initCause(e);
			throw ex;
		}

		setMyEntityValue(value);
		return null;
	}

	
	
	
	public void ejbPostCreate(MyEntityValue pMyEntityVal)
	{
		// create the relationship to Specialty
		//setSpecialty(pPractLocal);
	}
	
//------------------------- Relationships Objects ---------------
 
//		jboss.relation
//			fk-column="code"
//			related-pk-field="code"

	/**
	 * 	
	 * @ejb.interface-method
	 * @ejb.relation
	 *   name="MyEntity-specialtyCode"
	 * 	 target-ejb="SpecialtyCode"
	 *   role-name="MyEntity-has-specialtycodes"
	 * 
	 * 
	 * @ejb.value-object
	 *   aggregate="com.provider.coderepository.interfaces.SpecialtyCodeValue"
	 *   aggregate-name="SpecialtyCodes"
	 *   members="com.provider.coderepository.interfaces.SpecialtyCodeLocal"
	 *   members-name="SpecialtyCodes"
	 *   relation="external"
	 * 	type="Collection"
	 * 
	 */	
	public abstract Collection getSpecialtyCodes();
	public abstract void setSpecialtyCodes();


}
