Commit 1ab4c956 by qiuchaofei

1.添加关系的属性,2 查询column,sql等模型

parent 185611fd
...@@ -6,7 +6,9 @@ import org.jasypt.encryption.StringEncryptor; ...@@ -6,7 +6,9 @@ import org.jasypt.encryption.StringEncryptor;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@EnableFeignClients @EnableFeignClients
@SpringBootApplication @SpringBootApplication
public class MetadataRelationApplication { public class MetadataRelationApplication {
......
...@@ -47,13 +47,6 @@ public class RelationalGraphController { ...@@ -47,13 +47,6 @@ public class RelationalGraphController {
@Autowired @Autowired
private TagRemoteService tagRemoteService; private TagRemoteService tagRemoteService;
//测试标签的接口的接口
@ApiOperation(tags = "", value = "测试标准的接口")
@RequestMapping(path = "/testTagService", method = RequestMethod.GET)
public void testTagService(String metadataId){
}
//测试标准的接口 //测试标准的接口
@ApiOperation(tags = "", value = "测试标准的接口") @ApiOperation(tags = "", value = "测试标准的接口")
@RequestMapping(path = "/dataAssertRemoteService", method = RequestMethod.GET) @RequestMapping(path = "/dataAssertRemoteService", method = RequestMethod.GET)
......
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label="Neo4jColumn")
public class Neo4jColumn extends BaseNode{
}
package com.keymobile.metadata.metadataRelation.pojo.metadata;
import com.keymobile.metadata.metadataRelation.pojo.BaseNode;
import org.neo4j.ogm.annotation.NodeEntity;
@NodeEntity(label="Neo4jETLSql")
public class Neo4jETLSql extends BaseNode {
}
...@@ -15,6 +15,19 @@ public class ReturnNode { ...@@ -15,6 +15,19 @@ public class ReturnNode {
private String cnName; private String cnName;
private String dataPath; private String dataPath;
private Map<String ,String> attributeMaps = new HashMap<>();
private Map<String ,String> relationMaps = new HashMap<>();
public Map<String, String> getRelationMaps() {
return relationMaps;
}
public void setRelationMaps(Map<String, String> relationMaps) {
this.relationMaps = relationMaps;
}
public String getDataPath() { public String getDataPath() {
return dataPath; return dataPath;
...@@ -33,7 +46,6 @@ public class ReturnNode { ...@@ -33,7 +46,6 @@ public class ReturnNode {
this.attributeMaps = attributeMaps; this.attributeMaps = attributeMaps;
} }
Map<String ,String> attributeMaps = new HashMap<>();
public String getCnName() { public String getCnName() {
return cnName; return cnName;
......
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jColumn;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface Neo4jColumnRepository extends Neo4jRepository<Neo4jColumn, Long> {
Neo4jColumn findNeo4jColumnByMetadataId(String metadataId);
}
package com.keymobile.metadata.metadataRelation.respository.metadata;
import com.keymobile.metadata.metadataRelation.pojo.metadata.Neo4jETLSql;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface Neo4jETLSqlRepository extends Neo4jRepository<Neo4jETLSql, Long> {
Neo4jETLSql findNeo4jETLSqlByMetadataId(String metadataId);
}
...@@ -19,6 +19,11 @@ public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> { ...@@ -19,6 +19,11 @@ public interface Neo4jTableRepository extends Neo4jRepository<Neo4jTable,Long> {
@Query("match (n{metadataId:{tableId}} )-[r1:流向]->(m1)-[r:流向]->(m) return m ") @Query("match (n{metadataId:{tableId}} )-[r1:流向]->(m1)-[r:流向]->(m) return m ")
List<BaseNode> getTargetTable(@Param("tableId") String tableId); List<BaseNode> getTargetTable(@Param("tableId") String tableId);
@Query("match (n{metadataId:{startTable}} )<-[r1:流向]-(m1)<-[r:流向]-(m{metadataId:{entTable}}) return m1 ")
List<BaseNode> getSourceEtlScriptBetween2Table(@Param("startTable") String startTable,@Param("entTable") String entTable);
@Query("match (n{metadataId:{startTable}} )-[r1:流向]->(m1)-[r:流向]->(m{metadataId:{entTable}}) return m1 ")
List<BaseNode> getTargetEtlScriptBetween2Table(@Param("startTable") String startTable,@Param("entTable") String entTable);
@Query("match (n{metadataId:{tableId}} )<-[r1:流向]-(m1) <-[r:Composition]-(m) return m ") @Query("match (n{metadataId:{tableId}} )<-[r1:流向]-(m1) <-[r:Composition]-(m) return m ")
......
package com.keymobile.metadata.metadataRelation.service; package com.keymobile.metadata.metadataRelation.service;
import com.keymobile.metadata.metadataRelation.controller.MetaDataController;
import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData; import com.keymobile.metadata.metadataRelation.pojo.mongo.MongoData;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.RowMapper;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.lang.reflect.Method;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List; import java.util.List;
import java.util.concurrent.Executor;
@Service @Service
@EnableAsync @EnableAsync
...@@ -32,6 +26,28 @@ public class AsyncDataFromMongoToNeo4j { ...@@ -32,6 +26,28 @@ public class AsyncDataFromMongoToNeo4j {
@Autowired @Autowired
private JdbcTemplate jdbcTemplate; private JdbcTemplate jdbcTemplate;
//定时同步数据,
//查找所有的环境,
@Scheduled(cron="0 0 1 * * ?")//每天凌晨1点运行
public void executeFileSyncTask() {
String sql = "select domain_id, domain_name from auth_domain ";
List<MongoData> scopeList = jdbcTemplate.query(sql, new RowMapper<MongoData>() {
@Override
public MongoData mapRow(ResultSet resultSet, int i) throws SQLException {
MongoData user = new MongoData();
user.set_id(resultSet.getString("domain_id"));
user.setName(resultSet.getString("domain_name"));
user.setCnName(resultSet.getString("domain_name"));
user.set_class("Scope");
return user;
}
});
for(MongoData scope:scopeList){
// asyncDataFromMongoToNeo4j(scope.get_id());
}
}
@Async @Async
public void asyncDataFromMongoToNeo4j(String catalogName) { public void asyncDataFromMongoToNeo4j(String catalogName) {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
......
...@@ -169,7 +169,7 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService { ...@@ -169,7 +169,7 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService {
} }
@Override @Override
public void saveRelation(String startId, String endId, String composition) { public void saveRelation(String startId, String endId, String relationType) {
Neo4jConfig neo4jConfig = new Neo4jConfig(); Neo4jConfig neo4jConfig = new Neo4jConfig();
Driver neo4jConnection = neo4jConfig.getNeo4jConnection(); Driver neo4jConnection = neo4jConfig.getNeo4jConnection();
Session session = neo4jConnection.session(); Session session = neo4jConnection.session();
...@@ -177,8 +177,8 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService { ...@@ -177,8 +177,8 @@ public class BaseRelationshipServiceImpl implements IBaseRelationshipService {
// (m{metadataId:"Table=1=d644b631fa8c434e928bcd1f1665b060"}) // (m{metadataId:"Table=1=d644b631fa8c434e928bcd1f1665b060"})
// create (n)<-[r:Composition]-(m) // create (n)<-[r:Composition]-(m)
// return n,m,r // return n,m,r
String cypher = " match (n{metadataId:\""+startId+"\"}),(m{metadataId:\""+endId+"\"}) merge (n)-[r:"+composition+"]->(m) return n,m,r "; String cypher = " match (n{metadataId:\""+startId+"\"}),(m{metadataId:\""+endId+"\"}) merge (n)-[r:"+relationType+"]->(m) return n,m,r ";
session.run(cypher); session.run(cypher);
logger.info("运行保存关系完成:" + cypher); // logger.info("运行保存关系完成:" + cypher);
} }
} }
...@@ -10,7 +10,6 @@ import org.springframework.data.domain.Pageable; ...@@ -10,7 +10,6 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -36,7 +35,7 @@ public class MongoDbServiceImpl { ...@@ -36,7 +35,7 @@ public class MongoDbServiceImpl {
public List<RelationMongo> findAllRelationByCatalog(String catalogName) { public List<RelationMongo> findAllRelationByCatalog(String catalogName) {
logger.info("--------------------->[MongoDB find start]"); logger.info("--------------------->[MongoDB find start]");
try { try {
return mongoTemplate.findAll(RelationMongo.class, "md_relation_" + catalogName); return mongoTemplate.findAll(RelationMongo.class, PREFIX_MD_RELATION + catalogName);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
...@@ -53,12 +52,12 @@ public class MongoDbServiceImpl { ...@@ -53,12 +52,12 @@ public class MongoDbServiceImpl {
* *
* @return * @return
*/ */
public List<MongoData> findDatabaseByparentId(String catalogName,String collectionName) { public List<MongoData> findDatabaseByparentId(String parentName,String catalogName) {
logger.info("开始从mongo获取元数据:"+ catalogName); logger.info("开始从mongo获取元数据:"+ parentName);
try { try {
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("parentId").is(catalogName)); query.addCriteria(Criteria.where("parentId").is(parentName));
List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,collectionName); List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,PREFIX_METADATA_NODE+catalogName);
return mongoDataList; return mongoDataList;
} catch (Exception e) { } catch (Exception e) {
...@@ -74,12 +73,12 @@ public class MongoDbServiceImpl { ...@@ -74,12 +73,12 @@ public class MongoDbServiceImpl {
* *
* @return * @return
*/ */
public List<MongoData> findDataByparentId(String parentId,String collectionName) { public List<MongoData> findDataByparentId(String parentId,String catalogName) {
logger.info("开始从mongo获取元数据:"+ parentId); logger.info("开始从mongo获取元数据:"+ parentId);
try { try {
Query query = new Query(); Query query = new Query();
query.addCriteria(Criteria.where("parentId").is(parentId)); query.addCriteria(Criteria.where("parentId").is(parentId));
List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,collectionName); List<MongoData> mongoDataList = mongoTemplate.find(query, MongoData.class,PREFIX_METADATA_NODE+catalogName);
return mongoDataList;// mongoTemplate.findAll(MongoData.class, "md_relation_" + catalogName); return mongoDataList;// mongoTemplate.findAll(MongoData.class, "md_relation_" + catalogName);
} catch (Exception e) { } catch (Exception e) {
......
...@@ -298,11 +298,19 @@ public class TableServiceImpl implements ITableService { ...@@ -298,11 +298,19 @@ public class TableServiceImpl implements ITableService {
returnNode.setType("Table"); returnNode.setType("Table");
// 获取属性 // 获取属性
Map<String,String> attributeMap = getAttributeMap(metadataId); Map<String,String> attributeMap = getAttributeMap(metadataId);
List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getTargetEtlScriptBetween2Table(tableId, metadataId);
Map<String,String> relationMap = new HashMap<>();
for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
relationMap.put("name",sourceEtlScriptBetween2Table.getName());
relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
}
returnNode.setAttributeMaps(attributeMap);
if(!targetTables.contains(returnNode)){ if(!targetTables.contains(returnNode)){
targetTables.add(returnNode); targetTables.add(returnNode);
} }
returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap);
}else { }else {
getTargetTable(metadataId,targetTables); getTargetTable(metadataId,targetTables);
} }
...@@ -318,13 +326,19 @@ public class TableServiceImpl implements ITableService { ...@@ -318,13 +326,19 @@ public class TableServiceImpl implements ITableService {
returnNode.setId(baseNode.getMetadataId()); returnNode.setId(baseNode.getMetadataId());
returnNode.setName(baseNode.getName()); returnNode.setName(baseNode.getName());
returnNode.setType("Table"); returnNode.setType("Table");
// 获取属性 // 获取属性
Map<String,String> attributeMap = getAttributeMap(metadataId); Map<String,String> attributeMap = getAttributeMap(metadataId);
List<BaseNode> sourceEtlScriptBetween2TableList = neo4jTableRepository.getSourceEtlScriptBetween2Table(tableId, metadataId);
Map<String,String> relationMap = new HashMap<>();
for(BaseNode sourceEtlScriptBetween2Table:sourceEtlScriptBetween2TableList){
relationMap.put("name",sourceEtlScriptBetween2Table.getName());
relationMap.put("metadataId",sourceEtlScriptBetween2Table.getMetadataId());
}
if(!sourceTables.contains(returnNode)){ if(!sourceTables.contains(returnNode)){
sourceTables.add(returnNode); sourceTables.add(returnNode);
} }
returnNode.setRelationMaps(relationMap);
returnNode.setAttributeMaps(attributeMap); returnNode.setAttributeMaps(attributeMap);
}else { }else {
getSourceTable(metadataId,sourceTables); getSourceTable(metadataId,sourceTables);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment