litesoft
@ 922
litesoft / trunk / DeviceDesktopTest / src / org / litesoft / ddt / IndexHtmlGenerator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
package org.litesoft.ddt; import org.litesoft.useragent.UserAgentFormFactorDeterminer; import org.litesoft.useragent.UserAgentFormFactorDeterminerImpl; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class IndexHtmlGenerator { public static final String FRONT_TO_TITLE = "<!DOCTYPE html><html lang='en' height='100%'>\n<head>\n<meta charset='UTF-8'/>\n<title>"; public static final String TITLE_TO_HEADER_SEP = "</title>\n<script type='text/javascript' src='CookieSupport.js'></script>\n</head>\n<body height='100%'>\n<h1>--- "; public static final String HEADER_TO_JS_SEP = " ---</h1>\n<div id='insertHere' height='100%'></div>\n<script type='text/javascript' src='"; public static final String JS_TO_END = ".js'></script>\n</body>\n</html>"; private static final UserAgentFormFactorDeterminer UAFFD = new UserAgentFormFactorDeterminerImpl(); public void respond(String pPath, HttpServletRequest pRequest, HttpServletResponse pResponse) throws ServletException, IOException { pResponse.setHeader("Cache-Control", "no-cache no-store must-revalidate"); pResponse.setHeader("Pragma", "no-cache"); // HTTP/1.0 pResponse.setDateHeader("Expires", 86400000); // January 2, 1970 String zDeviceToken = getCookie(pRequest, "DeviceToken"); if (zDeviceToken != null) { reply(pResponse, "LimitedMode"); return; } String zUserAuthToken = getCookie(pRequest, "UserAuthToken"); if (zUserAuthToken != null) { reply(pResponse, "FullMode"); int zShutDown = hasCookie(pRequest, "Restart", "ShutDown"); if (zShutDown > -1) { Shutdown.Instance.get().request(zShutDown); } return; } String zUserAgent = pRequest.getHeader("user-agent"); System.out.println("User Agent: " + zUserAgent); reply(pResponse, "Login" + UAFFD.determine(zUserAgent)); } private void reply(HttpServletResponse pResponse, String pWhat) throws IOException { pResponse.setContentType("text/html"); pResponse.getWriter().println(FRONT_TO_TITLE + pWhat + TITLE_TO_HEADER_SEP + pWhat + HEADER_TO_JS_SEP + pWhat + JS_TO_END); } private static int hasCookie(HttpServletRequest pRequest, String... pCookieNames) { if (pCookieNames != null) { for (int i = 0; i < pCookieNames.length; i++) { if (null != getCookie(pRequest, pCookieNames[i])) { return i; } } } return -1; } private static String getCookie(HttpServletRequest pRequest, String pName) { Cookie[] zCookies = pRequest.getCookies(); if (zCookies != null) { for (Cookie zCookie : zCookies) { if (zCookie.getName().equals(pName)) { return zCookie.getValue(); } } } return null; } } |