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

📄 basedatasource.java

📁 Excel Report是一款基于Excel的报表生成工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            return value.toString();
        }
        
        return "";
    }
    
    /**
     * 取得数据源当前记录指定字段的值,
     * @param fieldName	字段名称
     * @param applyListener	<br>
	 * 				true 启用字段取值事件监听器; <br>
	 * 				false 不启用字段取值事件监听器。
     * @return 非空:返回字段值;
     * 		<br>null:字段或字段值不存在。
     */
    public Object getValue(String fieldName, boolean applyListener) {
        if(index < recordList.size() && recordList.size() > 0){
            Map curRecord = (Map)recordList.get(index);
            if(null == curRecord) return null;
            
            Object originalValue = curRecord.get(fieldName);
            Object retValue = getFieldListenerValue(fieldName, originalValue);
            if((null == originalValue) || (retValue != null)){
                //没取到则直接返回FieldListener中的值
                //如果FieldListener中有值,则优先返回该值。
                return retValue;
            }else{
                //FieldListener没有返回值,则直接返回Map中取得的值。
                return originalValue;
            }
        }
        return null;
    }
    
    /* (non-Javadoc)
     * @see excel.report.datasource.IDataSource#getValue(java.lang.String)
     */
    public Object getValue(String fieldName) {
        return getValue(fieldName, true);
    }
    
    /**
     * 取得当前记录的map, 调用该函数数据源会返回一个封装了当前记录的map对象。
     * @return	成功:返回当前封装了当前记录集的map对象。 <br>
     * 			失败:返回空(当前数据源为空或数据源游标处于记录集合的末尾)
     */
    public Map getCurRecord(){
        if(index < recordList.size() && recordList.size() > 0){
            return (Map)recordList.get(index);
        }
        return null;
    }
    
    /**
     * 取得字段取值监听器返回的字段值。
     * @param fieldName 监听的字段名称
     * @param value 字段原始值
     * @return 返回监听函数返回的值
     */
    private Object getFieldListenerValue(String fieldName, Object value){
        if(null == fieldListener){
            return null;
        }
        
        String[] fields = fieldListener.getFields();
        Object retValue = null;
        
        if(null == fields){
            retValue = fieldListener.getValue(this, fieldName, value);
        }else{
	        for(int i=0; i<fields.length; i++){
	            if(fields[i].equalsIgnoreCase(fieldName)){
	                retValue = fieldListener.getValue(this, fieldName, value);
	                break;
	            }
	        }
        }
        
        return retValue;
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#size()
     */
    public int size(){
        return recordList == null ? 0 : recordList.size();
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#getParams()
     */
    public Map getParams(){
        return params;
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#getFieldType(java.lang.String)
     */
    public String getFieldType(String fieldName){
        return (String)config.getFields().get(fieldName);
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSourceListener#setQueryDataListener(excel.report.IQueryDataListener)
     */
    public boolean setQueryDataListener(IQueryDataListener listener){
        if(null != listener){
            this.queryListener = listener;
            return true;
        }
        return false;
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSourceListener#setFieldListener(excel.report.datasource.IFieldListener)
     */
    public boolean setFieldListener(IFieldListener listener){
        if(null != listener){
            this.fieldListener = listener;
            return true;
        }
        return false;
    }
    
    /*
     *  (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    public String toString(){
        return this.getClass().getName();
    }
    
    /**
     * 初始化数据源记录集。调用该函数会丢掉数据源中原有的数据集。
     * @param capacity
     */
    public void initializeDataSourceCapacity(int capacity){
        if(null == recordList){
            recordList = new ArrayList(capacity);
        }else{
            recordList.clear();
            ((ArrayList)recordList).ensureCapacity(capacity);
        }
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#getType()
     */
    public String getType(){
        return "";
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#initialize()
     */
    public boolean initialize() throws Exception{
        return true;
    }
    
    /*
     *  (non-Javadoc)
     * @see excel.report.datasource.IDataSource#destroy()
     */
    public void destroy()throws Exception{
        ;
    }
    
    /**
     * 添加字段数据.向当前记录中添加一个字段数据。
     * @param field 字段名称。
     * @param value 字段数据值
     * @return true 数据添加成功; false 数据添加失败。
     */
    public boolean addField(String field, Object value){
        if(null != field && null != value){
            if(null == tempRecord){
                tempRecord = new HashMap();
            }
            tempRecord.put(field, value);
            return true;
        }
        return false;
    }
    
    /**
     * 修改数据源对象中当前记录的指定字段值。如果传入的字段不存在函数返回false。
     * 否则函数会将数据源对象当前记录集的字段值修改为value传入的值。
     * @param fieldName	要修改值的字段名称
     * @param value		字段的新的值。
     * @return			true:修改成功  false 修改失败
     */
    public boolean setFieldValue(String fieldName, Object value){
        if(null == fieldName || "".equals(fieldName) || null == value){
            return false;
        }
        
        if(index < recordList.size() && recordList.size() > 0){
            Map curRecord = (Map)recordList.get(index);
            Object fieldValue = curRecord.get(fieldName);
            if(null == fieldValue){
                return false;
            }
            curRecord.put(fieldName, value);
            return true;
        }
        
        return false;
    }
    
    /**
     * 在数据源中插入一条新记录.调用该操作后,会将先前插入的所有字段值作为一条记录插入到数据源中。
     * @return true 记录添加成功; false 记录添加失败。
     */
    public boolean addRecord(){
        if(null != tempRecord){
            this.addRecord(tempRecord);
            tempRecord = new HashMap();
            return true;
        }
        return false;
    }
    private Map tempRecord = null;
    
    /**
     * 加入一条新的记录到数据源
     * @param map 记录集合Map
     * @return 返回是否成功。true 成功, false 失败。
     */
    public boolean addRecord(Map map){
        if(null == this.recordList){
            recordList = new ArrayList();   
        }
        
        recordList.add(map);
        return true;
    }
    
    //保存当前记录游标.
    private int index = 0;
    //保存数据源配置文件
    private DataSourceConfig config = null;
    //保存数据源参数
    private Map params = null;
    //保存数据查询监听器
    private IQueryDataListener queryListener = null;
    //保存字段监视对象。
    private IFieldListener fieldListener = null;
    //保存记录数据列表.
    protected List recordList = null;
    //保存数据源参数初始化配子信息
    private Map paramsInit = null;
}

⌨️ 快捷键说明

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