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 XOAUTH(1), 040 041 // commands valid in authenticated state 042 SELECT(1), 043 EXAMINE(1), 044 CREATE(1), 045 DELETE(1), 046 RENAME(2), 047 SUBSCRIBE(1), 048 UNSUBSCRIBE(1), 049 LIST(2), 050 LSUB(2), 051 STATUS(2), // P2 = list in () 052 APPEND(2,4), // mbox [(flags)] [date-time] literal 053 054 // commands valid in selected state (substate of authenticated) 055 CHECK(0), 056 CLOSE(0), 057 EXPUNGE(0), 058 SEARCH(1, Integer.MAX_VALUE), 059 FETCH(2), 060 STORE(3), 061 COPY(2), 062 UID(2, Integer.MAX_VALUE), 063 ; 064 065 private final String imapCommand; 066 067 @SuppressWarnings("unused") // not yet used 068 private final int minParamCount; 069 @SuppressWarnings("unused") // not yet used 070 private final int maxParamCount; 071 072 IMAPCommand(){ 073 this(null); 074 } 075 076 IMAPCommand(String name){ 077 this(name, 0); 078 } 079 080 IMAPCommand(int paramCount){ 081 this(null, paramCount, paramCount); 082 } 083 084 IMAPCommand(int minCount, int maxCount){ 085 this(null, minCount, maxCount); 086 } 087 088 IMAPCommand(String name, int paramCount){ 089 this(name, paramCount, paramCount); 090 } 091 092 IMAPCommand(String name, int minCount, int maxCount){ 093 this.imapCommand = name; 094 this.minParamCount = minCount; 095 this.maxParamCount = maxCount; 096 } 097 098 /** 099 * Get the IMAP protocol string command corresponding to a command code. 100 * 101 * @param command the IMAPCommand whose command string is required. 102 * @return The IMAP protocol string command corresponding to a command code. 103 */ 104 public static final String getCommand(IMAPCommand command) { 105 return command.getIMAPCommand(); 106 } 107 108 /** 109 * Get the IMAP protocol string command for this command 110 * 111 * @return The IMAP protocol string command corresponding to this command 112 */ 113 public String getIMAPCommand() { 114 return imapCommand != null ? imapCommand : name(); 115 } 116 117 } 118 119 /* kate: indent-width 4; replace-tabs on; */