Class EventLogQueue

  • All Implemented Interfaces:
    java.lang.Iterable<ome.model.meta.EventLog>, java.util.EventListener, java.util.Iterator<ome.model.meta.EventLog>, org.springframework.context.ApplicationListener

    public class EventLogQueue
    extends PersistentEventLogLoader
    PersistentEventLogLoader implementation which loads many rows at the same time, culling out duplicates in order to speed up indexing. Many of the methods used by either PersistentEventLogLoader or its super-classes are not intended for use here. Instead, the Iterator interface is most critical. As with other implementations, hasNext() is used for loading data if necessary, while next() simply returns an object. In some cases, nulls may be returned, which consumers must contend with.
    Since:
    5.0.3
    • Constructor Summary

      Constructors 
      Constructor Description
      EventLogQueue()  
      EventLogQueue​(ome.system.metrics.Metrics metrics, int max, java.lang.String[] types, java.lang.String[] actions)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addEventLog​(java.lang.Class<? extends ome.model.IObject> cls, long id)
      Only schedule a new backlog event if there is no currently registered event of that type.
      boolean hasNext()
      Checks if either any EventLogQueue.Entry instances are available or tries to load them if not.
      void initialize()
      Do nothing.
      protected boolean load​(java.lang.Long eventLogId, java.lang.String type, java.lang.Long objId, java.lang.String action, java.lang.Integer skipped)
      Guarantees that the given arguments are available somewhere in the queue returning true if they were newly added.
      protected int load​(java.util.List<java.lang.Object[]> rows)  
      protected java.util.List<java.lang.Object[]> lookup()  
      long more()
      In general, EventLogQueue will intend to use much larger batch sizes, and so further loops should likely not be attempted.
      ome.model.meta.EventLog next()
      Return a wrapped version of EventLogQueue.Data.next() which could possibly be null.
      void onApplicationEvent​(org.springframework.context.ApplicationEvent arg0)  
      protected ome.model.meta.EventLog query()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.lang.Iterable

        forEach, spliterator
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Field Detail

      • DEFAULT_MAX

        public static final int DEFAULT_MAX
        Default maximum for the number of rows that will be loaded in a single call to SqlAction.getEventLogPartitions(java.util.Collection, java.util.Collection, long, long) . Currently 1 million.
        See Also:
        Constant Field Values
    • Constructor Detail

      • EventLogQueue

        public EventLogQueue()
      • EventLogQueue

        public EventLogQueue​(ome.system.metrics.Metrics metrics,
                             int max,
                             java.lang.String[] types,
                             java.lang.String[] actions)
    • Method Detail

      • lookup

        protected java.util.List<java.lang.Object[]> lookup()
      • load

        protected int load​(java.util.List<java.lang.Object[]> rows)
      • load

        protected boolean load​(java.lang.Long eventLogId,
                               java.lang.String type,
                               java.lang.Long objId,
                               java.lang.String action,
                               java.lang.Integer skipped)
        Guarantees that the given arguments are available somewhere in the queue returning true if they were newly added.
      • onApplicationEvent

        public void onApplicationEvent​(org.springframework.context.ApplicationEvent arg0)
        Specified by:
        onApplicationEvent in interface org.springframework.context.ApplicationListener
        Overrides:
        onApplicationEvent in class EventLogLoader
      • hasNext

        public boolean hasNext()
        Checks if either any EventLogQueue.Entry instances are available or tries to load them if not. Conditions which will lead this to return false include: "stop" being set, the batch size being met, the current id in the database being equivalent to the newest event log.
        Specified by:
        hasNext in interface java.util.Iterator<ome.model.meta.EventLog>
        Overrides:
        hasNext in class EventLogLoader
      • next

        public ome.model.meta.EventLog next()
        Return a wrapped version of EventLogQueue.Data.next() which could possibly be null.
        Specified by:
        next in interface java.util.Iterator<ome.model.meta.EventLog>
        Overrides:
        next in class EventLogLoader
      • addEventLog

        public boolean addEventLog​(java.lang.Class<? extends ome.model.IObject> cls,
                                   long id)
        Only schedule a new backlog event if there is no currently registered event of that type.
        Overrides:
        addEventLog in class EventLogLoader