use of org.wso2.siddhi.core.table.holder.IndexedEventHolder in project siddhi by wso2.
the class AndMultiPrimaryKeyCollectionExecutor method find.
public StreamEvent find(StateEvent matchingEvent, IndexedEventHolder indexedEventHolder, StreamEventCloner storeEventCloner) {
ComplexEventChunk<StreamEvent> returnEventChunk = new ComplexEventChunk<StreamEvent>(false);
Collection<StreamEvent> storeEventSet = findEvents(matchingEvent, indexedEventHolder);
if (storeEventSet == null) {
return returnEventChunk.getFirst();
} else {
for (StreamEvent storeEvent : storeEventSet) {
if (storeEventCloner != null) {
returnEventChunk.add(storeEventCloner.copyStreamEvent(storeEvent));
} else {
returnEventChunk.add(storeEvent);
}
}
return returnEventChunk.getFirst();
}
}
use of org.wso2.siddhi.core.table.holder.IndexedEventHolder in project siddhi by wso2.
the class CompareCollectionExecutor method find.
public StreamEvent find(StateEvent matchingEvent, IndexedEventHolder indexedEventHolder, StreamEventCloner storeEventCloner) {
ComplexEventChunk<StreamEvent> returnEventChunk = new ComplexEventChunk<StreamEvent>(false);
Collection<StreamEvent> storeEventSet = findEvents(matchingEvent, indexedEventHolder);
if (storeEventSet == null) {
// triggering sequential scan
Collection<StreamEvent> storeEvents = indexedEventHolder.getAllEvents();
for (StreamEvent storeEvent : storeEvents) {
matchingEvent.setEvent(storeEventIndex, storeEvent);
if ((Boolean) expressionExecutor.execute(matchingEvent)) {
if (storeEventCloner != null) {
returnEventChunk.add(storeEventCloner.copyStreamEvent(storeEvent));
} else {
returnEventChunk.add(storeEvent);
}
}
matchingEvent.setEvent(storeEventIndex, null);
}
return returnEventChunk.getFirst();
} else {
for (StreamEvent storeEvent : storeEventSet) {
if (storeEventCloner != null) {
returnEventChunk.add(storeEventCloner.copyStreamEvent(storeEvent));
} else {
returnEventChunk.add(storeEvent);
}
}
return returnEventChunk.getFirst();
}
}
use of org.wso2.siddhi.core.table.holder.IndexedEventHolder in project siddhi by wso2.
the class NonCollectionExecutor method find.
public StreamEvent find(StateEvent matchingEvent, IndexedEventHolder indexedEventHolder, StreamEventCloner storeEventCloner) {
if ((Boolean) expressionExecutor.execute(matchingEvent)) {
ComplexEventChunk<StreamEvent> returnEventChunk = new ComplexEventChunk<StreamEvent>(false);
Collection<StreamEvent> storeEvents = indexedEventHolder.getAllEvents();
for (StreamEvent storeEvent : storeEvents) {
if (storeEventCloner != null) {
returnEventChunk.add(storeEventCloner.copyStreamEvent(storeEvent));
} else {
returnEventChunk.add(storeEvent);
}
}
return returnEventChunk.getFirst();
} else {
return null;
}
}
use of org.wso2.siddhi.core.table.holder.IndexedEventHolder in project siddhi by wso2.
the class NotCollectionExecutor method delete.
@Override
public void delete(StateEvent deletingEvent, IndexedEventHolder indexedEventHolder) {
Collection<StreamEvent> notStreamEvents = notCollectionExecutor.findEvents(deletingEvent, indexedEventHolder);
if (notStreamEvents == null) {
exhaustiveCollectionExecutor.delete(deletingEvent, indexedEventHolder);
} else if (notStreamEvents.size() == 0) {
indexedEventHolder.deleteAll();
} else if (notStreamEvents.size() != indexedEventHolder.getAllEvents().size()) {
Collection<StreamEvent> allEvents = indexedEventHolder.getAllEvents();
Set<StreamEvent> returnSet = new HashSet<StreamEvent>();
for (StreamEvent aEvent : allEvents) {
if (!notStreamEvents.contains(aEvent)) {
returnSet.add(aEvent);
}
}
indexedEventHolder.deleteAll(returnSet);
}
}
Aggregations