package arc42.drools.samples.aots_riddle;

import java.io.InputStreamReader;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;

public class AgeOfTheSonsRiddle {
  
  public static void main(final String[] args) throws Exception {
    
    // timer
    final long startTime = System.currentTimeMillis();
    
    final PackageBuilder builder = new PackageBuilder();
    builder.addPackageFromDrl(new InputStreamReader(
        AgeOfTheSonsRiddle.class
            .getResourceAsStream("/AgeOfTheSons.drl")));
    
    final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
    ruleBase.addPackage(builder.getPackage());
    
    final StatefulSession session = ruleBase.newStatefulSession();
    
    final long setupTime = System.currentTimeMillis();
    int i;
    for (i = 0; i < 19; i++)
      session.insert(new Son(i));
    
    session.fireAllRules();
    
    final long endTime = System.currentTimeMillis();
    session.dispose();
    
    System.out.print("Setting up the rule base took: " + (setupTime - startTime) + " ms");
    System.out.println("Finding the solution took "
        + (endTime - setupTime) + " ms");
  }
}