Java tutorial
/* * ==================================================================== * Copyright (C) 1997-2008 by Naijatek.com * * All copyright notices regarding MyAlumni MUST remain * intact in the scripts and in the outputted HTML. * The "powered by" text/logo with a link back to * http://www.naijatek.com in * the footer of the pages MUST remain visible when the pages * are viewed on the internet or intranet. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Support can be obtained from support forums at: * http://www.naijatek.com/myalumni/forum * * Correspondence and Marketing Questions can be sent to: * info at naijatek com * * <p>Title: MyAlumni </p> * <p>Description: This system helps keep alive the line of communications between alumni/alumnus</p> * <p>Copyright: Copyright (c) 1997-2008</p> * <p>Company: Naijatek Solutions (http://www.naijatek.com)</p> * @author Folashade Adeyosoye (shardayyy@naijatek.com) * @version 1.0 */ package net.naijatek.myalumni.modules.members.presentation.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.naijatek.myalumni.framework.struts.MyAlumniDispatchAction; import net.naijatek.myalumni.framework.struts.MyAlumniUserContainer; import net.naijatek.myalumni.modules.common.domain.MemberVO; import net.naijatek.myalumni.modules.common.domain.PrivateMessageVO; import net.naijatek.myalumni.modules.common.domain.SystemConfigVO; import net.naijatek.myalumni.modules.common.helper.PrivateMessageHelper; import net.naijatek.myalumni.modules.common.presentation.form.PrivateMessageForm; import net.naijatek.myalumni.modules.common.service.IMemberService; import net.naijatek.myalumni.modules.common.service.IPrivateMessageService; import net.naijatek.myalumni.modules.common.service.ISystemConfigService; import net.naijatek.myalumni.util.BaseConstants; import net.naijatek.myalumni.util.SystemConfigConstants; import net.naijatek.myalumni.util.mail.SendMailUtil; import net.naijatek.myalumni.util.utilities.DateFormatUtil; import net.naijatek.myalumni.util.utilities.StringUtil; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; public class MaintainPrivateMessageAction extends MyAlumniDispatchAction { private IPrivateMessageService pmService; private IMemberService memService; private ISystemConfigService sysConfigSerivce; private static Log logger = LogFactory.getLog(MaintainPrivateMessageAction.class); public MaintainPrivateMessageAction(final IMemberService memService, final IPrivateMessageService pmService, ISystemConfigService sysConfigSerivce) { this.pmService = pmService; this.memService = memService; this.sysConfigSerivce = sysConfigSerivce; } public ActionForward deleteMail(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (isCancelled(request)) { return mapping.findForward(BaseConstants.FWD_CANCEL); } MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } logger.debug("Deleting mail..."); String[] mailArray = new String[0]; PrivateMessageForm pmForm = (PrivateMessageForm) form; String memberId = token.getMemberId(); String privMsgsAction = pmForm.getPrivMsgsAction(); String privAdminDelete = StringUtil.safeString(pmForm.getPrivAdminDelete()); String privAdminMove = StringUtil.safeString(pmForm.getPrivAdminMove()); if (privAdminDelete.equalsIgnoreCase("yes") || privAdminMove.equalsIgnoreCase("yes")) { // check to see if the user logged on is a member if (!adminSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_ADMIN_LOGIN); } memberId = BaseConstants.ADMIN_USERNAME_ID; } mailArray = request.getParameterValues("messageId"); if (mailArray == null) { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.WARN_KEY, new ActionMessage("error.selectOne")); saveMessages(request, errors); return mapping.getInputForward(); } /** * DELETE MAIL */ if (privMsgsAction.equalsIgnoreCase("delete")) { pmService.deleteMail(mailArray, memberId, getLastModifiedBy(request)); doMailDuties(token, request); } /** * MOVE MAIL */ else if (privMsgsAction.equalsIgnoreCase("move")) { String toFolder = pmForm.getFolderName(); pmService.moveMail(mailArray, memberId, toFolder, getLastModifiedBy(request)); doMailDuties(token, request); } /** * EMPTY TRASH */ else if (privMsgsAction.equalsIgnoreCase("empty")) { pmService.deleteMail(mailArray, memberId, getLastModifiedBy(request)); doMailDuties(token, request); } else { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.FATAL_KEY, new ActionMessage("errors.technical.difficulty")); saveMessages(request, errors); return mapping.getInputForward(); } return mapping.findForward(BaseConstants.FWD_SUCCESS); } private void doMailDuties(final MemberVO token, final HttpServletRequest request) { MyAlumniUserContainer container = (MyAlumniUserContainer) request.getSession() .getAttribute(BaseConstants.USER_CONTAINER); PrivateMessageHelper pmHelper = pmService.getMessageCenter(token.getMemberId(), BaseConstants.FOLDER_INBOX, container); setSessionObject(request, BaseConstants.MESSAGE_CENTER, pmHelper); } //done public ActionForward listMailBox(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } MyAlumniUserContainer container = (MyAlumniUserContainer) request.getSession() .getAttribute(BaseConstants.USER_CONTAINER); PrivateMessageHelper pmHelper = pmService.getMessageCenter(token.getMemberId(), BaseConstants.FOLDER_INBOX, container); setSessionObject(request, BaseConstants.MESSAGE_CENTER, pmHelper); return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward displayMailFolder(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } PrivateMessageForm pmForm = (PrivateMessageForm) form; String folderName = pmForm.getType(); /** * Checking for specific folders for now. */ if (folderName.equalsIgnoreCase(BaseConstants.FOLDER_INBOX) || folderName.equalsIgnoreCase(BaseConstants.FOLDER_SENT) || folderName.equalsIgnoreCase(BaseConstants.FOLDER_TRASH) || folderName.equalsIgnoreCase(BaseConstants.FOLDER_STORAGE)) { MyAlumniUserContainer container = (MyAlumniUserContainer) request.getSession() .getAttribute(BaseConstants.USER_CONTAINER); PrivateMessageHelper pmHelper = pmService.getMessageCenter(token.getMemberId(), folderName, container); setSessionObject(request, BaseConstants.MESSAGE_CENTER, pmHelper); } else { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.WARN_KEY, new ActionMessage("error.folderdoesnotexist")); saveMessages(request, errors); return mapping.findForward(BaseConstants.FWD_SUCCESS); } return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward prepareContactMessage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } PrivateMessageForm pmForm = (PrivateMessageForm) form; pmForm.setMessageToUserId(pmForm.getMessageToUserId()); pmForm.setMessageFromUserId(token.getMemberId()); MemberVO memberVO = memService.getMemberProfileByMemberId(pmForm.getMessageToUserId()); pmForm.setToMemberFirstName(memberVO.getFirstName()); pmForm.setToMemberLastName(memberVO.getLastName()); pmForm.setSubject(token.getFirstName() + " " + token.getLastName() + " " + BaseConstants.CONTACT_SUBJECT); return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward prepareComposePrivateMessage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); ActionMessages errors = new ActionMessages(); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } PrivateMessageForm pmForm = (PrivateMessageForm) form; pmForm.setMessageToUserId(pmForm.getMessageToUserName()); pmForm.setMessageFromUserId(token.getMemberId()); MemberVO memberVO = memService.getMemberProfileByMemberId(pmForm.getMessageToUserId()); if (memberVO != null) { pmForm.setToMemberFirstName(memberVO.getFirstName()); pmForm.setToMemberLastName(memberVO.getLastName()); } else { errors.add(BaseConstants.WARN_KEY, new ActionMessage("message.membernotfound")); saveMessages(request, errors); return mapping.getInputForward(); } pmForm.setSubject(token.getFirstName() + " " + token.getLastName() + " " + BaseConstants.CONTACT_SUBJECT); return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward prepareReplyMessage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } PrivateMessageForm pmForm = (PrivateMessageForm) form; String memberId = token.getMemberId(); String mailId = pmForm.getMessageId(); PrivateMessageVO pmVO = pmService.prepareReply(memberId, mailId); pmVO.setMessageToUserId(pmVO.getMessageFromMember().getMemberId()); pmVO.setMessageFromUserId(token.getMemberId()); BeanUtils.copyProperties(pmForm, pmVO); if (!pmForm.getSubject().startsWith("Re: ")) { pmForm.setSubject("Re: " + pmForm.getSubject()); } pmForm.setMessageText("\n\n\n------------------------------------------------\n" + pmVO.getMessageFromMember().getFirstName() + " " + pmVO.getMessageFromMember().getLastName() + " wrote on " + DateFormatUtil.getDateYYYYMMMDDHHMMA(pmVO.getMessageDate()) + ":\n\n" + pmVO.getMessageText()); pmForm.setToMemberFirstName(pmVO.getMessageFromMember().getFirstName()); pmForm.setToMemberLastName(pmVO.getMessageFromMember().getLastName()); return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward prepareEmailWebmaster(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { boolean guest = false; String adminLastName = "Administrator"; String messageFromUserId = ""; String messageToUserId = ""; String toMemberFirstName = ""; String toMemberLastName = ""; String fromFirstName = ""; String fromLastName = ""; MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (token == null) { guest = true; } PrivateMessageForm pmForm = (PrivateMessageForm) form; messageToUserId = BaseConstants.ADMIN_USERNAME_ID; toMemberFirstName = ""; toMemberLastName = adminLastName; if (!guest) { messageFromUserId = token.getMemberId(); fromFirstName = token.getFirstName(); fromLastName = token.getLastName(); } else { messageFromUserId = BaseConstants.GUEST_USERNAME_ID; fromFirstName = ""; // BaseConstants.GUEST_USERNAME; fromLastName = ""; } pmForm.setMessageFromUserId(messageFromUserId); pmForm.setFromMemberFirstName(fromFirstName); pmForm.setFromMemberLastName(fromLastName); pmForm.setMessageToUserId(messageToUserId); pmForm.setToMemberFirstName(toMemberFirstName); pmForm.setToMemberLastName(toMemberLastName); return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward readOneMail(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } PrivateMessageForm pmForm = (PrivateMessageForm) form; String memberId = token.getMemberId(); String mailId = pmForm.getMessageId(); PrivateMessageVO pmVO = pmService.readOneMailByMemberId(memberId, mailId, getLastModifiedBy(request)); if (pmVO != null) { BeanUtils.copyProperties(pmForm, pmVO); pmForm.setFromMemberLastName(pmVO.getMessageFromMember().getLastName()); pmForm.setFromMemberFirstName(pmVO.getMessageFromMember().getFirstName()); pmForm.setMessageDate(DateFormatUtil.getDateYYYYMMMDDHHMMA(pmVO.getMessageDate())); } return mapping.findForward(BaseConstants.FWD_SUCCESS); } public ActionForward contactAndReplyMail(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = getCurrentLoggedInUser(request); // check to see if the user logged on is a member if (!memberSecurityCheck(request, token)) { return mapping.findForward(BaseConstants.FWD_LOGIN); } if (isCancelled(request)) { return mapping.findForward(BaseConstants.FWD_CANCEL); } PrivateMessageForm pmForm = (PrivateMessageForm) form; PrivateMessageVO pmVO = new PrivateMessageVO(); PrivateMessageVO pmVOCopy = new PrivateMessageVO(); BeanUtils.copyProperties(pmVO, pmForm); BeanUtils.copyProperties(pmVOCopy, pmForm); String toMemberEmail = memService.getMemberEmailByMemberId(pmVO.getMessageToUserId()); SystemConfigVO sysConfigVO = sysConfigSerivce.getSystemConfig(); if (pmVO.getType().equals("contact")) { if (!memService.isAccountActivatedByMemberId(pmVO.getMessageToUserId())) { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.FATAL_KEY, new ActionMessage("message.mail.unactivatedmember")); saveMessages(request, errors); return mapping.getInputForward(); } else { int quota = pmService.getQuotaRatioByMemberId(pmVO.getMessageToUserId()); if (quota < SystemConfigConstants.MAIL_QUOTA) { pmVO.setMessageId(null); pmVOCopy.setMessageId(null); pmService.contactMail(pmVO, getLastModifiedBy(request), getCurrentIPAddress(request)); SendMailUtil.memberNewMessageNotification(pmVO, sysConfigVO, toMemberEmail); //copy to sent if (pmForm.getCopyMe().equalsIgnoreCase(BaseConstants.BOOLEAN_YES)) { pmService.copyMeOnContactMail(pmVOCopy, getLastModifiedBy(request), getCurrentIPAddress(request)); } } else { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.WARN_KEY, new ActionMessage("error.mailboxfull")); saveMessages(request, errors); } } } else if (pmVO.getType().equals("reply")) { pmVO.setMessageFromUserId(token.getMemberId()); int quota = pmService.getQuotaRatioByMemberId(pmVO.getMessageToUserId()); if (quota < SystemConfigConstants.MAIL_QUOTA) { pmVO.setMessageId(null); // setting to null becasue its a considered a new pmService.replyMail(pmVO, getLastModifiedBy(request), getCurrentIPAddress(request)); SendMailUtil.memberNewMessageNotification(pmVO, sysConfigVO, toMemberEmail); //copy to sent if (pmForm.getCopyMe().equalsIgnoreCase(BaseConstants.BOOLEAN_YES)) { pmService.copyMeOnReplyMail(pmVOCopy, getLastModifiedBy(request), getCurrentIPAddress(request)); } } else { // TODO: Maybe save the message as a draft to be sent later ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.WARN_KEY, new ActionMessage("error.mailboxfull")); saveMessages(request, errors); } } else { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.FATAL_KEY, new ActionMessage("errors.technical.difficulty")); saveMessages(request, errors); return mapping.getInputForward(); } MyAlumniUserContainer container = (MyAlumniUserContainer) request.getSession() .getAttribute(BaseConstants.USER_CONTAINER); PrivateMessageHelper pmHelper = pmService.getMessageCenter(token.getMemberId(), BaseConstants.FOLDER_INBOX, container); setSessionObject(request, BaseConstants.MESSAGE_CENTER, pmHelper); return mapping.findForward(BaseConstants.FWD_SUCCESS); } // done public ActionForward emailWebmaster(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MemberVO token = new MemberVO(); PrivateMessageForm pmForm = (PrivateMessageForm) form; PrivateMessageVO pmVO = new PrivateMessageVO(); BeanUtils.copyProperties(pmVO, pmForm); if (pmVO.getType().equals("contact")) { if (pmVO.getMessageFromUserId().equalsIgnoreCase(BaseConstants.GUEST_USERNAME_ID)) { pmService.contactAdminMail(pmVO, BaseConstants.GUEST_USERNAME_ID, getCurrentIPAddress(request)); } else { pmService.contactAdminMail(pmVO, getLastModifiedBy(request), getCurrentIPAddress(request)); } } else if (pmVO.getType().equals("reply")) { if (pmVO.getMessageFromUserId().equalsIgnoreCase(BaseConstants.GUEST_USERNAME_ID)) { pmVO.setMessageFromUserId(BaseConstants.GUEST_USERNAME_ID); pmService.replyMail(pmVO, BaseConstants.GUEST_USERNAME_ID, getCurrentIPAddress(request)); } else { pmVO.setMessageFromUserId(token.getMemberId()); pmService.replyMail(pmVO, getLastModifiedBy(request), getCurrentIPAddress(request)); } } else { ActionMessages errors = new ActionMessages(); errors.add(BaseConstants.FATAL_KEY, new ActionMessage("errors.technical.difficulty")); saveMessages(request, errors); return mapping.getInputForward(); } StringBuffer message = new StringBuffer(); message.append( "Thank you, Message has been sent to the Administrator, expect a response within the next 24hrs."); setRequestObject(request, BaseConstants.MESSAGE, message.toString()); // send email to admin notifying of email SystemConfigVO sysConfigVO = sysConfigSerivce.getSystemConfig(); SendMailUtil.adminNewMessageNotification(sysConfigVO, sysConfigVO.getOrgEmail()); return mapping.findForward(BaseConstants.FWD_SUCCESS); } }