package org.drools.chance.reteoo.builder; import org.drools.RuntimeDroolsException; import org.drools.chance.factmodel.Imperfect; import org.drools.lang.descr.*; import org.drools.rule.GroupElement; import org.drools.rule.builder.GroupElementBuilder; public class ChanceRuleGroupElementBuilder extends GroupElementBuilder { protected GroupElement newGroupElementFor( final BaseDescr baseDescr ) { Class descr = baseDescr.getClass(); ChanceGroupElement ge; if ( AndDescr.class.isAssignableFrom( descr ) ) { ge = ChanceGroupElementFactory.newAndInstance(); } else if ( OrDescr.class.isAssignableFrom( descr ) ) { ge = ChanceGroupElementFactory.newOrInstance(); } else if ( NotDescr.class.isAssignableFrom( descr ) ) { ge = ChanceGroupElementFactory.newNotInstance(); } else if ( ExistsDescr.class.isAssignableFrom( descr ) ) { ge = ChanceGroupElementFactory.newExistsInstance(); } else { throw new RuntimeDroolsException( "BUG: Not able to create a group element for descriptor: " + descr.getName() ); } if ( baseDescr instanceof AnnotatedBaseDescr ) { AnnotationDescr meta = ((AnnotatedBaseDescr) baseDescr).getAnnotation( Imperfect.class.getSimpleName() ); ge.initMetadata( meta ); } return ge; } }