1 16 package com.blandware.atleap.webapp.action.core.layout; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.model.core.Layout; 20 import com.blandware.atleap.service.core.LayoutManager; 21 import com.blandware.atleap.service.exception.BeanAlreadyExistsException; 22 import com.blandware.atleap.webapp.action.core.BaseAction; 23 import com.blandware.atleap.webapp.form.LayoutForm; 24 import com.blandware.atleap.webapp.struts.HeritableComponentDefinition; 25 import com.blandware.atleap.webapp.util.core.WebappConstants; 26 import com.blandware.atleap.webapp.util.core.WebappUtil; 27 import org.apache.struts.action.ActionForm; 28 import org.apache.struts.action.ActionForward; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.action.ActionMessage; 31 import org.apache.struts.action.ActionMessages; 32 import org.apache.struts.tiles.ComponentDefinition; 33 import org.apache.struts.tiles.TilesUtil; 34 35 import javax.servlet.ServletContext ; 36 import javax.servlet.http.HttpServletRequest ; 37 import javax.servlet.http.HttpServletResponse ; 38 39 64 public final class CreateLayoutAction extends BaseAction { 65 74 public ActionForward execute(ActionMapping mapping, ActionForm form, 75 HttpServletRequest request, HttpServletResponse response) throws Exception { 76 77 if ( !isCancelled(request) ) { 78 LayoutForm layoutForm = (LayoutForm) form; 79 80 ServletContext servletContext = request.getSession().getServletContext(); 81 ComponentDefinition definition = TilesUtil.getDefinition(layoutForm.getDefinition(), request, getServlet().getServletContext()); 83 if ( definition == null ) { 84 ActionMessages errors = new ActionMessages(); 86 errors.add("noSuchDefinition", new ActionMessage("core.layout.errors.noSuchDefinition")); 87 saveErrors(request, errors); 88 saveToken(request); 89 return mapping.getInputForward(); 90 } 91 92 if ( layoutForm.getCpDefinition() != null && layoutForm.getCpDefinition().length() > 0 ) { 94 ComponentDefinition cpDefinition = TilesUtil.getDefinition(layoutForm.getCpDefinition(), request, getServlet().getServletContext()); 95 if ( cpDefinition == null ) { 96 ActionMessages errors = new ActionMessages(); 98 errors.add("noSuchDefinition", new ActionMessage("core.layout.errors.noSuchDefinition")); 99 saveErrors(request, errors); 100 saveToken(request); 101 return mapping.getInputForward(); 102 } 103 104 105 boolean isChild = false; 107 String tempDefinition = cpDefinition.getName(); 108 do { 109 if ( tempDefinition.equalsIgnoreCase(definition.getName()) ) { 110 isChild = true; 111 break; 112 } 113 tempDefinition = ((HeritableComponentDefinition) TilesUtil.getDefinition(tempDefinition, request, servletContext)).getExtends(); 114 } while ( tempDefinition != null ); 115 if ( !isChild ) { 116 ActionMessages errors = new ActionMessages(); 117 errors.add("isNotChildDefinition", new ActionMessage("core.layout.errors.isNotChildDefinition", 118 cpDefinition.getName(), 119 definition.getName())); 120 saveErrors(request, errors); 121 saveToken(request); 122 return mapping.getInputForward(); 123 } 124 } 125 Layout layout = new Layout(); 126 WebappUtil.copyProperties(layout, layoutForm, request); 127 LayoutManager layoutManager = (LayoutManager) getBean(Constants.LAYOUT_MANAGER_BEAN); 128 Long layoutId = null; 129 try { 130 layoutId = layoutManager.createLayout(layout); 131 } catch ( BeanAlreadyExistsException e ) { 132 ActionMessages errors = new ActionMessages(); 134 errors.add("layoutAlreadyExists", new ActionMessage("core.layout.errors.alreadyExists")); 135 saveErrors(request, errors); 136 saveToken(request); 137 return mapping.getInputForward(); 138 } 139 request.getSession().setAttribute(WebappConstants.LAYOUT_ID_KEY, layoutId); 140 return mapping.findForward("viewLayout"); 141 } else { 142 return mapping.findForward("listLayouts"); 143 } 144 } 145 } | Popular Tags |