470 lines
15 KiB
Java
470 lines
15 KiB
Java
/**
|
||
* Copyright © 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格式)
|
||
* (所有的配置需拥有一样的编译ID,action,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);
|
||
}
|
||
}
|
||
}
|