001 /*
002 * Copyright 2010 the original author or authors.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package com.hs.mail.imap.message.responder;
017
018 import org.jboss.netty.channel.Channel;
019
020 import com.hs.mail.imap.message.request.ImapRequest;
021 import com.hs.mail.imap.message.response.StatusResponse;
022
023 /**
024 *
025 * @author Won Chul Doh
026 * @since Mar 17, 2010
027 *
028 */
029 public class StatusResponder extends DefaultImapResponder {
030
031 public StatusResponder(Channel channel, ImapRequest request) {
032 super(channel, request);
033 }
034
035 public void respond(StatusResponse response) {
036 untagged(request.getCommand());
037 quote(response.getMailboxName());
038 openParen("(");
039 composeMessages(response);
040 composeRecent(response);
041 composeUidNext(response);
042 composeUidValidity(response);
043 composeUnseen(response);
044 closeParen(")");
045 end();
046 }
047
048 void composeMessages(StatusResponse response) {
049 if (response.getStatusAtts().isMessages()) {
050 message("MESSAGES");
051 message(response.getMessageCount());
052 }
053 }
054
055 void composeRecent(StatusResponse response) {
056 if (response.getStatusAtts().isRecent()) {
057 message("RECENT");
058 message(response.getRecentMessageCount());
059 }
060 }
061
062 void composeUidNext(StatusResponse response) {
063 if (response.getStatusAtts().isUidNext()) {
064 message("UIDNEXT");
065 message(response.getNextUid());
066 }
067 }
068
069 void composeUidValidity(StatusResponse response) {
070 if (response.getStatusAtts().isUidValidity()) {
071 message("UIDVALIDITY");
072 message(response.getUidValidity());
073 }
074 }
075
076 void composeUnseen(StatusResponse response) {
077 if (response.getStatusAtts().isUnseen()) {
078 message("UNSEEN");
079 message(response.getUnseenMessageCount());
080 }
081 }
082
083 }