Пример #1
0
        /// <summary>Render to string. </summary>
        /// <param name="writer">to render</param>
        /// <param name="formatter">for formatting</param>
        public void ToEPL(TextWriter writer, EPStatementFormatter formatter)
        {
            writer.Write(OperatorName);

            if (Input.IsNotEmpty())
            {
                writer.Write("(");
                String delimiter = "";
                foreach (DataFlowOperatorInput inputItem in Input)
                {
                    writer.Write(delimiter);
                    WriteInput(inputItem, writer);
                    if (inputItem.OptionalAsName != null)
                    {
                        writer.Write(" as ");
                        writer.Write(inputItem.OptionalAsName);
                    }
                    delimiter = ", ";
                }
                writer.Write(")");
            }

            if (Output.IsNotEmpty())
            {
                writer.Write(" -> ");
                String delimiter = "";
                foreach (DataFlowOperatorOutput outputItem in Output)
                {
                    writer.Write(delimiter);
                    writer.Write(outputItem.StreamName);
                    WriteTypes(outputItem.TypeInfo, writer);
                    delimiter = ", ";
                }
            }

            if (Parameters.IsEmpty())
            {
                writer.Write(" {}");
                formatter.EndDataFlowOperatorDetails(writer);
            }
            else
            {
                writer.Write(" {");
                formatter.BeginDataFlowOperatorDetails(writer);
                String delimiter = ",";
                int    count     = 0;
                foreach (DataFlowOperatorParameter parameter in Parameters)
                {
                    parameter.ToEPL(writer);
                    count++;
                    if (Parameters.Count > count)
                    {
                        writer.Write(delimiter);
                        formatter.EndDataFlowOperatorConfig(writer);
                    }

                    formatter.EndDataFlowOperatorConfig(writer);
                }

                writer.Write("}");
                formatter.EndDataFlowOperatorDetails(writer);
            }
        }