package mit.mitid ;

public class AUTHEN
{
	private int length = 0 ;
	public int getLength() { return this.length ; }
	public void setLength( int length ) { this.length = length ; }

	private String status = null ;
	public String getStatus() { return this.status ; }
	public void setStatus( String status ) { this.status = status ; }

	private String statusMessage = null ;
	public String getStatusMessage() { return this.statusMessage ; }
	public void setStatusMessage( String statusMessage ) { this.statusMessage = statusMessage ; }

	private boolean searchable = true ;
	public boolean isSearchable() { return this.searchable ; }
	public void setSearchable( boolean searchable ) { this.searchable = searchable ; }

	private boolean assignable = false ;
	public boolean isAssignable() { return this.assignable ; }
	public void setAssignable( boolean assignable ) { this.assignable = assignable ; }

	private boolean authenticated = false ;
	public boolean isAuthenticated() { return this.authenticated ; }
	public void setAuthenticated( boolean authenticated ) { this.authenticated = authenticated ; }

	public void deserialize( String str )
	{
		try
		{
			setStatus( null ) ;
			setStatusMessage( null ) ;
			setSearchable( false ) ;
			setAssignable( false ) ;

			java.util.StringTokenizer st
			= new java.util.StringTokenizer
				( str
				, mit.mitid.PROTOCOL.ROW_TERMINATOR_STRING
				) ;
			String token = null ;
			if( st.hasMoreTokens() )
			{
				token = st.nextToken() ;
				if( token.startsWith( new String( mit.mitid.PROTOCOL.AUTHENTICATED + mit.mitid.PROTOCOL.FIELD_DELIMITER_STRING ) ) )
				{
					setAuthenticated( true ) ;
					if( st.hasMoreTokens() )
					{
						token = st.nextToken() ;
						setStatus( token ) ;
						if( st.hasMoreTokens() )
						{
							token = st.nextToken() ;
							setStatusMessage( token ) ;
							setSearchable( mit.mitid.PROTOCOL.SEARCH_AUTHORIZED.equals( token ) ) ;
							if( st.hasMoreTokens() )
							{
								token = st.nextToken() ;
								setStatusMessage( getStatusMessage() + "\n" + token ) ;
								setAssignable( mit.mitid.PROTOCOL.ASSIGN_AUTHORIZED.equals( token ) ) ;
							}
						}
					}
				}
				else
				{
					setStatus( token ) ;
				}
			}
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
	}

	public String serialize()
	{
		try
		{
			return
				( mit.mitid.PROTOCOL.AUTHEN + mit.mitid.PROTOCOL.FIELD_DELIMITER_STRING
				+ Integer.toString( getLength() ) + mit.mitid.PROTOCOL.FIELD_DELIMITER_STRING
				) ;
		}
		catch( Exception ex )
		{
			ex.printStackTrace() ;
		}
		return null ;
	}

}