KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > properties > actions > ShowPropertyProfileDispatchAction


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sslexplorer.properties.actions;
21
22 import java.util.Calendar JavaDoc;
23
24 import javax.servlet.http.HttpServletRequest JavaDoc;
25 import javax.servlet.http.HttpServletResponse JavaDoc;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.apache.struts.Globals;
30 import org.apache.struts.action.ActionForm;
31 import org.apache.struts.action.ActionForward;
32 import org.apache.struts.action.ActionMapping;
33 import org.apache.struts.action.ActionMessage;
34 import org.apache.struts.action.ActionMessages;
35
36 import com.sslexplorer.core.CoreEventConstants;
37 import com.sslexplorer.core.CoreServlet;
38 import com.sslexplorer.core.CoreUtil;
39 import com.sslexplorer.policyframework.NoPermissionException;
40 import com.sslexplorer.policyframework.OwnedResource;
41 import com.sslexplorer.policyframework.Permission;
42 import com.sslexplorer.policyframework.PolicyConstants;
43 import com.sslexplorer.policyframework.PolicyDatabaseFactory;
44 import com.sslexplorer.policyframework.PolicyUtil;
45 import com.sslexplorer.policyframework.Resource;
46 import com.sslexplorer.policyframework.ResourceChangeEvent;
47 import com.sslexplorer.policyframework.ResourceStack;
48 import com.sslexplorer.policyframework.ResourceUtil;
49 import com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction;
50 import com.sslexplorer.policyframework.forms.AbstractResourceForm;
51 import com.sslexplorer.properties.DefaultPropertyProfile;
52 import com.sslexplorer.properties.ProfilesFactory;
53 import com.sslexplorer.properties.PropertyProfile;
54 import com.sslexplorer.properties.forms.PropertyProfileForm;
55 import com.sslexplorer.security.Constants;
56 import com.sslexplorer.security.LogonControllerFactory;
57 import com.sslexplorer.security.SessionInfo;
58 import com.sslexplorer.security.User;
59
60 /**
61  * This dispatch action is responsible for allowing editing or creation of
62  * property profiles. Property profiles are the one resource in SSL-Explorer
63  * that still have 'scope', i.e. a user may create personal profiles.
64  * <p>
65  * Although this class could easily support it, creation of global profiles is
66  * now done through a wizard and thus a different action.
67  *
68  * @see com.sslexplorer.properties.PropertyProfile
69  * @see com.sslexplorer.properties.forms.PropertyProfileForm
70  * @author Brett Smith <brett@3sp.com>
71  */

