User bean.

Enterprise Java
Architecting and Designing Scalable, Multitier Systems
by Michael Minh Nguyen
Listing 6. User bean.


package com.scalablemultitier;



public class User

{

  private static final int MAX_FIRST_NAME_LENGTH_ALLOWED = 10;

  private static final int MAX_LAST_NAME_LENGTH_ALLOWED = 10;

  private static final String FIRST_NAME_ERROR_MSG =

      "First name needs to be between 1 and 10 characters.";

  private static final String LAST_NAME_ERROR_MSG =

     "Last name needs to be between 1 and 10 characters.";

  private static final String MIDDLE_INITIAL_ERROR_MSG =

     "Middle initial is optional and can have only 1 character.";

  private static final String EMAIL_ERROR_MSG =

    "Email specified is either blank or not in the correct format.";

  private static final char APPERSEND = '@';

  private static final char PERIOD = '.';

  private static final char HYPHEN = '-';

  private static final char UNDERSCORE = '_';

  String mFirstName, mLastName, mEmail, mMiddleInitial;



  public void setFirstName (String firstName)

  {

    int length;

    if (firstName == null)

    {

      // Normally throw a application-specific exception such as BusinessRuleException.

      // Use RuntimeException keep code listing simple.

      throw new RuntimeException (FIRST_NAME_ERROR_MSG);

    }

    length = firstName.trim().length();

    if (length < 1 || length > MAX_FIRST_NAME_LENGTH_ALLOWED)

    {

      throw new RuntimeException (FIRST_NAME_ERROR_MSG);

    }

    mFirstName = firstName.trim ();

  }



  public String getFirstName ()

  {

    return mFirstName;

  }



  public void setLastName (String lastName)

  {

    int length;

    if (lastName == null)

    {

      throw new RuntimeException (LAST_NAME_ERROR_MSG);

    }

    length = lastName.trim().length();

    if (length < 1 || length > MAX_FIRST_NAME_LENGTH_ALLOWED)

    {

      throw new RuntimeException (LAST_NAME_ERROR_MSG);

    }

    mLastName = lastName.trim ();

  }



  public String getLastName ()

  {

    return mLastName;

  }



  public void setEmail (String email)

  {

    int appersendIndex, periodIndex;

    if (email == null || email.trim ().length () == 0)

    {

      throw new RuntimeException (EMAIL_ERROR_MSG);

    }

    appersendIndex = email.indexOf (APPERSEND);

    if (appersendIndex <= 0)

    {

      throw new RuntimeException(EMAIL_ERROR_MSG);

    }

    periodIndex = email.indexOf (PERIOD);

    if (periodIndex <= 0)

    {

      throw new RuntimeException(EMAIL_ERROR_MSG);

    }

    // make sure that there is one or more characters after the period

    if (periodIndex == (email.length () - 1))

    {

      throw new RuntimeException(EMAIL_ERROR_MSG);

    }

    // check for only character or numbers

    for (int i = 0, length = email.length (); i < length; i++)

    {

      if (! Character.isLetterOrDigit  (email.charAt (i)) &&

            email.charAt (i) != APPERSEND && email.charAt (i) != PERIOD &&

            email.charAt (i) != HYPHEN && email.charAt (i) != UNDERSCORE)

      {

        throw new RuntimeException (EMAIL_ERROR_MSG);

      }

    }

  }



  public String getEmail ()

  {

    return mEmail;

  }



  public void setMiddleInitial (String middleInitial)

  {

    int length;

    if (middleInitial == null)

    {

      mMiddleInitial = null;

      return;

    }

    length = middleInitial.trim().length();

    if (length > 1)

    {

      throw new RuntimeException (MIDDLE_INITIAL_ERROR_MSG);

    }

    mMiddleInitial = middleInitial.trim ();

  }



  public String getMiddleInitial ()

  {

    return mMiddleInitial;

  }

}

About the Author

Michael Minh Nguyen is a senior software engineer at eBuilt Inc. in Irvine, CA. He may be contacted at [email protected].