package net.sourceforge.squirrel_sql.client.session;
import net.sourceforge.squirrel_sql.client.IApplication;
import net.sourceforge.squirrel_sql.client.session.event.SessionAdapter;
import net.sourceforge.squirrel_sql.client.session.event.SessionEvent;
import net.sourceforge.squirrel_sql.client.session.event.SimpleSessionListener;
import java.util.ArrayList;
public class SimpleSessionListenerManager
{
private final IApplication _app;
private final Session _session;
private ArrayList<SimpleSessionListener> _listeners = new ArrayList<SimpleSessionListener>();
private final SessionAdapter _sessionAdapter;
public SimpleSessionListenerManager(IApplication app, Session session)
{
_app = app;
_session = session;
_sessionAdapter = new SessionAdapter()
{
@Override
public void sessionClosed(SessionEvent evt)
{
onSessionClosed(evt);
}
};
_app.getSessionManager().addSessionListener(_sessionAdapter);
}
private void onSessionClosed(SessionEvent evt)
{
if(false == evt.getSession().getIdentifier().equals(_session.getIdentifier()))
{
return;
}
SimpleSessionListener[] simpleSessionListeners = _listeners.toArray(new SimpleSessionListener[_listeners.size()]);
for (SimpleSessionListener simpleSessionListener : simpleSessionListeners)
{
simpleSessionListener.sessionClosed();
}
_app.getSessionManager().removeSessionListener(_sessionAdapter);
}
public void addListener(SimpleSessionListener simpleSessionListener)
{
_listeners.add(simpleSessionListener);
}
public void removeListener(SimpleSessionListener simpleSessionListener)
{
_listeners.remove(simpleSessionListener);
}
}