资源读取接口
概述
本接口中定义了资源读取和调用的方法,用户通过实现接口的方法调用已有的资源进行展现或者修改。比如可以通过实现接口实现类完成从数据库读取资源或者从应用外的其他指定路径读取报表模板。
接口名
com.runqianapp.utils.IDataReader
接口说明
资源读取接口,通过实现其定义的方法,可以从调用已有的资源进行展现或者修改,系统会通过实现类的配置信息去调用接口实现类中的方法。
可用方法
getInputStream
语法:public InputStream getInputStream(String path);
参数说明:
- path - 报表路径
功能说明:获取指定路径的报表模板文件输入流
返回值: 获得报表模板文件的输入流
getFileList
语法:public List<String> getFileList(String path)
参数说明:
- path - 报表文件夹路径
功能说明:获取指定路径文件夹的报表名称列表。
返回值: 文件名称列表
close
语法:public void close();
功能说明:当系统不再使用报表文件时,会显式调用此方法。可在此方法中进行资源释放等工作。
使用说明
1.实现接口类IDataReader后将编译后的类文件存放至WEB-INF/classes/【包路径】下。例如:WEB-INF/classes/com/runqianapp/ngr/data/example/SampleDataReader.class。
2.配置实现类:将实现类配置在WEB-INF下的GlobalServer.xml的 <IOReport> 标签中。
配置如下:
<IOReport>
<inputProvider>com.runqianapp.utils.SampleDataReader </inputProvider>
</IOReport>
示例解析
public class SampleDataReader implements IDataReader {
//获取文件列表
public List<String> getFileList(String path) {
ArrayList<String> rlt = new ArrayList<String>();
String filepath = PathUtils.getAppPhyPath() + path;
File file = new File(filepath);
try {
if (!file.exists())
throw new FileNotFoundException("找不到文件目录!");
if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
rlt.add(readfile.getName());
}
}
}
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
return rlt;
}
public void close() {
}
//获取文件流
public InputStream getInputStream(String path) {
InputStream rlt = null;
try {
path = PathUtils.getAppPhyPath() + path;
File file = new File(path);
if (file.exists())
rlt = new FileInputStream(path);
} catch (Exception e) {
e.printStackTrace();
}
return rlt;
}
}
参考示例
//建议提供示例:读取D盘指定目录下的文件,读取数据库中存的资源
//目前已有示例: \资源读写客户化\资源读取接口\SampleDataReader.java
自定义数据分析和DBD单独调用时应该用的是此接口实现类,待验证。