public class LengthBatchView extends ViewSupport implements CloneableView, DataWindowView
The view works similar to a length_window but is not continuous, and similar to a time_batch however is not time-based but reacts to the number of events.
The view releases the batched events, when a certain number of batched events has been reached or exceeded, as new data to child views. The prior batch if not empty is released as old data to any child views. The view doesn't release intervals with no old or new data. It also does not collect old data published by a parent view.
If there are no events in the current and prior batch, the view will not invoke the update method of child views.
Modifier and Type | Field and Description |
---|---|
protected AgentInstanceViewFactoryChainContext |
agentInstanceViewFactoryContext |
protected ArrayDeque<EventBean> |
currentBatch |
protected ArrayDeque<EventBean> |
lastBatch |
EMPTY_VIEW_ARRAY, parent
Constructor and Description |
---|
LengthBatchView(AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext,
LengthBatchViewFactory lengthBatchViewFactory,
int size,
ViewUpdatedCollection viewUpdatedCollection)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
View |
cloneView()
Duplicates the view.
|
EventType |
getEventType()
Provides metadata information about the type of object the event collection contains.
|
int |
getSize()
Returns the number of events to batch (data window size).
|
ViewFactory |
getViewFactory() |
boolean |
isEmpty()
Returns true if the window is empty, or false if not empty.
|
Iterator<EventBean> |
iterator()
Allows iteration through all elements in this event collection.
|
protected void |
sendBatch()
This method updates child views and clears the batch of events.
|
String |
toString() |
void |
update(EventBean[] newData,
EventBean[] oldData)
Notify that data has been added or removed from the Viewable parent.
|
void |
visitView(ViewDataVisitor viewDataVisitor) |
addView, addView, dumpChildViews, dumpUpdateParams, dumpUpdateParams, findDescendent, findViewIndex, getParent, getViews, hasViews, removeAllViews, removeView, removeView, setParent, updateChildren, updateChildren
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addView, getViews, hasViews, removeAllViews, removeView
forEach, spliterator
protected final AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext
protected ArrayDeque<EventBean> lastBatch
protected ArrayDeque<EventBean> currentBatch
public LengthBatchView(AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext, LengthBatchViewFactory lengthBatchViewFactory, int size, ViewUpdatedCollection viewUpdatedCollection)
size
- is the number of events to batchviewUpdatedCollection
- is a collection that the view must update when receiving eventslengthBatchViewFactory
- for copying this view in a group-byagentInstanceViewFactoryContext
- contextpublic View cloneView()
CloneableView
Expected to return a same view in initialized state for grouping.
cloneView
in interface CloneableView
public final int getSize()
public final EventType getEventType()
EventCollection
getEventType
in interface EventCollection
public void update(EventBean[] newData, EventBean[] oldData)
View
If the call to update contains new (inserted) data, then the first argument will be a non-empty list and the second will be empty. Similarly, if the call is a notification of deleted data, then the first argument will be empty and the second will be non-empty. Either the newData or oldData will be non-null. This method won't be called with both arguments being null, but either one could be null. The same is true for zero-length arrays. Either newData or oldData will be non-empty. If both are non-empty, then the update is a modification notification.
When update() is called on a view by the parent object, the data in newData will be in the collection of the parent, and its data structures will be arranged to reflect that. The data in oldData will not be in the parent's data structures, and any access to the parent will indicate that that data is no longer there.
protected void sendBatch()
public boolean isEmpty()
public final Iterator<EventBean> iterator()
EventCollection
iterator
in interface EventCollection
iterator
in interface Iterable<EventBean>
public void visitView(ViewDataVisitor viewDataVisitor)
visitView
in interface ViewDataVisitable
public ViewFactory getViewFactory()
getViewFactory
in interface GroupableView