source: EDIS/trunk/java/tracking-server-core/src/main/java/gov/va/med/edp/web/controller/TrackingController.java@ 1227

Last change on this file since 1227 was 1227, checked in by George Lilly, 13 years ago

initial load of EDIS 1.0

File size: 4.2 KB
Line 
1package gov.va.med.edp.web.controller;
2
3import gov.va.med.authentication.kernel.LoginUserInfoVO;
4import gov.va.med.edp.dao.ServerPackageVersionDao;
5import gov.va.med.edp.dao.TrackingDao;
6import gov.va.med.edp.vo.BigBoardDebugInfoVO;
7import gov.va.med.edp.web.view.XmlView;
8import org.springframework.beans.factory.InitializingBean;
9import org.springframework.util.Assert;
10import org.springframework.util.StringUtils;
11import org.springframework.web.servlet.ModelAndView;
12import org.springframework.web.servlet.mvc.AbstractController;
13import org.springframework.web.servlet.support.WebContentGenerator;
14
15import javax.servlet.http.HttpServletRequest;
16import javax.servlet.http.HttpServletResponse;
17import java.util.Map;
18import java.util.HashMap;
19import java.util.Enumeration;
20import java.util.Set;
21
22public class TrackingController extends AbstractController implements InitializingBean {
23
24 private TrackingDao trackingDao;
25 private ServerPackageVersionDao serverPackageVersionDao;
26 protected static final String XML_VIEW = "xmlView";
27
28 public TrackingController() {
29 setRequireSession(true);
30 setSupportedMethods(new String[]{WebContentGenerator.METHOD_POST});
31 }
32
33 public void afterPropertiesSet() throws Exception {
34 Assert.notNull(trackingDao, "trackingDao is required");
35 }
36
37 protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
38 validateSwfID(request);
39 LoginUserInfoVO userInfo = getUserInfo(request);
40 String result = trackingDao.executeCommand(userInfo.getLoginStationNumber(), userInfo.getUserDuz(), buildParameterMap(request));
41 if (isInitDisplayBoardCommand(request))
42 result = appendSiteAndVistaLinkConnectionInfo(result, request);
43 return createModelAndView(result);
44 }
45
46 private void validateSwfID(HttpServletRequest request) throws UnrecognizedClientException {
47 String swfID = request.getParameter("swfID");
48 if (!StringUtils.hasLength(swfID)) return;
49
50 String ids = (String) request.getSession().getAttribute(SessionConstants.RECOGNIZED_SWF_IDS_KEY);
51 Set idSet = StringUtils.commaDelimitedListToSet(ids);
52 if (idSet.isEmpty()) throw new UnrecognizedClientException(UnrecognizedClientException.UNRECOGNIZED_CLIENT_MESSAGE, swfID);
53 if (!idSet.contains(swfID)) throw new UnrecognizedClientException(UnrecognizedClientException.UNRECOGNIZED_CLIENT_MESSAGE, swfID);
54 }
55
56 public void setTrackingDao(TrackingDao trackingDao) {
57 this.trackingDao = trackingDao;
58 }
59
60 public void setServerPackageVersionDao(ServerPackageVersionDao serverPackageVersionDao) {
61 this.serverPackageVersionDao = serverPackageVersionDao;
62 }
63
64 protected LoginUserInfoVO getUserInfo(HttpServletRequest request) throws NoUserInfoInSessionException {
65 LoginUserInfoVO userInfo = (LoginUserInfoVO) request.getSession().getAttribute(LoginUserInfoVO.SESSION_KEY);
66 if (userInfo == null) throw new NoUserInfoInSessionException();
67 return userInfo;
68 }
69
70 protected ModelAndView createModelAndView(String result) {
71 return new ModelAndView(XML_VIEW, XmlView.XML_FRAGMENT, result);
72 }
73
74 private boolean isInitDisplayBoardCommand(HttpServletRequest request) {
75 if (request.getParameter("command").equals("initDisplayBoard")) return true;
76 return false;
77 }
78
79 private String appendSiteAndVistaLinkConnectionInfo(String result,HttpServletRequest request) throws Exception{
80 String stnNumber = getUserInfo(request).getLoginStationNumber();
81 BigBoardDebugInfoVO vistalinkInfo = serverPackageVersionDao.getVistaLinkConnectionInfo(stnNumber);
82 vistalinkInfo.setSiteId(stnNumber);
83 result = result.concat(vistalinkInfo.toString());
84 return result;
85 }
86
87 protected Map buildParameterMap(HttpServletRequest request) {
88 Map params = new HashMap();
89 Enumeration e = request.getParameterNames();
90 while (e.hasMoreElements()) {
91 String paramName = (String) e.nextElement();
92 params.put(paramName, request.getParameter(paramName));
93 }
94 return params;
95 }
96}
Note: See TracBrowser for help on using the repository browser.