(1)加入新异常,调用外部程序异常。原外部程序调用异常提示在在返回信息

(2)音视频控制类异常处理,防止出现表单提交,审核时为了防止出现未知异常导致界面出错,catch
MaatCovertException修改为catch exeption,根据异常类型进行判断返回界面信息
(3)message.tag不够严谨,修改了success的判断
This commit is contained in:
wangxin
2018-08-14 17:58:00 +08:00
parent a4cc2fb89c
commit 3f9aa29320
6 changed files with 131 additions and 41 deletions

View File

@@ -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;
}
}

View File

@@ -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");
}
}
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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>