1 16 package com.blandware.atleap.webapp.action.news; 17 18 import com.blandware.atleap.common.util.DateUtil; 19 import com.blandware.atleap.webapp.action.core.BaseAction; 20 import com.blandware.atleap.webapp.form.NewsItemForm; 21 import com.blandware.atleap.webapp.util.core.LocaleUtil; 22 import com.blandware.atleap.webapp.util.core.WebappConstants; 23 import com.blandware.atleap.webapp.util.core.WebappUtil; 24 import com.blandware.atleap.webapp.util.news.NewsModuleWebConstants; 25 import org.apache.struts.action.*; 26 import org.apache.struts.util.RequestUtils; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 import java.text.ParseException ; 31 import java.util.Date ; 32 import java.util.List ; 33 34 35 58 public final class CallCreateNewsItemAnnotationAction extends BaseAction { 59 68 public ActionForward execute(ActionMapping mapping, ActionForm form, 69 HttpServletRequest request, HttpServletResponse response) throws Exception { 70 71 request.getSession().removeAttribute(NewsModuleWebConstants.NEWS_ITEM_SUBMITTED_ACTION_KEY); 72 73 if ( isCancelled(request) ) { 74 if ( request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY) != null ) { 75 String redirectUrl = (String ) request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY); 76 ActionForward redirect = new ActionForward(redirectUrl, true); 77 return redirect; 78 } 79 return mapping.findForward("listNewsItems"); 80 } 81 82 if ( request.getSession().getAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY) == null ) { 83 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 84 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 85 } 86 87 NewsItemForm newsItemForm = (NewsItemForm) form; 88 89 String localesMode = newsItemForm.getLocalesMode(); 92 if (!"current".equalsIgnoreCase(localesMode) && !"all".equalsIgnoreCase(localesMode) && newsItemForm.getAnnotationCheckedBoxes().size() == 0) { 93 request.setAttribute("beginPage", mapping.findForward("listNewsItems").getPath()); 94 return mapping.findForward("unsatisfiablePage"); 95 } 96 97 if ( !WebappUtil.hasCorrectValues(newsItemForm.getTitleMap()) ) { 98 100 newsItemForm.setAllCheckedFlagForAnnotationCheckboxes(request, localesMode); 102 103 ActionMessages errors = new ActionMessages(); 104 errors.add("title", new ActionMessage("core.commons.errors.required", getMessage(request, "news.form.title"))); 105 saveErrors(request, errors, false); 106 saveToken(request); 107 return mapping.getInputForward(); 108 } 109 110 Date publicationDate = null; 112 Date expirationDate = null; 113 boolean publicationDateIsValid = false; 114 try { 115 publicationDate = DateUtil.parseDate(newsItemForm.getPublicationDate(), RequestUtils.getUserLocale(request, null)); 116 publicationDateIsValid = true; 117 expirationDate = DateUtil.parseDate(newsItemForm.getExpirationDate(), RequestUtils.getUserLocale(request, null)); 118 } catch (ParseException e) { 119 ActionMessages errors = new ActionMessages(); 120 errors.add("newsItemInvalidDate", new ActionMessage("core.commons.errors.customDate", 121 publicationDateIsValid ? newsItemForm.getExpirationDate() : newsItemForm.getPublicationDate())); 122 saveErrors(request, errors); 123 saveToken(request); 124 return mapping.getInputForward(); 125 } 126 127 if ( publicationDate.compareTo(expirationDate) >= 0 ) { 128 newsItemForm.setAllCheckedFlagForAnnotationCheckboxes(request, localesMode); 130 131 ActionMessages errors = new ActionMessages(); 132 errors.add("newsItemInvalidDate", new ActionMessage("news.errors.invalidPublicationDate")); 133 saveErrors(request, errors); 134 saveToken(request); 135 return mapping.getInputForward(); 136 } 137 138 Date now = new Date (); 139 if (expirationDate.compareTo(now) <= 0) { 140 newsItemForm.setAllCheckedFlagForAnnotationCheckboxes(request, localesMode); 142 143 ActionMessages errors = new ActionMessages(); 144 errors.add("newsItemInvalidDate", new ActionMessage("news.errors.invalidExpirationDate")); 145 saveErrors(request, errors); 146 saveToken(request); 147 return mapping.getInputForward(); 148 } 149 150 if (newsItemForm.getAnnotationCheckedBoxes().size() != 0) { 151 newsItemForm.setBodyCheckedBoxes(newsItemForm.getAnnotationCheckedBoxes()); 152 } 153 newsItemForm.setAllCheckedFlagForBodyCheckboxes(request, localesMode); 154 155 saveToken(request); 156 return mapping.findForward("createNewsItemAnnotation"); 157 } 158 } 159 | Popular Tags |