invokergenerator.java

来自「drools 一个开放源码的规则引擎」· Java 代码 · 共 66 行

JAVA
66
字号
package org.drools.semantics.java;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.drools.rule.Declaration;

public class InvokerGenerator
{

    public String generate(String methodName,
                           String returnType,
                           Map applicationData,
                           Set usedApplicationData,
                           Declaration[] declarations)
    {
        StringBuffer buffer = new StringBuffer();

        buffer.append( "package org.drools;\n" );
        buffer.append( "public " );
        buffer.append( returnType );
        buffer.append( " " );
        buffer.append( methodName );
        buffer.append( "(" );

        /*
         * values[i] = new DefaultKnowledgeHelper( rule, tuple ); i++;
         */

        String identifier = null;
        Class clazz = null;
        Iterator it = usedApplicationData.iterator();
        while ( it.hasNext() )
        {
            identifier = (String) it.next();
            clazz = (Class) applicationData.get( identifier );
            buffer.append( clazz.getName() );
            buffer.append( " " );
            buffer.append( identifier );
            buffer.append( " " );
            buffer.append( "applicationData.get(\"" );
            buffer.append( identifier );
            buffer.append( "\");\n" );
        }

        Declaration declaration = null;
        for ( int i = 0; i < declarations.length; i++ )
        {
            declaration = declarations[i];
            identifier = declaration.getIdentifier();
            clazz = declaration.getClass();
            buffer.append( clazz.getName() );
            buffer.append( " " );
            buffer.append( identifier );
            buffer.append( " " );
            buffer.append( "tuple.get(\"" );
            buffer.append( identifier );
            buffer.append( "\");\n" );
        }

        return buffer.toString();

    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?