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    }