Example #1
0
        public void WarewolfListIterator_Object_GetValues()
        {
            //------------Setup for test--------------------------
            _expr3 = new WarewolfIterator(_environment.Eval("[[RecSet()]]", 0));
            var privateObj           = new PrivateObject(_warewolfListIterator);
            var variablesToIterateOn = privateObj.GetField("_variablesToIterateOn") as List <IWarewolfIterator>;

            _warewolfListIterator.AddVariableToIterateOn(_expr3);

            var listIterator = _warewolfListIterator as WarewolfListIterator;

            listIterator.Types = variablesToIterateOn.Select(iterator => iterator.GetType()).ToList();

            int   integerPrimitive = 2;
            float floatPrimitive   = 1.23f;

            Object[] objects = new Object[] {
                integerPrimitive,
                floatPrimitive
            };

            //------------Execute Test---------------------------
            var val = listIterator.GetValues(objects);

            //------------Assert Results-------------------------
            Assert.AreEqual(2, val);
        }
 public string FetchNextValue(IWarewolfIterator expression)
 {
     var warewolfEvalResult = _variablesToIterateOn[_variablesToIterateOn.IndexOf(expression)];
     if (warewolfEvalResult!=null)
     {
         return warewolfEvalResult.GetNextValue();
     }            
     return null;
 }
Example #3
0
        public string FetchNextValue(IWarewolfIterator expression)
        {
            var warewolfEvalResult = _variablesToIterateOn[_variablesToIterateOn.IndexOf(expression)];

            if (warewolfEvalResult != null)
            {
                return(warewolfEvalResult.GetNextValue());
            }
            return(null);
        }
Example #4
0
        protected override void AddItemsToIterator(IExecutionEnvironment environment, int update)
        {
            _compresItr = new WarewolfIterator(environment.Eval(CompressionRatio, update));
            ColItr.AddVariableToIterateOn(_compresItr);

            _archNameItr = new WarewolfIterator(environment.Eval(ArchiveName, update));
            ColItr.AddVariableToIterateOn(_archNameItr);

            _archPassItr = new WarewolfIterator(environment.Eval(DecryptedArchivePassword, update));
            ColItr.AddVariableToIterateOn(_archPassItr);
        }
Example #5
0
        protected override void AddItemsToIterator(IExecutionEnvironment environment)
        {
            _compresItr = new WarewolfIterator(environment.Eval(CompressionRatio));
            ColItr.AddVariableToIterateOn(_compresItr);

            _archNameItr = new WarewolfIterator(environment.Eval(ArchiveName));
            ColItr.AddVariableToIterateOn(_archNameItr);

            _archPassItr = new WarewolfIterator(environment.Eval(ArchivePassword));
            ColItr.AddVariableToIterateOn(_archPassItr);

        }
