示例#1
0
        public void AddColumnInformationTestReverse()
        {
            OutputColumn          target        = new OutputColumn();
            IDTSBufferManager100  bufferManager = new BufferManagerTestImpl();
            IDTSOutput100         output        = new OutputTestImpl();
            IDTSInput100          input         = new InputTestImpl();
            IDTSOutputColumn100   outputColumn;
            IDTSCustomProperty100 customProperty;
            int outputColumnIndex = 0;

            outputColumn         = output.OutputColumnCollection.New();
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.InputColumnLineagePropName;
            customProperty.Value = "#1,#2,#3,#4,#5,#6";
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.HashTypePropName;
            customProperty.Value = MultipleHash.HashTypeEnumerator.RipeMD160;

            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(6, target.Count, "The number of items in the list");
            Assert.AreEqual(1, target[0], "The first input");
            Assert.AreEqual(2, target[1], "The second input");
            Assert.AreEqual(3, target[2], "The third input");
            Assert.AreEqual(4, target[3], "The forth input");
            Assert.AreEqual(5, target[4], "The fifth input");
            Assert.AreEqual(6, target[5], "The sixth input");
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.RipeMD160, target.HashType, "Hash");
            Assert.AreEqual(RIPEMD160.Create().ToString(), target.HashObject.ToString(), "Hash Object");
        }
示例#2
0
 public void SetDataTypeProperties(SSISDataType dataType, int length, int precision, int scale, int codePage)
 {
     if (dataType != SSISDataType.DT_EMPTY)
     {
         OutputColumn.SetDataTypeProperties(DtsUtility.EnumAToEnumB <SSISDataType, DataType>(dataType), length, precision, scale, codePage);
     }
 }
示例#3
0
 public void SetDataTypeProperties(SSISDataTypeWithProperty sSISDataTypeWithProperty)
 {
     if (sSISDataTypeWithProperty.DataType != SSISDataType.DT_EMPTY)
     {
         OutputColumn.SetDataTypeProperties(DtsUtility.EnumAToEnumB <SSISDataType, DataType>(sSISDataTypeWithProperty.DataType), sSISDataTypeWithProperty.Length, sSISDataTypeWithProperty.Precision, sSISDataTypeWithProperty.Scale, sSISDataTypeWithProperty.CodePage);
     }
 }
示例#4
0
        public void OutputColumnIdTest()
        {
            OutputColumn target = new OutputColumn();
            int          actual;

            actual = target.OutputColumnId;
            Assert.AreEqual(0, actual);
        }
示例#5
0
        public void HashTypeTest()
        {
            OutputColumn target = new OutputColumn();

            MultipleHash.HashTypeEnumerator actual;
            actual = target.HashType;
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.None, actual);
        }
示例#6
0
 public void SetDataTypeProperties(SSISDataType dataType, int length, int precision, int scale, int codePage)
 {
     OutputColumn.SetDataTypeProperties(dataType, length, precision, scale, codePage);
     if (_parentComponent.SourceCode.Length > 0)
     {
         _parentComponent.RebuildProject(null);
     }
 }
示例#7
0
        public void HashObjectTest()
        {
            OutputColumn  target = new OutputColumn();
            HashAlgorithm actual;

            actual = target.HashObject;
            Assert.IsNull(actual);
        }
示例#8
0
        public void OutputColumnConstructorTest()
        {
            OutputColumn target = new OutputColumn();

            Assert.AreEqual(MultipleHash.HashTypeEnumerator.None, target.HashType, "Hash");
            Assert.AreEqual(0, target.OutputColumnId, "Target Column ID");
            Assert.AreEqual(0, target.Count, "Count of inputs");
        }
示例#9
0
        public void write_with_no_outputs()
        {
            var chain = new BehaviorChain();
            var tag = new HtmlTag("td");

            var column = new OutputColumn();
            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(" -");
        }
示例#10
0
        public void AddTest()
        {
            OutputColumn           target   = new OutputColumn();
            MHashColumnInformation expected = new MHashColumnInformation(0, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I8);
            int actual;

            actual = target.Add(new MHashColumnInformation(0, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I8));
            Assert.AreEqual(0, actual);
            actual = target.Add(new MHashColumnInformation(0, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I4));
            Assert.AreEqual(1, actual);
        }
