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.
56 lines
2.3 KiB
56 lines
2.3 KiB
3 years ago
|
package com.fr.plugin.xxxx.bjjjrs.encode;
|
||
|
|
||
|
import com.fr.intelli.record.Focus;
|
||
|
import com.fr.intelli.record.Original;
|
||
|
import com.fr.io.collection.ExportCollection;
|
||
|
import com.fr.plugin.context.PluginContexts;
|
||
|
import com.fr.plugin.xxxx.bjjjrs.encode.operate.EncodeExcelOperate;
|
||
|
import com.fr.plugin.xxxx.bjjjrs.encode.operate.EncodeImageOperate;
|
||
|
import com.fr.plugin.xxxx.bjjjrs.encode.operate.EncodePDFOperate;
|
||
|
import com.fr.plugin.xxxx.bjjjrs.encode.operate.EncodeWordOperate;
|
||
|
import com.fr.plugin.transform.FunctionRecorder;
|
||
|
import com.fr.record.analyzer.EnableMetrics;
|
||
|
import com.fr.stable.fun.Authorize;
|
||
|
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
|
||
|
*/
|
||
|
@FunctionRecorder
|
||
|
@Authorize(callSignKey = Constants.PLUGIN_ID)
|
||
|
@EnableMetrics
|
||
|
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
|
||
|
@Focus(id = Constants.PLUGIN_ID, text = "导出加密", source = Original.PLUGIN)
|
||
|
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 && PluginContexts.currentContext().isAvailable()) {
|
||
|
//调用Operate的createCollection方法返回
|
||
|
return operate.newExportCollection(req, res, reportSessionIDInfor, fileName);
|
||
|
}
|
||
|
return super.createCollection(req, res, reportSessionIDInfor, format, fileName, isEmbed);
|
||
|
}
|
||
|
}
|