Search in sources :

Example 11 with OperationNotSupportedException

use of io.siddhi.core.exception.OperationNotSupportedException in project siddhi by wso2.

the class StdDevAttributeAggregatorExecutor method init.

/**
 * The initialization method for FunctionExecutor
 *
 * @param attributeExpressionExecutors are the executors of each attributes in the function
 * @param processingMode               query processing mode
 * @param outputExpectsExpiredEvents   is expired events sent as output
 * @param configReader                 this hold the {@link StdDevAttributeAggregatorExecutor} configuration reader.
 * @param siddhiQueryContext           Siddhi query runtime context
 */
@Override
protected StateFactory<AggregatorState> init(ExpressionExecutor[] attributeExpressionExecutors, ProcessingMode processingMode, boolean outputExpectsExpiredEvents, ConfigReader configReader, SiddhiQueryContext siddhiQueryContext) {
    if (attributeExpressionExecutors.length != 1) {
        throw new OperationNotSupportedException("stdDev aggregator has to have exactly 1 parameter, currently " + attributeExpressionExecutors.length + " parameters provided");
    }
    returnType = Attribute.Type.DOUBLE;
    Attribute.Type type = attributeExpressionExecutors[0].getReturnType();
    return () -> {
        switch(type) {
            case INT:
                return new StdDevAttributeAggregatorStateInt();
            case LONG:
                return new StdDevAttributeAggregatorStateLong();
            case FLOAT:
                return new StdDevAttributeAggregatorStateFloat();
            case DOUBLE:
                return new StdDevAttributeAggregatorStateDouble();
            default:
                throw new OperationNotSupportedException("stdDev not supported for " + returnType);
        }
    };
}
Also used : OperationNotSupportedException(io.siddhi.core.exception.OperationNotSupportedException) Attribute(io.siddhi.query.api.definition.Attribute) ReturnAttribute(io.siddhi.annotation.ReturnAttribute)

Example 12 with OperationNotSupportedException

use of io.siddhi.core.exception.OperationNotSupportedException in project siddhi by wso2.

the class SingleInputStreamParser method parseInputStream.

/**
 * Parse single InputStream and return SingleStreamRuntime
 *
 * @param inputStream                 single input stream to be parsed
 * @param variableExpressionExecutors List to hold VariableExpressionExecutors to update after query parsing
 * @param streamDefinitionMap         Stream Definition Map
 * @param tableDefinitionMap          Table Definition Map
 * @param windowDefinitionMap         window definition map
 * @param aggregationDefinitionMap    aggregation definition map
 * @param tableMap                    Table Map
 * @param metaComplexEvent            MetaComplexEvent
 * @param processStreamReceiver       ProcessStreamReceiver
 * @param supportsBatchProcessing     supports batch processing
 * @param outputExpectsExpiredEvents  is expired events sent as output
 * @param findToBeExecuted            find will be executed in the steam stores
 * @param multiValue                  event has the possibility to produce multiple values
 * @param siddhiQueryContext          @return SingleStreamRuntime
 */
