KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > replacementproxy > actions > ReplacementsDispatchAction


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.replacementproxy.actions;
21
22 import java.util.ArrayList JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.List JavaDoc;
25
26 import javax.servlet.http.HttpServletRequest JavaDoc;
27 import javax.servlet.http.HttpServletResponse JavaDoc;
28
29 import org.apache.commons.logging.Log;
30 import org.apache.commons.logging.LogFactory;
31 import org.apache.struts.Globals;
32 import org.apache.struts.action.ActionForm;
33 import org.apache.struts.action.ActionForward;
34 import org.apache.struts.action.ActionMapping;
35 import org.apache.struts.action.ActionMessage;
36 import org.apache.struts.action.ActionMessages;
37
38 import com.sslexplorer.core.CoreEvent;
39 import com.sslexplorer.core.CoreServlet;
40 import com.sslexplorer.core.CoreUtil;
41 import com.sslexplorer.core.actions.AuthenticatedDispatchAction;
42 import com.sslexplorer.policyframework.Permission;
43 import com.sslexplorer.policyframework.PolicyConstants;
44 import com.sslexplorer.replacementproxy.Replacement;
45 import com.sslexplorer.replacementproxy.ReplacementItem;
46 import com.sslexplorer.replacementproxy.forms.ReplacementsForm;
47 import com.sslexplorer.security.SessionInfo;
48 import com.sslexplorer.webforwards.WebForwardDatabase;
49 import com.sslexplorer.webforwards.WebForwardDatabaseFactory;
50 import com.sslexplorer.webforwards.WebForwardEventConstants;
51
52 public class ReplacementsDispatchAction extends AuthenticatedDispatchAction {
53
54     static Log log = LogFactory.getLog(ReplacementsDispatchAction.class);
55     static String JavaDoc ATTR_REPLACEMENT = "replacement";
56
57     public ReplacementsDispatchAction() {
58         super(PolicyConstants.REPLACEMENTS_RESOURCE_TYPE, new Permission[] { PolicyConstants.PERM_CHANGE });
59     }
60
61     public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request,
62                                      HttpServletResponse JavaDoc response) throws Exception JavaDoc {
63         try {
64             CoreUtil.clearFlow(request);
65             
66             WebForwardDatabase udb = WebForwardDatabaseFactory.getInstance();
67             List JavaDoc replacements = udb.getReplacements();
68             List JavaDoc replacementItems = new ArrayList JavaDoc();
69             int idx = 0;
70             ReplacementItem item = null;
71             String JavaDoc lastMimeType = null;
72             String JavaDoc lastSite = null;
73             for (Iterator JavaDoc i = replacements.iterator(); i.hasNext();) {
74                 Replacement r = (Replacement) i.next();
75                 if (lastSite == null || !lastSite.equals(r.getSitePattern())) {
76                     lastSite = r.getSitePattern();
77                 } else {
78                     if (lastMimeType == null || !lastMimeType.equals(r.getMimeType())) {
79                         lastMimeType = r.getMimeType();
80                     }
81                 }
82                 ReplacementItem n = new ReplacementItem(idx, r);
83                 n.setCanMoveUp(replacementItems.size() > 0);
84                 n.setCanMoveDown(true);
85                 item = n;
86                 replacementItems.add(item);
87                 idx++;
88             }
89             if (item != null) {
90                 item.setCanMoveDown(false);
91             }
92             ((ReplacementsForm) form).initialize(replacementItems);
93         } catch (Exception JavaDoc ex) {
94             log.error("Failed to setup form.", ex);
95         }
96         return mapping.findForward("success");
97     }
98
99     public ActionForward swap(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
100                     throws Exception JavaDoc {
101         int idx1 = Integer.parseInt(request.getParameter("idx1"));
102         int idx2 = Integer.parseInt(request.getParameter("idx2"));
103         ReplacementsForm rf = (ReplacementsForm) form;
104         ReplacementItem item1 = (ReplacementItem) rf.getReplacementItems().get(idx1);
105         ReplacementItem item2 = (ReplacementItem) rf.getReplacementItems().get(idx2);
106         Replacement rep1 = item1.getReplacement();
107         Replacement rep2 = item2.getReplacement();
108         String JavaDoc mimeType1 = rep1.getMimeType();
109         String JavaDoc sitePattern1 = rep1.getSitePattern();
110         String JavaDoc matchPattern1 = rep1.getMatchPattern();
111         String JavaDoc replacePattern1 = rep1.getReplacePattern();
112         rep1.setMatchPattern(rep2.getMatchPattern());
113         rep1.setMimeType(rep2.getMimeType());
114         rep1.setSitePattern(rep2.getSitePattern());
115         rep1.setReplacePattern(rep2.getReplacePattern());
116         rep2.setMatchPattern(matchPattern1);
117         rep2.setMimeType(mimeType1);
118         rep2.setSitePattern(sitePattern1);
119         rep2.setReplacePattern(replacePattern1);
120         SessionInfo info = this.getSessionInfo(request);
121         try {
122             WebForwardDatabaseFactory.getInstance().updateReplacement(rep1);
123             CoreServlet.getServlet().fireCoreEvent(
124                 new CoreEvent(this, WebForwardEventConstants.REPLACEMENT_PRECEDENCE_CHANGED, null, info, CoreEvent.STATE_SUCCESSFUL).addAttribute(
125                                 WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_TYPE, String.valueOf(rep1.getReplaceType())));
126             try {
127                 WebForwardDatabaseFactory.getInstance().updateReplacement(rep2);
128                 CoreServlet.getServlet().fireCoreEvent(
129                     new CoreEvent(this, WebForwardEventConstants.REPLACEMENT_PRECEDENCE_CHANGED, null, info, CoreEvent.STATE_SUCCESSFUL)
130                                     .addAttribute(WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_TYPE, String.valueOf(rep2
131                                                     .getReplaceType())));
132                 return mapping.findForward("success");
133             } catch (Exception JavaDoc e) {
134                 CoreServlet.getServlet().fireCoreEvent(
135                     new CoreEvent(this, WebForwardEventConstants.REPLACEMENT_PRECEDENCE_CHANGED, null, info, CoreEvent.STATE_UNSUCCESSFUL)
136                                     .addAttribute(WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_TYPE, String.valueOf(rep2
137                                                     .getReplaceType())));
138                 throw e;
139             }
140         } catch (Exception JavaDoc e) {
141             CoreServlet.getServlet().fireCoreEvent(
142                 new CoreEvent(this, WebForwardEventConstants.REPLACEMENT_PRECEDENCE_CHANGED, null, info, CoreEvent.STATE_UNSUCCESSFUL).addAttribute(
143                                 WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_TYPE, String.valueOf(rep1.getReplaceType())));
144             throw e;
145         }
146     }
147
148     public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
149                     throws Exception JavaDoc {
150         List JavaDoc sel = new ArrayList JavaDoc();
151         ReplacementsForm rf = (ReplacementsForm) form;
152         int selectedSequence = Integer.parseInt((String JavaDoc) request.getParameter("sequence"));
153         for (Iterator JavaDoc i = rf.getReplacementItems().iterator(); i.hasNext();) {
154             ReplacementItem item = (ReplacementItem) i.next();
155             if (item.getReplacement().getSequence() == selectedSequence) {
156                 sel.add(item.getReplacement());
157             }
158         }
159         if (sel.size() == 0) {
160             ActionMessages errs = new ActionMessages();
161             errs.add(Globals.ERROR_KEY, new ActionMessage("replacements.error.noReplacementsSelectedToDelete"));
162             saveErrors(request, errs);
163         } else {
164             SessionInfo info = this.getSessionInfo(request);
165             for (Iterator JavaDoc i = sel.iterator(); i.hasNext();) {
166                 Replacement r = (Replacement) i.next();
167                 try {
168                     WebForwardDatabaseFactory.getInstance().deleteReplacement(r.getSequence());
169                     CoreServlet.getServlet().fireCoreEvent(
170                         new CoreEvent(this, WebForwardEventConstants.DELETE_REPLACEMENT, null, info, CoreEvent.STATE_SUCCESSFUL)
171                                         .addAttribute(WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_SEQUENCE, String.valueOf(r
172                                                         .getSequence())));
173                     ActionMessages msgs = new ActionMessages();
174                     msgs.add(Globals.ERROR_KEY, new ActionMessage("replacements.message.replacementsDeleted", String.valueOf(sel
175                                     .size())));
176                     saveMessages(request, msgs);
177                 } catch (Exception JavaDoc e) {
178                     CoreServlet.getServlet().fireCoreEvent(
179                         new CoreEvent(this, WebForwardEventConstants.DELETE_REPLACEMENT, null, info, CoreEvent.STATE_UNSUCCESSFUL)
180                                         .addAttribute(WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_SEQUENCE, String.valueOf(r
181                                                         .getSequence())));
182                 }
183             }
184         }
185         //
186
((ReplacementsForm) form).setReferer(CoreUtil.getReferer(request));
187         return mapping.findForward("display");
188     }
189
190     public ActionForward create(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
191                     throws Exception JavaDoc {
192         return mapping.findForward("create");
193     }
194
195     public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
196                     throws Exception JavaDoc {
197         ReplacementsForm rf = (ReplacementsForm) form;
198         int selectedSequence = Integer.parseInt((String JavaDoc) request.getParameter("sequence"));
199         List JavaDoc sel = new ArrayList JavaDoc();
200         for (Iterator JavaDoc i = rf.getReplacementItems().iterator(); i.hasNext();) {
201             ReplacementItem item = (ReplacementItem) i.next();
202             if (item.getReplacement().getSequence() == selectedSequence) {
203                 sel.add(item.getReplacement());
204             }
205         }
206         if (sel.size() != 1) {
207             ActionMessages errs = new ActionMessages();
208             errs.add(Globals.ERROR_KEY, new ActionMessage("replacements.error.invalidSelectionToEdit"));
209             saveErrors(request, errs);
210         } else {
211             Replacement replacement = (Replacement) sel.get(0);
212             request.setAttribute(ATTR_REPLACEMENT, replacement);
213             return mapping.findForward("edit");
214         }
215         return mapping.findForward("success");
216     }
217
218     public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) {
219         return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT | SessionInfo.USER_CONSOLE_CONTEXT;
220     }
221
222 }
Popular Tags