Class 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:
    Serialized Form
    • Constructor Detail

      • 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 Detail

      • 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.