Example #1
0
        public override void CloneInto(IFrameworkItem targetItem, Dictionary <IFrameworkItem, IFrameworkItem> cloneMapping)
        {
            base.CloneInto(targetItem, cloneMapping);
            if (targetItem == null || !typeof(AstSchemaNode).IsAssignableFrom(targetItem.GetType()))
            {
                throw new ArgumentException("Provided target node is not of the correct type.");
            }
            var castedTargetItem = (AstSchemaNode)targetItem;

            if (_connection == null)
            {
                castedTargetItem._connection = null;
            }
            else if (cloneMapping.ContainsKey(_connection))
            {
                castedTargetItem._connection = (VulcanEngine.IR.Ast.Connection.AstConnectionNode)cloneMapping[_connection];
            }
            else
            {
                castedTargetItem._connection = _connection;
            }

            if (_customExtensions == null)
            {
                castedTargetItem._customExtensions = null;
            }
            else if (cloneMapping.ContainsKey(_customExtensions))
            {
                castedTargetItem._customExtensions = (VulcanEngine.IR.Ast.Task.AstContainerTaskNode)cloneMapping[_customExtensions];
                _customExtensions.CloneInto(cloneMapping[_customExtensions], cloneMapping);
            }
            else
            {
                castedTargetItem._customExtensions = _customExtensions;
            }

            castedTargetItem.Emit_BackingField = Emit_BackingField;
        }
Example #2
0
        public override void CloneInto(IFrameworkItem targetItem, Dictionary <IFrameworkItem, IFrameworkItem> cloneMapping)
        {
            base.CloneInto(targetItem, cloneMapping);
            if (targetItem == null || !typeof(AstTableNode).IsAssignableFrom(targetItem.GetType()))
            {
                throw new ArgumentException("Provided target node is not of the correct type.");
            }
            var castedTargetItem = (AstTableNode)targetItem;

            if (_connection == null)
            {
                castedTargetItem._connection = null;
            }
            else if (cloneMapping.ContainsKey(_connection))
            {
                castedTargetItem._connection = (VulcanEngine.IR.Ast.Connection.AstConnectionNode)cloneMapping[_connection];
            }
            else
            {
                castedTargetItem._connection = _connection;
            }

            foreach (var item in _columns)
            {
                IFrameworkItem candidate = cloneMapping[item];
                castedTargetItem._columns.Add((VulcanEngine.IR.Ast.Table.AstTableColumnBaseNode)candidate);
                item.CloneInto(candidate, cloneMapping);
            }

            foreach (var item in _keys)
            {
                IFrameworkItem candidate = cloneMapping[item];
                castedTargetItem._keys.Add((VulcanEngine.IR.Ast.Table.AstTableKeyBaseNode)candidate);
                item.CloneInto(candidate, cloneMapping);
            }

            foreach (var item in _sources)
            {
                IFrameworkItem candidate = cloneMapping[item];
                castedTargetItem._sources.Add((VulcanEngine.IR.Ast.Table.AstTableSourceBaseNode)candidate);
                item.CloneInto(candidate, cloneMapping);
            }

            foreach (var item in _lookups)
            {
                IFrameworkItem candidate = cloneMapping[item];
                castedTargetItem._lookups.Add((VulcanEngine.IR.Ast.Transformation.AstEtlFragmentNode)candidate);
                item.CloneInto(candidate, cloneMapping);
            }

            foreach (var item in _indexes)
            {
                IFrameworkItem candidate = cloneMapping[item];
                castedTargetItem._indexes.Add((VulcanEngine.IR.Ast.Table.AstTableIndexNode)candidate);
                item.CloneInto(candidate, cloneMapping);
            }

            if (_customExtensions == null)
            {
                castedTargetItem._customExtensions = null;
            }
            else if (cloneMapping.ContainsKey(_customExtensions))
            {
                castedTargetItem._customExtensions = (VulcanEngine.IR.Ast.Task.AstContainerTaskNode)cloneMapping[_customExtensions];
                _customExtensions.CloneInto(cloneMapping[_customExtensions], cloneMapping);
            }
            else
            {
                castedTargetItem._customExtensions = _customExtensions;
            }

            castedTargetItem.LateArriving_BackingField = LateArriving_BackingField;

            if (_schema == null)
            {
                castedTargetItem._schema = null;
            }
            else if (cloneMapping.ContainsKey(_schema))
            {
                castedTargetItem._schema = (VulcanEngine.IR.Ast.Table.AstSchemaNode)cloneMapping[_schema];
            }
            else
            {
                castedTargetItem._schema = _schema;
            }

            castedTargetItem.CompressionType_BackingField = CompressionType_BackingField;
        }