View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.commons.net.imap;
19  
20  /**
21   * IMAPCommand stores IMAP command codes.
22   */
23  public enum IMAPCommand
24  {
25      // These enums must either use the same name as the IMAP command
26      // or must provide the correct string as the parameter.
27  
28      // Commands valid in any state:
29  
30      CAPABILITY(0),
31      NOOP(0),
32      LOGOUT(0),
33  
34      // Commands valid in Not Authenticated state
35      STARTTLS(0),
36      AUTHENTICATE(1),
37      LOGIN(2),
38  
39      XOAUTH(1),
40  
41      // commands valid in authenticated state
42      SELECT(1),
43      EXAMINE(1),
44      CREATE(1),
45      DELETE(1),
46      RENAME(2),
47      SUBSCRIBE(1),
48      UNSUBSCRIBE(1),
49      LIST(2),
50      LSUB(2),
51      STATUS(2), // P2 = list in ()
52      APPEND(2,4), // mbox [(flags)] [date-time] literal
53  
54      // commands valid in selected state (substate of authenticated)
55      CHECK(0),
56      CLOSE(0),
57      EXPUNGE(0),
58      SEARCH(1, Integer.MAX_VALUE),
59      FETCH(2),
60      STORE(3),
61      COPY(2),
62      UID(2, Integer.MAX_VALUE),
63      ;
64  
65      private final String imapCommand;
66  
67      @SuppressWarnings("unused") // not yet used
68      private final int minParamCount;
69      @SuppressWarnings("unused") // not yet used
70      private final int maxParamCount;
71  
72      IMAPCommand(){
73          this(null);
74      }
75  
76      IMAPCommand(String name){
77          this(name, 0);
78      }
79  
80      IMAPCommand(int paramCount){
81          this(null, paramCount, paramCount);
82     }
83  
84      IMAPCommand(int minCount, int maxCount){
85          this(null, minCount, maxCount);
86     }
87  
88      IMAPCommand(String name, int paramCount){
89          this(name, paramCount, paramCount);
90      }
91  
92      IMAPCommand(String name, int minCount, int maxCount){
93          this.imapCommand = name;
94          this.minParamCount = minCount;
95          this.maxParamCount = maxCount;
96      }
97  
98      /**
99       * 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; */