📄 sessionmap.java
字号:
package com.afuer.chat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* This map stores the user sessions.
*/
public class SessionMap {
private static Map sessionMap = new HashMap();
/**
* Each item in the <code>SessionMap</code>.
*/
public static class SessionItem implements Comparable {
private String sessionId;
private String ip;
private Date lastAccessTime;
private String user;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Date getLastAccessTime() {
return lastAccessTime;
}
public void setLastAccessTime(Date lastAccessTime) {
this.lastAccessTime = lastAccessTime;
}
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public int compareTo(Object o) {
if (o == null) {
return -1;
}
if (!(o instanceof SessionItem)) {
return -1;
}
SessionItem item = (SessionItem) o;
if (this.user == null) {
if (item.user == null) {
return this.ip.compareTo(item.ip);
}
else {
return 1;
}
}
else {
if (item.user == null) {
return -1;
}
else {
return this.user.toLowerCase().compareTo(item.user.toLowerCase());
}
}
}
}
public static synchronized void access(String sessionId, String ip) {
SessionItem item = (SessionItem) sessionMap.get(sessionId);
if (item == null) {
item = new SessionItem();
item.sessionId = sessionId;
item.ip = ip;
item.lastAccessTime = new Date();
sessionMap.put(sessionId, item);
}
else {
item.lastAccessTime = new Date();
}
}
public static synchronized List getUserList() {
List list = new ArrayList();
Set toBeRemoveSet = new HashSet();
Date now = new Date();
for (Iterator it = sessionMap.keySet().iterator(); it.hasNext();) {
String key = (String) it.next();
SessionItem item = (SessionItem) sessionMap.get(key);
if (now.getTime() - item.getLastAccessTime().getTime() > 60000) {
toBeRemoveSet.add(key);
}
else {
list.add(item);
}
}
for (Iterator it = toBeRemoveSet.iterator(); it.hasNext();) {
sessionMap.remove(it.next());
}
Collections.sort(list);
return list;
}
public static synchronized void setSessionUser(String sessionId, String user) {
if (user != null && user.length() > 0) {
SessionItem item = (SessionItem) sessionMap.get(sessionId);
if (item != null) {
item.user = user;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -