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 018package org.apache.commons.net.imap; 019 020/** 021 * IMAPCommand stores IMAP command codes. 022 */ 023public 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; */