KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > blandware > atleap > webapp > action > core > contentField > ContentFieldListController


1 package com.blandware.atleap.webapp.action.core.contentField;
2
3 import com.blandware.atleap.common.Constants;
4 import com.blandware.atleap.model.core.*;
5 import com.blandware.atleap.service.core.LookupManager;
6 import com.blandware.atleap.webapp.util.core.WebappUtil;
7 import org.apache.struts.tiles.ComponentContext;
8 import org.apache.struts.tiles.ControllerSupport;
9 import org.springframework.context.ApplicationContext;
10 import org.springframework.web.context.support.WebApplicationContextUtils;
11
12 import javax.servlet.ServletContext JavaDoc;
13 import javax.servlet.http.HttpServletRequest JavaDoc;
14 import javax.servlet.http.HttpServletResponse JavaDoc;
15 import java.util.*;
16
17
18 /**
19  * <p>Content field list controller. This class is used to check can user create content fields or not.
20  * </p>
21  * <p><a HREF="ContentFieldListController.java.htm"><i>View Source</i></a></p>
22  *
23  * @author Sergey Zubtcovskii <a HREF="mailto:sergey.zubtcovskii@blandware.com">&lt;sergey.zubtcovskii@blandware.com&gt;</a>
24  * @version $Revision: 1.5 $ $Date: 2006/03/17 15:39:52 $
25  */

26 public final class ContentFieldListController extends ControllerSupport {
27     //~ Methods ================================================================
28
/**
29      * Retrieves content fields from persistence layer and put 'em to the request
30      *
31      * @param tilesContext Current tile context
32      * @param request Current request
33      * @param response Current response
34      * @param servletContext Current Servlet Context
35      */

36     public void execute(ComponentContext tilesContext, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response, ServletContext JavaDoc servletContext)
37             throws Exception JavaDoc {
38
39         Long JavaDoc ownerId = (Long JavaDoc) request.getAttribute("ownerId");
40         if ( ownerId != null ) {
41             ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
42             LookupManager lookupManager = (LookupManager) applicationContext.getBean(Constants.LOOKUP_MANAGER_BEAN);
43             Localizable owner = lookupManager.retrieveLocalizable(ownerId);
44
45             if (owner instanceof ActionPage) {
46                 Set identifiers = WebappUtil.getOverridableFieldIdentifiers(owner, request);
47                 Map overridenAPFields = new HashMap();
48                 List fields = owner.getContentFields();
49                 for (int i = 0; i < fields.size(); i++) {
50                     ContentField field = (ContentField) fields.get(i);
51                     String JavaDoc identifier = field.getIdentifier();
52                     int k = identifier.indexOf('[');
53                     String JavaDoc identifierWithoutIndex;
54                     if (k != -1) {
55                         identifierWithoutIndex = identifier.substring(0, k);
56                     } else {
57                         identifierWithoutIndex = identifier;
58                     }
59                     overridenAPFields.put(identifier, new Boolean JavaDoc(identifiers.contains(identifierWithoutIndex)));
60                 }
61                 request.setAttribute("overridenAPFields", overridenAPFields);
62             }
63
64             if (owner instanceof Layout) {
65                 Set identifiers = WebappUtil.getOverridableFieldIdentifiers(owner, request);
66                 Map overridenLayoutFields = new HashMap();
67                 List fields = owner.getContentFields();
68                 for (int i = 0; i < fields.size(); i++) {
69                     ContentField field = (ContentField) fields.get(i);
70                     String JavaDoc identifier = field.getIdentifier();
71                     int k = identifier.indexOf('[');
72                     String JavaDoc identifierWithoutIndex;
73                     if (k != -1) {
74                         identifierWithoutIndex = identifier.substring(0, k);
75                     } else {
76                         identifierWithoutIndex = identifier;
77                     }
78                     overridenLayoutFields.put(identifier, new Boolean JavaDoc(identifiers.contains(identifierWithoutIndex)));
79                 }
80                 request.setAttribute("overridenLayoutFields", overridenLayoutFields);
81             }
82
83             if ( owner != null ) {
84                 Set identifiers = null;
85                 if ( owner instanceof ContentPage || (owner instanceof ActionPage && !request.isUserInRole("core-contentField-create") && !request.isUserInRole("core-contentField-update")) ) {
86                     identifiers = WebappUtil.getOverridableFieldIdentifiers(owner, request);
87                     if ( identifiers != null && !identifiers.isEmpty() ) {
88                         request.setAttribute("canCreateOrUpdate", "true");
89                     }
90                 } else if ( owner instanceof Layout && !request.isUserInRole("core-contentField-create") && !request.isUserInRole("core-contentField-update") ) {
91                     Layout ownerLayout = (Layout) owner;
92                     identifiers = WebappUtil.getIndexedFieldIdentifiers(ownerLayout.getDefinition(), request);
93                     if (identifiers == null) {
94                         identifiers = new TreeSet();
95                     }
96                     identifiers.addAll(WebappUtil.getOverridableFieldIdentifiers(ownerLayout, request));
97                     if ( identifiers != null && !identifiers.isEmpty() ) {
98                         request.setAttribute("canCreateOrUpdate", "true");
99                     }
100                 } else {
101                     // (it's AP or Layout and user can create/update fields) OR
102
// (its not CP, AP or Layout)
103
if ( request.isUserInRole("core-contentField-create") || request.isUserInRole("core-contentField-update") ) {
104                         request.setAttribute("canCreateOrUpdate", "true");
105                     }
106                 }
107             }
108         }
109     }
110 }
111
Popular Tags