View Javadoc

1   package org.itracker.web.actions.admin;
2   
3   import java.util.Date;
4   import java.util.Enumeration;
5   import java.util.Map;
6   import java.util.ResourceBundle;
7   import java.util.Set;
8   
9   import javax.servlet.http.HttpServletRequest;
10  import javax.servlet.http.HttpServletResponse;
11  
12  import org.apache.log4j.Level;
13  import org.apache.log4j.Logger;
14  import org.apache.struts.action.ActionForm;
15  import org.apache.struts.action.ActionForward;
16  import org.apache.struts.action.ActionMapping;
17  import org.itracker.core.resources.ITrackerResources;
18  import org.itracker.model.PermissionType;
19  import org.itracker.services.ConfigurationService;
20  import org.itracker.services.IssueService;
21  import org.itracker.services.ProjectService;
22  import org.itracker.services.ReportService;
23  import org.itracker.services.UserService;
24  import org.itracker.services.util.ReportUtilities;
25  import org.itracker.services.util.SystemConfigurationUtilities;
26  import org.itracker.services.util.UserUtilities;
27  import org.itracker.web.actions.base.ItrackerBaseAction;
28  import org.itracker.web.util.RequestHelper;
29  import org.itracker.web.util.ServletContextUtils;
30  import org.itracker.web.util.SessionManager;
31  
32  public class AdminHomeAction extends ItrackerBaseAction {
33  
34  	private static final Logger log = Logger.getLogger(AdminHomeAction.class);
35  
36  	public ActionForward execute(ActionMapping mapping, ActionForm form,
37  			HttpServletRequest request, HttpServletResponse response)
38  			throws Exception {
39  		final Map<Integer, Set<PermissionType>> permissions = RequestHelper
40  		.getUserPermissions(request.getSession());
41  
42  		
43  		
44  		if (!UserUtilities.hasPermission(permissions,
45  				UserUtilities.PERMISSION_USER_ADMIN)) {
46  
47  			mapping.findForward("listprojectadmin");
48  		}
49  
50  		execSetupJspEnv(request);
51  		
52  		return mapping.findForward("adminhome");
53  	}
54  
55  	
56  	/**
57  	 * This utility has to be called for any page forwarding to the admin-home, before forwarding. Else the page will contain no data.
58  	 * 
59  	 * @param request
60  	 */
61  	public static final void execSetupJspEnv(HttpServletRequest request) {
62  		Date time_millies = new Date(System.currentTimeMillis());
63  		// super.executeAlways(mapping, form, request, response);
64  
65  		IssueService issueService = ServletContextUtils.getItrackerServices()
66  				.getIssueService();
67  //		ProjectService projectService = ServletContextUtils.getItrackerServices()
68  //				.getProjectService();
69  		ReportService reportService = ServletContextUtils.getItrackerServices()
70  				.getReportService();
71  		ConfigurationService configurationService = ServletContextUtils.getItrackerServices()
72  				.getConfigurationService();
73  		UserService userService = ServletContextUtils.getItrackerServices().getUserService();
74  
75  
76  		ProjectService projectService2 = ServletContextUtils
77  				.getItrackerServices().getProjectService();
78  
79  		String exportReport = "type=all&reportOutput=XML&reportId="
80  				+ ReportUtilities.REPORT_EXPORT_XML;
81  
82  		logTimeMillies("execute: looked up services", time_millies, log,
83  				Level.INFO);
84  		Integer numberOfWorkflowScripts = configurationService
85  				.getWorkflowScripts().size();
86  		request
87  				.setAttribute("numberOfWorkflowScripts",
88  						numberOfWorkflowScripts);
89  		logTimeMillies("execute: looked up numberOfWorkflowScripts",
90  				time_millies, log, Level.INFO);
91  
92  		Map<String, String> numberDefinedKeys = configurationService
93  				.getDefinedKeys(null);
94  		
95          ResourceBundle bundle = ITrackerResources.getBundle(ITrackerResources.BASE_LOCALE);
96          Enumeration<String> keysEnum = bundle.getKeys();
97          int i = 0;
98          while (keysEnum.hasMoreElements()) {
99          	keysEnum.nextElement();
100         	i++;
101 		}
102 		
103 		request.setAttribute("numberDefinedKeys", i);
104 		logTimeMillies("execute: looked up numberDefinedKeys", time_millies,
105 				log, Level.INFO);
106 
107 		Integer numberOfStatuses = configurationService
108 				.getConfigurationItemsByType(
109 						SystemConfigurationUtilities.TYPE_STATUS).size();
110 		request.setAttribute("numberOfStatuses", numberOfStatuses);
111 		logTimeMillies("execute: looked up numberOfStatuses", time_millies,
112 				log, Level.INFO);
113 
114 		Integer numberOfSeverities = configurationService
115 				.getConfigurationItemsByType(
116 						SystemConfigurationUtilities.TYPE_SEVERITY).size();
117 		request.setAttribute("numberOfSeverities", numberOfSeverities);
118 		logTimeMillies("execute: looked up numberOfSeverities", time_millies,
119 				log, Level.INFO);
120 
121 		Integer numberOfResolutions = configurationService
122 				.getConfigurationItemsByType(
123 						SystemConfigurationUtilities.TYPE_RESOLUTION).size();
124 		request.setAttribute("numberOfResolutions", numberOfResolutions);
125 		logTimeMillies("execute: looked up numberOfResolutions", time_millies,
126 				log, Level.INFO);
127 
128 		Integer numberOfCustomProjectFields = configurationService
129 				.getCustomFields().size();
130 		request.setAttribute("numberOfCustomProjectFields",
131 				numberOfCustomProjectFields);
132 		logTimeMillies("execute: looked up numberOfCustomProjectFields",
133 				time_millies, log, Level.INFO);
134 
135 		Integer numberofActiveSesssions = SessionManager.getNumActiveSessions();
136 		
137 		Integer numberUsers = userService.getAllUsers().size();
138 		
139 		request
140 				.setAttribute("numberofActiveSesssions",
141 						numberofActiveSesssions);
142 		request
143 		.setAttribute("numberUsers",
144 				numberUsers);
145 		
146 		logTimeMillies("execute: looked up numberofActiveSesssions",
147 				time_millies, log, Level.INFO);
148 
149 		Long allIssueAttachmentsTotalNumber = issueService
150 				.getAllIssueAttachmentCount();
151 		request.setAttribute("allIssueAttachmentsTotalNumber",
152 				allIssueAttachmentsTotalNumber);
153 		logTimeMillies("execute: looked up allIssueAttachmentsTotalNumber",
154 				time_millies, log, Level.INFO);
155 
156 		Integer numberReports = 0;
157 		try {
158 			numberReports = reportService.getNumberReports();
159 		} catch (Exception e) {
160 			log.warn("execSetupJspEnv", e);
161 		}
162 		request.setAttribute("numberReports",
163 				numberReports);
164 		Long numberIssues = issueService.getNumberIssues();
165 		
166 		// TODO: performance issue when attachments size needs to be calculated
167 		// over many issues !
168 		// select sum(size)
169 		// from IssueAttachment
170 		if (allIssueAttachmentsTotalNumber < 500) {
171 			Long allIssueAttachmentsTotalSize = issueService
172 					.getAllIssueAttachmentSize();
173 			request.setAttribute("allIssueAttachmentsTotalSize",
174 					allIssueAttachmentsTotalSize);
175 		} else {
176 			request.setAttribute("allIssueAttachmentsTotalSize", -1l);
177 		}
178 		logTimeMillies("execute: looked up allIssueAttachmentsTotalSize",
179 				time_millies, log, Level.INFO);
180 		// Locale locale = getCurrLocale(request);
181 		// SimpleDateFormat sdf = new
182 		// SimpleDateFormat(ITrackerResources.getString("itracker.dateformat.full"),
183 		// locale);
184 		String lastRun = null;// (Scheduler.getLastRun() == null ? "-" :
185 		// sdf.format(Scheduler.getLastRun()));
186 		
187 		/* set objects needed to render output in request object */
188 		request.setAttribute("projectService", projectService2);
189 		request.setAttribute("exportReport", exportReport);
190 		request.setAttribute("sizeps", projectService2.getAllProjects().size());
191 		request.setAttribute("lastRun", lastRun);
192 		request.setAttribute("numberIssues", numberIssues);
193 		
194 //		request.setAttribute("ih", issueService);
195 //		request.setAttribute("ph", projectService);
196 //		request.setAttribute("rh", reportService);
197 //		request.setAttribute("sc", configurationService);
198 //		request.setAttribute("uh", userService);
199 		
200 		
201 		request.setAttribute("numberAvailableLanguages", configurationService.getNumberAvailableLanguages());
202 		logTimeMillies("execute: put services to request", time_millies, log,
203 				Level.INFO);
204 
205 		String pageTitleKey = "itracker.web.admin.index.title";
206 		String pageTitleArg = "";
207 		request.setAttribute("pageTitleKey", pageTitleKey);
208 		request.setAttribute("pageTitleArg", pageTitleArg);
209 
210 		logTimeMillies("execute: returning", time_millies, log, Level.INFO);
211 	}
212 }