Пример #1
0
        protected SequenceToken EvaluateSequenceToken(
            TemplateContext context,
            String expression,
            out Int32 bytes)
        {
            var originalBytes = context.Memory.CurrentBytes;

            try
            {
                var tree    = new ExpressionParser().CreateTree(expression, null, context.GetExpressionNamedValues(), context.ExpressionFunctions);
                var options = new EvaluationOptions
                {
                    MaxMemory = context.Memory.MaxBytes,
                };
                var result        = tree.Evaluate(context.TraceWriter.ToExpressionTraceWriter(), null, context, options);
                var templateToken = ConvertToTemplateToken(context, result);
                if (templateToken is SequenceToken sequence)
                {
                    return(sequence);
                }

                context.Error(this, TemplateStrings.ExpectedSequence());
                return(CreateSequenceToken(context));
            }
            finally
            {
                bytes = context.Memory.CurrentBytes - originalBytes;
            }
        }
        public override string GetSqlString()
        {
            var constraintColumnsString = new CollectionToString(
                DbContext.DBA_CONS_COLUMNS
                .Where(
                    c =>
                    c.OWNER == _primaryKeyConstraint.OWNER &&
                    c.CONSTRAINT_NAME == _primaryKeyConstraint.CONSTRAINT_NAME)
                .OrderBy(c => c.POSITION)
                .Select(c => c.COLUMN_NAME)
                .ToList()).GetAsString().ToLowerInvariant();

            var tablespaceName = DbContext.DBA_INDEXES
                                 .First(
                i =>
                i.OWNER == _primaryKeyConstraint.INDEX_OWNER &&
                i.INDEX_NAME == _primaryKeyConstraint.INDEX_NAME)
                                 .TABLESPACE_NAME;

            if (string.IsNullOrEmpty(tablespaceName))
            {
                tablespaceName = GetDefaultTablespace(_primaryKeyConstraint.INDEX_OWNER);
            }

            return("\t" + (TemplateStrings.GetTemplate(TemplateFileName)
                           .Replace("[CONSTRAINTNAME]", _primaryKeyConstraint.CONSTRAINT_NAME.ToLowerInvariant())
                           .Replace("[CONSTRAINTCOLUMNS]", constraintColumnsString)
                           .Replace("[TABLESPACE_NAME]", tablespaceName.ToLowerInvariant())
                           .Replace("[CONSTRAINTSTATE]", _primaryKeyConstraint.STATUS.Equals("DISABLED") ? " disable" : string.Empty)
                           .Replace("\t", "\t\t")));
        }
Пример #3
0
 public override string GetSqlString()
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[DB_LINK]", _dblink.DB_LINK.ToLowerInvariant())
            .Replace("[USERNAME]", _dblink.USERNAME.ToLowerInvariant())
            .Replace("[CONNECTSTRING]", _dblink.HOST));
 }
Пример #4
0
        public override string GetSqlString()
        {
            var collectionToStringTool = new CollectionToString(null, string.Empty);

            var packageHeaderString = collectionToStringTool.GetAsString(
                DbContext.DBA_SOURCE
                .Where(
                    s =>
                    s.OWNER == _package.OWNER &&
                    s.NAME == _package.OBJECT_NAME &&
                    s.TYPE == _package.OBJECT_TYPE)
                .OrderBy(s => s.LINE)
                .Select(s => s.TEXT)
                .ToList());

            var packageBodyString = collectionToStringTool.GetAsString(
                DbContext.DBA_SOURCE
                .Where(
                    s =>
                    s.TYPE == "PACKAGE BODY" &&
                    s.OWNER == _package.OWNER &&
                    s.NAME == _package.OBJECT_NAME)
                .OrderBy(s => s.LINE)
                .Select(s => s.TEXT)
                .ToList());

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[PACKAGE_HEADER]", packageHeaderString)
                   .Replace("[PACKAGE_BODY]", packageBodyString));
        }
Пример #5
0
 private static string GetSqlStatement(string tableName, string columnName, string comment)
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[TABLE_NAME]", tableName.ToLowerInvariant())
            .Replace("[COLUMN]", columnName.ToLowerInvariant())
            .Replace("[COMMENT]", comment.Trim()));
 }
        public override string GetSqlString()
        {
            LoadReferencedConstraint();

            var constraintColumns    = LoadConstraintColumns(_foreignKeyConstraint);
            var refConstraintColumns = LoadConstraintColumns(_refConstraint);

            var collectionToStringTool = new CollectionToString();

            var constraintColumnsString = collectionToStringTool.GetAsString(
                constraintColumns
                .Select(c => c.COLUMN_NAME.ToLowerInvariant())
                .ToList());

            var refConstraintColumnsString = collectionToStringTool.GetAsString(
                refConstraintColumns
                .Select(c => c.COLUMN_NAME.ToLowerInvariant())
                .ToList());

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[TABLENAME]", _foreignKeyConstraint.TABLE_NAME.ToLowerInvariant())
                   .Replace("[CONSTRAINTNAME]", _foreignKeyConstraint.CONSTRAINT_NAME.ToLowerInvariant())
                   .Replace("[CONSTRAINTCOLUMNS]", constraintColumnsString)
                   .Replace("[REFTABLENAME]", _refConstraint.TABLE_NAME.ToLowerInvariant())
                   .Replace("[REFCONSTRAINTCOLUMNS]", refConstraintColumnsString)
                   .Replace("[CONSTRAINTSTATE]", _foreignKeyConstraint.STATUS.Equals("DISABLED") ? " disable" : string.Empty));
        }