Example #6
0
 private bool AssignExpression(out WarewolfListIterator listIterator)
 {
     _expr3 = new WarewolfIterator(_environment.Eval("[[RecSet().a]]", 0));
     _warewolfListIterator.AddVariableToIterateOn(_expr3);
     listIterator = _warewolfListIterator as WarewolfListIterator;
     if (listIterator == null)
     {
         return(true);
     }
     Assert.AreEqual(0, listIterator.RecordsAffected);
     return(false);
 }
        public void TestInitialize()
        {
            _environment          = new ExecutionEnvironment();
            _warewolfListIterator = new WarewolfListIterator();

            _environment.Assign(Result, "Success", 0);
            _expr1 = new WarewolfIterator(_environment.Eval(Result, 0));
            _expr2 = new WarewolfIterator(_environment.Eval("[[@Parent()]]", 0));

            _warewolfListIterator.AddVariableToIterateOn(_expr1);
            _warewolfListIterator.AddVariableToIterateOn(_expr2);
        }
        public void WarewolfListIterator_AddVariableToIterateOn_Should()
        {
            _expr3 = new WarewolfIterator(_environment.Eval("[[RecSet()]]", 0));
            Assert.IsNotNull(_warewolfListIterator);
            var privateObj           = new PrivateObject(_warewolfListIterator);
            var variablesToIterateOn = privateObj.GetField("_variablesToIterateOn") as List <IWarewolfIterator>;

            Assert.IsNotNull(variablesToIterateOn);
            Assert.AreEqual(2, variablesToIterateOn.Count);
            _warewolfListIterator.AddVariableToIterateOn(_expr3);
            Assert.AreEqual(3, variablesToIterateOn.Count);
        }
        public MySqlBulkLoader SetupMySqlBulkCopy(IWarewolfIterator batchItr, IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator timeoutItr, DbSource runtimeDatabase, SqlBulkCopyOptions copyOptions)
        {
            var batchSize = -1;
            var timeout   = -1;

            GetParameterValuesForBatchSizeAndTimeOut(batchItr, parametersIteratorCollection, timeoutItr, ref batchSize, ref timeout);
            var sqlBulkCopy = new MySqlBulkLoader(new MySqlConnection(runtimeDatabase.ConnectionString))
            {
                TableName = TableName, FieldTerminator = ",", LineTerminator = "\n"
            };

            return(sqlBulkCopy);
        }
 void GetTimeOut(IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator timeoutItr, ref int timeout)
 {
     if (timeoutItr != null)
     {
         var timeoutString = parametersIteratorCollection.FetchNextValue(timeoutItr);
         if (!string.IsNullOrEmpty(timeoutString) && int.TryParse(timeoutString, out int parsedValue))
         {
             timeout = parsedValue;
         }
     }
     else
     {
         int.TryParse(Timeout, out timeout);
     }
 }
 void GetBatchSize(IWarewolfIterator batchItr, IWarewolfListIterator parametersIteratorCollection, ref int batchSize)
 {
     if (batchItr != null)
     {
         var batchSizeString = parametersIteratorCollection.FetchNextValue(batchItr);
         if (!string.IsNullOrEmpty(batchSizeString) && int.TryParse(batchSizeString, out int parsedValue))
         {
             batchSize = parsedValue;
         }
     }
     else
     {
         int.TryParse(BatchSize, out batchSize);
     }
 }
        public void WarewolfListIterator_GetGuid_ShouldReturn0()
        {
            ValidateInstance(out PrivateObject privateObj, out List <IWarewolfIterator> variablesToIterateOn);
            _environment.Assign("[[RecSet().a]]", "00d1c07e-7fa7-4127-a85f-3ae9aaa7c6de", 0);
            _expr3 = new WarewolfIterator(_environment.Eval("[[RecSet().a]]", 0));
            _warewolfListIterator.AddVariableToIterateOn(_expr3);
            var listIterator = _warewolfListIterator as WarewolfListIterator;

            if (listIterator == null)
            {
                return;
            }

            var guid = listIterator.GetGuid(2);

            Assert.IsNotNull(guid);
        }
