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 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 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 action = (String ) PropertyUtils.getSimpleProperty(customFieldForm, "action"); 77 if("update".equals(action)) { 78 Integer id = (Integer ) 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 (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 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 |