package core; import java.util.HashMap; import java.util.Map; import de.skuzzle.polly.sdk.IrcManager; import de.skuzzle.polly.sdk.eventlistener.NickChangeEvent; import de.skuzzle.polly.sdk.eventlistener.NickChangeListener; import de.skuzzle.polly.sdk.eventlistener.SpotEvent; import de.skuzzle.polly.sdk.eventlistener.UserSpottedListener; import de.skuzzle.polly.sdk.time.Time; public class JoinTimeCollector implements UserSpottedListener, NickChangeListener { private Map<String, Long> joinTimes; public JoinTimeCollector() { this.joinTimes = new HashMap<String, Long>(); } public void addTo(IrcManager ircManager) { ircManager.addUserSpottedListener(this); ircManager.addNickChangeListener(this); } public void remove(IrcManager ircManager) { ircManager.removeUserSpottedListener(this); ircManager.removeNickChangeListener(this); } public Long getJoinTime(String nickName) { synchronized (this.joinTimes) { return this.joinTimes.get(nickName); } } @Override public void userSpotted(SpotEvent e) { synchronized (this.joinTimes) { this.joinTimes.put(e.getUser().getNickName(), Time.currentTimeMillis()); } } @Override public void userLost(SpotEvent e) { synchronized (this.joinTimes) { this.joinTimes.remove(e.getUser().getNickName()); } } @Override public void nickChanged(NickChangeEvent e) { synchronized (this.joinTimes) { Long joinTime = this.joinTimes.get(e.getOldUser().getNickName()); if (joinTime != null) { this.joinTimes.remove(e.getOldUser().getNickName()); this.joinTimes.put(e.getNewUser().getNickName(), joinTime); } } } }