📄 elementfactory.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 + -