1 | package gov.va.med.edp.web.controller;
|
---|
2 |
|
---|
3 | import gov.va.med.authentication.kernel.LoginUserInfoVO;
|
---|
4 | import gov.va.med.edp.dao.ServerPackageVersionDao;
|
---|
5 | import gov.va.med.edp.dao.TrackingDao;
|
---|
6 | import gov.va.med.edp.vo.BigBoardDebugInfoVO;
|
---|
7 | import gov.va.med.edp.web.view.XmlView;
|
---|
8 | import org.springframework.beans.factory.InitializingBean;
|
---|
9 | import org.springframework.util.Assert;
|
---|
10 | import org.springframework.util.StringUtils;
|
---|
11 | import org.springframework.web.servlet.ModelAndView;
|
---|
12 | import org.springframework.web.servlet.mvc.AbstractController;
|
---|
13 | import org.springframework.web.servlet.support.WebContentGenerator;
|
---|
14 |
|
---|
15 | import javax.servlet.http.HttpServletRequest;
|
---|
16 | import javax.servlet.http.HttpServletResponse;
|
---|
17 | import java.util.Map;
|
---|
18 | import java.util.HashMap;
|
---|
19 | import java.util.Enumeration;
|
---|
20 | import java.util.Set;
|
---|
21 |
|
---|
22 | public 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 | }
|
---|