class TriggerBlockLayer
extends java.lang.Object
DatabaseTrigger
for current layer.
This class and all his methods are package-protected so it is not visible outside the trigger
package, in fact it can only be accessed by DatabaseTriggerManager
.Modifier and Type | Class and Description |
---|---|
(package private) static class |
TriggerBlockLayer.EnableStatus
The status of a base database trigger event on a block layer.
|
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,java.util.Map<java.lang.Class<? extends Buffer>,TriggerData>> |
assignTriggers
For each field (property) of each table an ASSIGN
TriggerData can be on this
layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
createTriggers
A CREATE
TriggerData can be defined for each table on this layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
deleteTriggers
A DELETE
TriggerData can be defined for each table on this layer. |
private java.util.Set<java.lang.Class<? extends Buffer>> |
disabledDumpTriggers
This is the set of tables that disabled their DUMP triggers (FIND).
|
private java.util.Set<java.lang.Class<? extends Buffer>> |
disabledLoadTriggers
This is the set of tables that disabled their LOAD triggers (all except FIND).
|
private java.util.Set<java.lang.Class<? extends Buffer>> |
enabledReplicationTriggers
This is the set of tables that disabled their REPLICATION triggers.
|
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
findTriggers
A FIND
TriggerData can be defined for each table on this layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
repCreateTriggers
A REPLICATION-CREATE
TriggerData can be defined for each table on this layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
repDeleteTriggers
A REPLICATION-DELETE
TriggerData can be defined for each table on this layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
repWriteTriggers
A REPLICATION-WRITE
TriggerData can be defined for each table on this layer. |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
writeTriggers
A WRITE
TriggerData can be defined for each table on this layer. |
Constructor and Description |
---|
TriggerBlockLayer()
Constructor with minimum implementation, all members will use lazy initialization for
two reasons:
to not allocate unneeded memory
quick creation of the object.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
disableTriggers(java.lang.Class<? extends Buffer> bufferCls,
boolean dump,
boolean load,
boolean allowReplication)
Disable a set of trigger events.
|
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> |
getBufferDatabaseTriggerMap(DatabaseEventType det,
java.lang.String assignField,
boolean createIfNotExist)
Lookup the buffer-to-trigger map using the DatabaseEventType.
|
(package private) TriggerData |
getReplicationTrigger(DatabaseEventType det,
java.lang.Class<? extends Buffer> bufferCls)
Obtain the container that hold information for instantiating a trigger object for the
replication version of the
det event. |
(package private) TriggerData |
getTrigger(DatabaseEventType det,
java.lang.Class<? extends Buffer> bufferCls,
java.lang.String property)
Obtain the container that hold information for instantiating a trigger object.
|
TriggerBlockLayer.EnableStatus |
getTriggerStatus(DatabaseEventType det,
java.lang.Class<? extends Buffer> bufferCls)
Check if a trigger is disabled for a buffer on this layer.
|
(package private) void |
removeTrigger(DatabaseEventType det,
java.lang.Class<? extends Buffer> bufferCls,
java.lang.String property)
Removes a trigger from the associated map.
|
(package private) void |
setTrigger(java.lang.Class<? extends DatabaseTrigger> triggerCls,
DatabaseEventType det,
java.lang.Class<? extends Buffer> bufferCls,
java.lang.String assignProperty,
java.lang.Object container,
boolean override,
boolean hasOldBuffer)
Sets the current trigger for a
det and a buffer . |
private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> findTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> createTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> writeTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> deleteTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.String,java.util.Map<java.lang.Class<? extends Buffer>,TriggerData>> assignTriggers
TriggerData
can be on this
layer. The mapping order is rather uncommon but this help re-using the code from lookup
of other triggers by applying first the mapping from field name.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> repCreateTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> repWriteTriggers
TriggerData
can be defined for each table on this layer.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> repDeleteTriggers
TriggerData
can be defined for each table on this layer.private java.util.Set<java.lang.Class<? extends Buffer>> disabledDumpTriggers
private java.util.Set<java.lang.Class<? extends Buffer>> disabledLoadTriggers
private java.util.Set<java.lang.Class<? extends Buffer>> enabledReplicationTriggers
TriggerBlockLayer()
TriggerData getTrigger(DatabaseEventType det, java.lang.Class<? extends Buffer> bufferCls, java.lang.String property)
det
- The database event to which the trigger responds to.bufferCls
- The class that defines the table for which the trigger applies to.property
- Optionally, for ASSIGN triggers the name of the property (field) for which the
trigger was declared. Otherwise it is ignored.TriggerData getReplicationTrigger(DatabaseEventType det, java.lang.Class<? extends Buffer> bufferCls)
det
event. This call is only valid for schema-level
TriggerBlockLayer
and only for events that have replication equivalent.
If these conditions are not met or no such replication trigger was defined, then a null
object is returned.det
- The database event whose replication equivalent trigger responds to.bufferCls
- The buffer class for the dmo that fired the trigger.void setTrigger(java.lang.Class<? extends DatabaseTrigger> triggerCls, DatabaseEventType det, java.lang.Class<? extends Buffer> bufferCls, java.lang.String assignProperty, java.lang.Object container, boolean override, boolean hasOldBuffer)
det
and a buffer
. If another
trigger was set for the same event and buffer, it will be dropped.
Because this class uses lazy initialization the map of trigger is created automatically
if there it was not already there for this trigger event.triggerCls
- The trigger to be set.det
- The trigger event.bufferCls
- The buffer for which the trigger is set.assignProperty
- When setting an ASSIGN trigger the name of the field is needed, otherwise ignored.container
- The container object of the trigger.override
- If true
, the schema trigger is blocked, otherwise, schema trigger
will be executed just after the session trigger.hasOldBuffer
- true
if the callback of the trigger has reference to old buffervoid removeTrigger(DatabaseEventType det, java.lang.Class<? extends Buffer> bufferCls, java.lang.String property)
det
- The event type of the trigger to be revertedbufferCls
- The buffer for which the trigger is removed.property
- The property that is unregistered from ASSIGN trigger, otherwise ignored.void disableTriggers(java.lang.Class<? extends Buffer> bufferCls, boolean dump, boolean load, boolean allowReplication)
dump
- Disable the FIND triggers.load
- Disable the LOAD (ASSIGN, CREATE, WRITE) triggers.allowReplication
- Disable replication triggers.private java.util.Map<java.lang.Class<? extends Buffer>,TriggerData> getBufferDatabaseTriggerMap(DatabaseEventType det, java.lang.String assignField, boolean createIfNotExist)
det
- The event type that is looked up.assignField
- In the case of ASSIGN triggers, the property name, otherwise ignored.createIfNotExist
- Flag to create the specified map if the map has not already been created.det
buffer-to-events, possible null
or a new empty map if this was requested.public TriggerBlockLayer.EnableStatus getTriggerStatus(DatabaseEventType det, java.lang.Class<? extends Buffer> bufferCls)
For FIND/ASSIGN/CREATE/WRITE triggers, if they are not DISABLED, then UNKNOWN status will be returned. It is OK that ENABLED is not returned for these cases because the caller is checking on the DISABLED status for this specific layer and should not be looking for an affirmative result. Returning UNKNOWN means these triggers are not-DISABLED for this layer. The caller is expected to handle the checking of multiple layers as needed to determine the resulting status.
det
- Database event type.bufferCls
- The buffer.