示例#11
0
        public void CountTest()
        {
            OutputColumn target = new OutputColumn();
            int          actual;

            actual = target.Count;
            Assert.AreEqual(0, actual);
            target.Add(new MHashColumnInformation(12, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_I2));
            actual = target.Count;
            Assert.AreEqual(1, actual);
        }
示例#12
0
        public void write_with_no_outputs()
        {
            var chain = new BehaviorChain();
            var tag   = new HtmlTag("td");

            var column = new OutputColumn();

            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(" -");
        }
示例#13
0
        public void CountTest()
        {
            OutputColumn target = new OutputColumn();
            int          actual;

            actual = target.Count;
            Assert.AreEqual(0, actual);
            target.Add(12);
            actual = target.Count;
            Assert.AreEqual(1, actual);
        }
示例#14
0
        public void ItemTest()
        {
            OutputColumn target   = new OutputColumn();
            int          index    = 0;
            int          expected = 25;
            int          actual;

            target.Add(0);
            target[index] = expected;
            actual        = target[index];
            Assert.AreEqual(expected, actual);
        }
示例#15
0
        public void AddTest()
        {
            OutputColumn target        = new OutputColumn();
            int          inputColumnId = 10;
            int          expected      = 0;
            int          actual;

            actual = target.Add(inputColumnId);
            Assert.AreEqual(expected, actual);
            actual = target.Add(++inputColumnId);
            Assert.AreEqual(++expected, actual);
        }
示例#16
0
        // sets the column as hidden when not present in the list of visible columns
        private void SetColHiddenProperty(DataColumn cl_dt)
        {
            OutputColumn currentCol = OutputColumns.FirstOrDefault(x => x.Name == cl_dt.ColumnName);

            if (currentCol != null)
            {
                cl_dt.ExtendedProperties.Add("hidden", currentCol.Hidden);
            }
            else
            {
                cl_dt.ExtendedProperties.Add("hidden", false);
            }
        }
示例#17
0
        public void ItemTest()
        {
            OutputColumn           target   = new OutputColumn();
            int                    index    = 0;
            MHashColumnInformation expected = new MHashColumnInformation(25, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BOOL);
            MHashColumnInformation actual;

            target.Add(new MHashColumnInformation(25, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BOOL));
            target[index] = new MHashColumnInformation(25, Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_BOOL);
            actual        = target[index];
            Assert.AreEqual(expected.ColumnDataType, actual.ColumnDataType);
            Assert.AreEqual(expected.ColumnId, actual.ColumnId);
        }
示例#18
0
        public void write_with_a_single_output()
        {
            var chain = new BehaviorChain();
            var node = new RenderJsonNode(typeof (RouteParameter));
            chain.AddToEnd(node);

            var tag = new HtmlTag("td");

            var column = new OutputColumn();
            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(node.Description);
        }
示例#19
0
        public void BufferTest()
        {
            OutputColumn             columnToProcess = null;                                                                              // TODO: Initialize to an appropriate value
            PipelineBuffer           buffer          = null;                                                                              // TODO: Initialize to an appropriate value
            IDTSComponentMetaData100 metaData        = null;                                                                              // TODO: Initialize to an appropriate value
            ManualResetEvent         threadReset     = null;                                                                              // TODO: Initialize to an appropriate value
            PassThreadState          target          = new PassThreadState(columnToProcess, buffer, metaData, threadReset, false, false); // TODO: Initialize to an appropriate value
            PipelineBuffer           expected        = null;                                                                              // TODO: Initialize to an appropriate value
            PipelineBuffer           actual;

            target.Buffer = expected;
            actual        = target.Buffer;
            Assert.AreEqual(expected, actual);
        }
示例#20
0
        public void write_with_a_single_output()
        {
            var chain = new BehaviorChain();
            var node  = new OutputNode(typeof(RouteParameter));

            chain.AddToEnd(node);

            var tag = new HtmlTag("td");

            var column = new OutputColumn();

            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(node.Description);
        }
示例#21
0
        public void PassThreadStateConstructorTest()
        {
            OutputColumn             columnToProcess = new OutputColumn();
            PipelineBuffer           buffer          = null; // TODO: Initialize to an appropriate value
            IDTSComponentMetaData100 metaData        = new ComponentMetaDataTestImpl();
            ManualResetEvent         threadReset     = new ManualResetEvent(true);
            PassThreadState          target          = new PassThreadState(columnToProcess, buffer, metaData, threadReset, true, false);

            Assert.IsNotNull(target);
            Assert.AreEqual(columnToProcess, target.ColumnToProcess);
            Assert.AreEqual(metaData, target.MetaData);
            Assert.AreEqual(threadReset, target.ThreadReset);
            Assert.AreEqual(true, target.SafeNullHandling);
            Assert.AreEqual(false, target.MillisecondHandling);
        }
