package com.dragonsoft.tryapp.common;

import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;

/**
 * Used to identify the user that initiated an action.
 */
public class UserCredentials implements Serializable {

    /**
     * The username.
     */
    private String strUsername;

    /**
     * The user level (TRY_USR_LVL_ADMIN, TRY_USR_LVL_PROF, 
     * TRY_USR_LVL_GRD, TRY_USR_LVL_STU, or TRY_USR_LVL_GUEST).
     */
    private List userLevels;


    /**
     * Creates a new instance.
     * 
     * @param    username     the username
     * @param    userLevel    the user level
     */
    public UserCredentials(String username, List userLevel) {
        strUsername = username;
        userLevels = new ArrayList();
        if(userLevel!=null)
        userLevels.addAll(userLevel);
    }

    /**
     * Creates a new instance using a TryUser instance.
     * 
     * @param    tryUser      the TryUser session object
     */
    public UserCredentials(TryUser tryUser, List userLevel) {
        strUsername = tryUser.getTryUsername();
        userLevels = new ArrayList();
        if(userLevel!= null)
        userLevels.addAll(userLevel);
    }

    /**
     * Returns the username.
     * 
     * @return    the username
     */
    public String getUsername() {
        return (strUsername);
    }

    /**
     * Returns the user level.
     * 
     * @return    the user level
     */
    public String[] getUserLevel() {
    	String[] rtVal = new String[userLevels.size()];
    	userLevels.toArray(rtVal);
        return rtVal;
    }

   
    /**
     * Returns true if the given object is a UserCredentials 
     * instance and contains the same information.
     * 
     * @param    obj    the object to compare to
     * 
     * @return    true if the given object is the same
     */
    public boolean equals(Object obj) {

        boolean returnValue = false;

        if (obj instanceof UserCredentials) {
            UserCredentials objUserCredentials = (UserCredentials) obj;

            if ((getUsername().equals(objUserCredentials.getUsername()))
                    && (getUserLevel()
                            .equals(objUserCredentials.getUserLevel()))) {
                returnValue = true;
            }
        }

        return (returnValue);
    }

} // UserCredentials