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); } } }
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; }
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; }
internal SsisEmitterContext(Package package, Container parent, ProjectManager projectManager) { Package = package; ParentContainer = parent; ProjectManager = projectManager; }
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; }
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); } }