示例#22
0
        public void write_with_multiple_outputs()
        {
            var chain = new BehaviorChain();
            var json = new RenderJsonNode(typeof (RouteParameter));
            chain.AddToEnd(json);

            var text = new RenderTextNode<RouteParameter>();
            chain.AddToEnd(text);

            var tag = new HtmlTag("td");

            var column = new OutputColumn();
            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(json.Description + ", " + text.Description);
        }
示例#23
0
        public void AddColumnInformationTestErrors()
        {
            OutputColumn          target        = new OutputColumn();
            IDTSBufferManager100  bufferManager = new BufferManagerTestImpl();
            IDTSOutput100         output        = new OutputTestImpl();
            IDTSInput100          input         = new InputTestImpl();
            IDTSOutputColumn100   outputColumn;
            IDTSCustomProperty100 customProperty;
            int outputColumnIndex = 0;

            outputColumn         = output.OutputColumnCollection.New();
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.HashTypePropName;
            customProperty.Value = MultipleHash.HashTypeEnumerator.MD5;
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.InputColumnLineagePropName;
            customProperty.Value = "#1,#2,#3,#4,#5,#6";

            try
            {
                target.AddColumnInformation(null, output, input, outputColumnIndex);
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Value cannot be null.\r\nParameter name: bufferManager", ex.Message);
            }

            try
            {
                target.AddColumnInformation(bufferManager, null, input, outputColumnIndex);
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Value cannot be null.\r\nParameter name: output", ex.Message);
            }
            try
            {
                target.AddColumnInformation(bufferManager, output, null, outputColumnIndex);
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Value cannot be null.\r\nParameter name: input", ex.Message);
            }
        }
示例#24
0
        public void write_with_multiple_outputs()
        {
            var chain = new BehaviorChain();
            var json  = new OutputNode(typeof(RouteParameter));

            chain.AddToEnd(json);

            var text = new RenderTextNode <RouteParameter>();

            chain.AddToEnd(text);

            var tag = new HtmlTag("td");

            var column = new OutputColumn();

            column.WriteBody(chain, null, tag);

            tag.Text().ShouldEqual(json.Description + ", " + text.Description);
        }
示例#25
0
        private void buttonAddColumn_Click(object sender, RoutedEventArgs e)
        {
            if (comboBoxColumn.SelectedIndex >= 0 && int.TryParse(textBoxColumnNumber.Text, out int number))
            {
                number--;
                if (number < 0)
                {
                    number = 0;
                }
                else if (number > FileSetting.Output.Count)
                {
                    number = FileSetting.Output.Count;
                }

                var item = new  OutputColumn();
                if (FileSetting.Output.Any(x => x.Number == number))
                {
                    item = FileSetting.Output.First(x => x.Number == number);
                }
                else
                {
                    FileSetting.Output.Add(item);
                }

                item.IsEmptyTest  = checkBoxtestEmpty.IsChecked == true;
                item.SourceNumber = comboBoxColumn.SelectedIndex;
                item.SourceName   = GetSourceName();
                item.Name         = textBoxColumnName.Text;
                item.Number       = number;

                RefreshGrid();
                checkBoxFullRow.IsChecked    = false;
                checkBoxtestEmpty.IsChecked  = false;
                comboBoxColumn.SelectedIndex = -1;
                textBoxColumnName.Text       = string.Empty;
                textBoxColumnNumber.Text     = (FileSetting.Output.Count + 1).ToString();
            }
            if (dataGridColumns.SelectedItems != null && dataGridColumns.SelectedItems.Count > 0)
            {
                dataGridColumns.SelectedItem = null;
            }
        }
