Package org.drools.common

Source Code of org.drools.common.ObjectTypeConfigurationRegistry

package org.drools.common;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.drools.facttemplates.Fact;
import org.drools.reteoo.ClassObjectTypeConf;
import org.drools.reteoo.FactTemplateTypeConf;
import org.drools.reteoo.ObjectTypeConf;
import org.drools.rule.EntryPoint;

public class ObjectTypeConfigurationRegistry implements Serializable {
    private InternalRuleBase ruleBase;
    private Map<Object, ObjectTypeConf> typeConfMap;
   

   
    public ObjectTypeConfigurationRegistry(InternalRuleBase ruleBase ) {
        super();
        this.ruleBase = ruleBase;
        this.typeConfMap = new HashMap<Object, ObjectTypeConf>();
    }



    /**
     * Returns the ObjectTypeConfiguration object for the given object or
     * creates a new one if none is found in the cache
     *
     * @param object
     * @return
     */
    public ObjectTypeConf getObjectTypeConf(EntryPoint entrypoint,
                                            Object object) {
       
        // first see if it's a ClassObjectTypeConf       
        ObjectTypeConf objectTypeConf = null;
        Class cls = null;
        if ( object instanceof Fact ) {
            String key = ((Fact) object).getFactTemplate().getName();
            objectTypeConf = (ObjectTypeConf) this.typeConfMap.get( key );           
        } else {
            cls = object.getClass();
            objectTypeConf = this.typeConfMap.get( cls );           
        }                      
       
        // it doesn't exist, so create it.
        if ( objectTypeConf == null ) {
            if ( object instanceof Fact ) {;
                objectTypeConf = new FactTemplateTypeConf( entrypoint,
                                                           ((Fact) object).getFactTemplate(),
                                                           this.ruleBase );          
                this.typeConfMap.put( ((Fact) object).getFactTemplate().getName(),
                                      objectTypeConf );
            } else {
                objectTypeConf = new ClassObjectTypeConf( entrypoint,
                                                          cls,
                                                          this.ruleBase );
                this.typeConfMap.put( cls, objectTypeConf );
            }           
        }

        return objectTypeConf;
    }

   
    public Collection<ObjectTypeConf> values() {
        return this.typeConfMap.values();
    }
}
TOP

Related Classes of org.drools.common.ObjectTypeConfigurationRegistry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.