diff --git a/src/main/java/com/nis/datasource/DynamicJedisDataBase.java b/src/main/java/com/nis/datasource/DynamicJedisDataBase.java
index 9501616..e10d44c 100644
--- a/src/main/java/com/nis/datasource/DynamicJedisDataBase.java
+++ b/src/main/java/com/nis/datasource/DynamicJedisDataBase.java
@@ -20,8 +20,8 @@ public class DynamicJedisDataBase {
* @param index
* @param redisTemplate
*/
- public static void setRedisDataBase(int index, RedisTemplate redisTemplate) {
- JedisConnectionFactory connectionFactory = SpringContextHolder.getBean("connectionFactory");
+ public static void setRedisDataBase1(int index, RedisTemplate redisTemplate) {
+ JedisConnectionFactory connectionFactory = SpringContextHolder.getBean("connectionFactory"+index);
connectionFactory.setDatabase(index);
redisTemplate.setConnectionFactory(connectionFactory);
}
diff --git a/src/main/java/com/nis/domain/restful/CompileAndGroupRelations.java b/src/main/java/com/nis/domain/restful/CompileAndGroupRelations.java
new file mode 100644
index 0000000..f391ea7
--- /dev/null
+++ b/src/main/java/com/nis/domain/restful/CompileAndGroupRelations.java
@@ -0,0 +1,36 @@
+package com.nis.domain.restful;
+
+import java.io.Serializable;
+import java.util.List;
+/**
+ *
+ *
Title: CompileAndGroupRelations
+ * Description: 记录下发配置时编译id与分组,域配置之间的关系,用于更新id关系数据字典
+ * Company: IIE
+ * @author rkg
+ * @date 2018年5月25日
+ *
+ */
+public class CompileAndGroupRelations implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private Long compileId;
+ private List groupIdList;
+
+ public Long getCompileId() {
+ return compileId;
+ }
+
+ public void setCompileId(Long compileId) {
+ this.compileId = compileId;
+ }
+
+ public List getGroupIdList() {
+ return groupIdList;
+ }
+
+ public void setGroupIdList(List groupIdList) {
+ this.groupIdList = groupIdList;
+ }
+
+}
diff --git a/src/main/java/com/nis/domain/restful/GroupAndRegionRelations.java b/src/main/java/com/nis/domain/restful/GroupAndRegionRelations.java
new file mode 100644
index 0000000..428733e
--- /dev/null
+++ b/src/main/java/com/nis/domain/restful/GroupAndRegionRelations.java
@@ -0,0 +1,31 @@
+package com.nis.domain.restful;
+
+import java.io.Serializable;
+/**
+ *
+ * Title: GroupAndRegionRelations
+ * Description: 记录下发配置时编译id与分组,域配置之间的关系,用于更新id关系数据字典
+ * Company: IIE
+ * @author rkg
+ * @date 2018年5月25日
+ *
+ */
+public class GroupAndRegionRelations implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+ private Long groupId;
+ private Long regionId;
+ public Long getGroupId() {
+ return groupId;
+ }
+ public void setGroupId(Long groupId) {
+ this.groupId = groupId;
+ }
+ public Long getRegionId() {
+ return regionId;
+ }
+ public void setRegionId(Long regionId) {
+ this.regionId = regionId;
+ }
+
+}
diff --git a/src/main/java/com/nis/domain/restful/MaatRelation.java b/src/main/java/com/nis/domain/restful/MaatRelation.java
index 2f0d332..9a9e506 100644
--- a/src/main/java/com/nis/domain/restful/MaatRelation.java
+++ b/src/main/java/com/nis/domain/restful/MaatRelation.java
@@ -3,78 +3,95 @@ package com.nis.domain.restful;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
public class MaatRelation implements Serializable {
private static final long serialVersionUID = 1L;
-
- private Map> compileAndGroupMap;
- private Map> groupAndCompileMap;
+ /**
+ * 编译id与groupid的对应关系,key是编译id,value使用set不允许重复
+ */
+ private Map> compileAndGroupMap;
+ /**
+ * groupid与编译id的对应关系,key是groupid,value使用set不允许重复
+ */
+ private Map> groupAndCompileMap;
// private Map> regionAndGroupMap;
- private Map> groupAndRegionMap;
+ /**
+ * groupid与regionid的对应关系,key是groupid,value使用set不允许重复
+ */
+ private Map> groupAndRegionMap;
- public Map> getCompileAndGroupMap() {
+ public Map> getCompileAndGroupMap() {
return compileAndGroupMap;
}
- public void setCompileAndGroupMap(Map> compileAndGroupMap) {
+ public void setCompileAndGroupMap(Map> compileAndGroupMap) {
this.compileAndGroupMap = compileAndGroupMap;
}
- public Map> getGroupAndCompileMap() {
+ public Map> getGroupAndCompileMap() {
return groupAndCompileMap;
}
- public void setGroupAndCompileMap(Map> groupAndCompileMap) {
+ public void setGroupAndCompileMap(Map> groupAndCompileMap) {
this.groupAndCompileMap = groupAndCompileMap;
}
- public Map> getGroupAndRegionMap() {
+ public Map> getGroupAndRegionMap() {
return groupAndRegionMap;
}
- public void setGroupAndRegionMap(Map> groupAndRegionMap) {
+ public void setGroupAndRegionMap(Map> groupAndRegionMap) {
this.groupAndRegionMap = groupAndRegionMap;
}
public static void removKey(MaatRelation maatRelation, long compileId) {
-
if (maatRelation.getCompileAndGroupMap().containsKey(compileId)) {
- List list = maatRelation.getCompileAndGroupMap().get(compileId);
- for (int i = 0; i < list.size(); i++) {
- Long groupId = list.get(i);
- // }
- // for (Long groupId: list.size()) {
- if (maatRelation.getGroupAndCompileMap().containsKey(groupId)) {
- // && maatRelation.getGroupAndCompileMap().get(groupId).size() == 1
- // && maatRelation.getGroupAndCompileMap().get(groupId).get(0).longValue() ==
- // compileId) {
- List compileIdList = maatRelation.getGroupAndCompileMap().get(groupId);
- if (compileIdList.size() == 1) {// 当前的groupid只属于当前的compileid,没有被分组复用,需要将编译配置,分组关系,域配置,置无效
- for (Long id : compileIdList) {
- if (id.longValue() == compileId) {
- // 这个group没有被分组复用,所以需要将这个组下面的域配置置为无效,组也要置为无效
- if (maatRelation.getGroupAndRegionMap().containsKey(groupId)) {
- // 把当前组置为无效,把当前组下的所有域置为无效
- maatRelation.getGroupAndRegionMap().remove(groupId);// 删除组对应的域
- maatRelation.getGroupAndCompileMap().remove(groupId);// 删除当前组所对应的编译
- // maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId);
- // maatRelation.getCompileAndGroupMap().get(compileId)
- list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));// 删除编译下面的组
+ Set list = maatRelation.getCompileAndGroupMap().get(compileId);
+
+ if (list != null && list.size() > 0) {
+ for (Long groupId : list) {
+ // }
+ // for (Long groupId: list.size()) {
+ if (maatRelation.getGroupAndCompileMap().containsKey(groupId)) {
+ // && maatRelation.getGroupAndCompileMap().get(groupId).size() == 1
+ // && maatRelation.getGroupAndCompileMap().get(groupId).get(0).longValue() ==
+ // compileId) {
+ Set compileIdList = maatRelation.getGroupAndCompileMap().get(groupId);
+ if (compileIdList.size() == 1) {// 当前的groupid只属于当前的compileid,没有被分组复用,需要将编译配置,分组关系,域配置,置无效
+ for (Long id : compileIdList) {
+ if (id.longValue() == compileId) {
+ // 这个group没有被分组复用,所以需要将这个组下面的域配置置为无效,组也要置为无效
+ if (maatRelation.getGroupAndRegionMap().containsKey(groupId)) {
+ // 把当前组置为无效,把当前组下的所有域置为无效
+ maatRelation.getGroupAndRegionMap().remove(groupId);// 删除组对应的域
+ maatRelation.getGroupAndCompileMap().remove(groupId);// 删除当前组所对应的编译
+ // maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId);
+ // maatRelation.getCompileAndGroupMap().get(compileId)
+ // list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));//
+ // 删除编译下面的组
+ list.remove(groupId);// 删除编译下面的组
+ }
}
}
- }
+ } else {
+ // 这个组对应了多个编译配置被分组复用了,这时将这个组和编译的关系置为无效,编译置为无效
+ // list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));//
+ // 删除编译下面的这个组
+ // maatRelation.getGroupAndCompileMap().get(groupId)
+ // .remove(maatRelation.getGroupAndCompileMap().get(groupId).indexOf(compileId));//
+ // 删除分组关系中的组和编译关系
+ list.remove(groupId);// 删除编译下面的这个组
+ maatRelation.getGroupAndCompileMap().get(groupId).remove(compileId);
+ }
} else {
- // 这个组对应了多个编译配置被分组复用了,这时将这个组和编译的关系置为无效,编译置为无效
- list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));// 删除编译下面的这个组
- maatRelation.getGroupAndCompileMap().get(groupId)
- .remove(maatRelation.getGroupAndCompileMap().get(groupId).indexOf(compileId));// 删除分组关系中的组和编译关系
+ // 当前的groupid属于多个组,被分组复用了,所以不对这个组进行操作,也不对这个组下面的域进行操作
}
- } else {
- // 当前的groupid属于多个组,被分组复用了,所以不对这个组进行操作,也不对这个组下面的域进行操作
}
}
@@ -82,23 +99,23 @@ public class MaatRelation implements Serializable {
}
public static void syso(MaatRelation maatRelation) {
- Map> getCompileAndGroupMap = maatRelation.getCompileAndGroupMap();
+ Map> getCompileAndGroupMap = maatRelation.getCompileAndGroupMap();
for (Long compile : getCompileAndGroupMap.keySet()) {
- List groupList = getCompileAndGroupMap.get(compile);
+ Set groupList = getCompileAndGroupMap.get(compile);
for (Long group : groupList) {
System.out.println("编译:" + compile + "组:" + group);
}
}
- Map> getGroupAndCompileMap = maatRelation.getGroupAndCompileMap();
+ Map> getGroupAndCompileMap = maatRelation.getGroupAndCompileMap();
for (Long group : getGroupAndCompileMap.keySet()) {
- List compileList = getGroupAndCompileMap.get(group);
+ Set compileList = getGroupAndCompileMap.get(group);
for (Long compile : compileList) {
System.out.println("组:" + group + "编译:" + compile);
}
}
- Map> getGroupAndRegionMap = maatRelation.getGroupAndRegionMap();
+ Map> getGroupAndRegionMap = maatRelation.getGroupAndRegionMap();
for (Long group : getGroupAndRegionMap.keySet()) {
- List regionList = getGroupAndRegionMap.get(group);
+ Set regionList = getGroupAndRegionMap.get(group);
for (Long region : regionList) {
System.out.println("组:" + group + "域:" + region);
}
@@ -121,27 +138,95 @@ public class MaatRelation implements Serializable {
compileId = 2;
removKey(maatRelation, compileId);
syso(maatRelation);
+
+ addKey(maatRelation, setCGR());
+ syso(maatRelation);
+
+
+ compileId = 99999L;
+ removKey(maatRelation, compileId);
+ syso(maatRelation);
+ }
+
+ public static CompileAndGroupRelations setCGR() {
+ CompileAndGroupRelations cGR = new CompileAndGroupRelations();
+ cGR.setCompileId(99999L);
+
+ List groupIdList = new ArrayList();
+ GroupAndRegionRelations gRR = new GroupAndRegionRelations();
+ gRR.setGroupId(100L);
+ gRR.setRegionId(200L);
+ groupIdList.add(gRR);
+
+ gRR = new GroupAndRegionRelations();
+ gRR.setGroupId(100L);
+ gRR.setRegionId(300L);
+ groupIdList.add(gRR);
+ cGR.setGroupIdList(groupIdList);
+ return cGR;
+ }
+
+ public static void addKey(MaatRelation maatRelation, CompileAndGroupRelations compileAndGroupRelations) {
+
+ long compileId = compileAndGroupRelations.getCompileId();
+ List groupIdList = compileAndGroupRelations.getGroupIdList();
+ if (groupIdList != null && groupIdList.size() > 0) {
+ for (GroupAndRegionRelations gRR : groupIdList) {
+ Map> compileAndGroupMap2 = maatRelation.getCompileAndGroupMap();
+ if (compileAndGroupMap2 != null && compileAndGroupMap2.size() > 0) {
+ if (!compileAndGroupMap2.containsKey(compileId)) {
+ Set set = new HashSet();
+ set.add(gRR.getGroupId());
+ compileAndGroupMap2.put(compileId, set);
+ } else {
+ compileAndGroupMap2.get(compileId).add(gRR.getGroupId());
+ }
+ }
+
+ Map> groupAndCompileMap2 = maatRelation.getGroupAndCompileMap();
+ if (groupAndCompileMap2 != null && groupAndCompileMap2.size() > 0) {
+ if (!groupAndCompileMap2.containsKey(gRR.getGroupId())) {
+ Set set = new HashSet();
+ set.add(compileId);
+ groupAndCompileMap2.put(gRR.getGroupId(), set);
+ } else {
+ groupAndCompileMap2.get(gRR.getGroupId()).add(compileId);
+ }
+ }
+ Map> groupAndRegionMap2 = maatRelation.getGroupAndRegionMap();
+ if (groupAndRegionMap2 != null && groupAndRegionMap2.size() > 0) {
+ if (!groupAndRegionMap2.containsKey(gRR.getGroupId())) {
+ Set set = new HashSet();
+ set.add(gRR.getRegionId());
+ groupAndRegionMap2.put(gRR.getGroupId(), set);
+ } else {
+ groupAndRegionMap2.get(gRR.getGroupId()).add(gRR.getRegionId());
+ }
+ }
+
+ }
+ }
}
public static MaatRelation getMaat() {
MaatRelation maatRelation = new MaatRelation();
- Map> compileAndGroupMap = new HashMap>();
- List list = new ArrayList();
+ Map> compileAndGroupMap = new HashMap>();
+ Set list = new HashSet();
list.add(1l);
compileAndGroupMap.put(1l, list);
- list = new ArrayList();
+ list = new HashSet();
list.add(1l);
compileAndGroupMap.put(2l, list);
- Map> groupAndCompileMap = new HashMap>();
- list = new ArrayList();
+ Map> groupAndCompileMap = new HashMap>();
+ list = new HashSet();
list.add(1l);
list.add(2l);
groupAndCompileMap.put(1l, list);
// Map> regionAndGroupMap = new HashMap>();
- list = new ArrayList();
+ list = new HashSet();
list.add(1l);
// regionAndGroupMap.put(1l, list);
- Map> groupAndRegionMap = new HashMap>();
+ Map> groupAndRegionMap = new HashMap>();
groupAndRegionMap.put(1l, list);
maatRelation.setCompileAndGroupMap(compileAndGroupMap);
maatRelation.setGroupAndCompileMap(groupAndCompileMap);
diff --git a/src/main/java/com/nis/listener/CompileGroupRegionRela.java b/src/main/java/com/nis/listener/CompileGroupRegionRela.java
new file mode 100644
index 0000000..75d6077
--- /dev/null
+++ b/src/main/java/com/nis/listener/CompileGroupRegionRela.java
@@ -0,0 +1,297 @@
+package com.nis.listener;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.servlet.ServletContextEvent;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.context.ContextLoaderListener;
+
+import com.nis.domain.restful.CompileAndGroupRelations;
+import com.nis.domain.restful.GroupAndRegionRelations;
+import com.nis.domain.restful.MaatRelation;
+import com.nis.web.service.SpringContextHolder;
+
+/**
+ * 项目启动时加载数据字典
+ *
+ * @author RenKaiGe-Office
+ * @Date:2018-05-24
+ */
+public class CompileGroupRegionRela extends ContextLoaderListener {
+ private static Logger logger = LoggerFactory.getLogger(CompileGroupRegionRela.class);
+
+ private static RedisTemplate redisTemplate = null;
+ private static JedisConnectionFactory connectionFactory = null;
+
+ /**
+ * 存储redis所有库中,编译分组域等配置关系,key是redis库
+ */
+ private static Map idRelationMap = new ConcurrentHashMap();
+
+ @Override
+ public void contextInitialized(ServletContextEvent event) {
+ try {
+ redisTemplate = SpringContextHolder.getBean("redisTemplate");
+ connectionFactory = SpringContextHolder.getBean("connectionFactory");
+ for (int i = 0; i < 16; i++) {
+ connectionFactory.setDatabase(i);
+ redisTemplate.setConnectionFactory(connectionFactory);
+ getAllId(i);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void getAllId(int redisDBIndex) {
+ Map> groupCompileIdMap = new ConcurrentHashMap>();
+ Map> groupRegionIdMap = new ConcurrentHashMap>();
+ Set keySet = redisTemplate.keys("EFFECTIVE_RULE:*");
+ if (keySet != null && keySet.size() > 0) {
+ for (String keys : keySet) {
+ if (!keys.toLowerCase().contains("config_compile")) {
+ try {
+ String value = redisTemplate.opsForValue().get(keys).toString();
+ if (keys.toLowerCase().contains("config_group")) {
+ String[] split = value.split("\t");
+ String groupIdStr = split[0];
+ String compileIdStr = split[1];
+ if (groupCompileIdMap.containsKey(Long.valueOf(groupIdStr))) {
+ groupCompileIdMap.get(Long.valueOf(groupIdStr)).add(Long.valueOf(compileIdStr));
+ } else {
+ Set list = new HashSet();
+ list.add(Long.valueOf(compileIdStr));
+ groupCompileIdMap.put(Long.valueOf(groupIdStr), list);
+ }
+
+ } else {
+ String[] split = value.split("\t");
+ String regionIdStr = split[0];
+ String groupIdStr = split[1];
+ if (groupRegionIdMap.containsKey(Long.valueOf(groupIdStr))) {
+ groupRegionIdMap.get(Long.valueOf(groupIdStr)).add(Long.valueOf(regionIdStr));
+ } else {
+ Set list = new HashSet();
+ list.add(Long.valueOf(regionIdStr));
+ groupRegionIdMap.put(Long.valueOf(groupIdStr), list);
+ }
+ }
+ } catch (Exception e) {
+ logger.error("从redis中查询" + keys + "数据失败");
+ }
+ }
+ }
+ }
+
+ for (Long groupId : groupCompileIdMap.keySet()) {
+ if (idRelationMap.containsKey(redisDBIndex)) {
+ MaatRelation maatRelation = idRelationMap.get(redisDBIndex);
+
+ Map> compileAndGroupMap = maatRelation.getCompileAndGroupMap();
+ Set compileIdList = groupCompileIdMap.get(groupId);
+ for (Long compileId : compileIdList) {
+ if (compileAndGroupMap.containsKey(compileId)) {
+ compileAndGroupMap.get(compileId).add(groupId);
+ } else {
+ Set set = new HashSet();
+ set.add(groupId);
+ compileAndGroupMap.put(compileId, set);
+ }
+ }
+ Map> groupAndCompileMap = maatRelation.getGroupAndCompileMap();
+ if (groupAndCompileMap.containsKey(groupId)) {
+ groupAndCompileMap.get(groupId).addAll(compileIdList);
+ } else {
+ groupAndCompileMap.put(groupId, compileIdList);
+ }
+
+ Map> groupAndRegionMap = maatRelation.getGroupAndRegionMap();
+ if (groupAndRegionMap.containsKey(groupId)) {
+ groupAndRegionMap.get(groupId).addAll(groupRegionIdMap.get(groupId));
+ } else {
+ groupAndRegionMap.put(groupId, groupRegionIdMap.get(groupId));
+ }
+
+ } else {
+ MaatRelation maatRelation = new MaatRelation();
+
+ Map> compileAndGroupMap = new ConcurrentHashMap>();
+ Set compileIdList = groupCompileIdMap.get(groupId);
+ for (Long compileId : compileIdList) {
+ if (compileAndGroupMap.containsKey(compileId)) {
+ compileAndGroupMap.get(compileId).add(groupId);
+ } else {
+ Set set = new HashSet();
+ set.add(groupId);
+ compileAndGroupMap.put(compileId, set);
+ }
+ }
+ maatRelation.setCompileAndGroupMap(compileAndGroupMap);
+
+ Map> groupAndCompileMap = new ConcurrentHashMap>();
+ groupAndCompileMap.put(groupId, compileIdList);
+ maatRelation.setGroupAndCompileMap(groupAndCompileMap);
+
+ Map> groupAndRegionMap = new ConcurrentHashMap>();
+ groupAndRegionMap.put(groupId, groupRegionIdMap.get(groupId));
+ maatRelation.setGroupAndRegionMap(groupAndRegionMap);
+ idRelationMap.put(redisDBIndex, maatRelation);
+ }
+ }
+ }
+
+ /**
+ * 从字典中删除编译id的关系
+ * @param redisDBIndex 哪个redis库
+ * @param compileId
+ */
+ public static void delIdRelation(int redisDBIndex, long compileId) {
+ MaatRelation maatRelation = idRelationMap.get(redisDBIndex);
+ if (maatRelation != null) {
+ removKey(maatRelation, compileId);
+ } else {
+ logger.error("redis" + redisDBIndex + "号库中没有id对应关系(没有配置),请检查redisDBIndex是否正确");
+ }
+ }
+
+ private static void removKey(MaatRelation maatRelation, long compileId) {
+ if (maatRelation.getCompileAndGroupMap().containsKey(compileId)) {
+ Set list = maatRelation.getCompileAndGroupMap().get(compileId);
+
+ if (list != null && list.size() > 0) {
+ for (Long groupId : list) {
+ // }
+ // for (Long groupId: list.size()) {
+ if (maatRelation.getGroupAndCompileMap().containsKey(groupId)) {
+ // && maatRelation.getGroupAndCompileMap().get(groupId).size() == 1
+ // && maatRelation.getGroupAndCompileMap().get(groupId).get(0).longValue() ==
+ // compileId) {
+ Set compileIdList = maatRelation.getGroupAndCompileMap().get(groupId);
+ if (compileIdList.size() == 1) {// 当前的groupid只属于当前的compileid,没有被分组复用,需要将编译配置,分组关系,域配置,置无效
+ for (Long id : compileIdList) {
+ if (id.longValue() == compileId) {
+ // 这个group没有被分组复用,所以需要将这个组下面的域配置置为无效,组也要置为无效
+ if (maatRelation.getGroupAndRegionMap().containsKey(groupId)) {
+ // 把当前组置为无效,把当前组下的所有域置为无效
+ maatRelation.getGroupAndRegionMap().remove(groupId);// 删除组对应的域
+ maatRelation.getGroupAndCompileMap().remove(groupId);// 删除当前组所对应的编译
+ // maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId);
+ // maatRelation.getCompileAndGroupMap().get(compileId)
+ // list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));//
+ // 删除编译下面的组
+ list.remove(groupId);// 删除编译下面的组
+ }
+ }
+ }
+ } else {
+ // 这个组对应了多个编译配置被分组复用了,这时将这个组和编译的关系置为无效,编译置为无效
+ // list.remove(maatRelation.getCompileAndGroupMap().get(compileId).indexOf(groupId));//
+ // 删除编译下面的这个组
+ // maatRelation.getGroupAndCompileMap().get(groupId)
+ // .remove(maatRelation.getGroupAndCompileMap().get(groupId).indexOf(compileId));//
+ // 删除分组关系中的组和编译关系
+
+ list.remove(groupId);// 删除编译下面的这个组
+ maatRelation.getGroupAndCompileMap().get(groupId).remove(compileId);
+ }
+ } else {
+ // 当前的groupid属于多个组,被分组复用了,所以不对这个组进行操作,也不对这个组下面的域进行操作
+ }
+ }
+ }
+
+ }
+ }
+
+ /**
+ * 添加配置
+ * @param redisDBIndex 向哪个库添加配置
+ * @param compileAndGroupRelations id映射关系
+ */
+ public static void addIdRelation(int redisDBIndex, CompileAndGroupRelations compileAndGroupRelations) {
+ MaatRelation maatRelation = idRelationMap.get(redisDBIndex);
+ if (maatRelation != null) {
+ addKey(maatRelation, compileAndGroupRelations);
+ } else {
+ maatRelation = new MaatRelation();
+ addKey(maatRelation, compileAndGroupRelations);
+ idRelationMap.put(redisDBIndex, maatRelation);
+ }
+
+ }
+
+ private static void addKey(MaatRelation maatRelation, CompileAndGroupRelations compileAndGroupRelations) {
+ long compileId = compileAndGroupRelations.getCompileId();
+ List groupIdList = compileAndGroupRelations.getGroupIdList();
+ if (groupIdList != null && groupIdList.size() > 0) {
+ for (GroupAndRegionRelations gRR : groupIdList) {
+ Map> compileAndGroupMap2 = maatRelation.getCompileAndGroupMap();
+ if (compileAndGroupMap2 != null && compileAndGroupMap2.size() > 0) {
+ if (!compileAndGroupMap2.containsKey(compileId)) {
+ Set set = new HashSet();
+ set.add(gRR.getGroupId());
+ compileAndGroupMap2.put(compileId, set);
+ } else {
+ compileAndGroupMap2.get(compileId).add(gRR.getGroupId());
+ }
+ } else {
+ Map> compileAndGroupMap = new ConcurrentHashMap>();
+ Set set = new HashSet();
+ set.add(gRR.getGroupId());
+ compileAndGroupMap.put(compileId, set);
+ maatRelation.setCompileAndGroupMap(compileAndGroupMap);
+ }
+
+ Map> groupAndCompileMap2 = maatRelation.getGroupAndCompileMap();
+ if (groupAndCompileMap2 != null && groupAndCompileMap2.size() > 0) {
+ if (!groupAndCompileMap2.containsKey(gRR.getGroupId())) {
+ Set set = new HashSet();
+ set.add(compileId);
+ groupAndCompileMap2.put(gRR.getGroupId(), set);
+ } else {
+ groupAndCompileMap2.get(gRR.getGroupId()).add(compileId);
+ }
+ } else {
+ Map> groupAndCompileMap = new ConcurrentHashMap>();
+ Set set = new HashSet();
+ set.add(compileId);
+ groupAndCompileMap.put(gRR.getGroupId(), set);
+
+ maatRelation.setGroupAndCompileMap(groupAndCompileMap);
+ }
+ Map> groupAndRegionMap2 = maatRelation.getGroupAndRegionMap();
+ if (groupAndRegionMap2 != null && groupAndRegionMap2.size() > 0) {
+ if (!groupAndRegionMap2.containsKey(gRR.getGroupId())) {
+ Set set = new HashSet();
+ set.add(gRR.getRegionId());
+ groupAndRegionMap2.put(gRR.getGroupId(), set);
+ } else {
+ groupAndRegionMap2.get(gRR.getGroupId()).add(gRR.getRegionId());
+ }
+ } else {
+ Map> groupAndRegionMap = new ConcurrentHashMap>();
+ Set set = new HashSet();
+ set.add(gRR.getRegionId());
+ groupAndRegionMap.put(gRR.getGroupId(), set);
+ maatRelation.setGroupAndRegionMap(groupAndRegionMap);
+ }
+ }
+ }
+ }
+
+ public static Map getIdRelationMap() {
+ return idRelationMap;
+ }
+
+ public static void setIdRelationMap(Map idRelationMap) {
+ CompileGroupRegionRela.idRelationMap = idRelationMap;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java
index 94ca745..641ecf8 100644
--- a/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java
+++ b/src/main/java/com/nis/web/controller/restful/ConfigSourcesController.java
@@ -6,6 +6,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -15,12 +16,14 @@ import net.sf.json.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
+import com.nis.datasource.DynamicJedisDataBase;
import com.nis.domain.restful.ConfigCompile;
import com.nis.domain.restful.ConfigSource;
import com.nis.domain.restful.FileDesc;
@@ -37,6 +40,7 @@ import com.nis.web.service.ServicesRequestLogService;
import com.nis.web.service.fdfs.FastDFSFile;
import com.nis.web.service.fdfs.FileManager;
import com.nis.web.service.restful.ConfigRedisService;
+import com.nis.web.service.restful.ConfigRedisServiceimpl;
import com.nis.web.service.restful.ConfigSourcesService;
import com.wordnik.swagger.annotations.Api;
import com.wordnik.swagger.annotations.ApiOperation;
@@ -49,6 +53,7 @@ import com.wordnik.swagger.annotations.ApiParam;
* @date 2016年9月5日 下午6:20:33
* @version V1.0
*/
+//@Scope("prototype")
@RestController
@RequestMapping("${servicePath}")
@Api(value = "ConfigSourcesController", description = "配置存储服务,包括管控、监测、白名单的控制类")
@@ -62,7 +67,7 @@ public class ConfigSourcesController extends BaseRestController {
@Autowired
ConfigRedisService configRedisService;
- @RequestMapping(value = "/save", method = RequestMethod.GET)
+ @RequestMapping(value = "/cfg/v1/save", method = RequestMethod.GET)
@ApiOperation(value = "test redis", httpMethod = "GET", response = Map.class, notes = "测试redis事务的crontroller")
@ApiParam(value = "test redis", name = "测试redis事务的crontroller", required = true)
public String testRedis(Integer type) {
@@ -85,7 +90,6 @@ public class ConfigSourcesController extends BaseRestController {
configRedisService.saveUnMaatConfig(listMap, service);
} else {
Integer service = 100;
-
Map map = new HashMap();
long id = configRedisService.getIncrId("seq_compileid");
// int id=2;
@@ -105,7 +109,7 @@ public class ConfigSourcesController extends BaseRestController {
return "false";
}
- @RequestMapping(value = "/saveMaat", method = RequestMethod.GET)
+ @RequestMapping(value = "/cfg/v1/saveMaat", method = RequestMethod.GET)
@ApiOperation(value = "test redis", httpMethod = "GET", response = Map.class, notes = "测试redis事务的crontroller")
@ApiParam(value = "test redis", name = "测试redis事务的crontroller", required = true)
public String saveMaat(Integer service) {
@@ -200,7 +204,6 @@ public class ConfigSourcesController extends BaseRestController {
maatConfig.setIpRegionMapList(ipRegionMapList);
return maatConfig;
}
-
@RequestMapping(value = "/cfg/v1/configSources", method = RequestMethod.POST)
@ApiOperation(value = "业务配置存储", httpMethod = "POST", response = Map.class, notes = "对有效的配置(封堵|监测|白名单)存储")
@ApiParam(value = "业务配置数据源", name = "configSource", required = true)
@@ -219,30 +222,7 @@ public class ConfigSourcesController extends BaseRestController {
// 验证配置编译数据
validateConfigSource(thread, start, configSource);
Long benginTime = System.currentTimeMillis();
- String msg = configSourcesService.saveByJDBCThread(thread, start, configSource.getConfigCompileList(), sb);
- if (msg.equals("error")) {
- String errorCode = "";
- Exception exception = ConfigSourcesService.getMsgList().get(0);
- String str = exception.getMessage();
- if (null != str && str.length() > 0) {
- int index = str.toUpperCase().indexOf("ORA-");
- if (index != -1) {
- errorCode = str.substring(index + 4, index + 9);
- }
- }
- Map throwExceptionInfo = OracleErrorCodeUtil.throwExceptionInfo(errorCode);
- for (int errorNum : throwExceptionInfo.keySet()) {
- if (errorNum == 998) {
- thread.setExceptionInfo(exception.toString());
- } else {
- thread.setExceptionInfo(throwExceptionInfo.get(errorNum));
- }
- throw new RestServiceException(thread, System.currentTimeMillis() - start,
- throwExceptionInfo.get(errorNum), errorNum);
- }
- }
- // configSourcesService.insertConfigSourceData(thread, start,
- // configSource.getConfigCompileList(), sb);
+ configSourcesService.saveMaatConfig(thread, start, configSource.getConfigCompileList(), sb);
Long endSaveTime = System.currentTimeMillis();
Long time = (endSaveTime - benginTime) / 1000;
diff --git a/src/main/java/com/nis/web/controller/restful/ConfigTestController.java b/src/main/java/com/nis/web/controller/restful/ConfigTestController.java
index 22b6068..112faed 100644
--- a/src/main/java/com/nis/web/controller/restful/ConfigTestController.java
+++ b/src/main/java/com/nis/web/controller/restful/ConfigTestController.java
@@ -584,9 +584,9 @@ public class ConfigTestController extends BaseRestController {
configCompile.setContLabel("0");
configCompile.setTaskId(0);
configCompile.setGuaranteeId(0);
- configCompile.setAffAirId(0);
- configCompile.setTopIcId(0);
- configCompile.setDoBlackList(0l);
+ configCompile.setAffairId(0);
+ configCompile.setTopicId(0);
+ configCompile.setDoBlacklist(0l);
configCompile.setDoLog(0);
configCompile.setEffectiveRange("0");
configCompile.setConfigPercent(100l);
diff --git a/src/main/java/com/nis/web/controller/restful/SaveConfigTestController.java b/src/main/java/com/nis/web/controller/restful/SaveConfigTestController.java
index 229f3db..6a050a8 100644
--- a/src/main/java/com/nis/web/controller/restful/SaveConfigTestController.java
+++ b/src/main/java/com/nis/web/controller/restful/SaveConfigTestController.java
@@ -243,9 +243,9 @@ public class SaveConfigTestController extends BaseRestController {
configCompile.setContLabel("0");
configCompile.setTaskId(0);
configCompile.setGuaranteeId(0);
- configCompile.setAffAirId(0);
- configCompile.setTopIcId(0);
- configCompile.setDoBlackList(1l);
+ configCompile.setAffairId(0);
+ configCompile.setTopicId(0);
+ configCompile.setDoBlacklist(1l);
configCompile.setDoLog(0);
configCompile.setEffectiveRange("0");
configCompile.setConfigPercent(100l);
diff --git a/src/main/java/com/nis/web/dao/impl/BaseRedisDao.java b/src/main/java/com/nis/web/dao/impl/BaseRedisDao.java
index 73244af..3d16e59 100644
--- a/src/main/java/com/nis/web/dao/impl/BaseRedisDao.java
+++ b/src/main/java/com/nis/web/dao/impl/BaseRedisDao.java
@@ -1,21 +1,28 @@
package com.nis.web.dao.impl;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Repository;
+import com.nis.web.service.SpringContextHolder;
+
@Repository
public abstract class BaseRedisDao {
@Autowired
protected RedisTemplate redisTemplate;
-// public void setRedisTemplate(RedisTemplate redisTemplate) {
-// StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
-// redisTemplate.setKeySerializer(stringRedisSerializer);
-// redisTemplate.setValueSerializer(stringRedisSerializer);
-// this.redisTemplate = redisTemplate;
-// }
-
+ // public void setRedisTemplate(RedisTemplate redisTemplate) {
+ // StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+ // redisTemplate.setKeySerializer(stringRedisSerializer);
+ // redisTemplate.setValueSerializer(stringRedisSerializer);
+ // this.redisTemplate = redisTemplate;
+ // }
+ protected static void setRedisDataBase(int index, RedisTemplate redisTemplate) {
+ JedisConnectionFactory connectionFactory = SpringContextHolder.getBean("connectionFactory" + index);
+ //connectionFactory.setDatabase(index);
+ redisTemplate.setConnectionFactory(connectionFactory);
+ }
}
diff --git a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java
index 9880366..b64a6f3 100644
--- a/src/main/java/com/nis/web/service/restful/ConfigRedisService.java
+++ b/src/main/java/com/nis/web/service/restful/ConfigRedisService.java
@@ -17,7 +17,7 @@ import com.nis.domain.restful.MaatConfig;
public interface ConfigRedisService {
/**
* 保存非maat配置接口,例如ysp文件样例,ysp标志样例
- * @param listMap
+ * @param listMap 配置集合,一个map是一个集合
* @param service 业务类型
*/
public void saveUnMaatConfig(List