This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/web/service/CrudService.java
wangxin aaf8dd5afb (1)IP类配置增加区域GK逻辑
(2)修复编译ID的重复获取BUG
(3)监测类配置目前不提供区域管控逻辑
2018-04-08 16:15:06 +08:00

470 lines
15 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
*/
package com.nis.web.service;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.nis.domain.BaseEntity;
import com.nis.domain.Page;
import com.nis.domain.configuration.AreaIpCfg;
import com.nis.domain.configuration.BaseCfg;
import com.nis.domain.configuration.BaseIpCfg;
import com.nis.domain.configuration.BaseStringCfg;
import com.nis.domain.configuration.ComplexkeywordCfg;
import com.nis.domain.configuration.NumBoundaryCfg;
import com.nis.domain.maat.MaatCfg;
import com.nis.domain.maat.ToMaatBean;
import com.nis.domain.maat.ToMaatUnAuditBean;
import com.nis.domain.maat.UnAuditBean;
import com.nis.main.ConvertTool;
import com.nis.util.Constants;
import com.nis.web.dao.CrudDao;
import com.nis.web.dao.configuration.IpCfgDao;
/**
* Service基类
* @author ThinkGem
* @version 2014-05-16
*/
public abstract class CrudService<D extends CrudDao<T>, T extends BaseEntity<T>> extends BaseService {
/**
* 持久层对象
*/
@Autowired
protected D dao;
/**
* 获取单条数据
* @param id
* @return
*/
public T get(Long id) {
return dao.get(id);
}
/**
* 获取单条数据
* @param entity
* @return
*/
public T get(T entity) {
return dao.get(entity);
}
/**
* 查询列表数据
* @param entity
* @return
*/
public List<T> findList(T entity) {
return dao.findList(entity);
}
/**
* 查询分页数据
* @param page 分页对象
* @param entity
* @return
*/
public Page<T> findPage(Page<T> page, T entity) {
entity.setPage(page);
page.setList(dao.findList(entity));
return page;
}
/**
* 保存数据(插入或更新)
* @param entity
*/
public void save(T entity) {
if (entity.getIsNewRecord()){
dao.insert(entity);
}else{
dao.update(entity);
}
}
/**
* 删除数据
* @param entity
*/
public void delete(T entity) {
dao.delete(entity);
}
/**
*
* saveBatch(批量全部保存数据)
* (这里描述这个方法适用条件 可选)
* @param data 数据集合
* @param mClass 传入的dao.xml里的mapper
* @author wx
* @since 1.0.0
*/
@SuppressWarnings("unchecked")
public void saveBatch(List<T> data,@SuppressWarnings("rawtypes")Class mClass) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < data.size();index++){
T t = data.get(index);
((CrudDao<T>) batchSqlSession.getMapper(mClass)).insert(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
public void saveIpBatch(List<AreaIpCfg> areaIpCfgs) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < areaIpCfgs.size();index++){
BaseIpCfg t = areaIpCfgs.get(index);
((CrudDao<BaseIpCfg>) batchSqlSession.getMapper(IpCfgDao.class)).insert(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
/**
*
* updateBatch(批量更新全部数据)
* (这里描述这个方法适用条件 可选)
* @param areaCfg 数据集合
* @param mClass 传入的dao.xml里的mapper
* @author wx
* @since 1.0.0
*/
@SuppressWarnings("unchecked")
public void updateBatch(List<T> data,@SuppressWarnings("rawtypes") Class mClass) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < data.size();index++){
T t = data.get(index);
((CrudDao<T>) batchSqlSession.getMapper(mClass)).update(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
@SuppressWarnings("unchecked")
public void updateIpBatch(List<AreaIpCfg> areaCfg) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < areaCfg.size();index++){
BaseIpCfg t = areaCfg.get(index);
((CrudDao<BaseIpCfg>) batchSqlSession.getMapper(IpCfgDao.class)).update(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
/**
*
* deleteBatch(批量删除全部数据)
* (这里描述这个方法适用条件 可选)
* @param data 数据集合
* @param mClass 传入的dao.xml里的mapper
* @author wx
* @since 1.0.0
*/
@SuppressWarnings("unchecked")
public void deleteBatch(List<T> data,@SuppressWarnings("rawtypes") Class mClass) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < data.size();index++){
T t = data.get(index);
((CrudDao<T>) batchSqlSession.getMapper(mClass)).delete(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
public void deleteIpBatch(List<AreaIpCfg> data) {
SqlSessionFactory sqlSessionFactory=SpringContextHolder.getBean(SqlSessionFactory.class);
SqlSession batchSqlSession = null;
try{
batchSqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
for(int index = 0; index < data.size();index++){
BaseIpCfg t = data.get(index);
((CrudDao<BaseIpCfg>) batchSqlSession.getMapper(IpCfgDao.class)).delete(t);
}
batchSqlSession.commit();
// }catch (Exception e){
// batchSqlSession.rollback();
// throw e;
}finally {
if(batchSqlSession != null){
batchSqlSession.close();
}
}
}
/**
*
* sendToMaatConvertor(转换配置为Maat格式)
* (所有的配置需拥有一样的编译IDaction,serviceId,等属性)
* @param cfg
* @return
*boolean
* @throws Exception
* @exception
* @since 1.0.0
*/
@SuppressWarnings("rawtypes")
public boolean sendToMaatConvertor(int operation,List<AreaIpCfg> areaCfg,BaseCfg ... cfg) throws Exception{
if(cfg==null){
throw new RuntimeException("转换出错,配置为空");
}
Gson gson=new GsonBuilder().disableHtmlEscaping()
/*.setPrettyPrinting().serializeNulls()*/
.excludeFieldsWithoutExposeAnnotation()
.create();
if(Constants.AUDIT_NOT_YES==operation){
ToMaatUnAuditBean toMaatUnAuditBean=new ToMaatUnAuditBean();
toMaatUnAuditBean.setServiceCfg(new ArrayList<UnAuditBean>());
for(BaseCfg c:cfg){
if(c.getCompileId()==null||c.getCompileId()==0){
throw new RuntimeException("转换出错,未获取到正确的compileId");
}
if(StringUtils.isBlank(c.getMaatTable())){
throw new RuntimeException("转换出错,未获取到正确的maatTalbe");
}
//针对含有多个maatTable的表
if(c.getMaatTable().contains(",")){
for(String maatTable:c.getMaatTable().split(",")){
UnAuditBean bean=new UnAuditBean();
bean.setCompileId(c.getCompileId());
bean.setMaatTable(maatTable);
toMaatUnAuditBean.getServiceCfg().add(bean);
}
}else{
UnAuditBean bean=new UnAuditBean();
bean.setCompileId(c.getCompileId());
bean.setMaatTable(c.getMaatTable());
toMaatUnAuditBean.getServiceCfg().add(bean);
}
}
String json=gson.toJson(toMaatUnAuditBean);
logger.info("to maat json:"+json);
//发送至maat,待完成
return new ConvertTool().setConfigInValid(json);
}else{
int compileId=0;
ToMaatBean toMaatBean=new ToMaatBean();
toMaatBean.setServiceCfg(new ArrayList<MaatCfg>());
MaatCfg maatCfg=new MaatCfg();
for(BaseCfg c:cfg){
if(c instanceof BaseIpCfg){
compileId=compileId==0?c.getCompileId():compileId;
int protocolId= ((BaseIpCfg) c).getProtocolId().intValue();
String maatTable=c.getMaatTable();
if(maatTable.contains(",")){
if(protocolId!=0){
for(String _maatTable:maatTable.split(",")){
if(_maatTable.toLowerCase().indexOf("ip")>-1){
BaseIpCfg ipCfg=(BaseIpCfg)c.clone();
ipCfg.setMaatTable(_maatTable);
if(maatCfg.getIpCfg()==null){
List<BaseIpCfg> list=new ArrayList<>();
list.add(ipCfg);
maatCfg.setIpCfg(list);
}else{
List<BaseIpCfg> list=maatCfg.getIpCfg();
list.add(ipCfg);
}
}else{
NumBoundaryCfg numCfg=new NumBoundaryCfg();
numCfg.initDefaultValue();
numCfg.setLowBounadry((long)protocolId);
numCfg.setUpBoundary((long)protocolId);
numCfg.setMaatTable(_maatTable);
if(maatCfg.getNumCfg()==null){
List<NumBoundaryCfg> numlist=new ArrayList<>();
numlist.add(numCfg);
maatCfg.setNumCfg(numlist);
}else{
List<NumBoundaryCfg> numlist=maatCfg.getNumCfg();
numlist.add(numCfg);
}
}
}
}else{
throw new RuntimeException("protocolId等于0,却对应两个maat_table "+maatTable);
}
}else{
if(maatCfg.getIpCfg()==null){
List<BaseIpCfg> list=new ArrayList<>();
list.add((BaseIpCfg)c);
maatCfg.setIpCfg(list);
}else{
List<BaseIpCfg> list=maatCfg.getIpCfg();
list.add((BaseIpCfg)c);
}
}
}else if(c instanceof BaseStringCfg){
compileId=compileId==0?c.getCompileId():compileId;
String maatTable=c.getMaatTable();
if(maatTable.contains(",")){
for(String _maatTable:maatTable.split(",")){
BaseStringCfg strCfg=(BaseStringCfg)c.clone();
strCfg.setMaatTable(_maatTable);
if(maatCfg.getStrCfg()==null){
List<BaseStringCfg> list=new ArrayList<BaseStringCfg>();
list.add(strCfg);
maatCfg.setStrCfg(list);
}else{
List<BaseStringCfg> list=maatCfg.getStrCfg();
list.add(strCfg);
}
}
}else{
if(maatCfg.getStrCfg()==null){
List<BaseStringCfg> list=new ArrayList<BaseStringCfg>();
list.add((BaseStringCfg)c);
maatCfg.setStrCfg(list);
}else{
List<BaseStringCfg> list=maatCfg.getStrCfg();
list.add((BaseStringCfg)c);
}
}
}else if(c instanceof ComplexkeywordCfg){
compileId=compileId==0?c.getCompileId():compileId;
String maatTable=c.getMaatTable();
if(maatTable.contains(",")){
for(String _maatTable:maatTable.split(",")){
ComplexkeywordCfg complexCfg=(ComplexkeywordCfg)c.clone();
complexCfg.setMaatTable(_maatTable);
if(maatCfg.getComplexStrCfg()==null){
List<ComplexkeywordCfg> list=new ArrayList<ComplexkeywordCfg>();
list.add(complexCfg);
maatCfg.setComplexStrCfg(list);
}else{
List<ComplexkeywordCfg> list=maatCfg.getComplexStrCfg();
list.add(complexCfg);
}
}
}else{
if(maatCfg.getComplexStrCfg()==null){
List<ComplexkeywordCfg> list=new ArrayList<ComplexkeywordCfg>();
list.add((ComplexkeywordCfg)c);
maatCfg.setComplexStrCfg(list);
}else{
List<ComplexkeywordCfg> list=maatCfg.getComplexStrCfg();
list.add((ComplexkeywordCfg)c);
}
}
}else if(c instanceof NumBoundaryCfg){
compileId=compileId==0?c.getCompileId():compileId;
if(maatCfg.getNumCfg()==null){
List<NumBoundaryCfg> list=new ArrayList<NumBoundaryCfg>();
list.add((NumBoundaryCfg)c);
maatCfg.setNumCfg(list);
}else{
List<NumBoundaryCfg> list=maatCfg.getNumCfg();
list.add((NumBoundaryCfg)c);
}
}
}
if(areaCfg!=null){
toMaatBean.setAreaCfg(areaCfg);
}else{
toMaatBean.setAreaCfg(new ArrayList<AreaIpCfg>());
}
toMaatBean.getServiceCfg().add(maatCfg);
BaseCfg baseCfg=(BaseCfg)cfg[0];
if(compileId==0){
throw new RuntimeException("转换出错,未获取到正确的compileId");
}else{
toMaatBean.setCompileId(compileId);
}
if(baseCfg.getAction()==null){
throw new RuntimeException("转换出错,未获取到正确的action");
}else{
toMaatBean.setAction(baseCfg.getAction());
}
if(baseCfg.getIsAreaEffective()==null){
throw new RuntimeException("转换出错,未获取到正确的isAreaEffective");
}else{
toMaatBean.setIsAreaEffective(baseCfg.getIsAreaEffective());
}
if(baseCfg.getIsValid()==null){
throw new RuntimeException("转换出错,未获取到正确的isValid");
}else{
toMaatBean.setIsValid(baseCfg.getIsValid());
}
if(baseCfg.getRequestId()==null){
throw new RuntimeException("转换出错,未获取到正确的requestId");
}else{
toMaatBean.setRequestId(baseCfg.getRequestId());
}
if(baseCfg.getServiceId()==null){
throw new RuntimeException("转换出错,未获取到正确的serviceId");
}else{
toMaatBean.setServiceId(baseCfg.getServiceId());
}
toMaatBean.setAreaEffectiveIds(baseCfg.getAreaEffectiveIds()==null?"":baseCfg.getAreaEffectiveIds());
toMaatBean.setAttribute(baseCfg.getAttribute()==null?"":baseCfg.getAttribute());
toMaatBean.setClassify(baseCfg.getClassify()==null?"":baseCfg.getClassify());
toMaatBean.setLable(baseCfg.getLable()==null?"":baseCfg.getLable());
String json=gson.toJson(toMaatBean);
logger.info("to maat json:"+json);
//发送至maat,待完成
return new ConvertTool().saveConfig(json);
}
}
}