KickJava   Java API By Example, From Geeks To Geeks.

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


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 EditLanguageFormAction extends ITrackerAction {
45
46     public EditLanguageFormAction() {
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
69             DynaValidatorForm languageForm = (DynaValidatorForm) form;
70             if(languageForm == null) {
71                 languageForm = new DynaValidatorForm();
72             }
73
74             String JavaDoc locale = (String JavaDoc) PropertyUtils.getSimpleProperty(form, "locale");
75             int localeType = SystemConfigurationUtilities.getLocaleType(locale);
76             if(localeType == SystemConfigurationUtilities.LOCALE_TYPE_INVALID) {
77                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidlocale"));
78             } else {
79                 if("create".equals((String JavaDoc) PropertyUtils.getSimpleProperty(form, "action"))) {
80                     // The locale passed in on a create action is actually the parent locale. Reset the parent
81
// locale, increment the type (since we are creating the next type, and clear the locale
82
localeType++;
83                     languageForm.set("parentLocale", locale);
84                     if(localeType == SystemConfigurationUtilities.LOCALE_TYPE_LOCALE) {
85                         languageForm.set("locale", locale + "_");
86                     } else {
87                         languageForm.set("locale", "");
88                     }
89                 }
90
91                 String JavaDoc[] sortedKeys = sc.getSortedKeys();
92                 // Fix for bug in beanutils. Can remove this logic here and in EditLanguageAction
93
// once the bug is fixed.
94
for(int i = 0; i < sortedKeys.length; i++) {
95                     sortedKeys[i] = sortedKeys[i].replace('.', '/');
96                 }
97
98                 HashMap baseItems = new HashMap();
99                 HashMap langItems = new HashMap();
100                 HashMap locItems = new HashMap();
101                 HashMap items = new HashMap();
102                 Logger.logDebug("Loading language elements for edit. Edit type is " + localeType);
103                 if(localeType >= SystemConfigurationUtilities.LOCALE_TYPE_BASE) {
104                     baseItems = sc.getDefinedKeys(null);
105                     items = baseItems;
106                     Logger.logDebug("Base Locale has " + baseItems.size() + " keys defined.");
107                 }
108                 if(localeType >= SystemConfigurationUtilities.LOCALE_TYPE_LANGUAGE) {
109                     if(! locale.equalsIgnoreCase(ITrackerResources.BASE_LOCALE)) {
110                         String JavaDoc parentLocale = SystemConfigurationUtilities.getLocalePart(locale, SystemConfigurationUtilities.LOCALE_TYPE_LANGUAGE);
111                         langItems = sc.getDefinedKeys(parentLocale);
112                         items = langItems;
113                         Logger.logDebug("Language " + parentLocale + " has " + langItems.size() + " keys defined.");
114                     }
115                 }
116                 if(localeType == SystemConfigurationUtilities.LOCALE_TYPE_LOCALE) {
117                     locItems = sc.getDefinedKeys(locale);
118                     items = locItems;
119                     Logger.logDebug("Locale " + locale + " has " + locItems.size() + " keys defined.");
120                 }
121                 if(! "create".equals((String JavaDoc) PropertyUtils.getSimpleProperty(form, "action"))) {
122                     // Fix for bug in beanutils. Can remove this logic here and in EditLanguageAction
123
// once the bug is fixed.
124
// languageForm.set("items", items);
125
HashMap formItems = new HashMap();
126                     for(Iterator iter = items.keySet().iterator(); iter.hasNext(); ) {
127                         String JavaDoc key = (String JavaDoc) iter.next();
128                         formItems.put(key.replace('.', '/'), (String JavaDoc) items.get(key));
129                     }
130                     languageForm.set("items", formItems);
131                 }
132
133                 session.setAttribute(Constants.EDIT_LANGUAGE_KEYS_KEY, sortedKeys);
134                 session.setAttribute(Constants.EDIT_LANGUAGE_BASE_KEY, baseItems);
135                 session.setAttribute(Constants.EDIT_LANGUAGE_LANG_KEY, langItems);
136                 session.setAttribute(Constants.EDIT_LANGUAGE_LOC_KEY, locItems);
137                 session.setAttribute(Constants.EDIT_LANGUAGE_TYPE_KEY, new Integer JavaDoc(localeType));
138                 request.setAttribute("languageForm", languageForm);
139                 Logger.logDebug("Locale = " + languageForm.get("locale"));
140                 saveToken(request);
141                 return mapping.getInputForward();
142             }
143         } catch(Exception JavaDoc e) {
144             Logger.logError("Exception while creating edit language form.", e);
145             errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system"));
146         }
147
148         if(! errors.isEmpty()) {
149             saveErrors(request, errors);
150         }
151
152         return mapping.findForward("error");
153     }
154
155 }
156   
Popular Tags