GroupMessagingListener.java revision 0d1078363581db8caded06cf94e729e88a88761a
1/* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.email; 18 19import com.android.email.mail.Message; 20import com.android.email.provider.EmailContent; 21 22import android.content.Context; 23 24import java.util.Set; 25import java.util.concurrent.ConcurrentHashMap; 26 27public class GroupMessagingListener extends MessagingListener { 28 /* The synchronization of the methods in this class 29 is not needed because we use ConcurrentHashMap. 30 31 Nevertheless, let's keep the "synchronized" for a while in the case 32 we may want to change the implementation to use something else 33 than ConcurrentHashMap. 34 */ 35 36 private ConcurrentHashMap<MessagingListener, Object> mListenersMap = 37 new ConcurrentHashMap<MessagingListener, Object>(); 38 39 private Set<MessagingListener> mListeners = mListenersMap.keySet(); 40 41 synchronized public void addListener(MessagingListener listener) { 42 // we use "this" as a dummy non-null value 43 mListenersMap.put(listener, this); 44 } 45 46 synchronized public void removeListener(MessagingListener listener) { 47 mListenersMap.remove(listener); 48 } 49 50 synchronized public boolean isActiveListener(MessagingListener listener) { 51 return mListenersMap.containsKey(listener); 52 } 53 54 @Override 55 synchronized public void listFoldersStarted(EmailContent.Account account) { 56 for (MessagingListener l : mListeners) { 57 l.listFoldersStarted(account); 58 } 59 } 60 61 @Override 62 synchronized public void listFoldersFailed(EmailContent.Account account, String message) { 63 for (MessagingListener l : mListeners) { 64 l.listFoldersFailed(account, message); 65 } 66 } 67 68 @Override 69 synchronized public void listFoldersFinished(EmailContent.Account account) { 70 for (MessagingListener l : mListeners) { 71 l.listFoldersFinished(account); 72 } 73 } 74 75 @Override 76 synchronized public void synchronizeMailboxStarted(EmailContent.Account account, 77 EmailContent.Mailbox folder) { 78 for (MessagingListener l : mListeners) { 79 l.synchronizeMailboxStarted(account, folder); 80 } 81 } 82 83 @Override 84 synchronized public void synchronizeMailboxFinished(EmailContent.Account account, 85 EmailContent.Mailbox folder, int totalMessagesInMailbox, int numNewMessages) { 86 for (MessagingListener l : mListeners) { 87 l.synchronizeMailboxFinished(account, folder, totalMessagesInMailbox, numNewMessages); 88 } 89 } 90 91 @Override 92 synchronized public void synchronizeMailboxFailed(EmailContent.Account account, 93 EmailContent.Mailbox folder, 94 Exception e) { 95 for (MessagingListener l : mListeners) { 96 l.synchronizeMailboxFailed(account, folder, e); 97 } 98 } 99 100 @Override 101 synchronized public void loadMessageForViewStarted(EmailContent.Account account, String folder, 102 String uid) { 103 for (MessagingListener l : mListeners) { 104 l.loadMessageForViewStarted(account, folder, uid); 105 } 106 } 107 108 @Override 109 synchronized public void loadMessageForViewHeadersAvailable(EmailContent.Account account, 110 String folder, String uid, Message message) { 111 for (MessagingListener l : mListeners) { 112 l.loadMessageForViewHeadersAvailable(account, folder, uid, message); 113 } 114 } 115 116 @Override 117 synchronized public void loadMessageForViewBodyAvailable(EmailContent.Account account, 118 String folder, String uid, Message message) { 119 for (MessagingListener l : mListeners) { 120 l.loadMessageForViewBodyAvailable(account, folder, uid, message); 121 } 122 } 123 124 @Override 125 synchronized public void loadMessageForViewFinished(EmailContent.Account account, 126 String folder, String uid, Message message) { 127 for (MessagingListener l : mListeners) { 128 l.loadMessageForViewFinished(account, folder, uid, message); 129 } 130 } 131 132 @Override 133 synchronized public void loadMessageForViewFailed(EmailContent.Account account, String folder, 134 String uid, String message) { 135 for (MessagingListener l : mListeners) { 136 l.loadMessageForViewFailed(account, folder, uid, message); 137 } 138 } 139 140 @Override 141 synchronized public void checkMailStarted(Context context, long accountId, long tag) { 142 for (MessagingListener l : mListeners) { 143 l.checkMailStarted(context, accountId, tag); 144 } 145 } 146 147 @Override 148 synchronized public void checkMailFinished(Context context, long accountId, long folderId, 149 long tag) { 150 for (MessagingListener l : mListeners) { 151 l.checkMailFinished(context, accountId, folderId, tag); 152 } 153 } 154 155 @Override 156 synchronized public void sendPendingMessagesCompleted(EmailContent.Account account) { 157 for (MessagingListener l : mListeners) { 158 l.sendPendingMessagesCompleted(account); 159 } 160 } 161 162 @Override 163 synchronized public void sendPendingMessagesFailed(EmailContent.Account account, 164 Exception reason) { 165 for (MessagingListener l : mListeners) { 166 l.sendPendingMessagesFailed(account, reason); 167 } 168 } 169 170 @Override 171 synchronized public void sendPendingMessageFailed(EmailContent.Account account, 172 Message message, Exception reason) { 173 for (MessagingListener l : mListeners) { 174 l.sendPendingMessageFailed(account, message, reason); 175 } 176 } 177 178 @Override 179 synchronized public void emptyTrashCompleted(EmailContent.Account account) { 180 for (MessagingListener l : mListeners) { 181 l.emptyTrashCompleted(account); 182 } 183 } 184 185 @Override 186 synchronized public void messageUidChanged(EmailContent.Account account, String folder, 187 String oldUid, String newUid) { 188 for (MessagingListener l : mListeners) { 189 l.messageUidChanged(account, folder, oldUid, newUid); 190 } 191 } 192 193 @Override 194 synchronized public void loadAttachmentStarted( 195 long accountId, 196 long messageId, 197 long attachmentId, 198 boolean requiresDownload) { 199 for (MessagingListener l : mListeners) { 200 l.loadAttachmentStarted(accountId, messageId, attachmentId, requiresDownload); 201 } 202 } 203 204 @Override 205 synchronized public void loadAttachmentFinished( 206 long accountId, 207 long messageId, 208 long attachmentId) { 209 for (MessagingListener l : mListeners) { 210 l.loadAttachmentFinished(accountId, messageId, attachmentId); 211 } 212 } 213 214 @Override 215 synchronized public void loadAttachmentFailed( 216 long accountId, 217 long messageId, 218 long attachmentId, 219 String reason) { 220 for (MessagingListener l : mListeners) { 221 l.loadAttachmentFailed(accountId, messageId, attachmentId, reason); 222 } 223 } 224 225 @Override 226 synchronized public void controllerCommandCompleted(boolean moreCommandsToRun) { 227 for (MessagingListener l : mListeners) { 228 l.controllerCommandCompleted(moreCommandsToRun); 229 } 230 } 231} 232