//********************************************************//
//
//  Class   :   UserBean
//  Author  :   Keith A. Pray (kap)
//  Date    :   July 2004 (created)
//  For     :   Kapow
//
//********************************************************//

package kap.web;

/*
  Maintainance log started on July 19th, 2004

  July 19th, 2004    - created -kap
*/

/**
 * This class is a Java Bean for tracking end user
 * authentication state and user access level.
 * 
 *
 * @author Keith A. Pray
 * @version 0.9
 */

public class UserBean
{

//********************************************************//
// ----- Data Members -----
//********************************************************//  

  /** User name */
  private String userName;

  /** User first name */
  private String firstName;

  /** User last name */
  private String lastName;

  /** User full name */
  private String fullName;

  /** User authentication state */
  private int userState;

  // User states

  /** User failed authentication */
  public static final int FAILED = -1;

  /** No user */
  public static final int NO_USER = 0;

  /** User logged off successfully */
  public static final int LOGGED_OFF = 1;

  /** User logged on successfully */
  public static final int LOGGED_ON = 2;

  /** User privilege level */
  private int userLevel;

  // User privilege levels

  /** Denied access */
  public static final int DENIED = -2;

  /** Restricted access */
  public static final int RESTRICTED = -1;
  
  /** Guest level access */
  public static final int GUEST = 0;
  
  /** Verified guest level access */
  public static final int VERIFIED_GUEST = 1;

  /** User level access */
  public static final int USER =2;

  /** Author level access */
  public static final int AUTHOR = 3;

  /** Administrator access */
  public static final int ADMINISTRATOR = 4;

//********************************************************//
// ----- Methods-----
//********************************************************//

  /**
   * Contructs a new default UserBean object.
   */

  public UserBean()
  {
    Init();

  } // END public UserBean()

//********************************************************//
  
  /**
   * Initializes data members. User name is set to guest.
   * User access level is set to guest.
   */

  public void Init()
  {
    userName = "guest";
    firstName = "";
    lastName = "";
    fullName = "";

    userLevel = GUEST;
    userState = NO_USER;

  } // END public Init()

//********************************************************//
  
  /**
   * Sets user name.
   *
   * @param name
   * The user's login name 
   */

  public void setUserName ( String name )
  {
    // accept any string but empty and null
    if ( name == null || name.equals ( "" ) )
    {
      // then initialize everything
      Init();

    } // end if name null or empty
    else
    {
      userName = name;

    } // end else the name is fine

  } // END public void setUserName ( String name )

//********************************************************//

  /**
   * Returns the user name.
   *
   * @return The user's login name 
   */
  
  public String getUserName()
  {
    return ( userName );

  } // END public String getUserName()

//********************************************************//


  /**
   * Sets user first name.
   *
   * @param name
   * The user's first name 
   */

  public void setFirstName ( String name )
  {
    firstName = name;

  } // END public void setFirstName ( String name )

//********************************************************//

  /**
   * Returns the user first name.
   *
   * @return The user's first name 
   */

  public String getFirstName()
  {
    return ( firstName );

  } // END public String getFirstName()

//********************************************************//

  /**
   * Sets user last name.
   *
   * @param name
   * The user's last name 
   */

  public void setLastName ( String name )
  {
    lastName = name;

  } // END public void setLastName ( String name )

//********************************************************//

  /**
   * Returns the user last name.
   *
   * @return The user's last name 
   */

  public String getLastName()
  {
    return ( lastName );

  } // END public String getLastName()

//********************************************************//

  /**
   * Sets user full name.
   *
   * @param name
   * The user's full name 
   */

  public void setFullName ( String name )
  {
    fullName = name;

  } // END public void setFullName ( String name )

//********************************************************//

  /**
   * Returns the user full name.
   *
   * @return The user's full name 
   */
  
  public String getFullName()
  {
    return ( fullName );

  } // END public String getFullName()

//********************************************************//

  /**
   * Sets the user access level.
   *
   * @param access level
   */

  public void setUserLevel ( int level )
  {
    userLevel = level;

  } // END public void setUserLevel ( int level )

//********************************************************//

  /**
   * Returns the user access level.
   *
   * @return access level
   */

  public int getUserLevel()
  {
    return ( userLevel );

  } // END public int getUserLevel()

//********************************************************//

  /**
   * Sets the user state.
   *
   * @param state
   */

  public void setUserState ( int state )
  {
    userState = state;

  } // END public void setUserState ( int state )

//********************************************************//

  /**
   * Returns the user state.
   *
   * @return state
   */

  public int getUserState()
  {
    return ( userState );

  } // END public int getUserState()

//********************************************************//

  /**
   * Returns current state message.
   *
   * @return message for the current state
   */

  public String userStateMessage()
  {
    switch ( userState )
    {
    case FAILED:
      return ( "User failed authentication" );
    case NO_USER:
      return ( "No user logged in" );
    case LOGGED_OFF:
      return ( "User logged off" );
    case LOGGED_ON:
      return ( "User logged on" );
    default:
      return ( "State unknown. This should not happen." );
    } // end switch user state

  } // END public String userStateMessage()

//********************************************************//

  /**
   * Returns user level message/
   *
   * @return message for the user level
   */

  public String userLevelMessage()
  {
    switch ( userLevel )
    {
    case DENIED:
      return ( "User denied all access" );
    case RESTRICTED:
      return ( "User is restricted some access" );
    case GUEST:
      return ( "User has guest access" );
    case VERIFIED_GUEST:
      return ( "User has verified guest access" );
    case USER:
      return ( "User has regular user access" );
    case AUTHOR:
      return ( "User has author access" );
    case ADMINISTRATOR:
      return ( "User has administrator access" );
    default:
      return ( "User level unknown. This should not happen" );

    } // end switch user level

  } // END public String userLevelMessage()

//********************************************************//

} // END public class UserBean

