package org.examples.test;

//import java.io.File;
//import java.net.URL;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentConfiguration;
import org.drools.agent.KnowledgeAgentFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.examples.utils.Balance;
import org.examples.utils.Cuenta;

public class TestKnowledgeAgent {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		KnowledgeAgent agent = null;
		try {
			agent = KnowledgeAgentFactory.newKnowledgeAgent("Demo Agent", getKnowledgeBase(), getKnowledgeAgentConfiguration());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
//		agent = KnowledgeAgentFactory.newKnowledgeAgent("MyAgent");		
//		agent.applyChangeSet( ResourceFactory.newUrlResource("http://localhost:8383/drools-guvnor/org.drools.guvnor.Guvnor/package/org.examples/org.examples/ChangeSet.xml") );
		
		KnowledgeBase kBase = agent.getKnowledgeBase();
		StatefulKnowledgeSession session = kBase.newStatefulKnowledgeSession();
		
		/*
		     Insert facts in session
		*/
				
		session.fireAllRules();	

	}
	
	private static KnowledgeAgentConfiguration getKnowledgeAgentConfiguration() throws Exception {
		KnowledgeAgentConfiguration conf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
		conf.setProperty("drools.agent.scanDirectories", "true");
		
		return conf;		
	}
	
	private static KnowledgeBase getKnowledgeBase() throws Exception{
		KnowledgeBase knowledgeBase = null;
		String url = "http://localhost:8383/drools-guvnor/org.drools.guvnor.Guvnor/package/org.examples/org.examples";
		KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
		builder.add(ResourceFactory.newUrlResource(url), ResourceType.PKG);
		if(builder.hasErrors()){
			throw new RuntimeException(builder.getErrors().toString());			
		}
		
		knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
		knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
		
		return knowledgeBase;		
	}
	
	

}
