private void initialize() { if ((sourceIterator == null) || (!sourceIterator.hasNext())) { resultIterator = NULL_ITER; return; } EventBean eventFirst = sourceIterator.next(); if (!sourceIterator.hasNext()) { resultIterator = new SingleEventIterator(eventFirst); return; } // read all events ArrayDeque<EventBean> events = new ArrayDeque<EventBean>(); events.add(eventFirst); for (; sourceIterator.hasNext(); ) { events.add(sourceIterator.next()); } // build distinct set EventBean[] unique = EventBeanUtility.getDistinctByProp(events, eventBeanReader); resultIterator = new ArrayEventIterator(unique); }
static EPPreparedQueryResult processedNonJoin(ResultSetProcessor resultSetProcessor, Collection<EventBean> events, EventBeanReader distinctHandler) { EventBean[] rows = events.toArray(new EventBean[events.size()]); UniformPair<EventBean[]> results = resultSetProcessor.processViewResult(rows, null, true); EventBean[] distinct; if (distinctHandler == null) { distinct = results.getFirst(); } else { distinct = EventBeanUtility.getDistinctByProp(results.getFirst(), distinctHandler); } return new EPPreparedQueryResult(resultSetProcessor.getResultEventType(), distinct); } }
private void continueOutputProcessingViewAndJoin(boolean doOutput, boolean forceUpdate, UniformPair<EventBean[]> newOldEvents) { if (parent.isDistinct() && newOldEvents != null) { newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader())); } if (doOutput) { output(forceUpdate, newOldEvents); } } }
newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader()));
newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader()));
newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader()));
EventBean[] distinct = EventBeanUtility.getDistinctByProp(EventBeanUtility.flatten(events), select.getEventBeanReaderDistinct()); return new EPPreparedQueryResult(select.getEventType(), distinct);
public static EventBean[] handleDistintAndInsert(EventBean[] newData, InfraOnSelectViewFactory parent, AgentInstanceContext agentInstanceContext, TableInstance tableInstanceInsertInto, boolean audit) { if (parent.isDistinct()) { newData = EventBeanUtility.getDistinctByProp(newData, parent.getEventBeanReader()); } if (tableInstanceInsertInto != null) { if (newData != null) { for (EventBean aNewData : newData) { tableInstanceInsertInto.addEventUnadorned(aNewData); } } } else if (parent.isInsertInto()) { if (newData != null) { for (EventBean aNewData : newData) { if (audit) { agentInstanceContext.getAuditProvider().insert(aNewData, agentInstanceContext); } agentInstanceContext.getInternalEventRouter().route(aNewData, agentInstanceContext, parent.isAddToFront()); } } } return newData; } }
newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader()));
/** * Called once the output condition has been met. * Invokes the result set processor. * Used for non-join event data. * * @param doOutput - true if the batched events should actually be output as well as processed, false if they should just be processed * @param forceUpdate - true if output should be made even when no updating events have arrived */ protected void continueOutputProcessingView(boolean doOutput, boolean forceUpdate) { agentInstanceContext.getInstrumentationProvider().qOutputRateConditionOutputNow(); StatementResultService statementResultService = agentInstanceContext.getStatementResultService(); boolean isGenerateSynthetic = statementResultService.isMakeSynthetic(); boolean isGenerateNatural = statementResultService.isMakeNatural(); // Process the events and get the result UniformPair<EventBean[]> newOldEvents = resultSetProcessor.processOutputLimitedView(deltaSet.getViewEventsSet(), isGenerateSynthetic); if (parent.isDistinct() && newOldEvents != null) { newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader())); } if ((!isGenerateSynthetic) && (!isGenerateNatural)) { resetEventBatches(); agentInstanceContext.getInstrumentationProvider().aOutputRateConditionOutputNow(false); return; } if (doOutput) { output(forceUpdate, newOldEvents); } resetEventBatches(); agentInstanceContext.getInstrumentationProvider().aOutputRateConditionOutputNow(true); }
newOldEvents.setFirst(EventBeanUtility.getDistinctByProp(newOldEvents.getFirst(), parent.getEventBeanReader())); newOldEvents.setSecond(EventBeanUtility.getDistinctByProp(newOldEvents.getSecond(), parent.getEventBeanReader()));
EventBean[] distinct = EventBeanUtility.getDistinctByProp(results.getFirst(), select.getEventBeanReaderDistinct());