Пример #7
0
 public override string GetSqlString()
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[FILENAME]", _fileName.ToLowerInvariant())
            .Replace("[OBJECTTYPE]", _objectType.ToLowerInvariant())
            .Replace("[OBJECTNAME]", _objectName.ToLowerInvariant()));
 }
Пример #8
0
        public override string GetSqlString()
        {
            var indexColumnList = new CollectionToString(
                DbContext.DBA_IND_COLUMNS
                .Where(c => c.INDEX_OWNER == _index.OWNER && c.INDEX_NAME == _index.INDEX_NAME)
                .OrderBy(c => c.COLUMN_POSITION)
                .Select(
                    c =>
                    c.COLUMN_NAME +
                    (c.DESCEND.Equals("DESC") ? " desc" : string.Empty))
                .ToList()).GetAsString().ToLowerInvariant();

            var tablespaceName = _index.TABLESPACE_NAME ?? GetDefaultTablespace(_index.OWNER);

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[BITMAP_UNIQUE]", _index.INDEX_TYPE.Equals("BITMAP")
                    ? " bitmap"
                    : _index.INDEX_TYPE.Equals("UNIQUE")
                        ? " unique"
                        : string.Empty)
                   .Replace("[INDEX_NAME]", _index.INDEX_NAME.ToLowerInvariant())
                   .Replace("[COLUMN_LIST]", indexColumnList)
                   .Replace("[TABLE_NAME]", _index.TABLE_NAME.ToLowerInvariant())
                   .Replace("[TABLESPACE_NAME]", tablespaceName.ToLowerInvariant()));
        }
Пример #9
0
 public override string GetSqlString()
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[DESCRIPTION]", _triggerData.DESCRIPTION)
            .Replace("[TRIGGER_BODY]", _triggerData.TRIGGER_BODY)
            .Replace("[TRIGGER_NAME]", _triggerData.TRIGGER_NAME.ToLowerInvariant())
            .Replace("[ENABLE_DISABLE]", _triggerData.STATUS.Equals("DISABLED") ? "disable" : "enable"));
 }
Пример #10
0
        private TemplateToken ConvertToTemplateToken(
            TemplateContext context,
            EvaluationResult result)
        {
            // Literal
            if (TryConvertToLiteralToken(context, result, out LiteralToken literal))
            {
                return(literal);
            }
            // Known raw types
            else if (!Object.ReferenceEquals(result.Raw, null))
            {
                if (result.Raw is SequenceToken sequence)
                {
                    context.Memory.AddBytes(sequence, true);
                    return(sequence);
                }
                else if (result.Raw is MappingToken mapping)
                {
                    context.Memory.AddBytes(mapping, true);
                    return(mapping);
                }
            }

            // Leverage the expression SDK to traverse the object
            if (result.TryGetCollectionInterface(out Object collection))
            {
                if (collection is IReadOnlyObject dictionary)
                {
                    var mapping = CreateMappingToken(context);

                    foreach (KeyValuePair <String, Object> pair in dictionary)
                    {
                        var keyToken    = CreateStringToken(context, pair.Key);
                        var valueResult = EvaluationResult.CreateIntermediateResult(null, pair.Value);
                        var valueToken  = ConvertToTemplateToken(context, valueResult);
                        mapping.Add(keyToken, valueToken);
                    }

                    return(mapping);
                }
                else if (collection is IReadOnlyArray list)
                {
                    var sequence = CreateSequenceToken(context);

                    foreach (var item in list)
                    {
                        var itemResult = EvaluationResult.CreateIntermediateResult(null, item);
                        var itemToken  = ConvertToTemplateToken(context, itemResult);
                        sequence.Add(itemToken);
                    }

                    return(sequence);
                }
            }

            throw new ArgumentException(TemplateStrings.UnableToConvertToTemplateToken(result.Value?.GetType().FullName));
        }
Пример #11
0
 private static string GetSqlStatement(
     string objectName,
     string objectType,
     string comments)
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[OBJECTNAME]", objectName.ToLowerInvariant())
            .Replace("[OBJECTTYPE]", objectType.ToLowerInvariant())
            .Replace("[COMMENT]", comments.Trim()));
 }
