1 41 package com.mvnforum.auth; 42 43 import java.sql.Timestamp ; 44 import java.util.Locale ; 45 46 import javax.servlet.http.HttpServletRequest ; 47 48 import com.mvnforum.MVNForumResourceBundle; 49 import net.myvietnam.mvncore.util.DateUtil; 50 import net.myvietnam.mvncore.util.StringUtil; 51 import net.myvietnam.mvncore.web.GenericRequest; 52 53 public class OnlineUserAction { 54 55 private String url; 56 private Action action; 58 private Timestamp firstRequestTime; 59 private Timestamp lastRequestTime; 60 private String remoteAddr; 61 private String userAgent; 62 63 private int memberID; 66 private String memberName; 67 private boolean invisible = false; 68 69 private int sessionCount = 1; 70 73 OnlineUserAction() { 74 78 firstRequestTime = DateUtil.getCurrentGMTTimestamp(); 79 lastRequestTime = DateUtil.getCurrentGMTTimestamp(); 80 } 81 82 85 86 public String getDesc(HttpServletRequest request) { 87 if (action == null) { 88 return "cannot get description (action is null)"; 90 } 91 return action.getLocalizedDesc(request); 92 } 93 94 public String getUrl() { 95 return url; 96 } 97 98 public int getMemberID() { 99 return memberID; 100 } 101 102 public String getMemberName() { 103 return memberName; 104 } 105 106 public boolean isInvisibleMember() { 107 return invisible; 108 } 109 110 public Timestamp getFirstRequestTime() { 111 return firstRequestTime; 112 } 113 114 public Timestamp getLastRequestTime() { 115 return lastRequestTime; 116 } 117 118 public int getSessionCount() { 119 return sessionCount; 120 } 121 122 public void setSessionCount(int count) { 123 sessionCount = count; 124 } 125 126 public void increaseSessionCount(int delta) { 127 sessionCount += delta; 128 } 129 130 public void resetSessionCount() { 131 sessionCount = 1; 132 } 133 134 public String getOnlineDurarionDesc(Timestamp currentTime, Locale locale) { 136 int duration = (int) (currentTime.getTime() - firstRequestTime.getTime()); 137 return getTimeString(duration, locale); 138 } 139 140 public String getDurationSinceLastRequestDesc(Timestamp currentTime, Locale locale) { 141 int duration = (int) (currentTime.getTime() - lastRequestTime.getTime()); 142 return getTimeString(duration, locale); 143 } 144 145 private String getTimeString(int duration, Locale locale) { 146 long hours = duration / DateUtil.HOUR; 147 long remain = duration - (hours * DateUtil.HOUR); 148 long minutes = remain / DateUtil.MINUTE; 149 StringBuffer time = new StringBuffer (64); 150 151 if (hours > 0) { time.append(hours).append(" "); 153 if (hours == 1) { 154 time.append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.1_hour")); 155 } else { 156 time.append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.X_hour")); 157 } 158 } 159 160 if (minutes > 0) { if (hours > 0) { 162 time.append(" ").append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.hhmm_and")).append(" "); 163 } 164 time.append(minutes).append(" "); 165 if (minutes == 1) { 166 time.append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.1_minute")); 167 } else { 168 time.append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.X_minutes")); 169 } 170 } else { if (hours == 0) { 173 time.append("0 ").append(MVNForumResourceBundle.getString(locale, "mvnforum.common.date.1_minute")); 174 } 175 } 176 177 return time.toString(); 178 } 179 180 public String getRemoteAddr() { 181 return remoteAddr; 182 } 183 184 public String getUserAgent() { 185 return userAgent; 186 } 187 188 189 192 protected void initRemoteAddr_UserAgent(HttpServletRequest request) { 193 setUserAgent(request.getHeader("User-Agent")); 194 setRemoteAddr(request.getRemoteAddr()); 195 } 196 197 protected void initRemoteAddr_UserAgent(GenericRequest request) { 198 if (request.isServletRequest()) { 199 setUserAgent(request.getServletRequest().getHeader("User-Agent")); 200 setRemoteAddr(request.getServletRequest().getRemoteAddr()); 201 } else { 202 setRemoteAddr(request.getRemoteAddr()); 205 } 206 } 207 208 void setAction(Action action) { 209 this.url = action.getUrl(); 211 this.action = action; 212 } 213 214 215 void updateLastRequestTime() { 216 DateUtil.updateCurrentGMTTimestamp(lastRequestTime); 217 } 218 219 void setMemberID(int memberID) { 220 this.memberID = memberID; 221 } 222 223 void setMemberName(String memberName) { 224 this.memberName = memberName; 225 } 226 227 void setMemberInvisible(boolean invisible) { 228 this.invisible = invisible; 229 } 230 231 public void setRemoteAddr(String remoteAddr) { 232 this.remoteAddr = remoteAddr; 233 } 234 235 public void setUserAgent(String userAgent) { 236 this.userAgent = StringUtil.getEmptyStringIfNull(userAgent); 237 } 238 } 239 | Popular Tags |