diff --git a/src/main/java/com/nis/exceptions/CallExternalProceduresException.java b/src/main/java/com/nis/exceptions/CallExternalProceduresException.java new file mode 100644 index 000000000..dcf945419 --- /dev/null +++ b/src/main/java/com/nis/exceptions/CallExternalProceduresException.java @@ -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; + } +} \ No newline at end of file diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java b/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java index 4773a6c06..5763bc857 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/AvController.java @@ -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"); + } } } diff --git a/src/main/java/com/nis/web/service/configuration/AvCfgService.java b/src/main/java/com/nis/web/service/configuration/AvCfgService.java index 8f5d709ce..5a68dd1e0 100644 --- a/src/main/java/com/nis/web/service/configuration/AvCfgService.java +++ b/src/main/java/com/nis/web/service/configuration/AvCfgService.java @@ -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; } diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index 364a90766..1e52a6034 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -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 \ No newline at end of file +tunnel_desc=Tunnel Behavior Description +call_external_procedures_failed=Call external procedures failed \ No newline at end of file diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties index 731d4a8dd..000d7069b 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -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 \ No newline at end of file +tunnel_desc=\u52A0\u5BC6\u96A7\u9053\u884C\u4E3A\u63CF\u8FF0 +call_external_procedures_failed=\u8C03\u7528\u5916\u90E8\u7A0B\u5E8F\u51FA\u9519 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/tags/sys/message.tag b/src/main/webapp/WEB-INF/tags/sys/message.tag index 5659b0b43..3b35d6bb0 100644 --- a/src/main/webapp/WEB-INF/tags/sys/message.tag +++ b/src/main/webapp/WEB-INF/tags/sys/message.tag @@ -11,7 +11,7 @@ - +
\ No newline at end of file