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

📄 jrextendedbeandatasource.java

📁 iReport-0.4.1-src是iReport的源代码,iReport是一个开源的报表项目,可以生成PDF等格式报表
💻 JAVA
字号:
/* * JRiReportXMLDataSource.java * * Created on 22 giugno 2004, 14.55 */package it.businesslogic.ireport.connection;import java.util.*;/** * The XML datasource define a row as a path. * A path can be truncated. * @author  Administrator */public class JRExtendedBeanDataSource implements net.sf.jasperreports.engine.JRDataSource {    private Object[] beans = null;    private int index = -1;        public JRExtendedBeanDataSource(Vector beans)    {        this.beans = beans.toArray();    }         public JRExtendedBeanDataSource(Object[] beans)    {        this.beans = beans;    }         public Object getFieldValue(net.sf.jasperreports.engine.JRField jRField) throws net.sf.jasperreports.engine.JRException {                String path = jRField.getDescription();                Object val = getPathValue(beans[index], path);                if (val == null) return null;        if (val.getClass().isAssignableFrom( jRField.getValueClass() )) return val;        return null;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               }         public boolean next() throws net.sf.jasperreports.engine.JRException {               index++;        if (index >= beans.length) return false;        return true;    }           private Object getPathValue(Object bean, String path)    {        if (path == null || bean == null || path.trim().length() == 0)        {            return bean;        }	if (path.startsWith(".")) path = path.substring(1);        if (path.trim().length() == 0) return bean;                path = path.trim();        String attr_name = getNextNodeName(path );            java.lang.reflect.Method m = null;        try {            m = bean.getClass().getMethod("get" + attr_name,  new Class[]{});        } catch (Exception ex){ return null; }                if (m.getReturnType().isArray())        {            if (path.equals(attr_name))            {                try {                     return new JRExtendedBeanDataSource( (Object[])m.invoke(bean, new Object[]{}) );                 } catch (Exception ex){ return null; }            }            else return null;        }        else        {            if (path.equals(attr_name))            {                try {                    return m.invoke(bean, new Object[]{});                } catch (Exception ex){ return null; }            }            else            {                Object child_bean  = null;                try {                    child_bean = m.invoke(bean, new Object[]{});                } catch (Exception ex){ return null; }                path = path.substring(attr_name.length());                return getPathValue(child_bean, path );            }                   }               }            private static String getNextNodeName( String path)    {                if (path == null || path.length() ==0) return "";        if (path.startsWith(".")) path = path.substring(1);                String childToTake = path;        if (path.indexOf(".") >= 0)        {                childToTake = path.substring(0,path.indexOf("."));        }                       return childToTake;    }}

⌨️ 快捷键说明

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