KickJava   Java API By Example, From Geeks To Geeks.

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


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.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 JavaDoc 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 JavaDoc valueId = (Integer JavaDoc) 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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