LogicalExpression.java :  » Math » migen » uk » ac » lkl » migen » system » ai » reasoning » rules » Java Open Source

Java Open Source » Math » migen 
migen » uk » ac » lkl » migen » system » ai » reasoning » rules » LogicalExpression.java
package uk.ac.lkl.migen.system.ai.reasoning.rules;

import java.util.*;

import uk.ac.lkl.migen.system.ai.reasoning.rules.operand.LogicOperator;

/**
 * A logical expression, either a disjunction or 
 * a conjunction with arbitrary arity.
 *  
 * @author sergut
 *
 */
public class LogicalExpression extends Rule {
    LogicOperator op = null;
    
    ArrayList<Rule> ruleList = null;
    
    public LogicalExpression(LogicOperator op, Rule...rules) {
  this.op = op;
  for (int i=0; i < rules.length; i++) {
      rules[i].addValueChangeListener(new RuleValueChangeListener() {
    public void ruleValueChange(RuleValueChangeEvent e) {
        boolean newValue = eval();
        if (newValue != factValue) {
      factValue = newValue;
      fireValueChange(e);
        }
    }
      });
      this.ruleList.add(rules[i]);
  }
    }
    
    private boolean eval() {
  Boolean result = null;
  for (Rule rule : ruleList) {
      if (result == null) {
    result = rule.factValue;
      } else {
    result = this.op.eval(result, rule.factValue);
      }
  }
  return result;
//  for (Iterator<Rule> itr = ruleList.iterator(); itr.hasNext();) {
//      Rule rule = itr.next();
//      booleanList.add(rule.factValue);
//  }
//  return op.eval(booleanList);
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.