示例#1
0
        } // End Function GetValue

        private static System.Collections.Generic.Dictionary <string, object> ProcessObject(Newtonsoft.Json.Linq.JToken json)
        {
            if (json == null)
            {
                throw new System.ArgumentNullException(nameof(json));
            }

            System.Collections.Generic.Dictionary <string, object> lss = new System.Collections.Generic.Dictionary <string, object>(System.StringComparer.OrdinalIgnoreCase);
            Newtonsoft.Json.Linq.JObject jo = (Newtonsoft.Json.Linq.JObject)json;

            foreach (System.Collections.Generic.KeyValuePair <string, Newtonsoft.Json.Linq.JToken> kvp in jo)
            {
                string name  = kvp.Key;
                object value = GetValue(kvp.Value);
                System.Console.WriteLine(value);

                if (ParameterNameHelper.IsInvalid(name))
                {
                    continue;
                }

                lss.Add(name, value);
            }

            return(lss);
        } // ProcessObject
        public Dictionary <string, string> GetColumnNamesAndTypes(ITableInfo tableInfo, List <string> columnNames)
        {
            var columnTypesTemplate = new GetColumnTypes(ParameterNameHelper.RemoveQuotationMarks(tableInfo.SchemaName),
                                                         ParameterNameHelper.RemoveQuotationMarks(tableInfo.TableName), columnNames);
            var columnTypesQuery = columnTypesTemplate.TransformText();

            //Console.WriteLine(columnTypesQuery);
            DataTable columnTypesTable;

            try
            {
                columnTypesTable = _queryHelper.ExecuteQueryWithoutParams(tableInfo.DbConnectionString, columnTypesQuery);
            }
            catch (Exception ex)
            {
                throw new ColumnTypesException("An error happened while trying to get column types.", ex);
            }

            var columnsAndTypes = new Dictionary <string, string>();

            foreach (var rowObject in columnTypesTable.Rows)
            {
                var row = (DataRow)rowObject;
                columnsAndTypes.Add((string)row[GetColumnTypes.columnName],
                                    (string)row[GetColumnTypes.columnType]);
            }

            return(columnsAndTypes);
        }
示例#3
0
        GetParameters(Microsoft.AspNetCore.Http.HttpContext context)
        {
            // Note:
            // Reverse sequence: last inserted item is prefered item...
            // Missing server-variables
            // Missing cookies
            System.Collections.Generic.Dictionary <string, object> dict = null;

            //foreach (System.Collections.Generic.KeyValuePair<string
            //    , Microsoft.Extensions.Primitives.StringValues> kvp in context.Request.Headers)
            //{
            //    dict[kvp.Key] = kvp.Value;
            //} // Next kvp


            System.Collections.Generic.List <System.Collections.Generic.Dictionary <string, object> > lss = GetJsonObjectAsParameterList(context);
            if (lss != null && lss.Count == 1)
            {
                dict = lss[0];
            }
            else
            {
                dict = new System.Collections.Generic.Dictionary <string, object>
                           (System.StringComparer.InvariantCultureIgnoreCase);
            }


            if (context.Request.HasFormContentType)
            {
                foreach (System.Collections.Generic.KeyValuePair <string
                                                                  , Microsoft.Extensions.Primitives.StringValues> kvp in context.Request.Form)
                {
                    if (ParameterNameHelper.IsInvalid(kvp.Key))
                    {
                        continue;
                    }

                    dict[kvp.Key] = System.Convert.ToString(kvp.Value);
                } // Next kvp
            }     // End if (context.Request.HasFormContentType)

            if (context.Request.QueryString.HasValue)
            {
                foreach (System.Collections.Generic.KeyValuePair <string
                                                                  , Microsoft.Extensions.Primitives.StringValues> kvp in context.Request.Query)
                {
                    if (ParameterNameHelper.IsInvalid(kvp.Key))
                    {
                        continue;
                    }

                    dict[kvp.Key] = System.Convert.ToString(kvp.Value);
                } // Next kvp
            }     // End if (context.Request.QueryString.HasValue)

            return(dict);
        }
