package de.skuzzle.polly.core.eventhandler; import org.apache.log4j.Logger; import de.skuzzle.polly.core.internal.irc.IrcManagerImpl; import de.skuzzle.polly.core.internal.users.UserManagerImpl; import de.skuzzle.polly.sdk.eventlistener.ConnectionEvent; import de.skuzzle.polly.sdk.eventlistener.ConnectionListener; import de.skuzzle.polly.sdk.eventlistener.SpotEvent; import de.skuzzle.polly.sdk.eventlistener.UserSpottedListener; public class AutoLogoffHandler implements UserSpottedListener, ConnectionListener { private final static Logger logger = Logger.getLogger( AutoLogoffHandler.class.getName()); private UserManagerImpl userManager; private IrcManagerImpl ircManager; public AutoLogoffHandler(UserManagerImpl userManager, IrcManagerImpl ircManager) { this.userManager = userManager; this.ircManager = ircManager; } @Override public void userLost(SpotEvent e) { if (this.userManager.isSignedOn(e.getUser())) { logger.warn("Auto logoff for user: " + e.getUser()); //$NON-NLS-1$ if (e.getType() != SpotEvent.USER_QUIT) { this.ircManager.sendMessage(e.getUser().getNickName(), MSG.autoLogoff, this); } this.userManager.logoff(e.getUser(), true); } } @Override public void userSpotted(SpotEvent ignore) {} @Override public void ircConnectionEstablished(ConnectionEvent e) { } @Override public void ircConnectionLost(ConnectionEvent e) { this.userManager.logoffAll(); } }