use of org.ballerinalang.siddhi.core.util.collection.operator.MatchingMetaInfoHolder in project ballerina by ballerina-lang.
the class MatcherParser method constructMatchingMetaStateHolder.
public static MatchingMetaInfoHolder constructMatchingMetaStateHolder(MetaComplexEvent matchingMetaComplexEvent, int defaultStreamEventIndex, AbstractDefinition candsidateDefinition, int currentState) {
int storeEventIndex = 0;
MetaStreamEvent tableStreamEvent = new MetaStreamEvent();
tableStreamEvent.setEventType(MetaStreamEvent.EventType.TABLE);
tableStreamEvent.addInputDefinition(candsidateDefinition);
for (Attribute attribute : candsidateDefinition.getAttributeList()) {
tableStreamEvent.addOutputData(attribute);
}
MetaStateEvent metaStateEvent = null;
if (matchingMetaComplexEvent instanceof MetaStreamEvent) {
metaStateEvent = new MetaStateEvent(2);
metaStateEvent.addEvent(((MetaStreamEvent) matchingMetaComplexEvent));
metaStateEvent.addEvent(tableStreamEvent);
storeEventIndex = 1;
defaultStreamEventIndex = 0;
if (currentState == UNKNOWN_STATE) {
currentState = defaultStreamEventIndex;
}
} else {
MetaStreamEvent[] metaStreamEvents = ((MetaStateEvent) matchingMetaComplexEvent).getMetaStreamEvents();
// for join
for (; storeEventIndex < metaStreamEvents.length; storeEventIndex++) {
MetaStreamEvent metaStreamEvent = metaStreamEvents[storeEventIndex];
if (storeEventIndex != defaultStreamEventIndex && metaStreamEvent.getLastInputDefinition().equalsIgnoreAnnotations(candsidateDefinition)) {
metaStateEvent = ((MetaStateEvent) matchingMetaComplexEvent);
break;
}
}
if (metaStateEvent == null) {
metaStateEvent = new MetaStateEvent(metaStreamEvents.length + 1);
for (MetaStreamEvent metaStreamEvent : metaStreamEvents) {
metaStateEvent.addEvent(metaStreamEvent);
}
metaStateEvent.addEvent(tableStreamEvent);
storeEventIndex = metaStreamEvents.length;
}
}
return new MatchingMetaInfoHolder(metaStateEvent, defaultStreamEventIndex, storeEventIndex, metaStateEvent.getMetaStreamEvent(defaultStreamEventIndex).getLastInputDefinition(), candsidateDefinition, currentState);
}
Aggregations