KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > cowsultants > itracker > web > actions > EditCustomFieldFormAction


1 /*
2  * This software was designed and created by Jason Carroll.
3  * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4  * The author can be reached at jcarroll@cowsultants.com
5  * ITracker website: http://www.cowsultants.com
6  * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it only under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  */

18
19 package cowsultants.itracker.web.actions;
20
21 import java.io.*;
22 import java.rmi.*;
23 import java.util.*;
24 import javax.ejb.*;
25 import javax.rmi.*;
26 import javax.naming.*;
27 import javax.servlet.*;
28 import javax.servlet.http.*;
29
30 import org.apache.commons.beanutils.*;
31 import org.apache.struts.action.*;
32 import org.apache.struts.upload.*;
33 import org.apache.struts.util.*;
34 import org.apache.struts.validator.*;
35
36 import cowsultants.itracker.ejb.client.exceptions.*;
37 import cowsultants.itracker.ejb.client.interfaces.*;
38 import cowsultants.itracker.ejb.client.models.*;
39 import cowsultants.itracker.ejb.client.resources.*;
40 import cowsultants.itracker.ejb.client.util.*;
41 import cowsultants.itracker.web.util.*;
42
43
44 public class EditCustomFieldFormAction extends ITrackerAction {
45
46     public EditCustomFieldFormAction() {
47     }
48
49     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
50         ActionErrors errors = new ActionErrors();
51
52         if(! isLoggedIn(request, response)) {
53             return mapping.findForward("login");
54         }
55
56         if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) {
57             return mapping.findForward("unauthorized");
58         }
59
60         try {
61             InitialContext ic = new InitialContext();
62
63             Object JavaDoc scRef = ic.lookup("java:comp/env/" + SystemConfiguration.JNDI_NAME);
64             SystemConfigurationHome scHome = (SystemConfigurationHome) PortableRemoteObject.narrow(scRef, SystemConfigurationHome.class);
65             SystemConfiguration sc = scHome.create();
66
67             HttpSession session = request.getSession(true);
68             Locale currLocale = (Locale) session.getAttribute(Constants.LOCALE_KEY);
69
70             DynaValidatorForm customFieldForm = (DynaValidatorForm) form;
71             if(customFieldForm == null) {
72                 customFieldForm = new DynaValidatorForm();
73             }
74
75             CustomFieldModel customField = new CustomFieldModel();
76             String JavaDoc action = (String JavaDoc) PropertyUtils.getSimpleProperty(customFieldForm, "action");
77             if("update".equals(action)) {
78                 Integer JavaDoc id = (Integer JavaDoc) PropertyUtils.getSimpleProperty(customFieldForm, "id");
79                 customField = sc.getCustomField(id);
80                 if(customField == null) {
81                     throw new SystemConfigurationException("Invalid custom field id " + id);
82                 }
83                 customFieldForm.set("id", id);
84                 customFieldForm.set("fieldType", new Integer JavaDoc(customField.getFieldType()));
85                 customFieldForm.set("required", (customField.isRequired() ? "true" : "false"));
86                 customFieldForm.set("dateFormat", customField.getDateFormat());
87                 customFieldForm.set("sortOptionsByName", (customField.getSortOptionsByName() ? "true" : "false"));
88
89                 HashMap translations = new HashMap();
90                 LanguageModel[] languageItems = sc.getLanguageItemsByKey(CustomFieldUtilities.getCustomFieldLabelKey(customField.getId()));
91                 for(int i = 0; i < languageItems.length; i++) {
92                     translations.put(languageItems[i].getLocale(), languageItems[i].getResourceValue());
93                 }
94                 customFieldForm.set("translations", translations);
95
96                 customField.setLabels(currLocale);
97             }
98
99             request.setAttribute("customFieldForm", customFieldForm);
100             session.setAttribute(Constants.CUSTOMFIELD_KEY, customField);
101             saveToken(request);
102             return mapping.getInputForward();
103         } catch(SystemConfigurationException sce) {
104             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidcustomfield"));
105         } catch(Exception JavaDoc e) {
106             Logger.logError("Exception while creating edit custom field form.", e);
107             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system"));
108         }
109         if(! errors.isEmpty()) {
110             saveErrors(request, errors);
111         }
112
113         return mapping.findForward("error");
114     }
115
116 }
117   
Popular Tags