zoukankan      html  css  js  c++  java
  • 指令数据采集(五)--指令的条件的执行判断

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

     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为否
  • 相关阅读:
    WEBSERVICE 分析器错误信息: 未能创建类型
    Powerdesigner中表导出sql语句关于字段注释乱码的问题
    配置redis服务器允许远程连接
    [转]ubuntu系统重新分区、根目录扩容
    [转]自动驾驶平台Apollo 2.5环境搭建
    [转]在ROS下使用zeroconf配置多机通信
    ROS 安装完成后运行小乌龟示例程序
    [转]RoboWare Studio的使用和发布器/订阅器的编写与测试
    【转】ROS之topic和service通信比较
    【转】贝叶斯公式的直观理解(先验概率/后验概率)
  • 原文地址:https://www.cnblogs.com/binarysheep/p/7441884.html
Copyright © 2011-2022 走看看