⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elementfactory.java

📁 Excel Report是一款基于Excel的报表生成工具
💻 JAVA
字号:
/***********************************************************************
 * Module:  ElementFactory.java
 * Author:  juny
 * Created: 2006年7月13日 14:20:48
 * Purpose: Defines the Class ElementFactory
 ***********************************************************************/

package net.excel.report.base.element;

import net.excel.report.base.BaseElement;
import net.excel.report.base.ITempletContainer;
import net.excel.report.impl.Band;
import net.excel.report.impl.Group;
import net.excel.report.util.AnalyseTempletTool;
/**
 * Description: 模板元素创建工厂,该类负责根据模板定义创建相应的模板元素对象实例,<br>比如:<br>
 * $F{ds.fieldName1}: 创建一个字段类型实例。对应该变量的数据源名称为ds,字段名为fieldName1。<br>
 * $P{parameterName}: 创建一个参数类型变量实例。对应该变量的参数名为parameterName<br>
 * $
 * @author
 */
public class ElementFactory {
    /**
     * 根据模板文件取得模板元素对应的对象
     * @param elementTemplet
     * @param container
     * @return
     */
    public BaseElement getElement(String elementTemplet, ITempletContainer container) {
        BaseElement element = null;
        if(AnalyseTempletTool.isFieldTemplet(elementTemplet) 
                || AnalyseTempletTool.isArgumentTemplet(elementTemplet)){
            element = new CommonField(container);
        }
        
        if(AnalyseTempletTool.isVariableTemplet(elementTemplet)){
            element = new FormulateField(container);
        }
        
        if(AnalyseTempletTool.isBandTemplet(elementTemplet)){
            element = new Band(container);
        }
        
        if(AnalyseTempletTool.isGroupTemplet(elementTemplet)){
            element = new Group(container);
        }
        
        if(null != element){
            element.setElementTempletValue(elementTemplet);
        }
        
        return element;
    }
    
    /**
     * 取得变量的实例对象
     * @param variable
     * @return
     */
    public static Variable getVariableInstances(String variable){
        StringBuffer content = null;
        //modified by ajun 修改参数变量不能取别名的问题。
        content = new StringBuffer(AnalyseTempletTool.getElementDeclare(variable));
        
        //判断当前传入的变量定义模板是否取了别名
        if(AnalyseTempletTool.haveVariableName(content)){
            //去掉变量命名时外部的修饰符如:$F{{ds.field1} as field1}
            //运行该函数后content内的内容为:ds.field1
            AnalyseTempletTool.getVariableName(content);
        }
        
        if(AnalyseTempletTool.isFieldTemplet(variable)){
            return new FieldVariable(content.toString());
        }
        
        if(AnalyseTempletTool.isArgumentTemplet(variable)){
            return  new ParameterVariable(content.toString());
        }
        
        //默认的都是常量类型变量
        return new ConstantVariable(variable);
    }
    
    /**
     * 取得模板成员创建工厂
     * @return
     */
    public static ElementFactory getFactory(){
        if(null == factory){
            factory = new ElementFactory();
        }
        return factory;
    }
    
    private static ElementFactory factory = null;
    
}

⌨️ 快捷键说明

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