All Downloads are FREE. Search and download functionalities are using the official Maven repository.

panda.net.imap.IMAPCommand Maven / Gradle / Ivy

There is a newer version: 1.8.0
Show newest version
package panda.net.imap;

/**
 * IMAPCommand stores IMAP command codes.
 */
public enum IMAPCommand {
	// These enums must either use the same name as the IMAP command
	// or must provide the correct string as the parameter.

	// Commands valid in any state:

	CAPABILITY(0),
	NOOP(0),
	LOGOUT(0),

	// Commands valid in Not Authenticated state
	STARTTLS(0),
	AUTHENTICATE(1),
	LOGIN(2),

	XOAUTH(1),

	// commands valid in authenticated state
	SELECT(1),
	EXAMINE(1),
	CREATE(1),
	DELETE(1),
	RENAME(2),
	SUBSCRIBE(1),
	UNSUBSCRIBE(1),
	LIST(2),
	LSUB(2),
	STATUS(2), // P2 = list in ()
	APPEND(2, 4), // mbox [(flags)] [date-time] literal

	// commands valid in selected state (substate of authenticated)
	CHECK(0),
	CLOSE(0),
	EXPUNGE(0),
	SEARCH(1, Integer.MAX_VALUE),
	FETCH(2),
	STORE(3),
	COPY(2),
	UID(2, Integer.MAX_VALUE), ;

	private final String imapCommand;

	@SuppressWarnings("unused")
	// not yet used
	private final int minParamCount;
	@SuppressWarnings("unused")
	// not yet used
	private final int maxParamCount;

	IMAPCommand() {
		this(null);
	}

	IMAPCommand(String name) {
		this(name, 0);
	}

	IMAPCommand(int paramCount) {
		this(null, paramCount, paramCount);
	}

	IMAPCommand(int minCount, int maxCount) {
		this(null, minCount, maxCount);
	}

	IMAPCommand(String name, int paramCount) {
		this(name, paramCount, paramCount);
	}

	IMAPCommand(String name, int minCount, int maxCount) {
		this.imapCommand = name;
		this.minParamCount = minCount;
		this.maxParamCount = maxCount;
	}

	/**
	 * Get the IMAP protocol string command corresponding to a command code.
	 * 
	 * @param command the IMAPCommand whose command string is required.
	 * @return The IMAP protocol string command corresponding to a command code.
	 */
	public static final String getCommand(IMAPCommand command) {
		return command.getIMAPCommand();
	}

	/**
	 * Get the IMAP protocol string command for this command
	 * 
	 * @return The IMAP protocol string command corresponding to this command
	 */
	public String getIMAPCommand() {
		return imapCommand != null ? imapCommand : name();
	}

}

/* kate: indent-width 4; replace-tabs on; */




© 2015 - 2025 Weber Informatics LLC | Privacy Policy