Package opencard.core.event
Class EventGenerator
- java.lang.Object
-
- opencard.core.event.EventGenerator
-
- All Implemented Interfaces:
java.lang.Runnable,Observer
public final class EventGenerator extends java.lang.Object implements Observer, java.lang.Runnable
The EventGenerator singleton acts as a generator and multicaster for card terminal events. The singleton instance can be obtained by calling the static method getGenerator. It periodically polls the terminals and generates CARD_INSERTED or CARD_REMOVED events if it detects a card insertion or removal, respectively. The generated events are sent to all CTListeners which have been registered using the method addCTListener. If not interested in card terminal events any longer, CTListeners can remove themselves from the notification list of the registry by calling the method removeCTListener. For the case that cards were inserted before an application was started, the method createEventsForPresentCards creates events for inserted cards a posteriori.- See Also:
CardTerminalEvent,CTListener,CardTerminal,CardTerminalRegistry
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddCTListener(CTListener listener)Adds a CTListener.voidcreateEventsForPresentCards(CTListener ctListener)Generates events for cards which are already inserted.static EventGeneratorgetGenerator()Gets the unique instance of CardTerminalRegistry.intgetPollInterval()Gets the duration of the poll interval in ms.voidremoveAllCTListener()voidremoveAllPollables()voidremoveCTListener(CTListener ctListener)Removes a CTListener.voidrun()Periodically checks all Pollable terminals.voidsetPollInterval(int duration)Sets the poll interval in msvoidupdateCards(CardTerminal terminal, int slotID, boolean cardInserted)Notify listeners that a card was inserted into or removed from a slot of a terminal.booleanupdateTerminals(Pollable p, boolean terminalAdded).
-
-
-
Method Detail
-
getGenerator
public static EventGenerator getGenerator()
Gets the unique instance of CardTerminalRegistry. (Singleton Pattern)- Returns:
- The card terminal registry singleton.
-
addCTListener
public void addCTListener(CTListener listener)
Adds a CTListener.- Parameters:
listener- The CTListener to be added.- See Also:
removeCTListener(CTListener)
-
createEventsForPresentCards
public void createEventsForPresentCards(CTListener ctListener) throws CardTerminalException
Generates events for cards which are already inserted. This method should be called when using the event-driven paradigm (in contrast to the procedural waitForCard () approach) and the application needs to handle cards that are already inserted. This method iterates over all registered terminals.- Parameters:
ctListener- the Card Terminal Listener to which the events shall be sent.- Throws:
CardTerminalException- thrown in case of errors in a registered CardTerminal.
-
removeCTListener
public void removeCTListener(CTListener ctListener)
Removes a CTListener.- Parameters:
ctListener- The CTListener to be removed.- See Also:
addCTListener(CTListener)
-
removeAllCTListener
public void removeAllCTListener()
-
removeAllPollables
public void removeAllPollables()
-
setPollInterval
public void setPollInterval(int duration)
Sets the poll interval in ms- Parameters:
duration- in ms
-
getPollInterval
public int getPollInterval()
Gets the duration of the poll interval in ms.- Returns:
- the poll interval duration in ms
-
run
public void run()
Periodically checks all Pollable terminals. The terminals implementation must then make sure to generate the proper events whenever they detect that a card was inserted or removed from one of their slots.- Specified by:
runin interfacejava.lang.Runnable
-
updateCards
public void updateCards(CardTerminal terminal, int slotID, boolean cardInserted)
Notify listeners that a card was inserted into or removed from a slot of a terminal.- Specified by:
updateCardsin interfaceObserver- Parameters:
terminal- terminal where a card was inserted/removedslotID- slot where a card was inserted/removedcardInserted- true if a card was inserted, false, if a card was removed
-
updateTerminals
public boolean updateTerminals(Pollable p, boolean terminalAdded)
. Keep track of pollable terminals, used by CardTerminalRegistry- Specified by:
updateTerminalsin interfaceObserver- Parameters:
p- terminal that was added/removed to the registryterminalAdded- true if a terminal was added. False, if a terminal was removed.
-
-