Class Event

java.lang.Object
org.dspace.event.Event
All Implemented Interfaces:
Serializable

public class Event extends Object implements Serializable
An Event object represents a single action that changed one object in the DSpace data model. An "atomic" action at the application or business-logic API level may spawn many of these events.

This class includes tools to help set and use the contents of the event. Note that it describes DSpace data object types in two ways: by the type identifiers in the Constants class, and also by an Event-specific bitmask (used by its internal filters). All public API calls use the Constants version of the data model types.

Note that the type of the event itself is actually descriptive of the action it performs: ADD, MODIFY, etc. The most significant elements of the event are:

  • (Action) Type
  • Subject -- DSpace object to which the action applies, e.g. the Collection to which an ADD adds a member.
  • Object -- optional, when present it is the other object effected by an action, e.g. the Item ADDed to a Collection by an ADD.
  • detail -- a textual summary of what changed. Content and its significance varies by the combination of action and subject type.
  • - timestamp -- exact millisecond timestamp at which event was logged.
See Also:
  • Field Details

  • Constructor Details

    • Event

      public Event(int eventType, int subjectType, UUID subjectID, String detail)
      Constructor. You should consider to use Event(int, int, UUID, java.lang.String).
      Parameters:
      eventType - action type, e.g. Event.ADD.
      subjectType - DSpace Object Type of subject e.g. Constants.ITEM.
      subjectID - database ID of subject instance.
      detail - detail information that depends on context.
    • Event

      public Event(int eventType, int subjectType, UUID subjectID, String detail, ArrayList<String> identifiers)
      Constructor.
      Parameters:
      eventType - action type, e.g. Event.ADD.
      subjectType - DSpace Object Type of subject e.g. Constants.ITEM.
      subjectID - database ID of subject instance.
      detail - detail information that depends on context.
      identifiers - array containing all identifiers of the dso or an empty array
    • Event

      public Event(int eventType, int subjectType, UUID subjectID, int objectType, UUID objectID, String detail)
      Constructor. You should consider to use Event(int, int, UUID, int, UUID, java.lang.String) instead.
      Parameters:
      eventType - action type, e.g. Event.ADD.
      subjectType - DSpace Object Type of subject e.g. Constants.ITEM.
      subjectID - database ID of subject instance.
      objectType - DSpace Object Type of object e.g. Constants.BUNDLE.
      objectID - database ID of object instance.
      detail - detail information that depends on context.
    • Event

      public Event(int eventType, int subjectType, UUID subjectID, int objectType, UUID objectID, String detail, ArrayList<String> identifiers)
      Constructor.
      Parameters:
      eventType - action type, e.g. Event.ADD.
      subjectType - DSpace Object Type of subject e.g. Constants.ITEM.
      subjectID - database ID of subject instance.
      objectType - DSpace Object Type of object e.g. Constants.BUNDLE.
      objectID - database ID of object instance.
      detail - detail information that depends on context.
      identifiers - array containing all identifiers of the dso or an empty array
  • Method Details

    • equals

      public boolean equals(Object other)
      Compare two events. Ignore any difference in the timestamps. Also ignore transactionID since that is not always set initially.
      Overrides:
      equals in class Object
      Parameters:
      other - the event to compare this one to
      Returns:
      true if events are "equal", false otherwise.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • setDispatcher

      public void setDispatcher(int id)
      Set the identifier of the dispatcher that first processed this event.
      Parameters:
      id - the unique (hash code) value characteristic of the dispatcher.
    • coreTypeToMask

      protected int coreTypeToMask(int core)
    • maskTypeToCore

      protected int maskTypeToCore(int mask)
    • getObject

      public DSpaceObject getObject(Context context) throws SQLException
      Get the DSpace object which is the "object" of an event.
      Parameters:
      context - The relevant DSpace Context.
      Returns:
      DSpaceObject or null if none can be found or no object was set.
      Throws:
      SQLException - An exception that provides information on a database access error or other errors.
    • getSubject

      public DSpaceObject getSubject(Context context) throws SQLException
      Syntactic sugar to get the DSpace object which is the "subject" of an event.
      Parameters:
      context - The relevant DSpace Context.
      Returns:
      DSpaceObject or null if none can be found.
      Throws:
      SQLException - An exception that provides information on a database access error or other errors.
    • getSubjectID

      public UUID getSubjectID()
      Returns:
      database ID of subject of this event.
    • getObjectID

      public UUID getObjectID()
      Returns:
      database ID of object of this event, or -1 if none was set.
    • getSubjectType

      public int getSubjectType()
      Returns:
      type number (e.g. Constants.ITEM) of subject of this event.
    • getObjectType

      public int getObjectType()
      Returns:
      type number (e.g. Constants.ITEM) of object of this event, or -1 if none was set.
    • getSubjectTypeAsString

      public String getSubjectTypeAsString()
      Returns:
      type of subject of this event as a String, e.g. for logging.
    • getObjectTypeAsString

      public String getObjectTypeAsString()
      Returns:
      type of object of this event as a String, e.g. for logging.
    • parseObjectType

      public static int parseObjectType(String s)
      Translate a textual DSpace Object type name into an event subject-type mask. NOTE: This returns a BIT-MASK, not a numeric type value; the mask is only used within the event system.
      Parameters:
      s - text name of object type.
      Returns:
      numeric value of object type or 0 for error.
    • getEventType

      public int getEventType()
      Returns:
      event-type (i.e. action) this event, one of the masks like Event.ADD defined above.
    • getEventTypeAsString

      public String getEventTypeAsString()
      Get the text name of event (action) type.
      Returns:
      event-type (i.e. action) this event as a String, e.g. for logging.
    • parseEventType

      public static int parseEventType(String s)
      Interpret named event type.
      Parameters:
      s - name of event type.
      Returns:
      numeric value of event type or 0 for error.
    • getTimeStamp

      public long getTimeStamp()
      Returns:
      timestamp at which event occurred, as a count of milliseconds since the epoch (standard Java format).
    • getDispatcher

      public int getDispatcher()
      Returns:
      hashcode identifier of name of Dispatcher which first dispatched this event. (Needed by asynch dispatch code.)
    • getDetail

      public String getDetail()
      Returns:
      value of detail element of the event.
    • getIdentifiers

      public List<String> getIdentifiers()
      Returns:
      array of identifiers of this event's subject.
    • getTransactionID

      public String getTransactionID()
      Returns:
      value of transactionID element of the event.
    • setTransactionID

      public void setTransactionID(String tid)
      Sets value of transactionID element of the event.
      Parameters:
      tid - new value of transactionID.
    • setCurrentUser

      public void setCurrentUser(int uid)
    • getCurrentUser

      public int getCurrentUser()
    • setExtraLogInfo

      public void setExtraLogInfo(String info)
    • getExtraLogInfo

      public String getExtraLogInfo()
    • pass

      public boolean pass(List<int[]> filters)
      Test whether this event would pass through a list of filters.
      Parameters:
      filters - list of filter masks; each one is an Array of two ints.
      Returns:
      true if this event would be passed through the given filter list.
    • log2

      protected int log2(int n)
    • setBitSet

      public void setBitSet(String consumerName)
      Keeps track of which consumers have consumed the event. Should be called by a dispatcher when calling consume(Context ctx, String name, Event event) on an event.
      Parameters:
      consumerName - name of consumer which has consumed the event
    • getBitSet

      public BitSet getBitSet()
      Returns:
      the set of consumers which have consumed this Event.
    • toString

      public String toString()
      Overrides:
      toString in class Object
      Returns:
      Detailed string representation of contents of this event, to help in logging and debugging.