|
|
|
package com.fr.plugin.file.submit.oss.fun;
|
|
|
|
|
|
|
|
import com.aliyun.oss.OSSClient;
|
|
|
|
import com.fr.base.ParameterMapNameSpace;
|
|
|
|
import com.fr.data.NetworkHelper;
|
|
|
|
import com.fr.decision.fun.impl.BaseHttpHandler;
|
|
|
|
import com.fr.general.xml.GeneralXMLTools;
|
|
|
|
import com.fr.json.JSON;
|
|
|
|
import com.fr.json.JSONArray;
|
|
|
|
import com.fr.json.JSONFactory;
|
|
|
|
import com.fr.json.JSONObject;
|
|
|
|
import com.fr.log.FineLoggerFactory;
|
|
|
|
import com.fr.plugin.file.submit.oss.script.OssSubmitJavaScript;
|
|
|
|
import com.fr.plugin.oss.universal.config.OssUniversalConfig;
|
|
|
|
import com.fr.script.Calculator;
|
|
|
|
import com.fr.stable.ColumnRow;
|
|
|
|
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
import com.fr.web.core.ReportSessionIDInfor;
|
|
|
|
import com.fr.web.core.SessionPoolManager;
|
|
|
|
import com.fr.web.session.SessionIDInfo;
|
|
|
|
import com.fr.web.utils.WebUtils;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.PrintWriter;
|
|
|
|
|
|
|
|
public class OssUploadHttpHandler extends BaseHttpHandler {
|
|
|
|
@Override
|
|
|
|
public RequestMethod getMethod() {
|
|
|
|
return RequestMethod.POST;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getPath() {
|
|
|
|
return "/oss/upload";
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isPublic() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception {
|
|
|
|
final String httpRequestEncodeParameter = NetworkHelper.getHTTPRequestEncodeParameter(req, "xmlconf", true);
|
|
|
|
if (httpRequestEncodeParameter != null) {
|
|
|
|
String sessionID = NetworkHelper.getHTTPRequestParameter(req, "sessionID");
|
|
|
|
final ReportSessionIDInfor reportSessionIDInfor = SessionPoolManager.getSessionIDInfor(sessionID, ReportSessionIDInfor.class);
|
|
|
|
if (reportSessionIDInfor == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final OssSubmitJavaScript javaScript = (OssSubmitJavaScript) GeneralXMLTools.readStringAsXMLable(httpRequestEncodeParameter);
|
|
|
|
if (javaScript == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
final Calculator calculator = Calculator.createCalculator();
|
|
|
|
final ParameterMapNameSpace create = ParameterMapNameSpace.create(WebUtils.parameters4SessionIDInfor(req));
|
|
|
|
calculator.pushNameSpace(create);
|
|
|
|
this.initCalAttrAndNS(calculator, reportSessionIDInfor, req);
|
|
|
|
boolean b = true;
|
|
|
|
final JSONObject jsonObject = JSONObject.create();
|
|
|
|
OSSClient ossClient = new OSSClient(
|
|
|
|
OssUniversalConfig.getInstance().getEndPoint(),
|
|
|
|
OssUniversalConfig.getInstance().getAccessKeyId(),
|
|
|
|
OssUniversalConfig.getInstance().getRealAccessKeySecret());
|
|
|
|
try {
|
|
|
|
this.process(ossClient, javaScript, calculator);
|
|
|
|
} catch (Exception ex) {
|
|
|
|
FineLoggerFactory.getLogger().error(ex.getMessage(), ex);
|
|
|
|
b = false;
|
|
|
|
jsonObject.put("errorMsg", ex.getMessage());
|
|
|
|
} finally {
|
|
|
|
ossClient.shutdown();
|
|
|
|
}
|
|
|
|
calculator.removeNameSpace(create);
|
|
|
|
final PrintWriter printWriter = WebUtils.createPrintWriter(res);
|
|
|
|
final JSONArray jsonArray = JSONFactory.createJSON(JSON.ARRAY);
|
|
|
|
final JSONObject jsonObject2 = JSONFactory.createJSON(JSON.OBJECT);
|
|
|
|
jsonObject.put("success", b);
|
|
|
|
jsonObject2.put("oss_submit_info", jsonObject);
|
|
|
|
jsonArray.put(jsonObject2);
|
|
|
|
printWriter.print(jsonArray);
|
|
|
|
printWriter.flush();
|
|
|
|
printWriter.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void process(OSSClient ossClient, OssSubmitJavaScript javaScript, Calculator calculator) throws Exception {
|
|
|
|
OssUpload.upload(calculator, ossClient, javaScript.getSubmitTargetConfig());
|
|
|
|
}
|
|
|
|
|
|
|
|
private void initCalAttrAndNS(final Calculator calculator, final ReportSessionIDInfor reportSessionIDInfor, final HttpServletRequest httpServletRequest) {
|
|
|
|
calculator.setAttribute(Calculator.SHEET_NUMBER_KEY, WebUtils.getHTTPRequestParameter(httpServletRequest, "sheetNum"));
|
|
|
|
reportSessionIDInfor.setUpAttribute4dbCommit(calculator);
|
|
|
|
calculator.pushNameSpace(ParameterMapNameSpace.create(reportSessionIDInfor.getParameterMap4Execute()));
|
|
|
|
final ColumnRow value = ColumnRow.valueOf(WebUtils.getHTTPRequestParameter(httpServletRequest, "location"));
|
|
|
|
if (value != ColumnRow.ERROR) {
|
|
|
|
calculator.setAttribute(ColumnRow.CURRENT_CR_KEY, value);
|
|
|
|
}
|
|
|
|
calculator.pushNameSpace(SessionIDInfo.asNameSpace(reportSessionIDInfor));
|
|
|
|
}
|
|
|
|
}
|