Example #1
0
 public SubruleDebuggingConfigurationRule(SubruleDebuggingEvent sde, string message,
                                          SubruleMesssageMatchingMode smmm, SubruleDebuggingDecision sdd)
 {
     this.debuggingEvent      = sde;
     this.messageMatchingMode = smmm;
     this.messageToMatch      = message;
     this.decisionOnMatch     = sdd;
 }
Example #2
0
        public string ToString(SubruleMesssageMatchingMode mode)
        {
            switch (mode)
            {
            case SubruleMesssageMatchingMode.Equals: return("equals");

            case SubruleMesssageMatchingMode.StartsWith: return("startsWith");

            case SubruleMesssageMatchingMode.EndsWith: return("endsWith");

            case SubruleMesssageMatchingMode.Contains: return("contains");

            default: return("INTERNAL FAILURE, unknown SubruleMesssageMatchingMode");
            }
        }
Example #3
0
 public string ToString(SubruleMesssageMatchingMode mode)
 {
     switch(mode)
     {
         case SubruleMesssageMatchingMode.Equals: return "equals";
         case SubruleMesssageMatchingMode.StartsWith: return "startsWith";
         case SubruleMesssageMatchingMode.EndsWith: return "endsWith";
         case SubruleMesssageMatchingMode.Contains: return "contains";
         default: return "INTERNAL FAILURE, unknown SubruleMesssageMatchingMode";
     }
 }
Example #4
0
        private SubruleDebuggingConfigurationRule EditOrCreateRule(SubruleDebuggingConfigurationRule cr)
        {
            // edit or keep type
            SubruleDebuggingEvent sde = DetermineEventTypeToConfigure(cr);

            if (sde == SubruleDebuggingEvent.Undefined)
            {
                return(null);
            }

            // for Add, Rem, Emit, Halt, Highlight
            string message = null;
            SubruleMesssageMatchingMode smmm = SubruleMesssageMatchingMode.Undefined;

            // for Match
            IAction action = null;

            // for New, Delete, Retype, SetAttributes
            string    graphElementName = null;
            GrGenType graphElementType = null;
            bool      only             = false;

            if (sde == SubruleDebuggingEvent.Add || sde == SubruleDebuggingEvent.Rem || sde == SubruleDebuggingEvent.Emit ||
                sde == SubruleDebuggingEvent.Halt || sde == SubruleDebuggingEvent.Highlight)
            {
                // edit or keep message matching mode and message
                smmm = DetermineMessageAndMessageMatchingMode(cr,
                                                              out message);
                if (smmm == SubruleMesssageMatchingMode.Undefined)
                {
                    return(null);
                }
            }
            else if (sde == SubruleDebuggingEvent.Match)
            {
                // edit ok keep action name
                action = DetermineAction(cr);
                if (action == null)
                {
                    return(null);
                }
            }
            else if (sde == SubruleDebuggingEvent.New || sde == SubruleDebuggingEvent.Delete ||
                     sde == SubruleDebuggingEvent.Retype || sde == SubruleDebuggingEvent.SetAttributes)
            {
                // edit or keep choice of type, exact type, name
                bool abort = DetermineMatchGraphElementMode(cr,
                                                            out graphElementName, out graphElementType, out only);
                if (abort)
                {
                    return(null);
                }
            }

            // edit or keep decision action
            SubruleDebuggingDecision sdd = DetermineDecisionAction(cr);

            if (sdd == SubruleDebuggingDecision.Undefined)
            {
                return(null);
            }

            // edit or keep condition if type action or graph change
            SequenceExpression ifClause = null;

            if (sde != SubruleDebuggingEvent.Add && sde != SubruleDebuggingEvent.Rem && sde != SubruleDebuggingEvent.Retype &&
                sde != SubruleDebuggingEvent.Halt && sde != SubruleDebuggingEvent.Highlight)
            {
                ifClause = DetermineCondition(cr, sde, action, graphElementType);
            }

            if (sde == SubruleDebuggingEvent.Add || sde == SubruleDebuggingEvent.Rem || sde == SubruleDebuggingEvent.Emit ||
                sde == SubruleDebuggingEvent.Halt || sde == SubruleDebuggingEvent.Highlight)
            {
                return(new SubruleDebuggingConfigurationRule(sde, message, smmm, sdd));
            }
            else if (sde == SubruleDebuggingEvent.Match)
            {
                return(new SubruleDebuggingConfigurationRule(sde, action, sdd, ifClause));
            }
            else if (sde == SubruleDebuggingEvent.New || sde == SubruleDebuggingEvent.Delete ||
                     sde == SubruleDebuggingEvent.Retype || sde == SubruleDebuggingEvent.SetAttributes)
            {
                if (graphElementName != null)
                {
                    return(new SubruleDebuggingConfigurationRule(sde, graphElementName, sdd, ifClause));
                }
                else
                {
                    return(new SubruleDebuggingConfigurationRule(sde, graphElementType, only, sdd, ifClause));
                }
            }

            return(null);
        }
Example #5
0
 public SubruleDebuggingConfigurationRule(SubruleDebuggingEvent sde, string message, 
     SubruleMesssageMatchingMode smmm, SubruleDebuggingDecision sdd)
 {
     this.debuggingEvent = sde;
     this.messageMatchingMode = smmm;
     this.messageToMatch = message;
     this.decisionOnMatch = sdd;
 }