/*******************************************************************************
* Copyright (c) 2004, 2010 BREDEX GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* BREDEX GmbH - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jubula.client.core.utils;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* @author BREDEX GmbH
* @created Nov 17, 2006
*/
public class DatabaseStateDispatcher {
/**
* gui listener for showing connection window
*/
private static Set<IDatabaseStateListener> listener;
/**
* Private utility constructor.
*/
private DatabaseStateDispatcher() {
// do nothing
}
/**
* Adds a new progress listener to progress listener list.
*
* @param l
* The progressListener to add.
*/
public static void addDatabaseStateListener(IDatabaseStateListener l) {
getListeners().add(l);
}
/**
* Removes a new progress listener from progress listener list.
*
* @param l
* The progressListener to remove.
*/
public static void removeDatabaseStateListener(IDatabaseStateListener l) {
getListeners().remove(l);
}
/**
* Notifies all progressListeners of the progress listener list and calls
* <code>progressListener.reactOnProgressEvent(ProgressEvent e)</code>
*
* @param e
* the progressEvent
*/
public static void notifyListener(DatabaseStateEvent e) {
Iterator<IDatabaseStateListener> iter = getListeners().iterator();
while (iter.hasNext()) {
IDatabaseStateListener progressListener = iter.next();
if (progressListener != null) {
progressListener.reactOnDatabaseEvent(e);
} else {
if (listener != null) {
listener.remove(progressListener);
}
}
}
}
/**
* @return Set<IProgressListener>
*/
private static Set<IDatabaseStateListener> getListeners() {
if (listener == null) {
listener = new HashSet<IDatabaseStateListener>();
}
return listener;
}
}