1 16 17 package info.jtrac.web; 18 19 import info.jtrac.domain.Config; 20 import info.jtrac.domain.ItemSearch; 21 import info.jtrac.domain.User; 22 import info.jtrac.domain.UserSpaceRole; 23 import info.jtrac.util.AttachmentUtils; 24 import info.jtrac.util.ExcelUtils; 25 import info.jtrac.util.SecurityUtils; 26 import info.jtrac.util.SvnUtils; 27 import info.jtrac.util.UserUtils; 28 29 import java.io.OutputStream ; 30 import java.util.HashMap ; 31 import java.util.Locale ; 32 import java.util.Map ; 33 import javax.servlet.ServletOutputStream ; 34 35 import javax.servlet.http.Cookie ; 36 import javax.servlet.http.HttpServletRequest ; 37 import javax.servlet.http.HttpServletResponse ; 38 39 import org.acegisecurity.AuthenticationException; 40 import org.acegisecurity.ui.AbstractProcessingFilter; 41 import org.acegisecurity.ui.AuthenticationEntryPoint; 42 import org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint; 43 import org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices; 44 import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter; 45 import org.jfree.chart.ChartFactory; 46 import org.jfree.chart.ChartUtilities; 47 import org.jfree.chart.JFreeChart; 48 import org.jfree.chart.plot.PlotOrientation; 49 import org.jfree.data.category.DefaultCategoryDataset; 50 import org.springframework.context.MessageSource; 51 import org.springframework.web.servlet.ModelAndView; 52 import org.springframework.web.servlet.support.RequestContextUtils; 53 import org.springframework.web.util.WebUtils; 54 import org.springframework.webflow.execution.FlowExecution; 55 56 public class DefaultMultiActionController extends AbstractMultiActionController { 57 58 private AuthenticationEntryPoint authenticationEntryPoint; 59 60 public void setAuthenticationEntryPoint(AuthenticationEntryPoint authenticationEntryPoint) { 61 this.authenticationEntryPoint = authenticationEntryPoint; 62 } 63 64 public ModelAndView loginHandler(HttpServletRequest request, HttpServletResponse response) throws Exception { 65 if (authenticationEntryPoint instanceof CasProcessingFilterEntryPoint) { 66 logger.info("CAS mode detected, attempting CasProcessingFilterEntryPoint"); 67 authenticationEntryPoint.commence(request, response, null); 68 return null; 69 } 70 ModelAndView mav = new ModelAndView("login"); 71 if (request.getParameter("error") != null) { 72 AuthenticationException ae = (AuthenticationException) WebUtils.getSessionAttribute(request, AbstractProcessingFilter.ACEGI_SECURITY_LAST_EXCEPTION_KEY); 73 mav.addObject("message", ae.getMessage()); 74 } 75 String loginName = (String ) WebUtils.getSessionAttribute(request, AuthenticationProcessingFilter.ACEGI_SECURITY_LAST_USERNAME_KEY); 76 mav.addObject("loginName", loginName); 77 UserUtils.refreshLocale(request, response, jtrac.getDefaultLocale()); 78 return mav; 79 } 80 81 public ModelAndView logoutHandler(HttpServletRequest request, HttpServletResponse response) { 82 Cookie terminate = new Cookie (TokenBasedRememberMeServices.ACEGI_SECURITY_HASHED_REMEMBER_ME_COOKIE_KEY, null); 85 terminate.setMaxAge(0); 86 terminate.setPath(request.getContextPath()); 87 response.addCookie(terminate); 88 return new ModelAndView("logout"); 89 } 90 91 public ModelAndView dashboardHandler(HttpServletRequest request, HttpServletResponse response) { 92 User user = SecurityUtils.getPrincipal(); 93 ModelAndView mav = new ModelAndView("dashboard"); 94 mav.addObject("countsHolder", jtrac.loadCountsForUser(user)); 95 mav.addObject("principal", user); 96 if (user.getSpacesWhereAbleToCreateNewItem() == null && user.getId() > 0) { 101 Map <Long , Boolean > map = new HashMap <Long , Boolean >(); 102 for(UserSpaceRole usr : jtrac.loadUser(user.getId()).getSpaceRoles()) { 103 if (usr.isAbleToCreateNewItem()) { 104 map.put(usr.getSpace().getId(), true); 105 } 106 } 107 user.setSpacesWhereAbleToCreateNewItem(map); 108 } 109 applyCacheSeconds(response, 0, true); 110 return mav; 111 } 112 113 public ModelAndView optionsHandler(HttpServletRequest request, HttpServletResponse response) { 114 return new ModelAndView("options"); 115 } 116 117 public ModelAndView svnFormHandler(HttpServletRequest request, HttpServletResponse response) { 118 return new ModelAndView("svn_form"); 119 } 120 121 public ModelAndView reindexHandler(HttpServletRequest request, HttpServletResponse response) { 122 jtrac.rebuildIndexes(); 123 return new ModelAndView("index_rebuild_success"); 124 } 125 126 public ModelAndView svnViewHandler(HttpServletRequest request, HttpServletResponse response) { 127 String url = request.getParameter("url"); 128 String username = request.getParameter("username"); 129 String password = request.getParameter("password"); 130 Map <String , Integer > commitsPerCommitter = SvnUtils.getCommitsPerCommitter(SvnUtils.getRepository(url, username, password)); 131 request.getSession().setAttribute("commitsPerCommitter", commitsPerCommitter); 132 return new ModelAndView("svn_view"); 133 } 134 135 public ModelAndView attachmentViewHandler(HttpServletRequest request, HttpServletResponse response) throws Exception { 136 AttachmentUtils.download(getServletContext(), request, response); 137 return null; 138 } 139 140 public ModelAndView svnCommitsPerCommitterChartHandler(HttpServletRequest request, 141 HttpServletResponse response) throws Exception { 142 Map <String , Integer > commitsPerCommitter = (Map <String , Integer >) request.getSession().getAttribute("commitsPerCommitter"); 143 request.getSession().setAttribute("commitsPerCommitter", null); 144 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 145 for (Map.Entry <String , Integer > entry : commitsPerCommitter.entrySet()) { 146 dataset.addValue(entry.getValue(), "Commits", entry.getKey()); 147 } 148 JFreeChart chart = ChartFactory.createBarChart(null, null, null, dataset, PlotOrientation.VERTICAL, false, false, false); 149 response.setContentType("image/jpeg"); 150 OutputStream out = response.getOutputStream(); 151 ChartUtilities.writeChartAsJPEG(out, chart, 600, 300); 152 out.close(); 153 return null; 154 } 155 156 public ModelAndView userListHandler(HttpServletRequest request, HttpServletResponse response) { 157 return new ModelAndView("user_list", "users", jtrac.findAllUsers()); 158 } 159 160 public ModelAndView spaceListHandler(HttpServletRequest request, HttpServletResponse response) { 161 return new ModelAndView("space_list", "spaces", jtrac.findAllSpaces()); 162 } 163 164 public ModelAndView configListHandler(HttpServletRequest request, HttpServletResponse response) { 165 Map <String , Object > model = new HashMap <String , Object >(); 166 model.put("configMap", jtrac.loadAllConfig()); 167 model.put("configParams", Config.getParams()); 168 return new ModelAndView("config_list", model); 169 } 170 171 public ModelAndView itemListExcelHandler(HttpServletRequest request, HttpServletResponse response) throws Exception { 172 FlowExecution flow = getFlowExecution(request, response); 173 ItemSearch itemSearch = (ItemSearch) flow.getActiveSession().getScope().get("itemSearch"); 174 int pageSize = itemSearch.getPageSize(); 175 itemSearch.setPageSize(-1); ExcelUtils eu = new ExcelUtils(jtrac.findItems(itemSearch), itemSearch); 177 itemSearch.setPageSize(pageSize); 178 response.setContentType("application/unknow"); 179 response.setHeader("Content-Disposition", "inline;filename=jtrac-export.xls"); 180 ServletOutputStream out = response.getOutputStream(); 181 Locale locale = RequestContextUtils.getLocale(request); 182 MessageSource messageSource = RequestContextUtils.getWebApplicationContext(request); 183 eu.exportToExcel(messageSource, locale).write(out); 184 out.flush(); 185 return null; 186 } 187 188 } 189 | Popular Tags |