예제 #1
0
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            if (databaseContext == null)
            {
                throw new ArgumentNullException(nameof(databaseContext));
            }
            if (StringContext == null)
            {
                throw new Exception($"The provided {nameof(StringContext)} is null");
            }
            ITableModel table = databaseContext.Table;

            if (table == null)
            {
                throw new Exception($"The {nameof(TableModel)} is not set");
            }

            string TrimedStringContext = TrimContextFromContextWrapper(StringContext);

            if (!(table?.Columns ?? new List <IColumnModel>()).Any(m => m.IsIndexed))
            {
                return(String.Empty);
            }

            var result = TemplateHandler.
                         HandleFunctionTemplate
                             (TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, table));

            return(result);
        }
 public AbstractTemplateContextHandler(ITemplateHandler templateHandlerNew)
 {
     if (templateHandlerNew == null)
     {
         throw new ArgumentNullException(nameof(templateHandlerNew));
     }
     TemplateHandler       = templateHandlerNew;
     DatabaseContextCopier = new DatabaseContextCopier(); //TODO bad architecture to be solved with IOC
 }
예제 #3
0
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            ITableModel table = databaseContext.Table;
            string      TrimedStringContext = TrimContextFromContextWrapper(StringContext);

            if (!(table?.Columns ?? new List <IColumnModel>()).Any(m => m.IsAutoGeneratedValue))
            {
                return(String.Empty);
            }

            var result = TemplateHandler.
                         HandleFunctionTemplate
                             (TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, table));

            return(result);
        }
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            ITableModel table = databaseContext.Table;
            string      TrimedStringContext = TrimContextFromContextWrapper(StringContext);
            var         columns             = table.Columns;

            if (columns == null)
            {
                throw new ArgumentNullException(nameof(table.Columns));
            }
            var result = string.Join(string.Empty,
                                     columns.Select(currentColumn =>
                                                    TemplateHandler.HandleTemplate(TrimedStringContext,
                                                                                   DatabaseContextCopier.CopyWithOverride(databaseContext, currentColumn))));

            return(result);
        }
예제 #5
0
        public override string ProcessContext(String StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            ITableModel table = databaseContext.Table;

            if (table.Columns == null)
            {
                throw new Exception($"The {nameof(TableModel.Columns)} are not set in {nameof(TableModel)}");
            }
            if (table.Columns.Any(m => m == null))
            {
                throw new Exception($"There is a null reference in the {nameof(TableModel.Columns)} from {nameof(TableModel)}");
            }

            string TrimedStringContext     = TrimContextFromContextWrapper(StringContext);
            var    indexedColumns          = table.Columns.Where(m => m.IsPrimaryKey);
            var    eachIndexedcolumnResult = indexedColumns
                                             .Select(currentColumn => TemplateHandler.HandleTemplate(TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, currentColumn)));
            var result = string.Join(string.Empty, eachIndexedcolumnResult);

            return(result);
        }
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            ITableModel table = databaseContext.Table;

            string TrimedStringContext = TrimContextFromContextWrapper(StringContext);
            var    columns             = table.Columns;

            if (columns == null)
            {
                throw new ArgumentException($"{table.Columns} are not set for {nameof(table)}");
            }
            var notAutoGeneratedColumn = columns.Where(currentColumn => !currentColumn.IsAutoGeneratedValue).ToList();
            var result = string.Join(string.Empty, notAutoGeneratedColumn.Select(currentColumn =>
                                                                                 TemplateHandler.HandleTemplate(TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, currentColumn))));

            return(result);
        }
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            if (databaseContext == null)
            {
                throw new ArgumentNullException(nameof(databaseContext));
            }
            if (StringContext == null)
            {
                throw new Exception($"The provided {nameof(StringContext)} is null");
            }
            IColumnModel column = databaseContext.Column;

            if (column == null)
            {
                throw new Exception($"The {nameof(ColumnModel)} is not set");
            }

            string TrimedStringContext = TrimContextFromContextWrapper(StringContext);

            if (TrimedStringContext == "")
            {
                throw new Exception("There is a problem with the function provided in template '" +
                                    (StartContext + TrimedStringContext + EndContext) +
                                    "' -> The value parameter cannot be empty");
            }
            InitConversionHandlerMap();
            if (!DestinationTypeSets.Contains(TrimedStringContext.ToLowerInvariant()))
            {
                return($"CONVERT:UNKNOWN({TrimedStringContext})");
            }
            if (conversionMap.TryGetValue(new MappingKey()
            {
                DestinationTypeSet = TrimedStringContext.ToLowerInvariant(), SourceType = column.Type
            }, out var result))
            {
                var processedResult = TemplateHandler.HandleTableColumnTemplate(result, DatabaseContextCopier.CopyWithOverride(databaseContext, column));
                return(processedResult);
            }

            return(column.Type);
        }
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            IDatabaseModel descriptionPojo     = databaseContext.Database;
            string         TrimedStringContext = TrimContextFromContextWrapper(StringContext);
            string         result = string.Join(string.Empty, descriptionPojo.Tables.Select(currentTable =>
                                                                                            TemplateHandler.HandleTemplate(TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, currentTable))));

            return(result);
        }
예제 #9
0
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            if (databaseContext == null)
            {
                throw new ArgumentNullException(nameof(databaseContext));
            }
            if (StringContext == null)
            {
                throw new Exception($"The provided {nameof(StringContext)} is null");
            }
            ITableModel table = databaseContext.Table;

            if (table == null)
            {
                throw new Exception($"The {nameof(TableModel)} is not set");
            }

            string TrimedStringContext       = TrimContextFromContextWrapper(StringContext);
            var    autoGeneratedValueColumns = table.Columns.Where(m => m.IsAutoGeneratedValue).ToList();
            var    result = string.Join(string.Empty,
                                        autoGeneratedValueColumns.Select(currentColumn =>
                                                                         TemplateHandler.HandleTemplate(TrimedStringContext, DatabaseContextCopier.CopyWithOverride(databaseContext, currentColumn))));

            return(result);
        }
        public override string ProcessContext(string StringContext, IDatabaseContext databaseContext)
        {
            ControlContext(StringContext, databaseContext);
            var visitedTablesStack   = new List <List <ITableModel> >();
            var currentVisitedTables = new List <ITableModel>()
            {
                databaseContext.Table
            };

            while (currentVisitedTables.Any())
            {
                visitedTablesStack = visitedTablesStack.Append(currentVisitedTables).ToList();
                var extractionResults = ExtractForeignTables(databaseContext.Database, currentVisitedTables);
                currentVisitedTables = extractionResults.SelectMany(m => m.Item2).Reverse().ToList();
            }

            var tableAndDepth = visitedTablesStack.SelectMany(
                (currentList, depth) => currentList.Select(current => Tuple.Create(current, depth))).Skip(1).Reverse().ToList();

            string trimedStringContext = TrimContextFromContextWrapper(StringContext);
            var    result = string.Join(string.Empty, tableAndDepth.Select(tableAndDepth =>
                                                                           TemplateHandler.HandleTemplate(trimedStringContext,
                                                                                                          DatabaseContextCopier.CopyWithOverride(databaseContext, tableAndDepth.Item1))));

            return(result);
        }