1 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 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 locale = (String ) 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 ) PropertyUtils.getSimpleProperty(form, "action"))) { 80 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 [] sortedKeys = sc.getSortedKeys(); 92 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 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 ) PropertyUtils.getSimpleProperty(form, "action"))) { 122 HashMap formItems = new HashMap(); 126 for(Iterator iter = items.keySet().iterator(); iter.hasNext(); ) { 127 String key = (String ) iter.next(); 128 formItems.put(key.replace('.', '/'), (String ) 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 (localeType)); 138 request.setAttribute("languageForm", languageForm); 139 Logger.logDebug("Locale = " + languageForm.get("locale")); 140 saveToken(request); 141 return mapping.getInputForward(); 142 } 143 } catch(Exception 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 |