• 指令数据采集(五)--指令的条件的执行判断


    指令在执行的时候,执行当前的指令前,需要进行判断当前的指令是否需要执行,则需要对条件进行判断,根据前面设计的条件判断方式和对象,则现在的条件执行需要嵌套递归执行,也就是(条件组(条件组(条件组(条件组))))

     1 public class GroupConditionExector {
     2     private List<Param> paramList;
     3     public GroupConditionExector(List<Param> paramList){
     4         this.paramList = paramList;
     5     }
     6     public GroupConditionExector(){}
     7     public boolean execute(GroupCondition groupCondition){
     8         //组成员的判断
     9         IConditionOperation iConditionOperation = groupCondition.getiConditionOperation();
    10         IConditionOperation iConditionOperationGroup;
    11         Param paramA = groupCondition.getParamA();
    12         Param paramB = groupCondition.getParamB();
    13         //组成员
    14         if(paramList!=null&&!paramList.isEmpty()){
    15             for(Param param:paramList){
    16                 if(paramA!=null){
    17                     if(param.getParamKey()!=null
    18                             &&paramA.getParamKey()!=null
    19                             &&param.getParamKey().getKeyId()!=null
    20                             &&paramA.getParamKey().getKeyId()!=null
    21                             &&param.getParamKey().getKeyId().equals(paramA.getParamKey().getKeyId())){
    22                         //将当前的值复制给 判断的值
    23                         if(param.getParamValue()!=null) {
    24                             paramA.setParamValue(param.getParamValue());
    25                         }
    26                     }
    27                 }
    28             }
    29         }
    30         boolean paramFlag;
    31         //组属性的判断
    32         boolean groupFlag;
    33         boolean groupResult;
    34         /**
    35          * 如果设置了组判断的条件就进行判断
    36          * 如果没有设置组判断条件则直接返回
    37          * 递归处理条件
    38          */
    39         if(groupCondition.getGroupCondition()!=null) {
    40             groupFlag = execute(groupCondition.getGroupCondition());
    41             if(paramA!=null&&paramB!=null) {
    42                 //如果当前组的条件是存在的则进行处理
    43                 paramFlag= iConditionOperation.operation(paramA, paramB);
    44             }else {
    45                 //如果不存在则使用组的结果直接进行判断
    46                 paramFlag = groupFlag;
    47             }
    48             iConditionOperationGroup = groupCondition.getiConditionOperationGroup();
    49             groupResult = iConditionOperationGroup.operationLogic(paramFlag,groupFlag);
    50             /**
    51              * 经过组判断 返回组判断的结果
    52              */
    53             return groupResult;
    54         }else {
    55             //没有组进行判断
    56             paramFlag= iConditionOperation.operation(paramA, paramB);
    57             /**
    58              * 没有经过组判断 返回结果
    59              * 递归判断返回的结果
    60              */
    61             return paramFlag;
    62         }
    63 
    64     }
    65 }
    View Code
    递归判断执行对象 能够决定是否执行当前的指令,设置的是Instruction当中的isCondition属性,true为执行,false为否
  • 相关阅读:
    YTU 2543: 数字整除
    YTU 2542: 弟弟的作业
    YTU 2541: 汽水瓶
    YTU 2535: C++复数运算符重载(+与<<)
    YTU 2530: 小勇玩lol
    YTU 2520: 小慧唱卡拉OK
    YTU 2517: 打倒魔王↖(^ω^)↗
    YTU 2516: 剪刀石头布
    reload、replace、href、assign、window.history.go(0)的区别
    js 数组排序sort方法
  • 原文地址:https://www.cnblogs.com/binarysheep/p/7441884.html
Copyright © 2020-2023  润新知