Example #13
0
        public void WarewolfListIterator_Object_GetValue_String()
        {
            //------------Setup for test--------------------------
            _expr3 = new WarewolfIterator(_environment.Eval("[[RecSet()]]", 0));
            var privateObj           = new PrivateObject(_warewolfListIterator);
            var variablesToIterateOn = privateObj.GetField("_variablesToIterateOn") as List <IWarewolfIterator>;

            _warewolfListIterator.AddVariableToIterateOn(_expr3);

            var listIterator = _warewolfListIterator as WarewolfListIterator;

            listIterator.Types = variablesToIterateOn.Select(iterator => iterator.GetType()).ToList();
            //------------Execute Test---------------------------
            var val = listIterator.GetValue(0);

            listIterator.Close();
            //------------Assert Results-------------------------
            Assert.AreEqual("Success", val);
        }
        public SqlBulkCopy SetupSqlBulkCopy(IWarewolfIterator batchItr, IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator timeoutItr, DbSource runtimeDatabase, SqlBulkCopyOptions copyOptions)
        {
            var batchSize = -1;
            var timeout   = -1;

            GetParameterValuesForBatchSizeAndTimeOut(batchItr, parametersIteratorCollection, timeoutItr, ref batchSize, ref timeout);
            var sqlBulkCopy = new SqlBulkCopy(runtimeDatabase.ConnectionString, copyOptions)
            {
                DestinationTableName = TableName
            };

            if (batchSize != -1)
            {
                sqlBulkCopy.BatchSize = batchSize;
            }
            if (timeout != -1)
            {
                sqlBulkCopy.BulkCopyTimeout = timeout;
            }
            return(sqlBulkCopy);
        }
        IWarewolfListIterator BuildParametersIteratorCollection(IExecutionEnvironment executionEnvironment, out IWarewolfIterator batchIterator, out IWarewolfIterator timeOutIterator)
        {
            var parametersIteratorCollection = new WarewolfListIterator();

            batchIterator   = null;
            timeOutIterator = null;
            if (!String.IsNullOrEmpty(BatchSize))
            {
                var batchItr = new WarewolfIterator(executionEnvironment.Eval(BatchSize));
                parametersIteratorCollection.AddVariableToIterateOn(batchItr);
                batchIterator = batchItr;
            }
            if (!String.IsNullOrEmpty(Timeout))
            {
                var timeoutItr = new WarewolfIterator(executionEnvironment.Eval(Timeout));
                parametersIteratorCollection.AddVariableToIterateOn(timeoutItr);
                timeOutIterator = timeoutItr;
            }
            return(parametersIteratorCollection);
        }
 void GetParameterValuesForBatchSizeAndTimeOut(IWarewolfIterator batchItr, IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator timeoutItr, ref int batchSize, ref int timeout)
 {
     GetBatchSize(batchItr, parametersIteratorCollection, ref batchSize);
     GetTimeOut(parametersIteratorCollection, timeoutItr, ref timeout);
 }
        void DoInsertForMySql(DbSource runtimeDatabase, SqlBulkCopyOptions currentOptions, IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator batchItr, IWarewolfIterator timeoutItr, IDSFDataObject dataObject, ErrorResultTO errorResultTo, ErrorResultTO allErrors, ref bool addExceptionToErrorList)
        {
            MySqlBulkLoader sqlBulkCopy = new MySqlBulkLoader(new MySqlConnection(runtimeDatabase.ConnectionString));

            TableName = TableName.Replace("[", "").Replace("]", "");
            if (TableName.Contains("."))
            {
                TableName = TableName.Substring(TableName.IndexOf(".", StringComparison.Ordinal) + 1);
            }
            if (String.IsNullOrEmpty(BatchSize) && String.IsNullOrEmpty(Timeout))
            {
                sqlBulkCopy = new MySqlBulkLoader(new MySqlConnection(runtimeDatabase.ConnectionString))
                {
                    TableName = TableName, FieldTerminator = ",", LineTerminator = "\n"
                };
            }
            else
            {
                while (parametersIteratorCollection.HasMoreData())
                {
                    sqlBulkCopy = SetupMySqlBulkCopy(batchItr, parametersIteratorCollection, timeoutItr, runtimeDatabase, currentOptions);
                }
            }
            if (sqlBulkCopy != null)
            {
                var dataTableToInsert = BuildDataTableToInsertMySql();

                if (InputMappings != null && InputMappings.Count > 0)
                {
                    var iteratorCollection = new WarewolfListIterator();
                    var listOfIterators    = GetIteratorsFromInputMappings(dataObject, iteratorCollection, out errorResultTo);
                    allErrors.MergeErrors(errorResultTo);

                    // oh no, we have an issue, bubble it out ;)
                    if (allErrors.HasErrors())
                    {
                        addExceptionToErrorList = false;
                        throw new Exception("Problems with Iterators for SQLBulkInsert");
                    }

                    // emit options to debug as per acceptance test ;)
                    if (dataObject.IsDebugMode())
                    {
                        AddBatchSizeAndTimeOutToDebug(dataObject.Environment);
                        AddOptionsDebugItems();
                    }

                    FillDataTableWithDataFromDataList(iteratorCollection, dataTableToInsert, listOfIterators);

                    foreach (var dataColumnMapping in InputMappings)
                    {
                        if (!String.IsNullOrEmpty(dataColumnMapping.InputColumn))
                        {
                            sqlBulkCopy.Columns.Add(dataColumnMapping.OutputColumn.ColumnName);
                        }
                    }
                }

                // Pass in wrapper now ;)
                var wrapper      = new MySqlBulkCopyWrapper(sqlBulkCopy);
                var inserted     = SqlBulkInserter.Insert(wrapper, dataTableToInsert);
                var resultString = inserted ? "Success" : "Failure";

                dataObject.Environment.Assign(Result, resultString);
                if (dataObject.IsDebugMode())
                {
                    AddDebugOutputItem(new DebugItemWarewolfAtomResult(resultString, Result, ""));
                }
                allErrors.MergeErrors(errorResultTo);
                if (dataTableToInsert != null)
                {
                    dataTableToInsert.Dispose();
                }
            }
        }
        protected override void ExecuteTool(IDSFDataObject dataObject)
        {
            _debugInputs  = new List <DebugItem>();
            _debugOutputs = new List <DebugItem>();

            ErrorResultTO allErrors = new ErrorResultTO();
            ErrorResultTO errors    = new ErrorResultTO();

            allErrors.MergeErrors(errors);

            var env = dataObject.Environment;

            InitializeDebug(dataObject);

            try
            {
                if (!errors.HasErrors())
                {
                    if (dataObject.IsDebugMode())
                    {
                        AddDebugInputItem(Length, From, To, dataObject.Environment, RandomType);
                    }

                    IWarewolfIterator lengthItr = !String.IsNullOrEmpty(Length) ? new WarewolfIterator(env.EvalStrict(Length)) as IWarewolfIterator : new WarewolfAtomIterator(new[] { DataASTMutable.WarewolfAtom.Nothing, });
                    var fromItr = !String.IsNullOrEmpty(From) ? new WarewolfIterator(env.EvalStrict(From)) as IWarewolfIterator : new WarewolfAtomIterator(new[] { DataASTMutable.WarewolfAtom.Nothing, });
                    var toItr   = !String.IsNullOrEmpty(To) ? new WarewolfIterator(env.EvalStrict(To)) as IWarewolfIterator : new WarewolfAtomIterator(new[] { DataASTMutable.WarewolfAtom.Nothing, });
                    WarewolfListIterator colItr = new WarewolfListIterator();
                    colItr.AddVariableToIterateOn(lengthItr);
                    colItr.AddVariableToIterateOn(fromItr);
                    colItr.AddVariableToIterateOn(toItr);

                    Dev2Random dev2Random = new Dev2Random();
                    while (colItr.HasMoreData())
                    {
                        int lengthNum = -1;
                        int fromNum   = -1;
                        int toNum     = -1;

                        string fromValue   = colItr.FetchNextValue(fromItr);
                        string toValue     = colItr.FetchNextValue(toItr);
                        string lengthValue = colItr.FetchNextValue(lengthItr);

                        if (RandomType != enRandomType.Guid)
                        {
                            if (RandomType == enRandomType.Numbers)
                            {
                                #region Getting the From

                                fromNum = GetFromValue(fromValue, out errors);
                                if (errors.HasErrors())
                                {
                                    allErrors.MergeErrors(errors);
                                    continue;
                                }

                                #endregion

                                #region Getting the To

                                toNum = GetToValue(toValue, out errors);
                                if (errors.HasErrors())
                                {
                                    allErrors.MergeErrors(errors);
                                    continue;
                                }

                                #endregion
                            }
                            else
                            {
                                #region Getting the Length

                                lengthNum = GetLengthValue(lengthValue, out errors);
                                if (errors.HasErrors())
                                {
                                    allErrors.MergeErrors(errors);
                                    continue;
                                }

                                #endregion
                            }
                        }
                        string value = dev2Random.GetRandom(RandomType, lengthNum, fromNum, toNum);

                        var rule   = new IsSingleValueRule(() => Result);
                        var single = rule.Check();
                        if (single != null)
                        {
                            allErrors.AddError(single.Message);
                        }
                        else
                        {
                            env.Assign(Result, value);
                        }
                    }
                }
                allErrors.MergeErrors(errors);
                if (!allErrors.HasErrors())
                {
                    AddDebugOutputItem(new DebugEvalResult(Result, "", dataObject.Environment));
                }
            }
            catch (Exception e)
            {
                Dev2Logger.Log.Error("DSFRandomActivity", e);
                allErrors.AddError(e.Message);
            }
            finally
            {
                // Handle Errors
                var hasErrors = allErrors.HasErrors();
                if (hasErrors)
                {
                    DisplayAndWriteError("DsfRandomActivity", allErrors);
                    var errorString = allErrors.MakeDisplayReady();
                    dataObject.Environment.AddError(errorString);
                }
                if (dataObject.IsDebugMode())
                {
                    if (hasErrors)
                    {
                        AddDebugOutputItem(new DebugItemStaticDataParams("", Result, ""));
                    }
                    DispatchDebugState(dataObject, StateType.Before);
                    DispatchDebugState(dataObject, StateType.After);
                }
            }
        }
Example #19
0
 public string SendEmail(IExchange runtimeSource, IWarewolfListIterator colItr, IWarewolfIterator toItr, IWarewolfIterator ccItr, IWarewolfIterator bccItr, IWarewolfIterator subjectItr, IWarewolfIterator bodyItr, IWarewolfIterator attachmentsItr, out ErrorResultTO errors) => SendEmail(runtimeSource, colItr, toItr, ccItr, bccItr, subjectItr, bodyItr, attachmentsItr, out errors, true);
Example #20
0
 public void AddVariableToIterateOn(IWarewolfIterator iterator)
 {
     _variablesToIterateOn.Add(iterator);
 }
Example #21
0
        public string FetchNextValue(IWarewolfIterator iterator)
        {
            var warewolfEvalResult = _variablesToIterateOn[_variablesToIterateOn.IndexOf(iterator)];

            return(warewolfEvalResult?.GetNextValue());
        }
 public void AddVariableToIterateOn(IWarewolfIterator iterator)
 {
     _variablesToIterateOn.Add(iterator);            
 }
        void DoInsertForSqlServer(DbSource runtimeDatabase, SqlBulkCopyOptions currentOptions, IDSFDataObject dataObject, ErrorResultTO allErrors, IWarewolfIterator batchItr, IWarewolfListIterator parametersIteratorCollection, IWarewolfIterator timeoutItr, ref ErrorResultTO errorResultTo, ref bool addExceptionToErrorList)
        {
            SqlBulkCopy sqlBulkCopy;

            if (String.IsNullOrEmpty(BatchSize) && String.IsNullOrEmpty(Timeout))
            {
                sqlBulkCopy = new SqlBulkCopy(runtimeDatabase.ConnectionString, currentOptions)
                {
                    DestinationTableName = TableName
                };
            }
            else
            {
                sqlBulkCopy = SetupSqlBulkCopy(batchItr, parametersIteratorCollection, timeoutItr, runtimeDatabase, currentOptions);
            }

            if (sqlBulkCopy != null)
            {
                var dataTableToInsert = BuildDataTableToInsert();

                var types   = GETTypesFromMappingTypes();
                var columns = GetNamesFromMappings();
                if (InputMappings != null && InputMappings.Count > 0)
                {
                    var iteratorCollection = new WarewolfListIterator();
                    var listOfIterators    = GetIteratorsFromInputMappings(dataObject, iteratorCollection, out errorResultTo);
                    iteratorCollection.Types = types;
                    iteratorCollection.Names = columns;
                    allErrors.MergeErrors(errorResultTo);
                    FillDataTableWithDataFromDataList(iteratorCollection, dataTableToInsert, listOfIterators);
                    // oh no, we have an issue, bubble it out ;)
                    if (allErrors.HasErrors())
                    {
                        addExceptionToErrorList = false;
                        throw new Exception("Problems with Iterators for SQLBulkInsert");
                    }

                    // emit options to debug as per acceptance test ;)
                    if (dataObject.IsDebugMode())
                    {
                        AddBatchSizeAndTimeOutToDebug(dataObject.Environment);
                        AddOptionsDebugItems();
                    }


                    if (InputMappings != null)
                    {
                        foreach (var dataColumnMapping in InputMappings)
                        {
                            if (!String.IsNullOrEmpty(dataColumnMapping.InputColumn))
                            {
                                sqlBulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(dataColumnMapping.OutputColumn.ColumnName, dataColumnMapping.OutputColumn.ColumnName));
                            }
                        }
                    }
                    var wrapper = new SqlBulkCopyWrapper(sqlBulkCopy);
                    SqlBulkInserter.Insert(wrapper, dataTableToInsert);
                    dataObject.Environment.Assign(Result, "Success");
                    if (dataObject.IsDebugMode())
                    {
                        AddDebugOutputItem(new DebugItemWarewolfAtomResult("Success", Result, ""));
                    }
                }
                if (dataTableToInsert != null)
                {
                    dataTableToInsert.Dispose();
                }
            }
        }