Пример #12
0
        public override string GetSqlString()
        {
            var tablespaceName = _table.TABLESPACE_NAME ?? GetDefaultTablespace(_table.OWNER);

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[OBJECTNAME]", _table.TABLE_NAME.ToLowerInvariant())
                   .Replace("[TABLECOLUMNDEFINITION]", new TableColumnsSqlGenerator(DbContext, _table).GetSqlString())
                   .Replace("[CONSTRAINTDEFINITION]", new ConstraintsSqlGenerator(DbContext, _table).GetSqlString())
                   .Replace("[TABLESPACE_NAME]", tablespaceName.ToLowerInvariant()));
        }
Пример #13
0
        public override string GetSqlString()
        {
            var viewColumnsString = new CollectionToString(
                DbContext.DBA_TAB_COLUMNS
                .Where(c => c.OWNER == _view.OWNER && c.TABLE_NAME == _view.VIEW_NAME)
                .OrderBy(c => c.COLUMN_ID)
                .Select(v => v.COLUMN_NAME)
                .ToList(),
                ",\n\t").GetAsString().ToLowerInvariant();

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[VIEW_NAME]", _view.VIEW_NAME.ToLowerInvariant())
                   .Replace("[VIEW_COLUMNS]", "\n\t" + viewColumnsString)
                   .Replace("[VIEW_DEF]", _view.TEXT));
        }
Пример #14
0
 public override string GetSqlString()
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[PUBLIC]", _synonym.OWNER.Equals("PUBLIC") ? " public" : string.Empty)
            .Replace("[SYNONYM_NAME]", _synonym.SYNONYM_NAME.ToLowerInvariant())
            .Replace("[TABLE_OWNER]",
                     _synonym.TABLE_OWNER != _synonym.OWNER
                 ? _synonym.TABLE_OWNER.ToLowerInvariant() + "."
                 : string.Empty)
            .Replace("[TABLE_NAME]", _synonym.TABLE_NAME.ToLowerInvariant())
            .Replace("[DB_LINK]",
                     string.IsNullOrEmpty(_synonym.DB_LINK)
                 ? string.Empty
                 : "@" + _synonym.DB_LINK.ToLowerInvariant()));
 }
Пример #15
0
        public override string GetSqlString()
        {
            var procedureSpecString = new CollectionToString(null, string.Empty)
                                      .GetAsString(
                DbContext.DBA_SOURCE
                .Where(
                    s =>
                    s.OWNER == _procedure.OWNER &&
                    s.NAME == _procedure.OBJECT_NAME &&
                    s.TYPE == _procedure.OBJECT_TYPE)
                .OrderBy(s => s.LINE)
                .Select(s => s.TEXT)
                .ToList());

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[PROCEDURE_SPEC]", procedureSpecString));
        }
Пример #16
0
        public override string GetSqlString()
        {
            var functionDefString = new CollectionToString(null, string.Empty)
                                    .GetAsString(
                DbContext.DBA_SOURCE
                .Where(
                    s =>
                    s.OWNER == _function.OWNER &&
                    s.NAME == _function.OBJECT_NAME &&
                    s.TYPE == _function.OBJECT_TYPE)
                .OrderBy(s => s.LINE)
                .Select(s => s.TEXT)
                .ToList());

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[FUNCTION_DEF]", functionDefString));
        }
Пример #17
0
        public override string GetSqlString()
        {
            var typeDefString = new CollectionToString(
                DbContext.DBA_SOURCE
                .Where(
                    s =>
                    s.OWNER == _type.OWNER &&
                    s.NAME == _type.TYPE_NAME &&
                    s.TYPE.Equals("TYPE"))
                .OrderBy(s => s.LINE)
                .Select(s => s.TEXT)
                .ToList(),
                string.Empty).GetAsString();

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[TYPE_DEF]", typeDefString));
        }
Пример #18
0
        public override string GetSqlString()
        {
            var columnsList = new CollectionToString(
                DbContext.DBA_TAB_COLUMNS
                .Where(c => c.OWNER == _mview.OWNER && c.TABLE_NAME == _mview.MVIEW_NAME)
                .OrderBy(c => c.COLUMN_ID)
                .Select(v => v.COLUMN_NAME)
                .ToList(), ",\n\t").GetAsString().ToLowerInvariant();

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[MVIEW_NAME]", _mview.MVIEW_NAME.ToLowerInvariant())
                   .Replace("[COLUMNS_LIST]", "\n\t" + columnsList)
                   .Replace("[QUERY]", _mview.QUERY)
                   .Replace("[BUILD_MODE]", string.IsNullOrEmpty(_mview.BUILD_MODE) ? string.Empty : "build " + _mview.BUILD_MODE.ToLowerInvariant() + "\n")
                   .Replace("[REFRESH_METHOD]", string.IsNullOrEmpty(_mview.REFRESH_METHOD) ? string.Empty : "refresh " + _mview.REFRESH_METHOD.ToLowerInvariant() + "\n")
                   .Replace("[REFRESH_MODE]", string.IsNullOrEmpty(_mview.REFRESH_MODE) ? string.Empty : "on " + _mview.REFRESH_MODE.ToLowerInvariant() + "\n")
                   .Replace("[QUERY_REWRITE]", (_mview.REWRITE_ENABLED.Equals("Y") ? "enable" : "disable") + " query rewrite\n"));
        }
