Class EventBacklog


  • public class EventBacklog
    extends java.lang.Object
    Thread-safe java.util-like Container for storing EventLog instances for later parsing. This container, however, will not add more than two logs with the same (id, eventType, action) tuple. Further, the container can only either be in the adding state or the removing state. A newly created EventBacklog is in the adding state. The popping state is entered the first time that remove() is called. And the adding state will only be re-entered, once remove() has returned null and logs is empty. All calls to add(EventLog) while in the popping state will return false.
    Since:
    3.0-Beta3.1
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean adding
      Switch between the adding and the removing states.
    • Constructor Summary

      Constructors 
      Constructor Description
      EventBacklog()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean add​(ome.model.meta.EventLog log)
      Adds the given EventLog instance to the end of a queue for later popping if no equivalent EventLog is present.
      void flipState()
      Flips the EventBacklog to the "adding" state if it is empty, otherwise to the "removing" state.
      ome.model.meta.EventLog remove()
      Removes and returns the next EventLog instance or null if none is present.
      boolean removingOnly()
      Check the current state of the EventBacklog.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • adding

        protected boolean adding
        Switch between the adding and the removing states.
    • Constructor Detail

      • EventBacklog

        public EventBacklog()
    • Method Detail

      • add

        public boolean add​(ome.model.meta.EventLog log)
        Adds the given EventLog instance to the end of a queue for later popping if no equivalent EventLog is present. Equivalence is based on the entityType, entityId, and action fields. Records tracking information to prevent the same EventLog from being re-added before the last instance is removed.
      • remove

        public ome.model.meta.EventLog remove()
        Removes and returns the next EventLog instance or null if none is present. Also cleans up any tracking information for the given EventLog.
        Returns:
        See above.
      • flipState

        public void flipState()
        Flips the EventBacklog to the "adding" state if it is empty, otherwise to the "removing" state. This is necessary since the indexing happens only at flush time in the FullTextIndexer. This restriction means in any one batch only either backlog or new event logs will be processed.
        See Also:
        EventLogLoader.hasNext()
      • removingOnly

        public boolean removingOnly()
        Check the current state of the EventBacklog. If in the "removingOnly" state, then any calls to add(EventLog) will return false.