Example #24
0
        public string SendEmail(IExchange runtimeSource, IWarewolfListIterator colItr, IWarewolfIterator toItr, IWarewolfIterator ccItr, IWarewolfIterator bccItr, IWarewolfIterator subjectItr, IWarewolfIterator bodyItr, IWarewolfIterator attachmentsItr, out ErrorResultTO errors, bool isHtml)
        {
            InitializeService();
            errors = new ErrorResultTO();
            var toValue          = colItr.FetchNextValue(toItr);
            var ccValue          = colItr.FetchNextValue(ccItr);
            var bccValue         = colItr.FetchNextValue(bccItr);
            var subjectValue     = colItr.FetchNextValue(subjectItr);
            var bodyValue        = colItr.FetchNextValue(bodyItr);
            var attachmentsValue = colItr.FetchNextValue(attachmentsItr);
            var mailMessage      = new EmailMessage(ExchangeService)
            {
                Subject = subjectValue
            };

            AddToAddresses(toValue, mailMessage);

            mailMessage.Body = bodyValue;
            if (isHtml)
            {
                mailMessage.Body.BodyType = BodyType.HTML;
            }
            else
            {
                mailMessage.Body.BodyType = BodyType.Text;
            }

            if (!string.IsNullOrEmpty(ccValue))
            {
                AddCcAddresses(ccValue, mailMessage);
            }
            if (!string.IsNullOrEmpty(bccValue))
            {
                AddBccAddresses(bccValue, mailMessage);
            }
            if (!string.IsNullOrEmpty(attachmentsValue))
            {
                AddAttachmentsValue(attachmentsValue, mailMessage);
            }
            string result;

            try
            {
                EmailSender = new ExchangeEmailSender(runtimeSource);

                EmailSender.Send(ExchangeService, mailMessage);

                result = "Success";
            }
            catch (Exception e)
            {
                result = "Failure";
                errors.AddError(e.Message);
            }

            return(result);
        }