Пример #19
0
        public override string GetSqlString()
        {
            var columnName   = _tableColumn.COLUMN_NAME.PadRight(30).ToLowerInvariant();
            var dataType     = GetColumnDataType().PadRight(20).ToLowerInvariant();
            var defaultValue = string.IsNullOrEmpty(_tableColumn.DATA_DEFAULT)
                ? string.Empty
                : "default " + _tableColumn.DATA_DEFAULT;
            var notNullConstraint = _tableColumn.NULLABLE == "N" ? "not null" : string.Empty;

            defaultValue = defaultValue.PadRight(15);

            return(TemplateStrings.GetTemplate(TemplateFileName)
                   .Replace("[COLUMNNAME]", columnName)
                   .Replace("[DATATYPE]", " " + dataType)
                   .Replace("[DEFAULTVALUE]", " " + defaultValue)
                   .Replace("[NULLABLESPEC]", " " + notNullConstraint)
                   .TrimEnd());
        }
Пример #20
0
 public override string GetSqlString()
 {
     return(TemplateStrings.GetTemplate(TemplateFileName)
            .Replace("[JOB_NAME]", _jobDef.JOB_NAME.ToLowerInvariant())
            .Replace("[JOB_TYPE]", _jobDef.JOB_TYPE)
            .Replace("[JOB_ACTION]", _jobDef.JOB_ACTION)
            .Replace("[START_DATE]", _jobDef.START_DATE.HasValue
             ? "to_date('" + _jobDef.START_DATE.Value.ToString("dd.MM.yyyy HH:mm:ss") + "','dd.mm.yyyy hh24:mi:ss')"
             : "null")
            .Replace("[REPEAT_INTERVAL]", string.IsNullOrEmpty(_jobDef.REPEAT_INTERVAL)
             ? "null"
             : "'" + _jobDef.REPEAT_INTERVAL.Trim() + "'")
            .Replace("[END_DATE]", _jobDef.END_DATE.HasValue
             ? "to_date('" + _jobDef.END_DATE.Value.ToString("dd.MM.yyyy HH:mm:ss") + "','dd.mm.yyyy hh24:mi:ss')"
             : "null")
            .Replace("[JOB_CLASS]", _jobDef.JOB_CLASS.Trim())
            .Replace("[ENABLED]", _jobDef.ENABLED.ToLowerInvariant())
            .Replace("[AUTO_DROP]", _jobDef.AUTO_DROP.ToLowerInvariant())
            .Replace("[COMMENTS]", string.IsNullOrEmpty(_jobDef.COMMENTS)
             ? "null"
             : "'" + _jobDef.COMMENTS + "'"));
 }
Пример #21
0
        public override string GetSqlString()
        {
            var constraintColumnsList = new CollectionToString(
                DbContext.DBA_CONS_COLUMNS
                .Where(c => c.OWNER == _constraint.OWNER && c.CONSTRAINT_NAME == _constraint.CONSTRAINT_NAME)
                .OrderBy(c => c.POSITION)
                .Select(c => c.COLUMN_NAME)
                .ToList(),
                ",\n\t\t").GetAsString().ToLowerInvariant();

            return("\t" + (TemplateStrings.GetTemplate(TemplateFileName)
                           .Replace("[CONSTRAINTNAME]", _constraint.CONSTRAINT_NAME.ToLowerInvariant())
                           .Replace("[CONSTRAINTTYPE]", _constraint.CONSTRAINT_TYPE.Equals("C")
                    ? "\n\tcheck"
                    : _constraint.CONSTRAINT_TYPE.Equals("U")
                        ? " unique"
                        : string.Empty)
                           .Replace("[CONSTRAINTCOLUMNS]", _constraint.CONSTRAINT_TYPE.Equals("C")
                    ? _constraint.SEARCH_CONDITION.ToLowerInvariant().Trim()
                    : constraintColumnsList)
                           .Replace("[CONSTRAINTSTATE]", _constraint.STATUS.Equals("DISABLED") ? " disable" : string.Empty)
                           .Replace("\t", "\t\t")));
        }