1 package com.dotmarketing.portlets.banners.action; 2 3 import java.net.URLDecoder ; 4 5 import javax.portlet.ActionRequest; 6 import javax.portlet.ActionResponse; 7 import javax.portlet.PortletConfig; 8 import javax.servlet.http.HttpServletRequest ; 9 10 import org.apache.commons.beanutils.BeanUtils; 11 import org.apache.struts.action.ActionForm; 12 import org.apache.struts.action.ActionMapping; 13 14 import com.dotmarketing.beans.Host; 15 import com.dotmarketing.beans.Identifier; 16 import com.dotmarketing.cache.BannerCache; 17 import com.dotmarketing.factories.HostFactory; 18 import com.dotmarketing.factories.IdentifierFactory; 19 import com.dotmarketing.factories.InodeFactory; 20 import com.dotmarketing.portal.struts.DotPortletAction; 21 import com.dotmarketing.portlets.banners.model.Banner; 22 import com.dotmarketing.portlets.banners.struts.BannerForm; 23 import com.dotmarketing.portlets.categories.model.Category; 24 import com.dotmarketing.portlets.files.model.File; 25 import com.dotmarketing.portlets.folders.model.Folder; 26 import com.dotmarketing.portlets.htmlpages.model.HTMLPage; 27 import com.dotmarketing.services.BannerServices; 28 import com.dotmarketing.util.Logger; 29 import com.dotmarketing.util.UtilMethods; 30 import com.dotmarketing.util.Validator; 31 import com.dotmarketing.util.WebKeys; 32 import com.liferay.portlet.ActionRequestImpl; 33 import com.liferay.util.servlet.SessionMessages; 34 35 36 public class EditBannerAction extends DotPortletAction { 37 public void processAction(ActionMapping mapping, ActionForm form, PortletConfig config, ActionRequest req, 38 ActionResponse res) throws Exception { 39 String cmd = req.getParameter(com.liferay.portal.util.Constants.CMD); 40 41 ActionRequestImpl reqImpl = (ActionRequestImpl) req; 43 HttpServletRequest httpReq = reqImpl.getHttpServletRequest(); 44 45 String referer = req.getParameter("referer"); 46 if (referer!=null) { 47 referer = URLDecoder.decode(referer,"UTF-8"); 48 } 49 50 _retrieveBanner(form, req, res); 52 53 if (com.liferay.portal.util.Constants.EDIT.equals(cmd)) { 55 Logger.debug(this, "Banner: Editing Banner"); 56 57 try { 58 _editBanner(form, req, res); 59 } catch (Exception e) { 60 _handleException(e, req); 61 } 62 } 63 64 else if (com.liferay.portal.util.Constants.ADD.equals(cmd)) { 66 Logger.debug(this, "Banner: Saving Banner"); 67 68 if (!Validator.validate(req, form, mapping)) { 70 Logger.debug(this, "Banner: Validation Banner Failed"); 71 setForward(req, mapping.getInput()); 72 73 return; 74 } else { 75 try { 76 _saveBanner(form, req, res); 77 } catch (Exception e) { 78 _handleException(e, req); 79 } 80 81 _sendToReferral(req, res, referer); 82 83 return; 84 } 85 } 86 else if (com.liferay.portal.util.Constants.DELETE.equals(cmd)) { 88 Logger.debug(this, "Banner: Deleting Banner"); 89 90 try { 91 _deleteBanner(form, req, res); 92 } catch (Exception e) { 93 _handleException(e, req); 94 } 95 _sendToReferral(req, res, referer); 96 97 return; 98 } 99 100 BeanUtils.copyProperties(form, req.getAttribute(WebKeys.BANNER_EDIT)); 101 setForward(req, "portlet.ext.banners.edit_banner"); 102 } 103 104 105 106 private void _saveBanner(ActionForm form, ActionRequest req, ActionResponse res) 108 throws Exception { 109 110 BeanUtils.copyProperties(req.getAttribute(WebKeys.BANNER_EDIT), form); 111 Banner b = ( Banner) req.getAttribute(WebKeys.BANNER_EDIT); 112 InodeFactory.saveInode(b); 113 114 java.util.List _cats = InodeFactory.getParentsOfClass(b, Category.class); 116 java.util.Iterator it = _cats.iterator(); 117 boolean delChild = true; 118 while (it.hasNext()) { 119 Category cat = ( Category ) it.next(); 120 delChild = cat.deleteChild(b); 121 } 122 123 String placement = ""; 124 125 String [] arr = b.getCategories(); 127 if (arr != null) { 128 for (int i = 0; i < arr.length; i++) { 129 Category node = ( Category ) InodeFactory.getInode(arr[i], Category.class); 130 node.addChild(b); 131 if (node.getKey()!=null) { 132 placement += node.getKey() + ","; 133 } 134 else { 135 placement += node.getCategoryName() + ","; 136 } 137 } 138 } 139 140 String path = ""; 141 142 Folder currParentFolder = (Folder) InodeFactory.getParentOfClass(b,Folder.class); 144 if (currParentFolder.getInode()!=b.getParent()) { 146 if (currParentFolder.getInode()>0) { 147 currParentFolder.deleteChild(b); 148 } 149 Folder parentFolder = (Folder) InodeFactory.getInode(b.getParent(),Folder.class); 151 if (parentFolder.getInode()>0) { 152 parentFolder.addChild(b); 153 currParentFolder = parentFolder; 154 } 155 } 156 if (currParentFolder.getInode()>0) { 158 Host host = HostFactory.getParentHost(currParentFolder); 159 path = host.getHostname() + currParentFolder.getPath(); 160 } 161 162 Identifier parentHTMLPageId = (Identifier) IdentifierFactory.getIdentifierByInode(b); 164 165 HTMLPage parentHTMLPage = (HTMLPage) InodeFactory.getInode(b.getHtmlpage(),HTMLPage.class); 166 Identifier newParentHTMLPageId = IdentifierFactory.getIdentifierByInode(parentHTMLPage); 167 if (parentHTMLPageId.getInode()!=newParentHTMLPageId.getInode()) { 168 if (parentHTMLPageId.getInode()!=0) { 170 parentHTMLPageId.deleteChild(b); 171 } 172 if (newParentHTMLPageId.getInode()>0) { 173 newParentHTMLPageId.addChild(b); 174 parentHTMLPageId = newParentHTMLPageId; 175 } 176 } 177 if (parentHTMLPageId.getInode() > 0) { 179 parentHTMLPage = (HTMLPage) IdentifierFactory.getWorkingChildOfClass(parentHTMLPageId,HTMLPage.class); 180 Folder parentFolder = (Folder) InodeFactory.getParentOfClass(parentHTMLPage,Folder.class); 181 Host host = HostFactory.getParentHost(parentFolder); 182 path = host.getHostname() + parentFolder.getPath() + parentHTMLPage.getPageUrl(); 183 } 184 185 String previousPath = b.getPath(); 187 String previousPlacement = b.getPlacement(); 188 189 b.setPlacement(placement); 190 b.setPath(path); 191 InodeFactory.saveInode(b); 192 193 BannerServices.writeBannerToFile(b, currParentFolder, parentHTMLPage); 195 196 BannerCache.updateBannerCache(previousPath, previousPlacement,path,placement,b); 198 199 SessionMessages.add(req, "message", "message.banner.save"); 201 202 } 203 204 private void _deleteBanner(ActionForm form, ActionRequest req, ActionResponse res) 206 throws Exception { 207 Banner b = ( Banner ) req.getAttribute(WebKeys.BANNER_EDIT); 208 InodeFactory.deleteInode(b); 209 SessionMessages.add(req, "message", "message.banner.delete"); 211 212 } 213 214 private void _retrieveBanner(ActionForm form, ActionRequest req, ActionResponse res) 216 throws Exception { 217 218 Banner banner = (Banner) InodeFactory.getInode(req.getParameter("inode"), Banner.class); 219 req.setAttribute(WebKeys.BANNER_EDIT, banner); 220 } 221 private void _editBanner(ActionForm form, ActionRequest req, ActionResponse res) 223 throws Exception { 224 225 Banner banner = (Banner) req.getAttribute(WebKeys.BANNER_EDIT); 226 BannerForm bf = (BannerForm) form; 227 228 Folder parentFolder = (Folder) InodeFactory.getParentOfClass(banner,Folder.class); 230 Identifier parentHTMLPageId = (Identifier) IdentifierFactory.getIdentifierByInode(banner); 232 HTMLPage parentHTMLPage = (HTMLPage) IdentifierFactory.getWorkingChildOfClass(parentHTMLPageId,HTMLPage.class); 233 234 if (parentFolder.getInode()>0) { 235 bf.setParent(parentFolder.getInode()); 236 banner.setParent(parentFolder.getInode()); 237 bf.setSelectedparent(parentFolder.getPath()); 238 bf.setSelectedparentPath(parentFolder.getPath()); 239 } 240 if (parentHTMLPage.getInode()>0) { 241 banner.setHtmlpage(parentHTMLPage.getInode()); 242 bf.setHtmlpage(parentHTMLPage.getInode()); 243 bf.setSelectedhtmlpage(parentHTMLPage.getPageUrl()); 244 } 245 File image = (File) InodeFactory.getInode(banner.getImage(),File.class); 246 bf.setSelectedimage(image.getFileName()); 247 bf.setImageExtension(UtilMethods.getFileExtension(image.getFileName())); 248 249 req.setAttribute(WebKeys.BANNER_EDIT, banner); 250 } 251 } 252 | Popular Tags |