if (allErrors != null) {
saveErrors(request, allErrors);
session.removeAttribute("listErrorMessage");
}
UserObject userObject = (UserObject)session.getAttribute("userobject");
int individualId = userObject.getIndividualID();
long start = 0L;
if (logger.isDebugEnabled()) {
start = System.currentTimeMillis();
}
DynaActionForm emailListForm = (DynaActionForm)form;
Integer folderID = (Integer)emailListForm.get("folderID");
int currentAccountID = 0;
MailHome home = (MailHome)CVUtility.getHomeObject("com.centraview.mail.MailHome", "Mail");
try {
// check for a valid email account
Mail mailRemote = home.create();
mailRemote.setDataSource(dataSource);
int numberAccounts = mailRemote.getNumberOfAccountsForUser(individualId);
if (numberAccounts < 1) {
// if the user has less than 1 mail account
// set up, then show them the door
return (mapping.findForward(".view.email.setup"));
}
MailFolderVO folderVO;
if (folderID != null) {
folderVO = MailUtil.getFolderVO(folderID.intValue(), individualId, dataSource);
} else {
folderVO = MailUtil.getFolderVO(0, individualId, dataSource);
}
folderID = new Integer(folderVO.getFolderID());
String folderName = folderVO.getFolderName();
currentAccountID = folderVO.getEmailAccountID();
HashMap folderList = mailRemote.getFolderList(currentAccountID);
MailAccountVO accountVO = mailRemote.getMailAccountVO(currentAccountID);
emailListForm.set("accountID", new Integer(currentAccountID));
String accountType = accountVO.getAccountType();
emailListForm.set("accountType", accountType);
// This approach dirties the session, try to clean it up a bit.
Enumeration nameEnum = session.getAttributeNames();
while (nameEnum.hasMoreElements()) {
String element = (String)nameEnum.nextElement();
Object o = session.getAttribute(element);
if (o instanceof BackgroundMailCheck) {
if (!((BackgroundMailCheck)o).isAlive()) {
session.removeAttribute("element");
}
}
}
/*
* We check mail every time a user clicks on an IMAP folder. Thread
* sychronization is taken care of in the EJB layer. We create a unique
* session variable for each folder so each page knows if it should be
* refreshing.
*/
// We create the condition where the page continues to check because on
// every refresh it doesn't
// that it just checked. So it does again and again and again... "checked"
// is to alleviate that.
String clicked = request.getParameter("clicked");
String checked = request.getParameter("checked");
if ((checked == null || !checked.equals("true"))
&& (clicked != null && clicked.equals("true"))) {
if (accountType.equals(MailAccountVO.IMAP_TYPE)) {
// First check mailDaemon which will be for first timers
BackgroundMailCheck mailDaemon = (BackgroundMailCheck)session.getAttribute("mailDaemon");
if (mailDaemon == null || !mailDaemon.isAlive()) {
// Then check the indivdual folder daemon
String daemonName = folderName + "MailCheck";
mailDaemon = (BackgroundMailCheck)session.getAttribute(daemonName);
if (mailDaemon == null || !mailDaemon.isAlive()) {
mailDaemon = new BackgroundMailCheck(daemonName + individualId, individualId,
dataSource, folderID.intValue());
mailDaemon.start();
session.setAttribute(daemonName, mailDaemon);
request.setAttribute("checked", "true");
}
}
}
}
// We must have to add the FolderName to the request
// We will use this value from the tag lib.
// To Identify wheather which folder we are processing
request.setAttribute("folderName", folderName);
// populate the moveTO button in Tag Lib
// we will use this folderList
request.setAttribute("folderList", folderList);
request.setAttribute("folderID", folderID);
emailListForm.set("folderList", folderList);
emailListForm.set("folderType", folderVO.getFolderType());
emailListForm.set("folderID", folderID);
// now, we need to set some stuff up for the folder bar which
// shows where the user is located within the folder hierarchy
ArrayList folderPathList = mailRemote.getFolderFullPath(folderID.intValue());
emailListForm.set("folderPathList", folderPathList);
} catch (Exception e) {
logger.error("[execute] Exception thrown.", e);
}
ListPreference listPreference = userObject.getListPreference("Email");
ListView view = listPreference.getListView(String.valueOf(listPreference.getDefaultView()));
ValueListParameters listParameters = null;
ValueListParameters requestListParameters = (ValueListParameters)request
.getAttribute("listParameters");