Example #25
0
        // ReSharper disable TooManyArguments
        string SendEmail(EmailSource runtimeSource, IWarewolfListIterator colItr, IWarewolfIterator fromAccountItr, IWarewolfIterator passwordItr, IWarewolfIterator toItr, IWarewolfIterator ccItr, IWarewolfIterator bccItr, IWarewolfIterator subjectItr, IWarewolfIterator bodyItr, IWarewolfIterator attachmentsItr, out ErrorResultTO errors)
        // ReSharper restore TooManyArguments
        {
            errors = new ErrorResultTO();
            var          fromAccountValue = colItr.FetchNextValue(fromAccountItr);
            var          passwordValue    = colItr.FetchNextValue(passwordItr);
            var          toValue          = colItr.FetchNextValue(toItr);
            var          ccValue          = colItr.FetchNextValue(ccItr);
            var          bccValue         = colItr.FetchNextValue(bccItr);
            var          subjectValue     = colItr.FetchNextValue(subjectItr);
            var          bodyValue        = colItr.FetchNextValue(bodyItr);
            var          attachmentsValue = colItr.FetchNextValue(attachmentsItr);
            MailMessage  mailMessage      = new MailMessage();
            MailPriority priority;

            if (Enum.TryParse(Priority.ToString(), true, out priority))
            {
                mailMessage.Priority = priority;
            }
            mailMessage.Subject = subjectValue;
            AddToAddresses(toValue, mailMessage);
            try
            {
                // Always use source account unless specifically overridden by From Account
                if (!string.IsNullOrEmpty(fromAccountValue))
                {
                    runtimeSource.UserName = fromAccountValue;
                    runtimeSource.Password = passwordValue;
                }
                mailMessage.From = new MailAddress(runtimeSource.UserName);
            }
            catch (Exception)
            {
                errors.AddError(string.Format("From address is not in the valid format: {0}", fromAccountValue));
                return("Failure");
            }
            mailMessage.Body = bodyValue;
            if (!String.IsNullOrEmpty(ccValue))
            {
                AddCcAddresses(ccValue, mailMessage);
            }
            if (!String.IsNullOrEmpty(bccValue))
            {
                AddBccAddresses(bccValue, mailMessage);
            }
            if (!String.IsNullOrEmpty(attachmentsValue))
            {
                AddAttachmentsValue(attachmentsValue, mailMessage);
            }
            string result;

            try
            {
                EmailSender.Send(runtimeSource, mailMessage);
                result = "Success";
            }
            catch (Exception e)
            {
                result = "Failure";
                errors.AddError(e.Message);
            }

            return(result);
        }