Developers guide
108
/**
* $Id: AbstractMasterswitch.java,v 1.2 2002/10/22 08:23:11 oliverm Exp $
* Author: Oliver Mather
*
*/
package apt.masterswitch;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.Collections;
import java.util.logging.Logger;
import java.util.logging.Level;
/**
* Description:
* <p>
* This implements some of the common tasks required by
* full Masterswitch implementations. Such as MasterswitchListener
* event management code
* <p>
*
* @see apt.masterswitch.MasterswitchListener
* @author $Author: oliverm $ <a href="mailto:oliverm@student.unsw.edu.au">Oliver Mather</a>
* @version $Revision: 1.2 $
*
*
*/
public abstract class AbstractMasterswitch implements Masterswitch {
private List listeners;
private final Logger logger = Logger.getLogger( getClass().getName() );
public AbstractMasterswitch() {
logger.log(Level.INFO,"Initialising Masterswitch");
listeners = Collections.synchronizedList( new ArrayList(5) );
}
protected void checkOutlet(int outlet) throws IllegalArgumentException {
if( outlet < 1 || outlet > NUM_OUTLETS ) {
throw new IllegalArgumentException("Invalid outlet number: "+outlet);
}
}
protected void fireOutletStateChanged(int outlet, String newState) {
Iterator i = listeners.iterator();
while (i.hasNext()) {
MasterswitchListener listener = (MasterswitchListener) i.next();
listener.outletStateChanged(outlet,newState);
}
}
protected void fireOutletNameChanged(int outlet, String newName) {
Iterator i = listeners.iterator();
while (i.hasNext()) {
MasterswitchListener listener = (MasterswitchListener) i.next();
listener.outletStateChanged(outlet,newName);
}
}
protected void fireStateChanged() {
Iterator i = listeners.iterator();
while (i.hasNext()) {
MasterswitchListener listener = (MasterswitchListener) i.next();
listener.stateChanged();
}
}
public void addMasterswitchListener( MasterswitchListener listener) {
if( listener == null ) {
throw new NullPointerException("Cannot addMasterswitchListener(null)");
}