示例#26
0
        public void AddColumnInformationTestHashTypes()
        {
            OutputColumn          target        = new OutputColumn();
            IDTSBufferManager100  bufferManager = new BufferManagerTestImpl();
            IDTSOutput100         output        = new OutputTestImpl();
            IDTSInput100          input         = new InputTestImpl();
            IDTSOutputColumn100   outputColumn;
            IDTSCustomProperty100 customProperty;
            int outputColumnIndex = 0;

            outputColumn         = output.OutputColumnCollection.New();
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.InputColumnLineagePropName;
            customProperty.Value = "#1,#2,#3,#4,#5,#6";
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.OutputColumnOutputTypePropName;
            customProperty.Value = MultipleHash.OutputTypeEnumerator.Binary;
            customProperty       = outputColumn.CustomPropertyCollection.New();
            customProperty.Name  = Utility.HashTypePropName;
            customProperty.Value = MultipleHash.HashTypeEnumerator.SHA1;

            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.SHA1, target.HashType, "Hash");
            Assert.AreEqual(SHA1.Create().ToString(), target.HashObject.ToString(), "Hash Object");
            customProperty.Value = MultipleHash.HashTypeEnumerator.SHA256;
            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.SHA256, target.HashType, "Hash");
            Assert.AreEqual(SHA256.Create().ToString(), target.HashObject.ToString(), "Hash Object");
            customProperty.Value = MultipleHash.HashTypeEnumerator.SHA384;
            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.SHA384, target.HashType, "Hash");
            Assert.AreEqual(SHA384.Create().ToString(), target.HashObject.ToString(), "Hash Object");
            customProperty.Value = MultipleHash.HashTypeEnumerator.SHA512;
            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.SHA512, target.HashType, "Hash");
            Assert.AreEqual(SHA512.Create().ToString(), target.HashObject.ToString(), "Hash Object");
            customProperty.Value = MultipleHash.HashTypeEnumerator.None;
            target.AddColumnInformation(bufferManager, output, input, outputColumnIndex);
            Assert.AreEqual(MultipleHash.HashTypeEnumerator.None, target.HashType, "Hash");
            Assert.AreEqual(null, target.HashObject, "Hash Object");
        }
示例#27
0
 private string GetMethodName(OutputColumn column)
 {
     if (column.ColumnType.Name == "Byte[]")
     {
         return("GetBytes");
     }
     if (column.ColumnType.Name == "Byte")
     {
         return("GetByte");
     }
     if (column.ColumnType.Name == "Char")
     {
         return("GetChar");
     }
     if (column.ColumnType.Name == "Char[]")
     {
         return("GetChars");
     }
     if (column.ColumnType.Name == "Object")
     {
         return("GetValue");
     }
     return("Get" + column.ColumnType.Name);
 }
示例#28
0
        public List <OutputColumn> GetOutPutColumns(string SPName, List <ProcedureParameter> procedureParameters)
        {
            var command = dbContext.CreateCommand();

            command.CommandType = CommandType.StoredProcedure;
            command.CommandText = SPName;

            foreach (ProcedureParameter parameter in procedureParameters)
            {
                if (parameter.Value == null)
                {
                    continue;
                }

                DbType dbType = GetDbType(parameter.DataType);
                Type   type   = GetType(dbType);
                if (type == typeof(bool))
                {
                    if (parameter.Value.ToString() == "1")
                    {
                        parameter.Value = true;
                    }
                    else if (parameter.Value.ToString() == "0")
                    {
                        parameter.Value = false;
                    }
                }
                if (type == typeof(Guid))
                {
                    parameter.Value = Guid.Parse(parameter.Value.ToString());
                }
                if (type == typeof(string))
                {
                    parameter.Value = parameter.Value.ToString().Trim();
                }
                command.AddParameter(parameter.Name, Convert.ChangeType(parameter.Value, GetType(dbType)), dbType);
            }
            command.OpenConnection();
            var reader = command.OpenReader();
            List <OutputColumn> Columns = new List <OutputColumn>();

            if (reader.Read())
            {
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    OutputColumn column = new OutputColumn();
                    column.HeaderName   = reader.GetName(i);
                    column.ColumnDBType = reader.GetDataTypeName(i);
                    column.ColumnType   = reader.GetFieldType(i);

                    using (var provider = new CSharpCodeProvider())
                    {
                        var typeRef = new CodeTypeReference(column.ColumnType);
                        column.Type = provider.GetTypeOutput(typeRef);
                    }
                    if (column.ColumnType == typeof(DateTime))
                    {
                        column.Type = column.ColumnType.Name;
                    }
                    if (column.ColumnType == typeof(Guid))
                    {
                        column.Type = column.ColumnType.Name;
                    }
                    Columns.Add(column);
                }
            }
            reader.Close();
            return(Columns);
        }
 public CustomColumn(OutputColumn column)
 {
     Column = column;
 }
