diff --git a/src/main/java/com/nis/domain/configuration/ComplexkeywordCfg.java b/src/main/java/com/nis/domain/configuration/ComplexkeywordCfg.java index 924d83137..0f11606ed 100644 --- a/src/main/java/com/nis/domain/configuration/ComplexkeywordCfg.java +++ b/src/main/java/com/nis/domain/configuration/ComplexkeywordCfg.java @@ -91,12 +91,12 @@ public class ComplexkeywordCfg extends BaseCfg{ /** * copy属性使用 */ - protected Integer dnsStrategyId; + protected Long dnsStrategyId; - public Integer getDnsStrategyId() { + public Long getDnsStrategyId() { return dnsStrategyId; } - public void setDnsStrategyId(Integer dnsStrategyId) { + public void setDnsStrategyId(Long dnsStrategyId) { this.dnsStrategyId = dnsStrategyId; } /** diff --git a/src/main/java/com/nis/domain/configuration/template/DnsComplexStringTemplate.java b/src/main/java/com/nis/domain/configuration/template/DnsComplexStringTemplate.java index 6b74c07fc..103899a72 100644 --- a/src/main/java/com/nis/domain/configuration/template/DnsComplexStringTemplate.java +++ b/src/main/java/com/nis/domain/configuration/template/DnsComplexStringTemplate.java @@ -14,13 +14,13 @@ import com.nis.util.excel.ExcelField; * @Description: excel导入DNS字符串类配置 */ public class DnsComplexStringTemplate extends ComplexStringAllTemplate { - private Integer dnsStrategyId; + private Long dnsStrategyId; @ExcelField(title="policy_name",align=2,sort=2) - public Integer getDnsStrategyId() { + public Long getDnsStrategyId() { return dnsStrategyId; } - public void setDnsStrategyId(Integer dnsStrategyId) { + public void setDnsStrategyId(Long dnsStrategyId) { this.dnsStrategyId = dnsStrategyId; } } diff --git a/src/main/java/com/nis/util/excel/ImportExcel.java b/src/main/java/com/nis/util/excel/ImportExcel.java index 5256a4dbf..e9698f0b8 100644 --- a/src/main/java/com/nis/util/excel/ImportExcel.java +++ b/src/main/java/com/nis/util/excel/ImportExcel.java @@ -14,6 +14,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Properties; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -29,6 +30,10 @@ import org.slf4j.LoggerFactory; import org.springframework.web.multipart.MultipartFile; import com.google.common.collect.Lists; +import com.nis.domain.configuration.template.ComplexStringAllTemplate; +import com.nis.domain.configuration.template.IpAllTemplate; +import com.nis.domain.configuration.template.StringAllTemplate; +import com.nis.exceptions.ServiceException; import com.nis.util.DictUtils; import com.nis.util.Reflections; @@ -280,7 +285,7 @@ public class ImportExcel { * @param cls 导入对象类型 * @param groups 导入分组 */ - public List getDataList(Class cls, int... groups) throws InstantiationException, IllegalAccessException{ + public List getDataList(Class cls,Properties props, int... groups) throws InstantiationException, IllegalAccessException{ List annotationList = Lists.newArrayList(); // Get annotation field // Field[] fs = cls.getDeclaredFields(); @@ -338,22 +343,76 @@ public class ImportExcel { } } } + //log.debug("Import column count:"+annotationList.size()); + // Get excel data + List dataList = Lists.newArrayList(); + Row header = this.getRow(headerNum); + List annotationListCopy=Lists.newArrayList(); + for(int i=header.getFirstCellNum();i<=header.getLastCellNum();i++) { + Object value=this.getCellValue(header, i); + for(Object[] os:annotationList) { + ExcelField ef = (ExcelField)os[0]; + String title=ef.title(); + if(props.getProperty(title).equals(value.toString())) { + annotationListCopy.add(os); + break; + } + } + } + if(annotationListCopy.size()==0) { + throw new ServiceException(props.getProperty("template_error")); + } + if(IpAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("IpAllTemplate")) { + boolean has=false; + for(Object[] os:annotationListCopy) { + ExcelField ef = (ExcelField)os[0]; + if(ef.title().equals("client_ip")||ef.title().equals("server_ip")) { + has=true; + break; + } + } + if(!has) { + throw new ServiceException(props.getProperty("template_error")); + } + }else if(StringAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("StringAllTemplate")){ + boolean has=false; + for(Object[] os:annotationListCopy) { + ExcelField ef = (ExcelField)os[0]; + if(ef.title().equals("key_word")) { + has=true; + break; + } + } + if(!has) { + throw new ServiceException(props.getProperty("template_error")); + } + }else if(ComplexStringAllTemplate.class.isAssignableFrom(cls)||cls.getSimpleName().equals("ComplexStringAllTemplate")){ + boolean has=false; + for(Object[] os:annotationListCopy) { + ExcelField ef = (ExcelField)os[0]; + if(ef.title().equals("key_word")) { + has=true; + break; + } + } + if(!has) { + throw new ServiceException(props.getProperty("template_error")); + } + } // Field sorting - Collections.sort(annotationList, new Comparator() { + Collections.sort(annotationListCopy, new Comparator() { public int compare(Object[] o1, Object[] o2) { return new Integer(((ExcelField)o1[0]).sort()).compareTo( new Integer(((ExcelField)o2[0]).sort())); }; }); - //log.debug("Import column count:"+annotationList.size()); - // Get excel data - List dataList = Lists.newArrayList(); + annotationList.clear(); for (int i = this.getDataRowNum(); i < this.getLastDataRowNum(); i++) { E e = (E)cls.newInstance(); int column = 0; Row row = this.getRow(i); StringBuilder sb = new StringBuilder(); - for (Object[] os : annotationList){ + for (Object[] os : annotationListCopy){ Object val = this.getCellValue(row, column++); if (val != null){ ExcelField ef = (ExcelField)os[0]; diff --git a/src/main/java/com/nis/web/controller/BaseController.java b/src/main/java/com/nis/web/controller/BaseController.java index b8aa71e37..87459e452 100644 --- a/src/main/java/com/nis/web/controller/BaseController.java +++ b/src/main/java/com/nis/web/controller/BaseController.java @@ -1033,9 +1033,9 @@ public class BaseController { BeanUtils.copyProperties(list.get(i), baseStringCfg); if (regionDict.getRegionType().equals(3)) { if(regionDict.getFunctionId().equals(7)) { - Integer dnsStrategyId=baseStringCfg.getDnsStrategyId(); + Long dnsStrategyId=baseStringCfg.getDnsStrategyId(); if(dnsStrategyId!=null) { - List dnsStrategys=dnsResStrategyService.findDnsResStrategys(Long.valueOf(dnsStrategyId), Constants.VALID_YES, Constants.AUDIT_YES); + List dnsStrategys=dnsResStrategyService.findDnsResStrategys(dnsStrategyId, Constants.VALID_YES, Constants.AUDIT_YES); if(dnsStrategys==null||dnsStrategys.size()==0) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("dns_res_strategy"))+";"); } @@ -1054,8 +1054,7 @@ public class BaseController { //baseStringCfg.setDistrict(dirtrictP.split(",")[0]); errInfo.append(String.format(prop.getProperty("can_not_null"), prop.getProperty("district")+" ")+";"); } - } - if(dirtrictP.indexOf(district)==-1) { + }else if(dirtrictP.indexOf(district)==-1) { errInfo.append(String.format(prop.getProperty("is_incorrect"), prop.getProperty("district")+" ")+";"); } } @@ -2930,37 +2929,37 @@ public class BaseController { if (regionDict.getRegionType().equals(1)) {//IP if (regionDict.getFunctionId().equals(5)) { if (serviceDict.getAction().equals(64)) { - List list = ei.getDataList(IpRateLimitTemplate.class); + List list = ei.getDataList(IpRateLimitTemplate.class,this.getMsgProp()); ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list); }else { - List list = ei.getDataList(IpAllTemplate.class); + List list = ei.getDataList(IpAllTemplate.class,this.getMsgProp()); ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list); } }else if(regionDict.getFunctionId().equals(212)) { - List list = ei.getDataList(IpPayloadTemplate.class); + List list = ei.getDataList(IpPayloadTemplate.class,this.getMsgProp()); ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list); }else if(regionDict.getFunctionId().equals(510) && "p2p_ip".equals(regionDict.getConfigServiceType())){ //P2p IP - List list = ei.getDataList(P2pIpTemplate.class); + List list = ei.getDataList(P2pIpTemplate.class,this.getMsgProp()); ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list); }else { - List list = ei.getDataList(IpAllTemplate.class); + List list = ei.getDataList(IpAllTemplate.class,this.getMsgProp()); ipPortCfgs = this.checkIpCfg(serviceDict, regionDict, list); } }else if(regionDict.getRegionType().equals(2)) {//字符串类 if(regionDict.getFunctionId().equals(510) && "p2p_hash".equals(regionDict.getConfigServiceType())){ //P2p hash - List list = ei.getDataList(P2pHashStringTemplate.class); + List list = ei.getDataList(P2pHashStringTemplate.class,this.getMsgProp()); stringCfgs=this.checkStringCfg(serviceDict, regionDict, list); }else{ - List list = ei.getDataList(StringAllTemplate.class); + List list = ei.getDataList(StringAllTemplate.class,this.getMsgProp()); stringCfgs=this.checkStringCfg(serviceDict, regionDict, list); } }else if(regionDict.getRegionType().equals(3)) {//增强字符串类 if(regionDict.getFunctionId().equals(7)) { - List list = ei.getDataList(DnsComplexStringTemplate.class); + List list = ei.getDataList(DnsComplexStringTemplate.class,this.getMsgProp()); complexkeywordCfgs=this.checkComplexStringCfg(serviceDict, regionDict, list); }else { - List list = ei.getDataList(ComplexStringAllTemplate.class); + List list = ei.getDataList(ComplexStringAllTemplate.class,this.getMsgProp()); complexkeywordCfgs=this.checkComplexStringCfg(serviceDict, regionDict, list); } diff --git a/src/main/java/com/nis/web/controller/configuration/CommonController.java b/src/main/java/com/nis/web/controller/configuration/CommonController.java index 02f414831..05e068b50 100644 --- a/src/main/java/com/nis/web/controller/configuration/CommonController.java +++ b/src/main/java/com/nis/web/controller/configuration/CommonController.java @@ -226,7 +226,7 @@ public class CommonController extends BaseController { addMessage(redirectAttributes, "audit_failed"); } } - public void _importIp(RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg) { + /*public void _importIp(RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg) { try { ImportExcel ei = new ImportExcel(file, 0, 0); List list = ei.getDataList(IpCfgTemplate.class); @@ -251,8 +251,8 @@ public class CommonController extends BaseController { addMessage(redirectAttributes, e.getMessage()); e.printStackTrace(); } - } - public void _importIp(String cfgName,RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg,Class clazz) { + }*/ + /*public void _importIp(String cfgName,RedirectAttributes redirectAttributes,MultipartFile file,IpPortCfg ipCfg,Class clazz) { redirectAttributes.addAttribute("cfgName", cfgName); try { ImportExcel ei = new ImportExcel(file, 0, 0); @@ -279,7 +279,7 @@ public class CommonController extends BaseController { addMessage(redirectAttributes, e.getMessage()); e.printStackTrace(); } - } + }*/ public void _importFileTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) { this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode); diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java index 0b6d37b88..ec81dd1b7 100644 --- a/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/IpMultiplexController.java @@ -91,14 +91,14 @@ public class IpMultiplexController extends CommonController { return "redirect:" + adminPath +"/manipulation/ipmulitiplex/list?functionId="+cfg.getFunctionId(); } //ip配置导入 - @RequestMapping(value = "/import", method=RequestMethod.POST) + /*@RequestMapping(value = "/import", method=RequestMethod.POST) public String importIp(String cfgName,RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file,IpPortCfg cfg) { this._importIp(cfgName,redirectAttributes, file,cfg,IpMultiplexPolicyTemplate.class); redirectAttributes.addAttribute("urlPrefix","/manipulation/ipmulitiplex"); redirectAttributes.addAttribute("requiresPermissionPrefix","ip:mulitiplex"); return "redirect:" + adminPath +"/manipulation/ipmulitiplex/list?functionId="+cfg.getFunctionId(); - } + }*/ //ip模板下载 @RequestMapping(value = "import/template") public void importFileTemplate(HttpServletRequest request,HttpServletResponse response, diff --git a/src/main/java/com/nis/web/controller/configuration/manipulation/RatelimitController.java b/src/main/java/com/nis/web/controller/configuration/manipulation/RatelimitController.java index 13e585115..bd33ae4a9 100644 --- a/src/main/java/com/nis/web/controller/configuration/manipulation/RatelimitController.java +++ b/src/main/java/com/nis/web/controller/configuration/manipulation/RatelimitController.java @@ -113,14 +113,14 @@ public class RatelimitController extends CommonController { return "redirect:" + adminPath +"/manipulation/ratelimit/domain/list?functionId="+cfg.getFunctionId(); } //ip配置导入 - @RequestMapping(value = "/ip/import", method=RequestMethod.POST) + /*@RequestMapping(value = "/ip/import", method=RequestMethod.POST) public String importIp(String cfgName,RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file,IpPortCfg cfg) { this._importIp(cfgName,redirectAttributes, file,cfg,IpRateLimitTemplate.class); redirectAttributes.addAttribute("urlPrefix","/manipulation/ratelimit/ip"); redirectAttributes.addAttribute("requiresPermissionPrefix","ip:ratelimit"); return "redirect:" + adminPath +"/manipulation/ratelimit/ip/list?functionId="+cfg.getFunctionId(); - } + }*/ @RequestMapping(value = "/ip/import/template") public void importFileTemplate(HttpServletRequest request,HttpServletResponse response, RedirectAttributes redirectAttributes,Integer functionId,Integer cfgRegionCode) { diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java index d4a4b9749..806ea7f85 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/WebsiteController.java @@ -413,7 +413,7 @@ public class WebsiteController extends BaseController{ this.importCfgTemplate(request, response, redirectAttributes, functionId, cfgRegionCode); } //http配置导入 - @RequestMapping(value = "importHttp", method=RequestMethod.POST) + /*@RequestMapping(value = "importHttp", method=RequestMethod.POST) public String importHttpFile(HttpServletRequest request,Model model,HttpServletResponse response, RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file,CfgIndexInfo cfgIndex,Integer protocolId) { try { @@ -518,7 +518,7 @@ public class WebsiteController extends BaseController{ } return "redirect:" + adminPath +"/ntc/website/httpList?functionId="+cfgIndex.getFunctionId(); - } + }*/ diff --git a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java index e4fcc11e6..4106d90d8 100644 --- a/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java +++ b/src/main/java/com/nis/web/controller/configuration/ntc/WhiteListController.java @@ -234,12 +234,12 @@ public class WhiteListController extends CommonController{ return "redirect:" + adminPath +"/ntc/whitelist/domain/list?functionId="+functionId; } //ip配置导入 - @RequestMapping(value = "ip/import", method=RequestMethod.POST) + /*@RequestMapping(value = "ip/import", method=RequestMethod.POST) public String importIp(String cfgName,RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file,IpPortCfg cfg) { this._importIp(cfgName,redirectAttributes, file,cfg,WhiteListIpTemplate.class); return "redirect:" + adminPath +"/ntc/whitelist/ip/list?functionId="+cfg.getFunctionId(); - } + }*/ //ip模板下载 @RequestMapping(value = "ip/import/template") public void importFileTemplate(HttpServletRequest request,HttpServletResponse response, diff --git a/src/main/java/com/nis/web/controller/specific/SpecificServiceHostCfgController.java b/src/main/java/com/nis/web/controller/specific/SpecificServiceHostCfgController.java index 524ed7488..b19758281 100644 --- a/src/main/java/com/nis/web/controller/specific/SpecificServiceHostCfgController.java +++ b/src/main/java/com/nis/web/controller/specific/SpecificServiceHostCfgController.java @@ -152,7 +152,7 @@ public class SpecificServiceHostCfgController extends BaseController { } return "redirect:"+adminPath+"/specific/specificServiceHostCfg/list"; } - @RequiresPermissions("specific:serviceIp:edit") + /*@RequiresPermissions("specific:serviceIp:edit") @RequestMapping(value = "import", method=RequestMethod.POST) public String importFile(HttpServletRequest request,Model model,HttpServletResponse response, RedirectAttributes redirectAttributes, @RequestParam("file") MultipartFile file) { @@ -195,7 +195,7 @@ public class SpecificServiceHostCfgController extends BaseController { } return "redirect:"+adminPath+"/specific/specificServiceHostCfg/list"; // return renderString(response,errorInfos); - } + }*/ /** * 校验spec_service_id重复 * @param newId diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties index 5fdf0acab..2bd86ad89 100644 --- a/src/main/resources/messages/message_en.properties +++ b/src/main/resources/messages/message_en.properties @@ -1287,4 +1287,5 @@ http_keyword=Website Keyword http_keyword_monit=Website Keyword Monit http_keyword_reject=Website Keyword Reject has_invisible_char=%s has invisible characters -not_multiple=%s do not support multiple keywords \ No newline at end of file +not_multiple=%s do not support multiple keywords +template_error=The import template is incorrect. Pleace choose a proper template which has the same language with the system and the same configure type. \ 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 4dda26a65..6b91334aa 100644 --- a/src/main/resources/messages/message_zh_CN.properties +++ b/src/main/resources/messages/message_zh_CN.properties @@ -1282,4 +1282,5 @@ http_keyword=\u7F51\u9875\u5173\u952E\u5B57 http_keyword_monit=\u7F51\u9875\u5173\u952E\u5B57\u76D1\u6D4B http_keyword_reject=\u7F51\u9875\u5173\u952E\u5B57\u963B\u65AD has_invisible_char=%s\u5305\u542B\u4E0D\u53EF\u89C1\u5B57\u7B26 -not_multiple=%s\u4E0D\u652F\u6301\u591A\u4E2A\u5173\u952E\u5B57 \ No newline at end of file +not_multiple=%s\u4E0D\u652F\u6301\u591A\u4E2A\u5173\u952E\u5B57 +template_error=\u5BFC\u5165\u6A21\u677F\u9519\u8BEF.\u8BF7\u9009\u62E9\u4E0E\u7CFB\u7EDF\u8BED\u8A00\u4E00\u81F4\uFF0C\u5E76\u4E14\u914D\u7F6E\u7C7B\u578B\u4E00\u81F4\u7684\u6A21\u677F\u5BFC\u5165. \ No newline at end of file