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

470 lines
15 KiB
Java
Raw Normal View History

/**
* 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);
}
}
}