All Downloads are FREE. Search and download functionalities are using the official Maven repository.

astra.core.GoalRule Maven / Gradle / Ivy

package astra.core;

import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import astra.event.Event;
import astra.formula.Formula;
import astra.formula.IsDone;
import astra.formula.Predicate;
import astra.reasoner.util.LogicVisitor;
import astra.statement.Statement;

public class GoalRule extends Rule {
	public Formula dropCondition;
	public Map> rules = new HashMap>();
	public Set filter = new HashSet();
	
	public GoalRule(Event event, Statement statement) {
		this(event, Predicate.TRUE, new IsDone(), statement);
	}
	
	public GoalRule(Event event, Formula context, Statement statement) {
		this(event, context, new IsDone(), statement);
	}
	
	public GoalRule(Event event, Formula context, Formula dropCondition, Statement statement) {
		super(event, context, statement);
		this.dropCondition = dropCondition;
	}

	public GoalRule(String clazz, int[] data, Event event, Statement statement) {
		this(clazz, data, event, Predicate.TRUE, new IsDone(), statement);
	}
	
	public GoalRule(String clazz, int[] data, Event event, Formula context, Statement statement) {
		this(clazz, data, event, context, new IsDone(), statement);
	}
	public GoalRule(String clazz, int[] data, Event event, Formula context, Statement statement, Rule[] rules) {
		this(clazz, data, event, context, new IsDone(), statement);
		
		for (int i=0;i> rules() {
		return rules;
	}
	
	public void addRule(Rule rule) {
		List list = rules.get(rule.event.signature());

		if (list == null) {
			filter.add(rule.event.signature());
			list = new LinkedList();
			rules.put(rule.event.signature(), list);
		}
		
		list.add(rule);
	}

	public Set filter() {
		return filter;
	}

	public String toString() {
		return event.toString() + " : " + context.toString();
	}

	public Rule accept(LogicVisitor visitor) {
		// System.out.println("Copying: " + event);
		// System.out.println("Rules: " + rules);
		GoalRule goalRule = new GoalRule((Event) event.accept(visitor), (Formula) context.accept(visitor), (Formula) dropCondition.accept(visitor), statement);
		for (List list : rules.values()) {
			for (Rule rule : list) {
				// System.out.println(">>>>>>>>>>>>>>>>>>>>>> Adding: " + rule.accept(visitor));
				goalRule.addRule((Rule) rule.accept(visitor));
			}
		}
		return goalRule;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy