package com.vivi3d.nsi.ejb.entity.beans;

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

/**
import com.vivi3d.nsi.ejb.entity.intf.PaperCategoryPK;
import com.vivi3d.nsi.ejb.entity.intf.PaperCategoryLocal;
import com.vivi3d.nsi.ejb.entity.intf.PaperCategoryLocalHome;
import com.vivi3d.nsi.ejb.entity.helper.PaperCategoryUtil;

import com.vivi3d.nsi.ejb.entity.helper.PaperLightValue;
*/

import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * @ejb.bean
 *      description="Describe the User"
 *      display-name="User EJB"
 *      name="User"
 *      view-type="local"
 *      type="CMP"
 *      cmp-version="2.x"
 *      schema="user"
 *      local-jndi-name="ejb/UserLocal"
 * @ejb.pk
 *      class="com.vivi3d.nsi.ejb.entity.intf.UserPK"
 * @ejb.util
 *      generate="physical"
 * @ejb.value-object
 *      name="UserLight"
 *      match="light"
 * @ejb.value-object
 *      name="UserFull"
 *      match="*"
 * @ejb.finder
 *      signature="java.util.Collection findAll()"
 *      query="select object(o) 
 *             from user as o"
 */

public abstract class UserBean implements EntityBean{
  private EntityContext ctx;

  public void setEntityContext(EntityContext ctx){
    this.ctx = ctx;
  }

  public void unsetEntityContext(){
    ctx = null;
  }
  
  /**
   * @ejb.create-method
   */
  public Object ejbCreate(com.vivi3d.nsi.ejb.entity.helper.UserFullValue v) throws CreateException{
    setName(v.getName());
    setPasswd(v.getPasswd());
    setFirstName(v.getFirstName());
    setLastName(v.getLastName());
    setEmail(v.getEmail());
    return null;
  }

  /**
   */
  public void ejbPostCreate(com.vivi3d.nsi.ejb.entity.helper.UserFullValue v) throws CreateException{
    try{
      setUserFullValue(v);
    }
    catch(Exception exc){

    }
  }

  /**
   * @ejb.create-method
   */
  public Object ejbCreate(Collection roleLightValues, com.vivi3d.nsi.ejb.entity.helper.UserLightValue v) throws CreateException{
    setName(v.getName());
    setPasswd(v.getPasswd());
    setFirstName(v.getFirstName());
    setLastName(v.getLastName());
    setEmail(v.getEmail());
    
    return null;
  }

  public void ejbPostCreate(Collection roleLightValues, com.vivi3d.nsi.ejb.entity.helper.UserLightValue v) throws CreateException{
    Collection roleLocals = new ArrayList();
    try{
      com.vivi3d.nsi.ejb.entity.intf.RoleLocalHome h = com.vivi3d.nsi.ejb.entity.helper.RoleUtil.getLocalHome();

      Iterator it = roleLightValues.iterator();
      while(it.hasNext()){
        com.vivi3d.nsi.ejb.entity.helper.RoleLightValue r = (com.vivi3d.nsi.ejb.entity.helper.RoleLightValue)it.next();
        com.vivi3d.nsi.ejb.entity.intf.RoleLocal l = h.findByPrimaryKey(r.getPrimaryKey());
        roleLocals.add(l);    
      }
      if(!roleLocals.isEmpty()){
        setRoles(roleLocals);
      }
    }
    catch(Exception exc){

    }
  }

  /**
   * @ejb.create-method
   */
  public Object ejbCreate(com.vivi3d.nsi.ejb.entity.helper.UserLightValue v) throws CreateException{
    setName(v.getName());
    setPasswd(v.getPasswd());
    setFirstName(v.getFirstName());
    setLastName(v.getLastName());
    setEmail(v.getEmail());

    return null;
  }
 
//  public void ejbPostCreate(com.vivi3d.nsi.ejb.entity.helper.UserLightValue v) throws CreateException{
//  }

  /**
   * @ejb.persistence
   * @ejb.pk-field
   * @ejb.interface-method
   * @ejb.value-object
   *      match="light"
   */
  public abstract String getName();

  public abstract void setName(String name);

  /**
   * @ejb.persistence
   * @ejb.interface-method
   * @ejb.value-object
   *      match="light"
   */
  public abstract String getPasswd();

  /**
   * @ejb.interface-method
   */
  public abstract void setPasswd(String passwd);

  /**
   * @ejb.persistence
   * @ejb.interface-method
   * @ejb.value-object
   *      match="light"
   */
  public abstract String getFirstName();

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

  /**
   * @ejb.persistence
   * @ejb.interface-method
   * @ejb.value-object
   *      match="light"
   */
  public abstract String getLastName();

  /**
   * @ejb.interface-method
   */
  public abstract void setLastName(String lastName);

  /**
   * @ejb.persistence
   * @ejb.interface-method
   * @ejb.value-object
   *      match="light"
   */
  public abstract String getEmail();

  /**
   * @ejb.interface-method
   */
  public abstract void setEmail(String email);



  /**
   * @ejb.interface-method
   * @ejb.relation
   *      name="UserRole"
   *      role-name="UserHasRoles"
   *      target-ejb="Role"
   *      target-role-name="RoleBelongUsers"
   *      target-multiple="yes"
   *
   * @jboss.relation-table
   *        table-name="userRole"
   *
   * @jboss.target-relation
   *      fk-constraint="yes"
   *      related-pk-field="name"
   *      fk-column="userName"
   * @jboss.relation
   *      fk-constraint="yes"
   *      related-pk-field="name"
   *      fk-column="roleName"
   * @ejb.value-object
   *      type="Collection"
   *      relation="external"
   *      aggregate="com.vivi3d.nsi.ejb.entity.helper.RoleLightValue"
   *      aggregate-name="RoleValues"
   *      members="com.vivi3d.nsi.ejb.entity.intf.RoleLocal"
   *      members-name="RoleLightValue"
   */
  public abstract Collection getRoles();
 
  /**
   * @ejb.interface-method
   */
  public abstract void setRoles(Collection roles);

  /**
   * Get value object specified in DTO design pattern.
   *
   * @ejb.interface-method
   */
  public abstract com.vivi3d.nsi.ejb.entity.helper.UserLightValue getUserLightValue();



  /**
   * @ejb.interface-method
   */
  public abstract com.vivi3d.nsi.ejb.entity.helper.UserFullValue getUserFullValue();

  /**
   * @ejb.interface-method
   */
  public abstract void setUserFullValue(com.vivi3d.nsi.ejb.entity.helper.UserFullValue v);

  /**
   * @ejb.interface-method
   */
  public abstract void addRoleLightValue(com.vivi3d.nsi.ejb.entity.helper.RoleLightValue added) throws javax.ejb.FinderException;

   /**
   * @ejb.interface-method
   */
  public abstract void removeRoleLightValue(com.vivi3d.nsi.ejb.entity.helper.RoleLightValue removed) throws javax.ejb.RemoveException;

 
}