public static SingleStreamRuntime parseInputStream(SingleInputStream inputStream, List<VariableExpressionExecutor> variableExpressionExecutors, Map<String, AbstractDefinition> streamDefinitionMap, Map<String, AbstractDefinition> tableDefinitionMap, Map<String, AbstractDefinition> windowDefinitionMap, Map<String, AbstractDefinition> aggregationDefinitionMap, Map<String, Table> tableMap, MetaComplexEvent metaComplexEvent, ProcessStreamReceiver processStreamReceiver, boolean supportsBatchProcessing, boolean outputExpectsExpiredEvents, boolean findToBeExecuted, boolean multiValue, SiddhiQueryContext siddhiQueryContext) {
    Processor processor = null;
    EntryValveProcessor entryValveProcessor = null;
    ProcessingMode processingMode = ProcessingMode.BATCH;
    boolean first = true;
    MetaStreamEvent metaStreamEvent;
    if (metaComplexEvent instanceof MetaStateEvent) {
        metaStreamEvent = new MetaStreamEvent();
        ((MetaStateEvent) metaComplexEvent).addEvent(metaStreamEvent);
        initMetaStreamEvent(inputStream, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, multiValue, metaStreamEvent);
    } else {
        metaStreamEvent = (MetaStreamEvent) metaComplexEvent;
        initMetaStreamEvent(inputStream, streamDefinitionMap, tableDefinitionMap, windowDefinitionMap, aggregationDefinitionMap, multiValue, metaStreamEvent);
    }
    // A window cannot be defined for a window stream
    if (!inputStream.getStreamHandlers().isEmpty() && windowDefinitionMap != null && windowDefinitionMap.containsKey(inputStream.getStreamId())) {
        for (StreamHandler handler : inputStream.getStreamHandlers()) {
            if (handler instanceof Window) {
                throw new OperationNotSupportedException("Cannot create " + ((Window) handler).getName() + " " + "window for the window stream " + inputStream.getStreamId());
            }
        }
    }
    if (!inputStream.getStreamHandlers().isEmpty()) {
        for (StreamHandler handler : inputStream.getStreamHandlers()) {
            Processor currentProcessor = generateProcessor(handler, metaComplexEvent, variableExpressionExecutors, tableMap, supportsBatchProcessing, outputExpectsExpiredEvents, findToBeExecuted, siddhiQueryContext);
            if (currentProcessor instanceof SchedulingProcessor) {
                if (entryValveProcessor == null) {
                    entryValveProcessor = new EntryValveProcessor(siddhiQueryContext.getSiddhiAppContext());
                    if (first) {
                        processor = entryValveProcessor;
                        first = false;
                    } else {
                        processor.setToLast(entryValveProcessor);
                    }
                }
                Scheduler scheduler = SchedulerParser.parse(entryValveProcessor, siddhiQueryContext);
                ((SchedulingProcessor) currentProcessor).setScheduler(scheduler);
            }
            if (currentProcessor instanceof AbstractStreamProcessor) {
                processingMode = ProcessingMode.findUpdatedProcessingMode(processingMode, ((AbstractStreamProcessor) currentProcessor).getProcessingMode());
            }
            if (first) {
                processor = currentProcessor;
                first = false;
            } else {
                processor.setToLast(currentProcessor);
            }
        }
    }
    metaStreamEvent.initializeOnAfterWindowData();
    return new SingleStreamRuntime(processStreamReceiver, processor, processingMode, metaComplexEvent);
}
Also used : Window(io.siddhi.query.api.execution.query.input.handler.Window) OperationNotSupportedException(io.siddhi.core.exception.OperationNotSupportedException) FilterProcessor(io.siddhi.core.query.processor.filter.FilterProcessor) WindowProcessor(io.siddhi.core.query.processor.stream.window.WindowProcessor) EntryValveProcessor(io.siddhi.core.query.input.stream.single.EntryValveProcessor) AbstractStreamProcessor(io.siddhi.core.query.processor.stream.AbstractStreamProcessor) StreamProcessor(io.siddhi.core.query.processor.stream.StreamProcessor) StreamFunctionProcessor(io.siddhi.core.query.processor.stream.function.StreamFunctionProcessor) Processor(io.siddhi.core.query.processor.Processor) SchedulingProcessor(io.siddhi.core.query.processor.SchedulingProcessor) AbstractStreamProcessor(io.siddhi.core.query.processor.stream.AbstractStreamProcessor) Scheduler(io.siddhi.core.util.Scheduler) SingleStreamRuntime(io.siddhi.core.query.input.stream.single.SingleStreamRuntime) ProcessingMode(io.siddhi.core.query.processor.ProcessingMode) MetaStateEvent(io.siddhi.core.event.state.MetaStateEvent) SchedulingProcessor(io.siddhi.core.query.processor.SchedulingProcessor) StreamHandler(io.siddhi.query.api.execution.query.input.handler.StreamHandler) EntryValveProcessor(io.siddhi.core.query.input.stream.single.EntryValveProcessor) MetaStreamEvent(io.siddhi.core.event.stream.MetaStreamEvent)

Aggregations

OperationNotSupportedException (io.siddhi.core.exception.OperationNotSupportedException)12 MetaStreamEvent (io.siddhi.core.event.stream.MetaStreamEvent)5 MetaStateEvent (io.siddhi.core.event.state.MetaStateEvent)3 ReturnAttribute (io.siddhi.annotation.ReturnAttribute)2 StreamEvent (io.siddhi.core.event.stream.StreamEvent)2 SiddhiAppCreationException (io.siddhi.core.exception.SiddhiAppCreationException)2 ExpressionExecutor (io.siddhi.core.executor.ExpressionExecutor)2 VariableExpressionExecutor (io.siddhi.core.executor.VariableExpressionExecutor)2 EntryValveProcessor (io.siddhi.core.query.input.stream.single.EntryValveProcessor)2 SingleStreamRuntime (io.siddhi.core.query.input.stream.single.SingleStreamRuntime)2 Processor (io.siddhi.core.query.processor.Processor)2 WindowProcessor (io.siddhi.core.query.processor.stream.window.WindowProcessor)2 Attribute (io.siddhi.query.api.definition.Attribute)2 SiddhiAppContext (io.siddhi.core.config.SiddhiAppContext)1 ComplexEventChunk (io.siddhi.core.event.ComplexEventChunk)1 Operation (io.siddhi.core.event.stream.Operation)1 StreamEventCloner (io.siddhi.core.event.stream.StreamEventCloner)1 StreamEventFactory (io.siddhi.core.event.stream.StreamEventFactory)1 ZeroStreamEventConverter (io.siddhi.core.event.stream.converter.ZeroStreamEventConverter)1 SnapshotableStreamEventQueue (io.siddhi.core.event.stream.holder.SnapshotableStreamEventQueue)1