示例#30
0
 public VisibleColumn(OutputColumn column)
 {
     _column = column;
 }
 public void SetDataTypeProperties(SSISDataType dataType, int length, int precision, int scale, int codePage)
 {
     OutputColumn.SetDataTypeProperties(dataType, length, precision, scale, codePage);
 }
        public ActionResult RefreshQueryResultPartial(int page = 1, string sort = "", string sortdir = "")
        {
            ViewBag.CurrentPage = page;
            object model = null;

            var queryBuilder     = SessionStore.Current.QueryBuilder;
            var queryTransformer = SessionStore.Current.QueryTransformer;

            queryTransformer.Sortings.Clear();
            if (string.IsNullOrEmpty(sortdir))
            {
                sortdir = "ASC";
            }
            OutputColumn column = null;

            if (!string.IsNullOrEmpty(sort))
            {
                column = queryTransformer.Columns.FirstOrDefault(c => c.Name == sort && c.IsSupportSorting);
            }
            if (column == null)
            {
                column = queryTransformer.Columns.FirstOrDefault(c => !string.IsNullOrEmpty(c.Name) && c.IsSupportSorting);
            }
            if (column != null)
            {
                queryTransformer.OrderBy(column, sortdir == "ASC");
            }

            queryTransformer.Take(PageSize.ToString()).Skip(((page - 1) * PageSize).ToString());

            if (queryBuilder.MetadataProvider != null)
            {
                var cmd = (OleDbCommand)queryBuilder.MetadataProvider.Connection.CreateCommand();
                cmd.CommandTimeout = 30;
                ViewBag.Sql        = cmd.CommandText = queryTransformer.Sql;

                try
                {
                    if (cmd.Connection.State == ConnectionState.Open)
                    {
                        cmd.Connection.Close();
                    }

                    foreach (var paramDto in SessionStore.Current.ClientQueryParams)
                    {
                        cmd.Parameters.AddWithValue(paramDto.Name, paramDto.Value);
                    }

                    var adapter = new OleDbDataAdapter(cmd);
                    var dataset = new DataSet();
                    adapter.Fill(dataset, "QueryResult");
                    model = ConvertToDictionary(dataset.Tables["QueryResult"]);

                    ViewBag.RowCount = GetRowCount(queryBuilder, queryTransformer);
                }
                catch (Exception ex)
                {
                    string message = "Execute query error!";
                    Logger.Error(message, ex);
                    ViewBag.Message = message + " " + ex.Message;
                }
            }

            return(PartialView("_QueryResultPartial", model));
        }