示例#4
0
        public override bool AreTheParamsValid(string connectionString, TableConfig tableConfig)
        {
            bool doConstantScrambledDuplicatesExist;
            bool doAllColumnsExist;
            bool doAllPairedColumnsInsideExist;
            bool doAllPairedColumnsOutsideExist;
            bool isThereAPrimaryKeyConflict;
            bool isThereAUniqueConstraintConflict;

            DataTable schemaTable;

            try
            {
                schemaTable = GetTableSchema(connectionString, tableConfig.FullTableName);
            }
            catch (SqlException ex)
            {
                Log.Error($"Error while checking the parameters of table: {tableConfig.FullTableName}. " +
                          $"Connection string: {connectionString}. " +
                          $"The mapped database {connectionString} or table {tableConfig.FullTableName} doesn't exist or it is unreachable. " +
                          $"Error message: {ex.Message}");
                return(false);
            }


            var loggingInfo = new LoggingInfo {
                ConnectionString = connectionString, TableNameWithSchema = tableConfig.FullTableName
            };

            var constantColumns = tableConfig.ConstantColumns?.Select(c => c.Name)
                                  .Select(c => ParameterNameHelper.RemoveParenthesises(c)) ?? new List <string>();

            var scrambledColumns = tableConfig.ScrambledColumns?.Select(c => c.Name)
                                   .Select(c => ParameterNameHelper.RemoveParenthesises(c)) ?? new List <string>();

            var pairedColumns = tableConfig.PairedColumnsInsideTable?
                                .Select(cl =>
                                        cl.Select(c => ParameterNameHelper.RemoveParenthesises(c)).ToList()).ToList() ?? new List <List <string> >();

            var allColumns = constantColumns.Concat(scrambledColumns);

            doConstantScrambledDuplicatesExist = DoConstantScrambledDuplicatesExist(loggingInfo, scrambledColumns, constantColumns);
            doAllColumnsExist                = DoAllColumnsExist(schemaTable, loggingInfo, allColumns);
            doAllPairedColumnsInsideExist    = DoAllPairedColumnsInsideExist(loggingInfo, schemaTable, pairedColumns);
            doAllPairedColumnsOutsideExist   = DoAllPairedColumnsOutsideExist(connectionString, tableConfig);
            isThereAPrimaryKeyConflict       = IsThereAPrimaryKeyConflict(schemaTable, loggingInfo, allColumns);
            isThereAUniqueConstraintConflict = IsThereAUniqueConstraintConflict(schemaTable, loggingInfo, allColumns);

            return(!doConstantScrambledDuplicatesExist && doAllColumnsExist && doAllPairedColumnsInsideExist &&
                   doAllPairedColumnsOutsideExist && !isThereAPrimaryKeyConflict && !isThereAUniqueConstraintConflict);
        }
示例#5
0
        protected override TableConfig NormalizeTableConfigParameters(TableConfig tableConfig)
        {
            var normalizedTableConfig = new TableConfig
            {
                ConstantColumns = tableConfig.ConstantColumns?.Select(c =>
                                                                      new ConstantColumnConfig {
                    Name = ParameterNameHelper.RemoveParenthesises(c.Name), Value = c.Value
                }).ToList()
                                  ?? new List <ConstantColumnConfig>(),

                ScrambledColumns = tableConfig.ScrambledColumns?.Select(c =>
                                                                        new ScrambledColumnConfig {
                    Name = ParameterNameHelper.RemoveParenthesises(c.Name)
                }).ToList()
                                   ?? new List <ScrambledColumnConfig>(),

                PairedColumnsInsideTable = tableConfig.PairedColumnsInsideTable?
                                           .Select(l => ParameterNameHelper.RemoveParenthesisesFromStringList(l)).ToList()
                                           ?? new List <List <string> >(),

                PairedColumnsOutsideTable = tableConfig.PairedColumnsOutsideTable?
                                            .Select(p =>
                                                    new PairedColumnsOutsideTableConfig
                {
                    ColumnMapping     = p.ColumnMapping.Select(l => ParameterNameHelper.AddParenthesisesToStrList(l)).ToList(),
                    SourceDestMapping = p.SourceDestMapping.Select(s =>
                                                                   new SourceDestMappingStepConfig
                    {
                        DestinationLinkedInstance   = ParameterNameHelper.AddParenthesises(s.DestinationLinkedInstance),
                        DestinationConnectionString = s.DestinationConnectionString,
                        DestinationFullTableName    = ParameterNameHelper.AddParenthesisToFullTableName(s.DestinationFullTableName),
                        ForeignKeyMapping           = s.ForeignKeyMapping.Select(l => ParameterNameHelper.AddParenthesisesToStrList(l)).ToList()
                    }).ToList()
                }).ToList()
                                            ?? new List <PairedColumnsOutsideTableConfig>(),

                FullTableName = ParameterNameHelper.AddParenthesisToFullTableName(tableConfig.FullTableName),
                Where         = tableConfig.Where
            };

            return(normalizedTableConfig);
        }
示例#6
0
 protected override IEnumerable <string> GetNormalizedColumnListCopy(IEnumerable <string> columns)
 {
     return(ParameterNameHelper.RemoveParenthesisesFromStringList(columns.ToList()));
 }
示例#7
0
        protected override (string schemaName, string tableName) ParseSchemaAndTableName(string schemaAndTableName)
        {
            var tableAndSchemaName = schemaAndTableName.Split('.');

            return(schemaName : ParameterNameHelper.AddParenthesises(tableAndSchemaName[1]), tableName : ParameterNameHelper.AddParenthesises(tableAndSchemaName[2]));
        }
示例#8
0
        protected override string ParseDataSource(string connectionString)
        {
            var connectionStringBuilder = new SqlConnectionStringBuilder(DatabaseConfig.ConnectionString);

            return(ParameterNameHelper.AddParenthesises(connectionStringBuilder.InitialCatalog));
        }