001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020 package org.apache.directory.server.kerberos.shared.messages.value;
021
022
023 import java.util.Arrays;
024 import java.util.Collections;
025 import java.util.List;
026
027 import org.apache.directory.shared.ldap.constants.AuthenticationLevel;
028
029
030 /**
031 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
032 * @version $Rev: 586528 $, $Date: 2007-10-19 19:47:06 +0300 (Fri, 19 Oct 2007) $
033 */
034 public final class LastRequestType implements Comparable<LastRequestType>
035 {
036 /**
037 * Constant for the "none" last request type.
038 */
039 public static final LastRequestType NONE = new LastRequestType( 0, AuthenticationLevel.NONE.toString() );
040
041 /**
042 * Constant for the "time of initial ticket" last request type.
043 */
044 public static final LastRequestType TIME_OF_INITIAL_TGT = new LastRequestType( 1, "time of initial ticket" );
045
046 /**
047 * Constant for the "time of initial request" last request type.
048 */
049 public static final LastRequestType TIME_OF_INITIAL_REQ = new LastRequestType( 2, "time of initial request" );
050
051 /**
052 * Constant for the "time of newest ticket" last request type.
053 */
054 public static final LastRequestType TIME_OF_NEWEST_TGT = new LastRequestType( 3, "time of newest ticket" );
055
056 /**
057 * Constant for the "time of last renewal" last request type.
058 */
059 public static final LastRequestType TIME_OF_LAST_RENEWAL = new LastRequestType( 4, "time of last renewal" );
060
061 /**
062 * Constant for the "time of last request" last request type.
063 */
064 public static final LastRequestType TIME_OF_LAST_REQ = new LastRequestType( 5, "time of last request" );
065
066 /**
067 * Constant for the "time of password expiration" last request type.
068 */
069 public static final LastRequestType TIME_OF_PASSWORD_EXP = new LastRequestType( 6, "time of password expiration" );
070
071 /**
072 * Array for building a List of VALUES.
073 */
074 private static final LastRequestType[] values =
075 { NONE, TIME_OF_INITIAL_TGT, TIME_OF_INITIAL_REQ, TIME_OF_NEWEST_TGT, TIME_OF_LAST_RENEWAL, TIME_OF_LAST_REQ,
076 TIME_OF_PASSWORD_EXP };
077
078 /**
079 * A List of all the last request type constants.
080 */
081 public static final List<LastRequestType> VALUES = Collections.unmodifiableList( Arrays.asList( values ) );
082
083 /**
084 * The name of the checksum type.
085 */
086 private final String name;
087
088 /**
089 * The value/code for the checksum type.
090 */
091 private final int ordinal;
092
093
094 /**
095 * Private constructor prevents construction outside of this class.
096 */
097 private LastRequestType( int ordinal, String name )
098 {
099 this.ordinal = ordinal;
100 this.name = name;
101 }
102
103
104 /**
105 * Returns the last request type when specified by its ordinal.
106 *
107 * @param type
108 * @return The last request type.
109 */
110 public static LastRequestType getTypeByOrdinal( int type )
111 {
112 for ( int ii = 0; ii < values.length; ii++ )
113 {
114 if ( values[ii].ordinal == type )
115 {
116 return values[ii];
117 }
118 }
119
120 return NONE;
121 }
122
123
124 /**
125 * Returns the number associated with this last request type.
126 *
127 * @return The last request type ordinal.
128 */
129 public int getOrdinal()
130 {
131 return ordinal;
132 }
133
134
135 public int compareTo( LastRequestType that )
136 {
137 return ordinal - that.ordinal;
138 }
139
140
141 public String toString()
142 {
143 return name + " (" + ordinal + ")";
144 }
145 }