001: /* -----------------------------------------------------------------------------
002: * Copyright (c) 2001, Low Kin Onn
003: * All rights reserved.
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: *
008: * Redistributions of source code must retain the above copyright notice, this
009: * list of conditions and the following disclaimer.
010: *
011: * Redistributions in binary form must reproduce the above copyright notice,
012: * this list of conditions and the following disclaimer in the documentation
013: * and/or other materials provided with the distribution.
014: *
015: * Neither name of the Scioworks Pte. Ltd. nor the names of its contributors
016: * may beused to endorse or promote products derived from this software without
017: * specific prior written permission.
018: *
019: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
020: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
021: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
022: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
023: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
024: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
025: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
026: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
027: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
028: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: *
030: * -----------------------------------------------------------------------------
031: */
032:
033: package scioworks.imap.presentation.imapWeb;
034:
035: import java.net.URLEncoder;
036: import java.util.Vector;
037:
038: import javax.mail.*;
039: import javax.activation.*;
040:
041: import org.w3c.dom.*;
042: import org.w3c.dom.html.*;
043:
044: import com.lutris.appserver.server.httpPresentation.*;
045:
046: import scioworks.imap.presentation.base.*;
047: import scioworks.imap.presentation.imapWeb.*;
048: import scioworks.imap.spec.ImapWebConstant;
049: import scioworks.imap.spec.beans.*;
050: import scioworks.imap.spec.ImapWebException;
051:
052: public class folder_list extends BasePO {
053: // Override login requirement
054: protected boolean isLoginRequired() {
055: return false;
056: }
057:
058: public String handleDefault() throws HttpPresentationException {
059:
060: folder_listHTML page = (folder_listHTML) m_comms.xmlcFactory
061: .create(folder_listHTML.class);
062:
063: try {
064:
065: // Get reference to the row to be modified
066: HTMLTableRowElement folderListRow = page
067: .getElementFolderListRow();
068: Node folderListTable = folderListRow.getParentNode();
069:
070: // Get reference to the URL to be modified
071: HTMLAnchorElement mailListLink = page
072: .getElementMailListLink();
073: /** @todo : complete the link */
074: String currLink = mailListLink.getHref() + "?"
075: + PARAM_folder + "=";
076:
077: // Get and set inbox folder
078:
079: Folder folder = super .getImapWebSessionData()
080: .getImapStore().getFolder("INBOX");
081:
082: page.setTextInboxMessageCount(Integer.toString(folder
083: .getMessageCount()));
084: page.setTextInboxUnreadMessageCount(Integer.toString(folder
085: .getUnreadMessageCount()));
086:
087: // Get and set Sent folder
088: folder = super
089: .getImapWebSessionData()
090: .getImapStore()
091: .getFolder(ImapWebConstant.singleton().folderSent());
092: page.setTextSentName(ImapWebConstant.singleton()
093: .folderSent());
094: page.setTextSentMessageCount(Integer.toString(folder
095: .getMessageCount()));
096: page.setTextSentUnreadMessageCount(Integer.toString(folder
097: .getUnreadMessageCount()));
098: page.getElementSentLink().setHref(
099: currLink
100: + URLEncoder.encode(ImapWebConstant
101: .singleton().folderSent()));
102:
103: // Get and set Trash folder
104: folder = super .getImapWebSessionData().getImapStore()
105: .getFolder(
106: ImapWebConstant.singleton().folderTrash());
107: page.setTextTrashName(ImapWebConstant.singleton()
108: .folderTrash());
109: page.setTextTrashMessageCount(Integer.toString(folder
110: .getMessageCount()));
111: page.setTextTrashUnreadMessageCount(Integer.toString(folder
112: .getUnreadMessageCount()));
113: page.getElementTrashLink().setHref(
114: currLink
115: + URLEncoder.encode(ImapWebConstant
116: .singleton().folderTrash()));
117:
118: // the rest of the folders
119: HTMLElement msgCountEle = page.getElementMessageCount();
120: HTMLElement unreadMsgCountEle = page
121: .getElementUnreadMessageCount();
122:
123: msgCountEle.removeAttribute("id");
124: unreadMsgCountEle.removeAttribute("id");
125:
126: Folder[] folders = super .getImapWebSessionData()
127: .getImapStore().getDefaultFolder().list();
128:
129: for (int i = 0; i < folders.length; i++) {
130:
131: folder = folders[i];
132:
133: if (folder.getName().equalsIgnoreCase("INBOX")) {
134: continue;
135: } else if (folder.getName().equalsIgnoreCase(
136: ImapWebConstant.singleton().folderSent())) {
137: continue;
138: } else if (folder.getName().equalsIgnoreCase(
139: ImapWebConstant.singleton().folderTrash())) {
140: continue;
141: }
142:
143: page.setTextFolderName(folder.getName());
144: page.setTextMessageCount(Integer.toString(folder
145: .getMessageCount()));
146: page.setTextUnreadMessageCount(Integer.toString(folder
147: .getUnreadMessageCount()));
148:
149: mailListLink.setHref(currLink
150: + URLEncoder.encode(folder.getName()));
151:
152: folderListTable.appendChild(folderListRow
153: .cloneNode(true));
154: }
155: folderListTable.removeChild(folderListRow);
156:
157: // set the drop down list of target folders for Move
158: IWMessage iwMsg = IWMessageFactory
159: .getIWMessage("scioworks.imap.business.beans.IWMessageImpl");
160:
161: try {
162: Vector targetFolders = iwMsg.getFolderNames(super
163: .getImapWebSessionData().getImapStore(),
164: "INBOX");
165: super .processSelectList(page, page.getElementFolder(),
166: targetFolders, targetFolders, "-1");
167:
168: } catch (ImapWebException e) {
169: return super .showErrorPage(MSG_OPERATION_FAILED, e
170: .getMessage(), "", "");
171: }
172:
173: } catch (NullPointerException ex) {
174: /*
175: * The response will be default HTML page
176: * We need to allow imapWeb_pres to be functional
177: */
178: return ((folder_listHTML) m_comms.xmlcFactory
179: .create(folder_listHTML.class)).toDocument();
180:
181: } catch (MessagingException e) {
182: e.printStackTrace();
183: return super .showErrorPage("Error getting folders", e
184: .getMessage(), "", "");
185: }
186:
187: return page.toDocument();
188: }
189: }
|