示例#33
0
        public void ReadEvent(PublishedEvent evt)
        {
            Prepare();
            //
            // Read event data
            //
            lock (eventsTable)
            {
                foreach (PublishedEventField fld in evt.Fields)
                {
                    if (
                        !eventsTable.Columns.Contains(fld.Name) &&
                        (
                            OutputColumns.Count == 0 ||
                            OutputColumns.Exists(x => x.Name == fld.Name) ||
                            OutputColumns.Exists(x => x.Calculated && Regex.IsMatch(x.Name, @"\s+AS\s+.*" + fld.Name, RegexOptions.IgnoreCase)) ||
                            (Filter != null && Filter.Contains(fld.Name))
                        )
                        )
                    {
                        OutputColumn col = OutputColumns.FirstOrDefault(x => x.Name == fld.Name);

                        if (col == null)
                        {
                            col = new OutputColumn()
                            {
                                Name       = fld.Name,
                                ColumnType = OutputColumn.ColType.Column
                            };
                        }

                        Type       t;
                        DataColumn dc;
                        bool       disallowed = false;
                        if (DataTableTSQLAdapter.AllowedDataTypes.Contains(fld.Type.ToString()))
                        {
                            t = fld.Type;
                        }
                        else
                        {
                            t = Type.GetType("System.String");
                        }
                        dc = eventsTable.Columns.Add(fld.Name, t);
                        dc.ExtendedProperties.Add("subtype", "field");
                        dc.ExtendedProperties.Add("disallowedtype", disallowed);
                        dc.ExtendedProperties.Add("calculated", false);
                        dc.ExtendedProperties.Add("coltype", col.ColumnType);
                        SetColHiddenProperty(dc);
                    }
                }

                foreach (PublishedAction act in evt.Actions)
                {
                    if (
                        !eventsTable.Columns.Contains(act.Name) &&
                        (
                            OutputColumns.Count == 0 ||
                            OutputColumns.Exists(x => x.Name == act.Name) ||
                            OutputColumns.Exists(x => x.Calculated && Regex.IsMatch(x.Name, @"\s+AS\s+.*" + act.Name, RegexOptions.IgnoreCase))
                        )
                        )
                    {
                        OutputColumn col = OutputColumns.FirstOrDefault(x => x.Name == act.Name);

                        if (col == null)
                        {
                            col = new OutputColumn()
                            {
                                Name       = act.Name,
                                ColumnType = OutputColumn.ColType.Column
                            };
                        }

                        Type       t;
                        DataColumn dc;
                        bool       disallowed = false;
                        if (DataTableTSQLAdapter.AllowedDataTypes.Contains(act.Type.ToString()))
                        {
                            t = act.Type;
                        }
                        else
                        {
                            t = Type.GetType("System.String");
                        }
                        dc = eventsTable.Columns.Add(act.Name, t);
                        dc.ExtendedProperties.Add("subtype", "action");
                        dc.ExtendedProperties.Add("disallowedtype", disallowed);
                        dc.ExtendedProperties.Add("calculated", false);
                        dc.ExtendedProperties.Add("coltype", col.ColumnType);
                        SetColHiddenProperty(dc);
                    }
                }


                // add calculated columns
                for (int i = 0; i < OutputColumns.Count; i++)
                {
                    string outCol = OutputColumns[i].Name;
                    if (!eventsTable.Columns.Contains(outCol))
                    {
                        if (Regex.IsMatch(outCol, @"\s+AS\s+", RegexOptions.IgnoreCase))
                        {
                            var    tokens        = Regex.Split(outCol, @"\s+AS\s+", RegexOptions.IgnoreCase);
                            string colName       = tokens[0];
                            string colDefinition = tokens[1];

                            DataColumn dc;
                            dc            = eventsTable.Columns.Add();
                            dc.ColumnName = colName;
                            dc.Expression = colDefinition;
                            dc.ExtendedProperties.Add("subtype", "calculated");
                            dc.ExtendedProperties.Add("disallowedtype", false);
                            dc.ExtendedProperties.Add("calculated", true);
                            dc.ExtendedProperties.Add("coltype", OutputColumns[i].ColumnType);
                            SetColHiddenProperty(dc);
                            //change OutputColumns
                            OutputColumns[i].Name = colName;
                        }
                    }
                }
            }

            DataTable tmpTab = eventsTable.Clone();
            DataRow   row    = tmpTab.NewRow();

            if (row.Table.Columns.Contains("name"))
            {
                row.SetField("name", evt.Name);
            }
            if (row.Table.Columns.Contains("collection_time"))
            {
                row.SetField("collection_time", evt.Timestamp.LocalDateTime);
            }

            foreach (PublishedEventField fld in evt.Fields)
            {
                if (row.Table.Columns.Contains(fld.Name))
                {
                    if ((bool)row.Table.Columns[fld.Name].ExtendedProperties["disallowedtype"])
                    {
                        row.SetField(fld.Name, fld.Value.ToString());
                    }
                    else
                    {
                        row.SetField(fld.Name, fld.Value);
                    }
                }
            }

            foreach (PublishedAction act in evt.Actions)
            {
                if (row.Table.Columns.Contains(act.Name))
                {
                    if ((bool)row.Table.Columns[act.Name].ExtendedProperties["disallowedtype"])
                    {
                        row.SetField(act.Name, act.Value.ToString());
                    }
                    else
                    {
                        row.SetField(act.Name, act.Value);
                    }
                }
            }

            if (!String.IsNullOrEmpty(Filter))
            {
                DataView dv = new DataView(tmpTab);
                dv.RowFilter = Filter;

                tmpTab.Rows.Add(row);

                lock (eventsTable)
                {
                    foreach (DataRow dr in dv.ToTable().Rows)
                    {
                        eventsTable.ImportRow(dr);
                    }
                }
            }
            else
            {
                tmpTab.Rows.Add(row);
                lock (eventsTable)
                {
                    foreach (DataRow dr in tmpTab.Rows)
                    {
                        eventsTable.ImportRow(dr);
                    }
                }
            }
        }