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

org.jboss.seam.drools.RuleAgent Maven / Gradle / Ivy

There is a newer version: 3.2.26.ayg
Show newest version
package org.jboss.seam.drools;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.util.Resources;

/**
 * Manager component for a rule base loaded from a drools RulesAgent
 */
@Scope(ScopeType.APPLICATION)
@BypassInterceptors
public class RuleAgent {
	private static final LogProvider log = Logging.getLogProvider(RuleAgent.class);

	private org.drools.agent.RuleAgent agent;
	private String configurationFile;

	private String newInstance;
	private String files;
	private String url;
	private String localCacheDir;
	private String poll;
	private String configName;

	@Create
	public void createAgent() throws Exception {
		Properties properties = new Properties();

		loadFromPath(properties, configurationFile);
		setLocalProperties(properties);

		agent = org.drools.agent.RuleAgent.newRuleAgent(properties);
		log.debug("Creating new rules agent");
	}

	protected void setLocalProperties(Properties properties) {
		if (newInstance != null) {
			properties.setProperty(org.drools.agent.RuleAgent.NEW_INSTANCE, newInstance);
		}
		if (files != null) {
			properties.setProperty(org.drools.agent.RuleAgent.FILES, files);
		}
		if (url != null) {
			properties.setProperty(org.drools.agent.RuleAgent.URLS, url);
		}
		if (localCacheDir != null) {
			properties.setProperty(org.drools.agent.RuleAgent.LOCAL_URL_CACHE, localCacheDir);
		}
		if (poll != null) {
			properties.setProperty(org.drools.agent.RuleAgent.POLL_INTERVAL, poll);
		}
		if (configName != null) {
			properties.setProperty(org.drools.agent.RuleAgent.CONFIG_NAME, configName);
		}

	}

	protected void loadFromPath(Properties properties, String configurationFile) throws IOException {
		if (configurationFile != null) {
			InputStream inputStream = Resources.getResourceAsStream(configurationFile, null);
			if (inputStream != null) {
				try {
					properties.load(inputStream);
				} finally {
					inputStream.close();
				}
			}
		}
	}

	@Unwrap
	public org.drools.RuleBase getRuleBase() {
		return agent.getRuleBase();
	}

	public String getNewInstance() {
		return newInstance;
	}

	public void setNewInstance(String newInstance) {
		this.newInstance = newInstance;
	}

	public String getFiles() {
		return files;
	}

	public void setFiles(String files) {
		this.files = files;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

	public String getLocalCacheDir() {
		return localCacheDir;
	}

	public void setLocalCacheDir(String localCacheDir) {
		this.localCacheDir = localCacheDir;
	}

	public String getPoll() {
		return poll;
	}

	public void setPoll(String poll) {
		this.poll = poll;
	}

	public String getConfigName() {
		return configName;
	}

	public void setConfigName(String name) {
		this.configName = name;
	}

	public String getConfigurationFile() {
		return configurationFile;
	}

	public void setConfigurationFile(String brmsConfig) {
		this.configurationFile = brmsConfig;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy