예제 #1
0
 public static bool IsSingleOperand(this enDecisionType decisionType)
 {
     return
         (decisionType == enDecisionType.Choose ||
          decisionType == enDecisionType.IsError ||
          decisionType == enDecisionType.IsNotError ||
          decisionType == enDecisionType.IsNull ||
          decisionType == enDecisionType.IsNotNull ||
          decisionType == enDecisionType.IsNumeric ||
          decisionType == enDecisionType.IsNotNumeric ||
          decisionType == enDecisionType.IsText ||
          decisionType == enDecisionType.IsNotText ||
          decisionType == enDecisionType.IsAlphanumeric ||
          decisionType == enDecisionType.IsNotAlphanumeric ||
          decisionType == enDecisionType.IsXML ||
          decisionType == enDecisionType.IsNotXML ||
          decisionType == enDecisionType.IsDate ||
          decisionType == enDecisionType.IsNotDate ||
          decisionType == enDecisionType.IsEmail ||
          decisionType == enDecisionType.IsNotEmail ||
          decisionType == enDecisionType.IsRegEx ||
          decisionType == enDecisionType.NotRegEx ||
          decisionType == enDecisionType.IsBinary ||
          decisionType == enDecisionType.IsNotBinary ||
          decisionType == enDecisionType.IsHex ||
          decisionType == enDecisionType.IsNotHex ||
          decisionType == enDecisionType.IsBase64 ||
          decisionType == enDecisionType.IsNotBase64
         );
 }
예제 #2
0
        public static string GetDisplayValue(enDecisionType typeOf)
        {
            MemberInfo mi = typeof(enDecisionType).GetField(Enum.GetName(typeof(enDecisionType), typeOf));

            DecisionTypeDisplayValue attr = (DecisionTypeDisplayValue)Attribute.GetCustomAttribute(mi, typeof(DecisionTypeDisplayValue));

            return(attr.DisplayValue);
        }
예제 #3
0
        public static void RenderDescription(this enDecisionType decisionType, StringBuilder sb)
        {
            var name       = Enum.GetName(typeof(enDecisionType), decisionType);
            var memberInfo = typeof(enDecisionType).GetMember(name).First();
            var attribute  = memberInfo.GetCustomAttributes(typeof(DecisionTypeDisplayValue), false).First() as DecisionTypeDisplayValue;

            sb.Append(attribute.DisplayValue);
        }
예제 #4
0
        public static string GetDisplayValue(enDecisionType typeOf)
        {

            MemberInfo mi = typeof(enDecisionType).GetField(Enum.GetName(typeof(enDecisionType), typeOf));

            DecisionTypeDisplayValue attr = (DecisionTypeDisplayValue)Attribute.GetCustomAttribute(mi, typeof(DecisionTypeDisplayValue));

            return attr.DisplayValue;
        }
예제 #5
0
 public ToolLabelGenerator(enDecisionType evaluationFn, int populatedColumnCount, string col1, string col2, string col3, IExecutionEnvironment env, Dev2DecisionMode mode)
 {
     this._evaluationFn         = evaluationFn;
     this._populatedColumnCount = populatedColumnCount;
     this._col1 = col1;
     this._col2 = col2;
     this._col3 = col3;
     this._env  = env;
     this._mode = mode;
 }
예제 #6
0
        public void IsBetween_HandlesType_ReturnsIsBetweenType()
        {
            const enDecisionType DecisionType = enDecisionType.IsBetween;
            //------------Setup for test--------------------------
            var isBetween = new IsBetween();

            //------------Execute Test---------------------------
            //------------Assert Results-------------------------
            Assert.AreEqual(DecisionType, isBetween.HandlesType());
        }
 public IDecisionOperation FetchDecisionFunction(enDecisionType typeOf)
 {
     return(FindMatch(typeOf));
 }
예제 #8
0
        // Guid dlID
        /// <summary>
        /// Executes the decision stack.
        /// </summary>
        /// <param name="decisionDataPayload">The decision data payload.</param>
        /// <param name="oldAmbientData">The old ambient data.</param>
        /// <returns></returns>
        /// <exception cref="System.Data.InvalidExpressionException">Could not evaluate decision data - No decision function found for [  + typeOf + ]</exception>
        public bool ExecuteDecisionStack(string decisionDataPayload, IList <string> oldAmbientData)
        {
            Guid dlId = FetchDataListID(oldAmbientData);
//            if(dlId == GlobalConstants.NullDataListID) throw new InvalidExpressionException("Could not evaluate decision data - no DataList ID sent!");
            string newDecisionData = Dev2DecisionStack.FromVBPersitableModelToJSON(decisionDataPayload);
            var    dds             = EvaluateRegion(newDecisionData, dlId);


            var env = _environments[dlId];

            if (dds != null)
            {
                if (dlId != GlobalConstants.NullDataListID)
                {
                    try
                    {
                        if (dds.TheStack != null)
                        {
                            for (int i = 0; i < dds.TotalDecisions; i++)
                            {
                                Dev2Decision   dd     = dds.GetModelItem(i);
                                enDecisionType typeOf = dd.EvaluationFn;

                                // Treat Errors special
                                if (typeOf == enDecisionType.IsError || typeOf == enDecisionType.IsNotError)
                                {
                                    dd.Col1 = String.Join("", env.Errors);
                                }

                                IDecisionOperation op = Dev2DecisionFactory.Instance().FetchDecisionFunction(typeOf);
                                if (op != null)
                                {
                                    try
                                    {
                                        bool result = op.Invoke(dds.GetModelItem(i).FetchColsAsArray());

                                        if (!result && dds.Mode == Dev2DecisionMode.AND)
                                        {
                                            // Naughty stuff, we have a false in AND mode... break
                                            return(false);
                                        }

                                        if (result && dds.Mode == Dev2DecisionMode.OR)
                                        {
                                            return(true);
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        // An error, push into the DL
                                        env.AddError(e.Message);

                                        return(false);
                                    }
                                }
                                else
                                {
                                    throw new InvalidExpressionException("Could not evaluate decision data - No decision function found for [ " + typeOf + " ]");
                                }
                            }

                            // else we are in AND mode and all have passed ;)
                            if (dds.Mode == Dev2DecisionMode.AND)
                            {
                                return(true);
                            }

                            //finally, it must be OR mode with no matches ;(
                            return(false);
                        }

                        throw new InvalidExpressionException("Could not evaluate decision data - Invalid model data sent!");
                    }
                    catch
                    {
                        // all hell has broken loose... ;)
                        throw new InvalidExpressionException("Could not evaluate decision data - No model data sent!");
                    }
                }

                throw new InvalidExpressionException("Could not evaluate decision data - no DataList ID sent!");
            }

            throw new InvalidExpressionException("Could not populate decision model - DataList Errors!");
        }
예제 #9
0
 public IDecisionOperation FetchDecisionFunction(enDecisionType typeOf) => FindMatch(typeOf);
예제 #10
0
        public static string GetFailureMessage(enDecisionType decisionType)
        {
            // ReSharper disable once RedundantAssignment
            string errorMsg = string.Empty;

            switch (decisionType)
            {
            case enDecisionType.Choose:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_Choose;
                break;

            case enDecisionType.IsError:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsError;
                break;

            case enDecisionType.IsNotError:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotError;
                break;

            case enDecisionType.IsNull:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNull;
                break;

            case enDecisionType.IsNotNull:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotNull;
                break;

            case enDecisionType.IsNumeric:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNumeric;
                break;

            case enDecisionType.IsNotNumeric:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotNumeric;
                break;

            case enDecisionType.IsText:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsText;
                break;

            case enDecisionType.IsNotText:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotText;
                break;

            case enDecisionType.IsAlphanumeric:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsAlphanumeric;
                break;

            case enDecisionType.IsNotAlphanumeric:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotAlphanumeric;
                break;

            case enDecisionType.IsXML:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsXML;
                break;

            case enDecisionType.IsNotXML:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotXML;
                break;

            case enDecisionType.IsDate:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsDate;
                break;

            case enDecisionType.IsNotDate:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotDate;
                break;

            case enDecisionType.IsEmail:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsEmail;
                break;

            case enDecisionType.IsNotEmail:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotEmail;
                break;

            case enDecisionType.IsRegEx:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsRegEx;
                break;

            case enDecisionType.NotRegEx:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_NotRegEx;
                break;

            case enDecisionType.IsEqual:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_Equals;
                break;

            case enDecisionType.IsNotEqual:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotEqual;
                break;

            case enDecisionType.IsLessThan:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsLessThan;
                break;

            case enDecisionType.IsLessThanOrEqual:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsLessThanOrEqual;
                break;

            case enDecisionType.IsGreaterThan:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsGreaterThan;
                break;

            case enDecisionType.IsGreaterThanOrEqual:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsGreaterThanOrEqual;
                break;

            case enDecisionType.IsContains:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsContains;
                break;

            case enDecisionType.NotContain:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_NotContain;
                break;

            case enDecisionType.IsEndsWith:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsEndsWith;
                break;

            case enDecisionType.NotEndsWith:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_NotEndsWith;
                break;

            case enDecisionType.IsStartsWith:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsStartsWith;
                break;

            case enDecisionType.NotStartsWith:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_NotStartsWith;
                break;

            case enDecisionType.IsBetween:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsBetween;
                break;

            case enDecisionType.NotBetween:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_NotBetween;
                break;

            case enDecisionType.IsBinary:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsBinary;
                break;

            case enDecisionType.IsNotBinary:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotBinary;
                break;

            case enDecisionType.IsHex:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsHex;
                break;

            case enDecisionType.IsNotHex:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotHex;
                break;

            case enDecisionType.IsBase64:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsBase64;
                break;

            case enDecisionType.IsNotBase64:
                errorMsg = Warewolf.Resource.Messages.Messages.Test_FailureMessage_IsNotBase64;
                break;
            }
            return(errorMsg);
        }
        // Guid dlID
        /// <summary>
        /// Executes the decision stack.
        /// </summary>
        /// <param name="decisionDataPayload">The decision data payload.</param>
        /// <param name="oldAmbientData">The old ambient data.</param>
        /// <returns></returns>
        /// <exception cref="System.Data.InvalidExpressionException">Could not evaluate decision data - No decision function found for [  + typeOf + ]</exception>
        public bool ExecuteDecisionStack(string decisionDataPayload, IList <string> oldAmbientData)
        {
            // Evaluate decisionDataPayload through the EvaluateFunction ;)
            Guid dlId = FetchDataListID(oldAmbientData);

            if (dlId == GlobalConstants.NullDataListID)
            {
                throw new InvalidExpressionException("Could not evaluate decision data - no DataList ID sent!");
            }
            // Swap out ! with a new internal token to avoid nasty issues with
            string newDecisionData = Dev2DecisionStack.FromVBPersitableModelToJSON(decisionDataPayload);

            var dds = EvaluateRegion(newDecisionData, dlId);

            ErrorResultTO errors = new ErrorResultTO();

            if (dds != null)
            {
                if (dlId != GlobalConstants.NullDataListID)
                {
                    try
                    {
                        if (dds.TheStack != null)
                        {
                            for (int i = 0; i < dds.TotalDecisions; i++)
                            {
                                Dev2Decision   dd     = dds.GetModelItem(i);
                                enDecisionType typeOf = dd.EvaluationFn;

                                // Treat Errors special
                                if (typeOf == enDecisionType.IsError || typeOf == enDecisionType.IsNotError)
                                {
                                    dd.Col1 = Compiler.EvaluateSystemEntry(dlId, enSystemTag.Dev2Error, out errors);
                                }

                                IDecisionOperation op = Dev2DecisionFactory.Instance().FetchDecisionFunction(typeOf);
                                if (op != null)
                                {
                                    try
                                    {
                                        bool result = op.Invoke(dds.GetModelItem(i).FetchColsAsArray());

                                        if (!result && dds.Mode == Dev2DecisionMode.AND)
                                        {
                                            // Naughty stuff, we have a false in AND mode... break
                                            return(false);
                                        }

                                        if (result && dds.Mode == Dev2DecisionMode.OR)
                                        {
                                            return(true);
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        // An error, push into the DL
                                        ErrorResultTO errorErrors;
                                        errors.AddError(e.Message);
                                        Compiler.UpsertSystemTag(dlId, enSystemTag.Dev2Error, errors.MakeDataListReady(), out errorErrors);

                                        return(false);
                                    }
                                }
                                else
                                {
                                    throw new InvalidExpressionException("Could not evaluate decision data - No decision function found for [ " + typeOf + " ]");
                                }
                            }

                            // else we are in AND mode and all have passed ;)
                            if (dds.Mode == Dev2DecisionMode.AND)
                            {
                                return(true);
                            }

                            //finally, it must be OR mode with no matches ;(
                            return(false);
                        }

                        throw new InvalidExpressionException("Could not evaluate decision data - Invalid model data sent!");
                    }
                    catch
                    {
                        // all hell has broken loose... ;)
                        throw new InvalidExpressionException("Could not evaluate decision data - No model data sent!");
                    }
                }

                throw new InvalidExpressionException("Could not evaluate decision data - no DataList ID sent!");
            }

            throw new InvalidExpressionException("Could not populate decision model - DataList Errors!");
        }
예제 #12
0
#pragma warning disable S1541 // Methods and properties should not be too complex
        public static string GetFailureMessage(enDecisionType decisionType)
#pragma warning restore S1541 // Methods and properties should not be too complex
        {
            switch (decisionType)
            {
            case enDecisionType.Choose: return(Messages.Test_FailureMessage_Choose);

            case enDecisionType.IsError: return(Messages.Test_FailureMessage_IsError);

            case enDecisionType.IsNotError: return(Messages.Test_FailureMessage_IsNotError);

            case enDecisionType.IsNull: return(Messages.Test_FailureMessage_IsNull);

            case enDecisionType.IsNotNull: return(Messages.Test_FailureMessage_IsNotNull);

            case enDecisionType.IsNumeric: return(Messages.Test_FailureMessage_IsNumeric);

            case enDecisionType.IsNotNumeric: return(Messages.Test_FailureMessage_IsNotNumeric);

            case enDecisionType.IsText: return(Messages.Test_FailureMessage_IsText);

            case enDecisionType.IsNotText: return(Messages.Test_FailureMessage_IsNotText);

            case enDecisionType.IsAlphanumeric: return(Messages.Test_FailureMessage_IsAlphanumeric);

            case enDecisionType.IsNotAlphanumeric: return(Messages.Test_FailureMessage_IsNotAlphanumeric);

            case enDecisionType.IsXML: return(Messages.Test_FailureMessage_IsXML);

            case enDecisionType.IsNotXML: return(Messages.Test_FailureMessage_IsNotXML);

            case enDecisionType.IsDate: return(Messages.Test_FailureMessage_IsDate);

            case enDecisionType.IsNotDate: return(Messages.Test_FailureMessage_IsNotDate);

            case enDecisionType.IsEmail: return(Messages.Test_FailureMessage_IsEmail);

            case enDecisionType.IsNotEmail: return(Messages.Test_FailureMessage_IsNotEmail);

            case enDecisionType.IsRegEx: return(Messages.Test_FailureMessage_IsRegEx);

            case enDecisionType.NotRegEx: return(Messages.Test_FailureMessage_NotRegEx);

            case enDecisionType.IsEqual: return(Messages.Test_FailureMessage_Equals);

            case enDecisionType.IsNotEqual: return(Messages.Test_FailureMessage_IsNotEqual);

            case enDecisionType.IsLessThan: return(Messages.Test_FailureMessage_IsLessThan);

            case enDecisionType.IsLessThanOrEqual: return(Messages.Test_FailureMessage_IsLessThanOrEqual);

            case enDecisionType.IsGreaterThan: return(Messages.Test_FailureMessage_IsGreaterThan);

            case enDecisionType.IsGreaterThanOrEqual: return(Messages.Test_FailureMessage_IsGreaterThanOrEqual);

            case enDecisionType.IsContains: return(Messages.Test_FailureMessage_IsContains);

            case enDecisionType.NotContain: return(Messages.Test_FailureMessage_NotContain);

            case enDecisionType.IsEndsWith: return(Messages.Test_FailureMessage_IsEndsWith);

            case enDecisionType.NotEndsWith: return(Messages.Test_FailureMessage_NotEndsWith);

            case enDecisionType.IsStartsWith: return(Messages.Test_FailureMessage_IsStartsWith);

            case enDecisionType.NotStartsWith: return(Messages.Test_FailureMessage_NotStartsWith);

            case enDecisionType.IsBetween: return(Messages.Test_FailureMessage_IsBetween);

            case enDecisionType.NotBetween: return(Messages.Test_FailureMessage_NotBetween);

            case enDecisionType.IsBinary: return(Messages.Test_FailureMessage_IsBinary);

            case enDecisionType.IsNotBinary: return(Messages.Test_FailureMessage_IsNotBinary);

            case enDecisionType.IsHex: return(Messages.Test_FailureMessage_IsHex);

            case enDecisionType.IsNotHex: return(Messages.Test_FailureMessage_IsNotHex);

            case enDecisionType.IsBase64: return(Messages.Test_FailureMessage_IsBase64);

            case enDecisionType.IsNotBase64: return(Messages.Test_FailureMessage_IsNotBase64);

            default: return(string.Empty);
            }
        }
예제 #13
0
 public static bool IsTripleOperand(this enDecisionType decisionType)
 {
     return
         (decisionType == enDecisionType.IsBetween ||
          decisionType == enDecisionType.NotBetween);
 }