KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > quikj > application > communicator > applications > webtalk > controller > FeatureOperatorManagementAction


1
2 package com.quikj.application.communicator.applications.webtalk.controller;
3
4 import javax.servlet.http.*;
5 import org.apache.struts.action.*;
6 import java.sql.*;
7
8 import com.quikj.application.communicator.admin.model.*;
9 import com.quikj.application.communicator.admin.controller.*;
10 import com.quikj.application.communicator.applications.webtalk.model.*;
11 import com.quikj.server.framework.*;
12 /**
13  *
14  * @author bhm
15  */

16 public class FeatureOperatorManagementAction extends Action
17 {
18     
19     public static final String JavaDoc CLASSNAME = "com.quikj.application.web.talk.feature.operator.Operator";
20     
21     /** Creates a new instance of CustomerManagementAction */
22     public FeatureOperatorManagementAction()
23     {
24     }
25     
26     public ActionForward execute(ActionMapping mapping,
27     ActionForm form,
28     HttpServletRequest request,
29     HttpServletResponse response)
30     {
31         FeatureOperatorManagementForm fform = (FeatureOperatorManagementForm)form;
32         
33         ActionErrors errors = new ActionErrors();
34         
35         Connection c = (Connection)request.getSession().getAttribute("connection");
36         if (c == null)
37         {
38             errors.add(ActionErrors.GLOBAL_ERROR,
39             new ActionError("error.not.logged.in"));
40             saveErrors(request, errors);
41             return mapping.findForward("logon");
42         }
43         
44         AccountElement element = (AccountElement)request.getSession().getAttribute("userInfo");
45         if (element.isAdminLevel() == false)
46         {
47             errors.add(ActionErrors.GLOBAL_ERROR,
48             new ActionError("error.insufficient.privilege"));
49             saveErrors(request, errors);
50             
51             return mapping.findForward("main_menu");
52         }
53         
54         if (fform.getSubmit().equals("Find") == true)
55         {
56             FeatureTable tbl = new FeatureTable();
57             tbl.setConnection(c);
58             
59             FeatureTableElement e = tbl.query(fform.getName());
60             
61             if (e == null)
62             {
63                 errors.add(ActionErrors.GLOBAL_ERROR,
64                 new ActionError("error.feature.not.exist"));
65                 
66                 if (tbl.getErrorMessage() != null)
67                 {
68                     AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
69                     "FeatureOperatorManagementAction.execute()/Find/by-"
70                     + element.getName()
71                     + ": "
72                     + tbl.getErrorMessage());
73                 }
74             }
75             else
76             {
77                 fform.setActive(e.isActive());
78                 fform.setName(e.getName());
79                 fform.setParamsList(e.getParams());
80                 
81                 if (e.isActive() == true)
82                 {
83                     request.setAttribute("featureStatus", new String JavaDoc("Active"));
84                 }
85                 else
86                 {
87                     request.setAttribute("featureStatus", new String JavaDoc("Inactive"));
88                 }
89                 
90                 if (e.getClassName().equals(CLASSNAME) == false)
91                 {
92                     // forward to generic feature form
93
WebTalkRelatedTasks menu = new WebTalkRelatedTasks();
94                     menu.addLink(new LinkAttribute("Search users", "display_user_search"));
95                     menu.addLink(new LinkAttribute("Administer users", "display_user_management"));
96                     request.setAttribute("menu", menu);
97                     
98                     return mapping.findForward("feature_management");
99                 }
100             }
101         }
102         else if (fform.getSubmit().equals("Modify") == true)
103         {
104             FeatureTable tbl = new FeatureTable();
105             tbl.setConnection(c);
106             
107             FeatureTableElement e = new FeatureTableElement();
108             
109             e.setName(fform.getName());
110             e.setClassName(CLASSNAME);
111             e.setParams(fform.getParamsList());
112             
113             if (tbl.modify(e) == false)
114             {
115                 if (tbl.getErrorMessage() == null)
116                 {
117                     errors.add(ActionErrors.GLOBAL_ERROR,
118                     new ActionError("error.feature.not.exist"));
119                 }
120                 else
121                 {
122                     errors.add(ActionErrors.GLOBAL_ERROR,
123                     new ActionError("error.db.failure"));
124                     
125                     AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
126                     "FeatureOperatorManagementAction.execute()/Modify/by-"
127                     + element.getName()
128                     + ": "
129                     + tbl.getErrorMessage());
130                 }
131             }
132             else
133             {
134                 AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.USER_LOG,
135                 "User " + element.getName() + " modified feature " +
136                 fform.getName());
137                 
138                 ActionMessages messages = new ActionMessages();
139                 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.modified"));
140                 
141                 // notify app server via RMI
142
if (tbl.isFeatureActive(e.getName()) == true)
143                 {
144                     if (FeatureManagementAction.notifyAppServer(request, e.getName(), "synch", errors, "Modify/by-" + element.getName()) == true)
145                     {
146                         messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.appserver.updated"));
147                     }
148                 }
149                 
150                 // forward control to the webtalk main menu
151
if (errors.isEmpty() == false)
152                 {
153                     saveErrors(request, errors);
154                 }
155                 saveMessages(request, messages);
156                 return mapping.findForward("webtalk_main_menu");
157             }
158         }
159         else if (fform.getSubmit().equals("Create") == true)
160         {
161             FeatureTable tbl = new FeatureTable();
162             tbl.setConnection(c);
163             
164             FeatureTableElement e = new FeatureTableElement();
165             
166             e.setActive(fform.isActive());
167             e.setClassName(CLASSNAME);
168             e.setName(fform.getName());
169             e.setParams(fform.getParamsList());
170             
171             if (tbl.create(e) == false)
172             {
173                 errors.add(ActionErrors.GLOBAL_ERROR,
174                 new ActionError("error.feature.create.failure"));
175                 
176                 AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
177                 "FeatureOperatorManagementAction.execute()/Create/by-"
178                 + element.getName()
179                 + ": "
180                 + tbl.getErrorMessage());
181             }
182             else
183             {
184                 AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.USER_LOG,
185                 "User " + element.getName() + " created feature " +
186                 fform.getName());
187                 
188                 // forward control to the webtalk main menu
189
ActionMessages messages = new ActionMessages();
190                 messages.add(ActionMessages.GLOBAL_MESSAGE,
191                 new ActionMessage("message.feature.created"));
192                 saveMessages(request, messages);
193                 return mapping.findForward("webtalk_main_menu");
194             }
195         }
196         else if (fform.getSubmit().equals("Delete") == true)
197         {
198             FeatureTable tbl = new FeatureTable();
199             tbl.setConnection(c);
200             
201             if (tbl.delete(fform.getName()) == false)
202             {
203                 if (tbl.getErrorMessage() == null)
204                 {
205                     errors.add(ActionErrors.GLOBAL_ERROR,
206                     new ActionError("error.feature.not.exist"));
207                 }
208                 else
209                 {
210                     errors.add(ActionErrors.GLOBAL_ERROR,
211                     new ActionError("error.db.failure"));
212                     
213                     AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
214                     "FeatureOperatorManagementAction.execute()/Delete/by-"
215                     + element.getName()
216                     + ": "
217                     + tbl.getErrorMessage());
218                 }
219             }
220             else
221             {
222                 AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.USER_LOG,
223                 "User " + element.getName() + " deleted feature " +
224                 fform.getName());
225                 
226                 ActionMessages messages = new ActionMessages();
227                 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.deleted"));
228                 
229                 // notify app server via RMI
230
if (FeatureManagementAction.notifyAppServer(request, fform.getName(), "deactivate", errors, "Delete/by-" + element.getName()) == true)
231                 {
232                     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.appserver.updated"));
233                 }
234                 
235                 // forward control to the webtalk main menu
236
if (errors.isEmpty() == false)
237                 {
238                     saveErrors(request, errors);
239                 }
240                 saveMessages(request, messages);
241                 return mapping.findForward("webtalk_main_menu");
242             }
243         }
244         else if (fform.getSubmit().equals("Activate") == true)
245         {
246             FeatureTable tbl = new FeatureTable();
247             tbl.setConnection(c);
248             
249             if (tbl.activate(fform.getName()) == false)
250             {
251                 if (tbl.getErrorMessage() == null)
252                 {
253                     errors.add(ActionErrors.GLOBAL_ERROR,
254                     new ActionError("error.feature.not.exist"));
255                 }
256                 else
257                 {
258                     errors.add(ActionErrors.GLOBAL_ERROR,
259                     new ActionError("error.db.failure"));
260                     
261                     AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
262                     "FeatureOperatorManagementAction.execute()/Activate/by-"
263                     + element.getName()
264                     + ": "
265                     + tbl.getErrorMessage());
266                 }
267             }
268             else
269             {
270                 AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.USER_LOG,
271                 "User " + element.getName() + " activated feature " +
272                 fform.getName());
273                 
274                 ActionMessages messages = new ActionMessages();
275                 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.modified"));
276                 
277                 // notify app server via RMI
278
if (FeatureManagementAction.notifyAppServer(request, fform.getName(), "activate", errors, "Activate/by-" + element.getName()) == true)
279                 {
280                     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.appserver.updated"));
281                 }
282                 
283                 // forward control to the webtalk main menu
284
if (errors.isEmpty() == false)
285                 {
286                     saveErrors(request, errors);
287                 }
288                 saveMessages(request, messages);
289                 return mapping.findForward("webtalk_main_menu");
290             }
291         }
292         else if (fform.getSubmit().equals("Deactivate") == true)
293         {
294             FeatureTable tbl = new FeatureTable();
295             tbl.setConnection(c);
296             
297             if (tbl.deactivate(fform.getName()) == false)
298             {
299                 if (tbl.getErrorMessage() == null)
300                 {
301                     errors.add(ActionErrors.GLOBAL_ERROR,
302                     new ActionError("error.feature.not.exist"));
303                 }
304                 else
305                 {
306                     errors.add(ActionErrors.GLOBAL_ERROR,
307                     new ActionError("error.db.failure"));
308                     
309                     AceLogger.Instance().log(AceLogger.ERROR, AceLogger.SYSTEM_LOG,
310                     "FeatureOperatorManagementAction.execute()/Deactivate/by-"
311                     + element.getName()
312                     + ": "
313                     + tbl.getErrorMessage());
314                 }
315             }
316             else
317             {
318                 AceLogger.Instance().log(AceLogger.INFORMATIONAL, AceLogger.USER_LOG,
319                 "User " + element.getName() + " deactivated feature " +
320                 fform.getName());
321                 
322                 ActionMessages messages = new ActionMessages();
323                 messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.modified"));
324                 
325                 // notify app server via RMI
326
if (FeatureManagementAction.notifyAppServer(request, fform.getName(), "deactivate", errors, "Deactivate/by-" + element.getName()) == true)
327                 {
328                     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.feature.appserver.updated"));
329                 }
330                 
331                 // forward control to the webtalk main menu
332
if (errors.isEmpty() == false)
333                 {
334                     saveErrors(request, errors);
335                 }
336                 saveMessages(request, messages);
337                 return mapping.findForward("webtalk_main_menu");
338             }
339         }
340         
341         if (errors.isEmpty() == false)
342         {
343             saveErrors(request, errors);
344         }
345         
346         // add related tasks to the navigation bar
347
WebTalkRelatedTasks menu = new WebTalkRelatedTasks();
348         menu.addLink(new LinkAttribute("Search users", "display_user_search"));
349         menu.addLink(new LinkAttribute("Administer users", "display_user_management"));
350         menu.addLink(new LinkAttribute("List all groups", "list_groups"));
351         menu.addLink(new LinkAttribute("Administer groups", "display_group_management"));
352         menu.addLink(new LinkAttribute("List all features", "list_features"));
353         request.setAttribute("menu", menu);
354         
355         return mapping.getInputForward();
356     }
357     
358     
359 }
360
Popular Tags