001    package users.events;
002    
003    import users.*;
004    
005    import java.util.*;
006    
007    /**
008     * An event indicating changes in a user's capabilities.
009     *
010     * @see User
011     * @see Capability
012     * @see CapabilityDataListener
013     *
014     * @author Steffen Zschaler
015     * @version 2.0 05/05/1999
016     * @since v2.0
017     */
018    public class CapabilityDataEvent extends EventObject {
019    
020        /**
021         * The capabilities that participated in the change.
022         *
023         * @serial
024         */
025        private Set m_stCapNames;
026    
027        /**
028         * Create a new CapabilityDataEvent with a source and a set of affected capabilities
029         *
030         * @param source the source of the event, usually a User object.
031         * @param stCapNames the set of capabilities that changed.
032         */
033        public CapabilityDataEvent(Object source, Set stCapNames) {
034            super(source);
035    
036            m_stCapNames = stCapNames;
037        }
038    
039        /**
040         * Test whether a given capability is affected by this event.
041         *
042         * @param sCapName the name of the capability to be tested
043         *
044         * @return true if the given capability is affected by this event.
045         *
046         * @override Never
047         */
048        public boolean affectsCapability(String sCapName) {
049            return m_stCapNames.contains(sCapName);
050        }
051    
052        /**
053         * Return a capability if it is affected by this event.
054         *
055         * @param sCapName the name of the capability to be returned.
056         *
057         * @return the capability with the given name, if it is affected by this event.
058         * <code>null</code> otherwise.
059         *
060         * @override Never
061         */
062        public Capability getCapability(String sCapName) {
063            return ((affectsCapability(sCapName)) ? (((User)getSource()).getCapability(sCapName)) : (null));
064        }
065    
066    }