00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 package org.openmobileis.common.context;
00030
00031 import java.util.StringTokenizer;
00032
00033 import javax.servlet.http.HttpServletRequest;
00034
00049 public class UserTerminal {
00050
00051 public static final int SYNCHRO_TYPE_INDIRECT = 0;
00052 public static final int SYNCHRO_TYPE_DIRECT = 1;
00053
00054 private boolean plugIns;
00055 private String clientOS;
00056 private String clientOSVersion;
00057 private String clientPlugInsVersion;
00058 private int synchroType;
00059 private String language;
00060 private String useragent;
00061 private String clientPlugInName;
00062
00063 public static String getUserAgentFromRequest(HttpServletRequest request) {
00064 String ua = (String) request.getHeader("User-Agent");
00065 if (ua == null) {
00066 ua = (String) request.getHeader("user-agent");
00067 }
00068 return ua;
00069 }
00070
00071
00072 public UserTerminal(String browserUserAgent) throws Exception {
00073
00074
00075 this.useragent = browserUserAgent;
00076
00077 if (browserUserAgent.indexOf("OpenMSPPlug")!= -1) {
00078 plugIns = true;
00079 clientPlugInName = "OpenMSPPlug";
00080 }
00081 if (plugIns) {
00082
00083 StringTokenizer strToken = new StringTokenizer(browserUserAgent, "-");
00084
00085 String token = null;
00086 if (strToken.hasMoreTokens()) {
00087 token = strToken.nextToken();
00088 }
00089 if (strToken.hasMoreTokens()) {
00090 token = strToken.nextToken();
00091 this.clientPlugInsVersion=token;
00092 }
00093 if (strToken.hasMoreTokens()) {
00094 token = strToken.nextToken();
00095 int index = token.indexOf('[');
00096 this.clientOS = token.substring(0, index);
00097 this.clientOSVersion = token.substring(index+1, token.length()-1);
00098 }
00099 if (strToken.hasMoreTokens()) {
00100 token = strToken.nextToken();
00101 this.language=token;
00102 }
00103
00104 if (strToken.hasMoreTokens()) {
00105 token = strToken.nextToken();
00106 if (token.equals("PC")) {
00107 synchroType = UserTerminal.SYNCHRO_TYPE_INDIRECT;
00108 } else {
00109 synchroType = UserTerminal.SYNCHRO_TYPE_DIRECT;
00110 }
00111 }
00112 }
00113 }
00114
00118 public String getClientPlateformType() {
00119 return this.clientOS;
00120 }
00121
00125 public int getSynchroType() {
00126 return this.synchroType;
00127 }
00128
00132 public boolean isOPenMISClient() {
00133 return plugIns;
00134 }
00135
00136 public String getClientLanguage() {
00137 return this.language;
00138 }
00139
00143 public String getClientPlugInsVersion() {
00144 return clientPlugInsVersion;
00145 }
00146
00150 public String getUserAgent() {
00151 return this.useragent;
00152 }
00153
00154 public String getClientOS() {
00155 return this.clientOS;
00156 }
00157
00158 public boolean equals(Object o) {
00159 if (o instanceof UserTerminal) {
00160 return (((UserTerminal)o).getUserAgent().equals(useragent));
00161 }
00162 return false;
00163 }
00164
00165 public int hashCode() {
00166 return useragent.hashCode();
00167 }
00168
00169
00170 public String getClientOSVersion() {
00171 return clientOSVersion;
00172 }
00173
00174
00175 public String getClientPlugInName() {
00176 return clientPlugInName;
00177 }
00178
00179
00180 }