001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.net.imap;
019
020 /**
021 * IMAPCommand stores IMAP command codes.
022 */
023 public enum IMAPCommand
024 {
025 // These enums must either use the same name as the IMAP command
026 // or must provide the correct string as the parameter.
027
028 // Commands valid in any state:
029
030 CAPABILITY(0),
031 NOOP(0),
032 LOGOUT(0),
033
034 // Commands valid in Not Authenticated state
035 STARTTLS(0),
036 AUTHENTICATE(1),
037 LOGIN(2),
038
039 // commands valid in authenticated state
040 SELECT(1),
041 EXAMINE(1),
042 CREATE(1),
043 DELETE(1),
044 RENAME(2),
045 SUBSCRIBE(1),
046 UNSUBSCRIBE(1),
047 LIST(2),
048 LSUB(2),
049 STATUS(2), // P2 = list in ()
050 APPEND(2,4), // mbox [(flags)] [date-time] literal
051
052 // commands valid in selected state (substate of authenticated)
053 CHECK(0),
054 CLOSE(0),
055 EXPUNGE(0),
056 SEARCH(1, Integer.MAX_VALUE),
057 FETCH(2),
058 STORE(3),
059 COPY(2),
060 UID(2, Integer.MAX_VALUE),
061 ;
062
063 private final String imapCommand;
064
065 @SuppressWarnings("unused") // not yet used
066 private final int minParamCount;
067 @SuppressWarnings("unused") // not yet used
068 private final int maxParamCount;
069
070 IMAPCommand(){
071 this(null);
072 }
073
074 IMAPCommand(String name){
075 this(name, 0);
076 }
077
078 IMAPCommand(int paramCount){
079 this(null, paramCount, paramCount);
080 }
081
082 IMAPCommand(int minCount, int maxCount){
083 this(null, minCount, maxCount);
084 }
085
086 IMAPCommand(String name, int paramCount){
087 this(name, paramCount, paramCount);
088 }
089
090 IMAPCommand(String name, int minCount, int maxCount){
091 this.imapCommand = name;
092 this.minParamCount = minCount;
093 this.maxParamCount = maxCount;
094 }
095
096 /**
097 * Get the IMAP protocol string command corresponding to a command code.
098 *
099 * @param command the IMAPCommand whose command string is required.
100 * @return The IMAP protocol string command corresponding to a command code.
101 */
102 public static final String getCommand(IMAPCommand command) {
103 return command.getIMAPCommand();
104 }
105
106 /**
107 * Get the IMAP protocol string command for this command
108 *
109 * @return The IMAP protocol string command corresponding to this command
110 */
111 public String getIMAPCommand() {
112 return imapCommand != null ? imapCommand : name();
113 }
114
115 }
116
117 /* kate: indent-width 4; replace-tabs on; */