package org.drools.builder.impl; import java.util.ArrayList; import java.util.Collection; import java.util.List; 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.ResourceConfiguration; import org.drools.builder.ResourceType; import org.drools.compiler.PackageBuilder; import org.drools.definition.KnowledgePackage; import org.drools.definitions.impl.KnowledgePackageImp; import org.drools.io.Resource; import org.drools.rule.Package; public class KnowledgeBuilderImpl implements KnowledgeBuilder { public PackageBuilder pkgBuilder; public KnowledgeBuilderImpl(PackageBuilder pkgBuilder) { this.pkgBuilder = pkgBuilder; } public void add(Resource resource, ResourceType type) { pkgBuilder.addKnowledgeResource( resource, type, null ) ; } public void add(Resource resource, ResourceType type, ResourceConfiguration configuration) { pkgBuilder.addKnowledgeResource( resource, type, configuration ); } public Collection<KnowledgePackage> getKnowledgePackages() { if ( pkgBuilder.hasErrors() ) { return new ArrayList<KnowledgePackage>( 0 ); } Package[] pkgs = pkgBuilder.getPackages(); List<KnowledgePackage> list = new ArrayList<KnowledgePackage>( pkgs.length ); for ( Package pkg : pkgs ) { list.add( new KnowledgePackageImp( pkg ) ); } return list; } public KnowledgeBase newKnowledgeBase() { KnowledgeBuilderErrors errors = getErrors(); if (errors.size() > 0) { for (KnowledgeBuilderError error: errors) { System.err.println(error); } throw new IllegalArgumentException("Could not parse knowledge."); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(getKnowledgePackages()); return kbase; } public boolean hasErrors() { return this.pkgBuilder.hasErrors(); } public KnowledgeBuilderErrors getErrors() { return this.pkgBuilder.getErrors(); } public PackageBuilder getPackageBuilder() { return this.pkgBuilder; } }