Ejemplo n.º 1
0
        public static void LowerPackage(AstNode astNode, LoweringContext context)
        {
            var astPackage = astNode as AstTask.AstPackageNode;

            if (astPackage != null)
            {
                if (astPackage.Emit)
                {
                    var p = new Package(astPackage);
                    context.ParentObject.Children.Add(p);
                    context = new TaskLoweringContext(p);
                    LowerConnection(astPackage.LogConnection, context);
                    LowerChildren(astPackage, context);
                    LowerEventHandlers(astPackage, p, context);
                }
                else
                {
                    MessageEngine.Trace(
                        astPackage,
                        Severity.Debug,
                        "D_S008",
                        "Skipped Lowering of Package {0} because Emit was {1}",
                        astPackage.Name,
                        astPackage.Emit);
                }
            }
        }
Ejemplo n.º 2
0
        public SsisProject AddPackage(Package package)
        {
            if (!_projectDirectoryMappings.ContainsKey(package.PackageFolder))
            {
                string projectName = package.PackageFolderSubpath ?? package.Name;
                string projectFolder = package.PackageFolder;
                string projectPath = PathManager.AddSubpath(projectFolder, String.Format(CultureInfo.CurrentCulture, "{0}.{1}", projectName, Resources.ExtensionDTProjectFile));
                _projectDirectoryMappings.Add(package.PackageFolder, new SsisProject(projectPath));
            }

            SsisProject ssisProject = _projectDirectoryMappings[package.PackageFolder];
            ssisProject.Packages.Add(package);
            return ssisProject;
        }
Ejemplo n.º 3
0
        public SsisPackage(Package logicalPackage, SSISEmitterContext context) : base (logicalPackage, context)
        {
            _DTSApplication = new DTS.Application();
            _DTSPackage = new DTS.Package();
            _DTSPackage.Name = Name.Replace(".", "_").Replace("[", " ").Replace("]", " ");
            _projectManager = new SsisProject(this);

            CurrentPackage = this;
        }
Ejemplo n.º 4
0
 internal SsisEmitterContext(Package package, Container parent, ProjectManager projectManager)
 {
     Package = package;
     ParentContainer = parent;
     ProjectManager = projectManager;
 }
Ejemplo n.º 5
0
        public static Package Lower(this PhysicalTSQL.Table table)
        {
            Package tablePackage = new Package();
            _CurrentPackage = tablePackage;

            AddConnection(table.ConnectionConfiguration);

            tablePackage.ConstraintMode = "Linear";
            tablePackage.DefaultPlatform = "SSIS2008";
            tablePackage.Log = true;
            tablePackage.LogConnectionName = table.ConnectionConfiguration == null ? null : table.ConnectionConfiguration.Name;
            tablePackage.Name = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}", table.Name);

            PhysicalTask.SqlTask createTableTask = new Ssis2008Emitter.IR.Task.SqlTask();
            createTableTask.Name = "Create Table";
            createTableTask.ResultSet = "None";
            createTableTask.Connection = table.ConnectionConfiguration == null ? null : table.ConnectionConfiguration.Name;
            createTableTask.ExecuteDuringDesignTime = false;
            createTableTask.Parent = tablePackage;
            createTableTask.Type = "File";
            createTableTask.Body = new TSQLEmitter.TablePlatformEmitter().Emit(table);
            tablePackage.Tasks.Add(createTableTask);

            return tablePackage;
        }
Ejemplo n.º 6
0
        public static Package Lower(this AstTask.AstPackageNode astNode)
        {
            if (astNode.AsClassOnly)
            {
                return null;
            }

            try
            {
                Package package = new Package();
                _CurrentPackage = package;
                package.ConstraintMode = astNode.ConstraintMode.ToString();
                package.DefaultPlatform = astNode.DefaultPlatform.ToString();
                package.Log = astNode.Log;
                AddConnection(astNode.LogConnection);
                package.LogConnectionName = astNode.LogConnection == null ? null : astNode.LogConnection.Name;
                package.Name = astNode.Name;
                package.Type = astNode.Type.ToString();

                // fix this so packages lower themselves via Sequence LoweringLayer in the friday refactor
                switch (astNode.TransactionMode)
                {
                    case VulcanEngine.IR.Ast.Task.ContainerTransactionMode.StartOrJoin:
                        package.TransactionMode = "Required";
                        break;
                    case VulcanEngine.IR.Ast.Task.ContainerTransactionMode.Join:
                        package.TransactionMode = "Supported";
                        break;
                    case VulcanEngine.IR.Ast.Task.ContainerTransactionMode.NoTransaction:
                        package.TransactionMode = "NotSupported";
                        break;
                    default:
                        package.TransactionMode = "Supported";
                        break;
                }

                foreach (AstTask.AstVariableNode variableNode in astNode.Variables)
                {
                    Variable physicalVariableNode = variableNode.Lower();
                    physicalVariableNode.Parent = package;
                    package.VariableList.Add(physicalVariableNode);
                }

                foreach (AstTask.AstTaskNode taskNode in astNode.Tasks)
                {
                    PhysicalTask.Task physicalTaskNode = taskNode.Lower();
                    if (physicalTaskNode != null)
                    {
                        physicalTaskNode.Parent = package;
                        package.Tasks.Add(physicalTaskNode);
                    }
                }

                ProcessHelperTables((AstTask.AstContainerTaskNode)astNode, package);

                return package;
            }
            catch (Exception e)
            {
                throw new SSISEmitterException(astNode, e);
            }
        }