Beispiel #1
0
        public override void Emit(XPathNavigator patternNavigator)
        {
            if (patternNavigator != null)
            {
                string name = patternNavigator.SelectSingleNode("@Name").Value;
                string operationAsString          = patternNavigator.SelectSingleNode("@Operation").Value;
                bool   stopOnFailure              = patternNavigator.SelectSingleNode("@StopOnFailure").ValueAsBoolean;
                bool   overwriteFileAtDestination = patternNavigator.SelectSingleNode("@OverwriteFileAtDestination").ValueAsBoolean;

                string serverName = patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:ServerName", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                string port       = (patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:Port", VulcanPackage.VulcanConfig.NamespaceManager) == null)
                    ? "21"
                    : patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:Port", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                string remotePath = patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:RemoteRelativePath", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                string userName   = patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:UserName", VulcanPackage.VulcanConfig.NamespaceManager) == null
                    ? string.Empty
                    : patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:UserName", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                string password = patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:Password", VulcanPackage.VulcanConfig.NamespaceManager) == null
                    ? string.Empty
                    : patternNavigator.SelectSingleNode("rc:RemoteParameters/rc:Password", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                bool isRemotePathVariable = patternNavigator.SelectSingleNode("rc:RemoteParameters/@IsRemotePathVariable", VulcanPackage.VulcanConfig.NamespaceManager).ValueAsBoolean;

                string localPath           = patternNavigator.SelectSingleNode("rc:LocalParameters/rc:LocalPath", VulcanPackage.VulcanConfig.NamespaceManager).Value;
                bool   isLocalPathVariable = patternNavigator.SelectSingleNode("rc:LocalParameters/@IsLocalPathVariable", VulcanPackage.VulcanConfig.NamespaceManager).ValueAsBoolean;

                DTSTasks.FtpTask.DTSFTPOp operation = DTSTasks.FtpTask.DTSFTPOp.Receive;
                switch (operationAsString.ToUpperInvariant())
                {
                case "RECEIVE":
                    operation = DTSTasks.FtpTask.DTSFTPOp.Receive;
                    break;

                case "SEND":
                    operation = DTSTasks.FtpTask.DTSFTPOp.Send;
                    break;

                default:
                    break;
                }

                FTPTask ftpTask = new FTPTask(VulcanPackage, name, name, ParentContainer, serverName, port, userName, password, remotePath, isRemotePathVariable, localPath, isLocalPathVariable, operation);
                ftpTask.Task.StopOnOperationFailure = stopOnFailure;
                ftpTask.Task.OverwriteDestination   = overwriteFileAtDestination;

                this.FirstExecutableGeneratedByPattern = ftpTask.TaskHost;
                this.LastExecutableGeneratedByPattern  = ftpTask.TaskHost;
            }
        }
Beispiel #2
0
        public FTPTask(
            Packages.VulcanPackage vulcanPackage,
            string name,
            string taskDescription,
            DTS.IDTSSequence parentContainer,
            string serverName,
            string port,
            string userName,
            string password,
            string remotePath,
            bool isRemotePathVariable,
            string localPath,
            bool isLocalPathVariable,
            Microsoft.SqlServer.Dts.Tasks.FtpTask.DTSFTPOp operation
            )
            :
            base(
                vulcanPackage,
                name,
                taskDescription,
                parentContainer
                )
        {
            fTPTask             = (DTS.TaskHost)parentContainer.Executables.Add("STOCK:FTPTask");
            fTPTask.Name        = name;
            fTPTask.Description = taskDescription;
            this.Task.Operation = operation;

            this.Task.IsRemotePathVariable = isRemotePathVariable;
            this.Task.IsLocalPathVariable  = isLocalPathVariable;

            Connection fTPServerConnection = new Connection(vulcanPackage, serverName, serverName, "FTP", String.Format("\"{0}:{1}\"", serverName, port));

            fTPServerConnection.SetProperty("ServerUserName", userName);
            fTPServerConnection.SetProperty("ServerPassword", password);
            this.Task.Connection = fTPServerConnection.ConnectionManager.ID;

            if (this.Task.IsRemotePathVariable == true)
            {
                this.Task.RemotePath = remotePath;
            }
            else
            {
                this.Task.RemotePath = remotePath;
            }

            if (this.Task.IsLocalPathVariable == true)
            {
                this.Task.LocalPath = localPath;
            }
            else
            {
                Connection localConnection  = new Connection(vulcanPackage, localPath, localPath, "File", String.Format("\"{0}\"", ExpressionPathBuilder.EscapeBackslashes(localPath)));
                int        intFileUsageType = 2;
                switch (operation)
                {
                case Microsoft.SqlServer.Dts.Tasks.FtpTask.DTSFTPOp.Send:
                    intFileUsageType = 0;
                    break;

                case Microsoft.SqlServer.Dts.Tasks.FtpTask.DTSFTPOp.Receive:
                    intFileUsageType = 2;
                    break;

                default:
                    intFileUsageType = 2;
                    break;
                }
                localConnection.SetProperty("FileUsageType", intFileUsageType);

                this.Task.LocalPath = localPath;
            }
        }