(1)加入新异常,调用外部程序异常。原外部程序调用异常提示在在返回信息
(2)音视频控制类异常处理,防止出现表单提交,审核时为了防止出现未知异常导致界面出错,catch MaatCovertException修改为catch exeption,根据异常类型进行判断返回界面信息 (3)message.tag不够严谨,修改了success的判断
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package com.nis.exceptions;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
|
||||
import com.nis.util.Configurations;
|
||||
|
||||
/**
|
||||
* 调用外部程序出错异常
|
||||
* @author dell
|
||||
*
|
||||
*/
|
||||
public class CallExternalProceduresException extends RuntimeException {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String message=getMsgProp().getProperty("call_external_procedures_failed", "Call external procedures failed");
|
||||
public CallExternalProceduresException() {
|
||||
super(message);
|
||||
}
|
||||
public CallExternalProceduresException(String message) {
|
||||
super(message);
|
||||
|
||||
}
|
||||
public CallExternalProceduresException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取国际化配置文件
|
||||
* @return
|
||||
*/
|
||||
public static Properties getMsgProp(){
|
||||
Properties msgProp = new Properties();
|
||||
try {
|
||||
String language = LocaleContextHolder.getLocale().getLanguage();
|
||||
if(language.equals("zh_cn")||language.equals("zh")){
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_zh_CN.properties"));
|
||||
}else if(language.equals("ru")){
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_ru.properties"));
|
||||
}else{
|
||||
msgProp.load(Configurations.class.getResourceAsStream("/messages/message_en.properties"));
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
msgProp = null;
|
||||
}
|
||||
return msgProp;
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,7 @@ import com.nis.domain.configuration.AvSignSampleCfg;
|
||||
import com.nis.domain.configuration.AvSignSampleCfgModel;
|
||||
import com.nis.domain.maat.ToMaatResult;
|
||||
import com.nis.domain.maat.ToMaatResult.ResponseData;
|
||||
import com.nis.exceptions.CallExternalProceduresException;
|
||||
import com.nis.exceptions.MaatConvertException;
|
||||
import com.nis.util.ConfigServiceUtil;
|
||||
import com.nis.util.Constants;
|
||||
@@ -157,7 +158,11 @@ public class AvController extends BaseController {
|
||||
}catch(Exception e){
|
||||
logger.error("文件上传失败",e);
|
||||
e.printStackTrace();
|
||||
addMessage(redirectAttributes,this.getMsgProp().getProperty("request_service_failed")+e.getMessage());
|
||||
if(e instanceof MaatConvertException||e instanceof CallExternalProceduresException) {
|
||||
addMessage(redirectAttributes,e.getMessage());
|
||||
}else {
|
||||
addMessage(redirectAttributes,"save_failed");
|
||||
}
|
||||
}
|
||||
|
||||
return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+entity.getFunctionId();
|
||||
@@ -165,7 +170,17 @@ public class AvController extends BaseController {
|
||||
//保存标志样例配置
|
||||
@RequestMapping(value = {"/sample/saveAudioSignSample"})
|
||||
public String saveAudioSignSample(Model model,HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,String ids,AvSignSampleCfg entity){
|
||||
avCfgService.saveOrUpdateAvSignSample(entity);
|
||||
try{
|
||||
avCfgService.saveOrUpdateAvSignSample(entity);
|
||||
}catch(Exception e){
|
||||
logger.error("saveAudioSignSample failed",e);
|
||||
e.printStackTrace();
|
||||
if(e instanceof MaatConvertException||e instanceof CallExternalProceduresException) {
|
||||
addMessage(redirectAttributes,e.getMessage());
|
||||
}else {
|
||||
addMessage(redirectAttributes,"save_failed");
|
||||
}
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/av/sample/audioSignSampleList?functionId="+entity.getFunctionId();
|
||||
}
|
||||
//修改文件样例配置状态
|
||||
@@ -248,10 +263,15 @@ public class AvController extends BaseController {
|
||||
if(!oldSampleUrl.equals(entity.getSampleUrl())){
|
||||
FileUtils.deleteFile(oldSampleUrl);
|
||||
}
|
||||
} catch (MaatConvertException e) {
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
logger.info("音视频文件样例配置下发失败:"+e.getMessage());
|
||||
addMessage(redirectAttributes,this.getMsgProp().getProperty("request_service_failed")+ e.getMessage());
|
||||
if(e instanceof MaatConvertException) {
|
||||
logger.info("音视频文件样例配置下发失败:"+e.getMessage());
|
||||
addMessage(redirectAttributes,e.getMessage());
|
||||
}else {
|
||||
logger.error("auditAvFileSample failed",e);
|
||||
addMessage(redirectAttributes,"audit_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/av/sample/fileSampleList?functionId="+functionId;
|
||||
@@ -285,10 +305,15 @@ public class AvController extends BaseController {
|
||||
entity.setAuditTime(new Date());
|
||||
try {
|
||||
avCfgService.audioAuditAvSignSample(entity,isAudit);
|
||||
} catch (MaatConvertException e) {
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
logger.info("音视频标识样例配置下发失败:"+e.getMessage());
|
||||
addMessage(redirectAttributes,this.getMsgProp().getProperty("request_service_failed")+ e.getMessage());
|
||||
if(e instanceof MaatConvertException) {
|
||||
logger.info("音视频标识样例配置下发失败:"+e.getMessage());
|
||||
addMessage(redirectAttributes,e.getMessage());
|
||||
}else {
|
||||
logger.error("auditAvAudioSignSample failed",e);
|
||||
addMessage(redirectAttributes,"audit_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
return "redirect:" + adminPath +"/ntc/av/sample/audioSignSampleList?functionId="+functionId;
|
||||
@@ -313,9 +338,15 @@ public class AvController extends BaseController {
|
||||
if(!avSignSampleCfg.getIsValid().equals(avSignSampleCfg.getIsValidOld())){
|
||||
try {
|
||||
avCfgService.auditAvSignSample(avSignSampleCfg);
|
||||
} catch (MaatConvertException e) {
|
||||
logger.error("下发失败",e);
|
||||
addMessage(redirectAttributes,this.getMsgProp().getProperty("request_service_failed")+ e.getMessage());
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
if(e instanceof MaatConvertException) {
|
||||
logger.error("下发失败",e);
|
||||
addMessage(redirectAttributes,e.getMessage());
|
||||
}else {
|
||||
logger.error("auditAvSignSample failed",e);
|
||||
addMessage(redirectAttributes,"audit_failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,20 +12,15 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
import org.apache.commons.lang.StringEscapeUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.nis.domain.Page;
|
||||
import com.nis.domain.configuration.AvFileSampleCfg;
|
||||
import com.nis.domain.configuration.AvSignSampleCfg;
|
||||
import com.nis.domain.maat.ToMaatResult;
|
||||
import com.nis.domain.maat.ToMaatResult.ResponseData;
|
||||
import com.nis.exceptions.CallExternalProceduresException;
|
||||
import com.nis.exceptions.MaatConvertException;
|
||||
import com.nis.util.ConfigServiceUtil;
|
||||
import com.nis.util.Constants;
|
||||
@@ -35,6 +30,9 @@ import com.nis.web.dao.configuration.AvCfgDao;
|
||||
import com.nis.web.security.UserUtils;
|
||||
import com.nis.web.service.BaseService;
|
||||
|
||||
import net.sf.json.JSONArray;
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
|
||||
/**
|
||||
* 音视频配置相关事务类
|
||||
@@ -170,30 +168,39 @@ public class AvCfgService extends BaseService{
|
||||
}
|
||||
|
||||
logger.info("调用外部程序输入参数:"+param);
|
||||
Map resultMap = execShell(sampleCreatelProc,param);
|
||||
logger.info("调用外部程序结果:"+resultMap);
|
||||
if(resultMap.get("exitStatus").equals(0)){//调用外部程序成功
|
||||
String out = resultMap.get("out").toString();//输出参数
|
||||
JSONArray resArray =JSONArray.fromObject(out);
|
||||
JSONObject resObject = resArray.getJSONObject(0);
|
||||
logger.info("调用外部程序输出参数:"+resObject);
|
||||
int state = resObject.getInt("state");
|
||||
int fileSize = resObject.getInt("fileSize");
|
||||
Integer fileId = resObject.getInt("fileId");
|
||||
if(state==1 && fileSize>0){//成功
|
||||
entity.setIsSampleCreated(1);//样例文件创建成功
|
||||
try {
|
||||
Map resultMap = execShell(sampleCreatelProc,param);
|
||||
logger.info("调用外部程序结果:"+resultMap);
|
||||
if(resultMap.get("exitStatus").equals(0)){//调用外部程序成功
|
||||
String out = resultMap.get("out").toString();//输出参数
|
||||
JSONArray resArray =JSONArray.fromObject(out);
|
||||
JSONObject resObject = resArray.getJSONObject(0);
|
||||
logger.info("调用外部程序输出参数:"+resObject);
|
||||
int state = resObject.getInt("state");
|
||||
int fileSize = resObject.getInt("fileSize");
|
||||
Integer fileId = resObject.getInt("fileId");
|
||||
if(state==1 && fileSize>0){//成功
|
||||
entity.setIsSampleCreated(1);//样例文件创建成功
|
||||
}else{
|
||||
entity.setIsSampleCreated(-1);//样例文件创建失败
|
||||
}
|
||||
if(fileId.equals(entity.getCfgId().intValue())){
|
||||
File uploadSampleFile = new File(entity.getSamplePath());
|
||||
String sampleMd5 = FileUtils.getFileMD5(uploadSampleFile);
|
||||
entity.setSampleMd5(sampleMd5);
|
||||
}else{
|
||||
logger.info("调用外部程序返回fileId错误,输入的fileId为:"+entity.getCfgId()+",输出的fileId为:"+fileId);
|
||||
}
|
||||
}else{
|
||||
entity.setIsSampleCreated(-1);//样例文件创建失败
|
||||
throw new CallExternalProceduresException();
|
||||
}
|
||||
if(fileId.equals(entity.getCfgId().intValue())){
|
||||
File uploadSampleFile = new File(entity.getSamplePath());
|
||||
String sampleMd5 = FileUtils.getFileMD5(uploadSampleFile);
|
||||
entity.setSampleMd5(sampleMd5);
|
||||
}else{
|
||||
logger.info("调用外部程序返回fileId错误,输入的fileId为:"+entity.getCfgId()+",输出的fileId为:"+fileId);
|
||||
}catch (Exception e) {
|
||||
if(e instanceof MaatConvertException||e instanceof CallExternalProceduresException) {
|
||||
throw e;
|
||||
}else {
|
||||
e.printStackTrace();
|
||||
throw new CallExternalProceduresException();
|
||||
}
|
||||
}else{
|
||||
throw new MaatConvertException(resultMap.get("error")!=null?resultMap.get("error").toString():resultMap.get("message").toString());
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
@@ -1091,4 +1091,5 @@ app_name=Application Name
|
||||
app_desc=Application Description
|
||||
tunnel_code=Tunnel Behavior No
|
||||
tunnel_name=Tunnel Behavior Name
|
||||
tunnel_desc=Tunnel Behavior Description
|
||||
tunnel_desc=Tunnel Behavior Description
|
||||
call_external_procedures_failed=Call external procedures failed
|
||||
@@ -1095,4 +1095,5 @@ app_name=\u5E94\u7528\u540D\u79F0
|
||||
app_desc=\u5E94\u7528\u63CF\u8FF0
|
||||
tunnel_code=\u52A0\u5BC6\u96A7\u9053\u884C\u4E3A\u5E8F\u53F7
|
||||
tunnel_name=\u52A0\u5BC6\u96A7\u9053\u884C\u4E3A\u540D\u79F0
|
||||
tunnel_desc=\u52A0\u5BC6\u96A7\u9053\u884C\u4E3A\u63CF\u8FF0
|
||||
tunnel_desc=\u52A0\u5BC6\u96A7\u9053\u884C\u4E3A\u63CF\u8FF0
|
||||
call_external_procedures_failed=\u8C03\u7528\u5916\u90E8\u7A0B\u5E8F\u51FA\u9519
|
||||
@@ -11,7 +11,7 @@
|
||||
</style>
|
||||
<script type="text/javascript">top.$.jBox.closeTip();</script>
|
||||
<c:if test="${not empty content}">
|
||||
<c:if test="${not empty type}"><c:set var="ctype" value="${type}"/></c:if><c:if test="${empty type}"><c:set var="ctype" value="${(fn:containsIgnoreCase(content,'失败') || fn:containsIgnoreCase(content,'failed') || fn:containsIgnoreCase(content,'Exception') || fn:containsIgnoreCase(content,'null'))?'error':'success'}"/></c:if>
|
||||
<c:if test="${not empty type}"><c:set var="ctype" value="${type}"/></c:if><c:if test="${empty type}"><c:set var="ctype" value="${(!fn:containsIgnoreCase(content,'失败') && !fn:containsIgnoreCase(content,'failed') && !fn:containsIgnoreCase(content,'Exception') && !fn:containsIgnoreCase(content,'null'))?'success':'error'}"/></c:if>
|
||||
<div id="messageBox" class="alert alert-${ctype}"><button data-dismiss="alert" class="close">×</button><spring:message code="${content}"/></div>
|
||||
<script type="text/javascript">if(!top.$.jBox.tip.mess) {top.$.jBox.tip.mess=1;top.$.jBox.tip("<spring:message code='${content}'/>","${ctype}",{persistent:true,opacity:0});$("#messageBox").show();}</script>
|
||||
</c:if>
|
||||
Reference in New Issue
Block a user