Changed sessions type from ListArray to HashMap

This commit is contained in:
Robin Kupper
2011-03-21 19:01:40 +01:00
parent 691c433170
commit 659891a4d5

View File

@@ -7,7 +7,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
import java.util.ArrayList; import java.util.HashMap;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.logging.Level; import java.util.logging.Level;
@@ -47,7 +47,7 @@ public class LogBlock extends JavaPlugin
static Logger log; static Logger log;
private Consumer consumer = null; private Consumer consumer = null;
private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>(); private LinkedBlockingQueue<BlockRow> bqueue = new LinkedBlockingQueue<BlockRow>();
private ArrayList<Session> sessions = new ArrayList<Session>(); private HashMap<Integer, Session> sessions = new HashMap<Integer, Session>();
@Override @Override
public void onEnable() { public void onEnable() {
@@ -550,13 +550,12 @@ private boolean CheckPermission(Player player, String permission) {
} }
private Session getSession(Player player) { private Session getSession(Player player) {
int idx = sessions.indexOf(new Session(player)); Session session = sessions.get(player.getName().hashCode());
if (idx != -1) if (session == null) {
return sessions.get(idx); session = new Session(player);
else { sessions.put(player.getName().hashCode(), session);
sessions.add(new Session(player));
return getSession(player);
} }
return session;
} }
private boolean isInt(String str) { private boolean isInt(String str) {
@@ -682,33 +681,39 @@ private boolean CheckPermission(Player player, String permission) {
this.ca = null; this.ca = null;
} }
} }
private class Session private class Session
{ {
public String user; public String user;
public Location loc1 = null, loc2 = null; public Location loc1 = null, loc2 = null;
public Session (Player player) { public Session (Player player) {
this.user = player.getName(); this.user = player.getName();
} }
public boolean isloc1Set() { public boolean isloc1Set() {
if (loc1 == null) if (loc1 == null)
return false; return false;
else else
return true; return true;
} }
public boolean isloc2Set() { public boolean isloc2Set() {
if (loc2 == null) if (loc2 == null)
return false; return false;
else else
return true; return true;
} }
@Override @Override
public boolean equals(Object obj) public int hashCode() {
{ return user.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null) if (obj == null)
return false; return false;
if (!user.equalsIgnoreCase(((Session)obj).user)) if (!user.equalsIgnoreCase(((Session)obj).user))