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.util.*; 33 34 import cowsultants.itracker.ejb.client.exceptions.*; 35 import cowsultants.itracker.ejb.client.interfaces.*; 36 import cowsultants.itracker.ejb.client.models.*; 37 import cowsultants.itracker.ejb.client.resources.*; 38 import cowsultants.itracker.ejb.client.util.*; 39 import cowsultants.itracker.web.scheduler.*; 40 import cowsultants.itracker.web.util.*; 41 42 43 public class RemoveCustomFieldAction extends ITrackerAction { 44 45 public RemoveCustomFieldAction() { 46 } 47 48 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 49 ActionErrors errors = new ActionErrors(); 50 51 if(! isLoggedIn(request, response)) { 52 return mapping.findForward("login"); 53 } 54 55 if(! hasPermission(UserUtilities.PERMISSION_USER_ADMIN, request, response)) { 56 return mapping.findForward("unauthorized"); 57 } 58 59 try { 60 InitialContext ic = new InitialContext(); 61 62 Object scRef = ic.lookup("java:comp/env/" + SystemConfiguration.JNDI_NAME); 63 SystemConfigurationHome scHome = (SystemConfigurationHome) PortableRemoteObject.narrow(scRef, SystemConfigurationHome.class); 64 SystemConfiguration sc = scHome.create(); 65 66 Integer valueId = (Integer ) PropertyUtils.getSimpleProperty(form, "id"); 67 if(valueId == null || valueId.intValue() <= 0) { 68 throw new SystemConfigurationException("Invalid custom field id."); 69 } 70 71 CustomFieldModel customField = sc.getCustomField(valueId); 72 if(customField == null) { 73 throw new SystemConfigurationException("Invalid custom field id."); 74 } 75 76 if(customField.getFieldType() == CustomFieldUtilities.TYPE_LIST) { 77 CustomFieldValueModel[] options = customField.getOptions(); 78 for(int i = 0; i < options.length; i++) { 79 String key = CustomFieldUtilities.getCustomFieldOptionLabelKey(customField.getId(), options[i].getId()); 80 sc.removeCustomFieldValue(options[i].getId()); 81 if(key != null) { 82 sc.removeLanguageKey(key); 83 ITrackerResources.clearKeyFromBundles(key, false); 84 } 85 } 86 } 87 String key = CustomFieldUtilities.getCustomFieldLabelKey(customField.getId()); 88 sc.removeCustomField(customField.getId()); 89 if(key != null) { 90 sc.removeLanguageKey(key); 91 ITrackerResources.clearKeyFromBundles(key, false); 92 } 93 94 sc.resetConfigurationCache(SystemConfigurationUtilities.TYPE_CUSTOMFIELD); 95 96 return mapping.findForward("listconfiguration"); 97 } catch(SystemConfigurationException sce) { 98 Logger.logDebug(sce.getMessage(), sce); 99 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidcustomfield")); 100 } catch(NumberFormatException nfe) { 101 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.invalidcustomfield")); 102 Logger.logDebug("Invalid custom field id " + request.getParameter("id") + " specified."); 103 } catch(Exception e) { 104 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("itracker.web.error.system")); 105 Logger.logError("System Error.", e); 106 } 107 if(! errors.isEmpty()) { 108 saveErrors(request, errors); 109 } 110 return mapping.findForward("error"); 111 } 112 113 } 114 | Popular Tags |