72
73 public class ShowPropertyProfileDispatchAction extends AbstractResourceDispatchAction {
74
75     final static Log log = LogFactory.getLog(ShowPropertyProfileDispatchAction.class);
76
77     /**
78      *
79      */

80     public ShowPropertyProfileDispatchAction() {
81         super(PolicyConstants.PROFILE_RESOURCE_TYPE);
82     }
83
84     /* (non-Javadoc)
85      * @see com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction#create(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
86      */

87     public ActionForward create(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
88                     throws Exception JavaDoc {
89         ResourceStack.pushToEditingStack(request.getSession(), createResource(mapping, form, request, response));
90         ActionForward fwd = edit(mapping, form, request, response);
91         ((AbstractResourceForm) form).setCreating();
92         return fwd;
93     }
94
95     protected void doCheckPermissions(ActionMapping mapping, SessionInfo session, HttpServletRequest JavaDoc request) throws Exception JavaDoc {
96         if(session.getNavigationContext() == SessionInfo.USER_CONSOLE_CONTEXT) {
97             PolicyUtil.checkPermission(PolicyConstants.PERSONAL_PROFILE_RESOURCE_TYPE, PolicyConstants.PERM_MAINTAIN, request);
98         }
99         else {
100             super.doCheckPermissions(mapping, session, request);
101         }
102     }
103
104     /*
105      * (non-Javadoc)
106      *
107      * @see com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction#createResource(org.apache.struts.action.ActionMapping,
108      * org.apache.struts.action.ActionForm,
109      * javax.servlet.http.HttpServletRequest,
110      * javax.servlet.http.HttpServletResponse)
111      */

112     public Resource createResource(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
113                     throws Exception JavaDoc {
114         Calendar JavaDoc now = Calendar.getInstance();
115         SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request);
116         return new DefaultPropertyProfile(session.getRealmId(), 0,
117             session.getNavigationContext() == SessionInfo.USER_CONSOLE_CONTEXT ? session.getUser().getPrincipalName() : null,
118                 "", "", now, now);
119     }
120
121     /*
122      * (non-Javadoc)
123      *
124      * @see com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction#edit(org.apache.struts.action.ActionMapping,
125      * org.apache.struts.action.ActionForm,
126      * javax.servlet.http.HttpServletRequest,
127      * javax.servlet.http.HttpServletResponse)
128      */

129     public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
130                     throws Exception JavaDoc {
131         PropertyProfileForm pf = (PropertyProfileForm) form;
132         ActionForward fwd = super.edit(mapping, form, request, response);
133         String JavaDoc scope = pf.getOwner() == null ? Constants.SCOPE_GLOBAL : Constants.SCOPE_PERSONAL;
134         pf.setPropertyScope(scope);
135         return fwd;
136     }
137
138     /*
139      * (non-Javadoc)
140      *
141      * @see com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction#commit(org.apache.struts.action.ActionMapping,
142      * org.apache.struts.action.ActionForm,
143      * javax.servlet.http.HttpServletRequest,
144      * javax.servlet.http.HttpServletResponse)
145      */

146     public ActionForward commit(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
147                     throws Exception JavaDoc {
148         ActionMessages messages = new ActionMessages();
149         User user = LogonControllerFactory.getInstance().getUser(request);
150         PropertyProfileForm profileForm = (PropertyProfileForm) form;
151         PropertyProfile profile = (PropertyProfile)profileForm.getResource();
152         if (profileForm.getPropertyScope().equals(Constants.SCOPE_GLOBAL)) {
153             PolicyUtil.checkPermissions(PolicyConstants.PROFILE_RESOURCE_TYPE, new Permission[] {
154                             PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
155                             PolicyConstants.PERM_ASSIGN }, request);
156         } else {
157             PolicyUtil.checkPermission(PolicyConstants.PERSONAL_PROFILE_RESOURCE_TYPE, PolicyConstants.PERM_MAINTAIN, request);
158         }
159         profileForm.apply();
160         if (profileForm.getEditing()) {
161             PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(profile, profileForm.getSelectedPoliciesList(), getSessionInfo(request));
162             profile.getResourceType().updateResource(profile, getSessionInfo(request));
163         } else {
164             int baseOn = profileForm.getSelectedPropertyProfile();
165             User owner = profileForm.getOwner();
166             int realmId = "global".equals(profileForm.getPropertyScope()) ? 0 : user.getRealm().getResourceId();
167
168             try {
169                 PropertyProfile newProfile = ProfilesFactory.getInstance().createPropertyProfile(owner == null ? null : owner.getPrincipalName(),
170                     profile.getResourceName(), profile.getResourceDescription(), baseOn, realmId);
171
172                 PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(newProfile, profileForm.getSelectedPoliciesList(), getSessionInfo(request));
173                 CoreServlet.getServlet().fireCoreEvent(
174                     new ResourceChangeEvent(this, CoreEventConstants.CREATE_PROPERTY_PROFILE, newProfile, getSessionInfo(request), ResourceChangeEvent.STATE_SUCCESSFUL));
175             } catch (Exception JavaDoc e) {
176                 CoreServlet.getServlet().fireCoreEvent(
177                     new ResourceChangeEvent(this, CoreEventConstants.CREATE_PROPERTY_PROFILE, getSessionInfo(request), e));
178                 throw e;
179             }
180         }
181         messages.add(Globals.MESSAGES_KEY, new ActionMessage("message.profileSaved"));
182         saveMessages(request, messages);
183         ResourceUtil.setAvailableProfiles(getSessionInfo(request));
184         return cleanUpAndReturnToReferer(mapping, form, request, response);
185     }
186
187     /*
188      * (non-Javadoc)
189      *
190      * @see com.sslexplorer.policyframework.actions.AbstractResourceDispatchAction#display(org.apache.struts.action.ActionMapping,
191      * org.apache.struts.action.ActionForm,
192      * javax.servlet.http.HttpServletRequest,
193      * javax.servlet.http.HttpServletResponse)
194      */

195     public ActionForward display(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
196                     throws Exception JavaDoc {
197         ((PropertyProfileForm) form).setReferer(CoreUtil.getReferer(request));
198         CoreUtil.addRequiredFieldMessage(this, request);
199         return mapping.findForward("display");
200     }
201
202     /*
203      * (non-Javadoc)
204      *
205      * @see com.sslexplorer.core.actions.CoreAction#getNavigationContext(org.apache.struts.action.ActionMapping,
206      * org.apache.struts.action.ActionForm,
207      * javax.servlet.http.HttpServletRequest,
208      * javax.servlet.http.HttpServletResponse)
209      */

210     public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
211         return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT | SessionInfo.USER_CONSOLE_CONTEXT;
212     }
213
214     protected void checkValid(Resource r, Permission[] permissions, ActionMapping mapping, AbstractResourceForm form, HttpServletRequest JavaDoc request) throws NoPermissionException {
215         if(r instanceof OwnedResource && ((OwnedResource)r).getOwnerUsername() != null) {
216             super.checkValid(r, new Permission[] { PolicyConstants.PERM_MAINTAIN }, mapping, form, request);
217         }
218         else {
219             super.checkValid(r, permissions, mapping, form, request);
220         }
221     }
222
223 }
Popular Tags