//package tests;

//Check docu at http://downloads.jboss.com/drools/docs/5.0.1.26597.FINAL/drools-expert/html/ch02.html
//Bugs detected #cant compile# _28_08_2009_
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.conf.EventProcessingOption;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.KnowledgeBaseConfiguration;

public class drools_fusion {
	public static final void main(String [] args )
	{
	try {
		KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
		kbuilder.add(ResourceFactory.newClassPathResource("fusion.drl"), ResourceType.DRL);
		if ( kbuilder.hasErrors() ) {
		    System.err.println( kbuilder.getErrors().toString() );
		}
		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
		KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
		config.setOption(EventProcessingOption.STREAM);
		StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
		//KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");		
		
		/*Event evStream [] = new Event[128];		
		for (int i = 0 ; i<evStream.length ;i++)
		{
			evStream[i] = new Event(i);			
			//System.out.println(evStream[i].getId());
			ksession.insert(evStream[i]);
		}*/

		EventStream stream1 = new EventStream() ;
		stream1.register_session(ksession);
		stream1.generateEventStream(3, 0.499);	
		long mill = System.currentTimeMillis();
		ksession.fireAllRules();
		mill = System.currentTimeMillis() - mill ;
		System.out.println("Experiment is finished ! \nDrools time :: "+ mill + " ms");
		
		long mem0 = Runtime.getRuntime().totalMemory() -
      Runtime.getRuntime().freeMemory();
		System.out.println("memory used:" + mem0);
		//logger.close();
	}catch (Throwable t) {
		t.printStackTrace();
	}	
 
		
	}
	
	

}
