You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.8 KiB
46 lines
1.8 KiB
package com.fr.plugin.xxxx.report.ecode; |
|
|
|
import com.fr.io.collection.ExportCollection; |
|
import com.fr.plugin.xxxx.report.ecode.operate.EncodeExcelOperate; |
|
import com.fr.plugin.xxxx.report.ecode.operate.EncodeImageOperate; |
|
import com.fr.plugin.xxxx.report.ecode.operate.EncodePDFOperate; |
|
import com.fr.plugin.xxxx.report.ecode.operate.EncodeWordOperate; |
|
import com.fr.web.core.ReportSessionIDInfor; |
|
import com.fr.web.core.reserve.DefaultExportExtension; |
|
import com.fr.web.core.reserve.Operate; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import java.util.HashMap; |
|
import java.util.Map; |
|
|
|
/** |
|
* @author fr.open |
|
* @Date 2021/08/01 |
|
*/ |
|
public class EncodeExtensionProcessor extends DefaultExportExtension { |
|
/** |
|
* 简单定义一个map来存储导出格式和Operate之间的关系, |
|
* 并且初始化 |
|
*/ |
|
private static Map<String, Operate> operateMap = new HashMap<String, Operate>(); |
|
|
|
static { |
|
//pdf就使用自定义的EncodePDFOperate |
|
operateMap.put("pdf", new EncodePDFOperate()); |
|
operateMap.put("word", new EncodeWordOperate()); |
|
operateMap.put("image", new EncodeImageOperate()); |
|
operateMap.put("excel", new EncodeExcelOperate()); |
|
} |
|
|
|
@Override |
|
public ExportCollection createCollection(HttpServletRequest req, HttpServletResponse res, ReportSessionIDInfor reportSessionIDInfor, String format, String fileName, boolean isEmbed) throws Exception { |
|
//优先从自定义的map中获取Operate |
|
Operate operate = operateMap.get(format.toLowerCase()); |
|
if (operate != null) { |
|
//调用Operate的createCollection方法返回 |
|
return operate.newExportCollection(req, res, reportSessionIDInfor, fileName); |
|
} |
|
return super.createCollection(req, res, reportSessionIDInfor, format, fileName, isEmbed); |
|
} |
|
} |