use of com.qlangtech.tis.sql.parser.meta.DependencyNode in project tis by qlangtech.
the class DataFlowAppSource method getDependencyTables.
/**
* 取得依赖的db->table映射关系
*
* @return
*/
// @Override
public Map<DBNode, List<String>> getDependencyTables(IDBTableNamesGetter dbTableNamesGetter) {
try {
SqlTaskNodeMeta.SqlDataFlowTopology topology = SqlTaskNodeMeta.getSqlDataFlowTopology(dataflowName);
Map<DBNode, List<String>> /* tables */
dbNameMap = Maps.newHashMap();
List<String> tables = null;
DBNode dbNode = null;
for (DependencyNode node : topology.getDumpNodes()) {
dbNode = new DBNode(node.getDbName(), Integer.parseInt(node.getDbid()));
node.parseEntityName();
tables = dbNameMap.get(dbNode);
if (tables == null) {
// DB 下的全部table
tables = Lists.newArrayList();
dbNameMap.put(dbNode, tables);
}
tables.add(node.getName());
}
for (Map.Entry<DBNode, List<String>> /* tables */
entry : dbNameMap.entrySet()) {
entry.setValue(dbTableNamesGetter.getTableNames(entry.getKey().getDbId(), entry.getValue()));
}
return dbNameMap;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
use of com.qlangtech.tis.sql.parser.meta.DependencyNode in project tis by qlangtech.
the class TestSqlTaskNodeMeta method testDescrialize.
public void testDescrialize() throws Exception {
File f = new File(parent, "card_expense_relative.yaml");
SqlTaskNodeMeta sqlNodeMeta = SqlTaskNodeMeta.deserializeTaskNode(f);
Assert.assertNotNull(sqlNodeMeta);
Position pos = sqlNodeMeta.getPosition();
Assert.assertNotNull(pos);
Assert.assertTrue(pos.getX() > 0);
Assert.assertTrue(pos.getY() > 0);
Assert.assertEquals("card_expense_relative", sqlNodeMeta.getExportName());
String sqlContent = sqlNodeMeta.getSql();
System.out.println(sqlContent);
Assert.assertNotNull(sqlContent);
List<DependencyNode> required = sqlNodeMeta.getDependencies();
Assert.assertEquals(2, required.size());
Assert.assertEquals(1059, sqlNodeMeta.getPosition().getX());
Assert.assertEquals(264, sqlNodeMeta.getPosition().getY());
Assert.assertEquals(NodeType.JOINER_SQL, sqlNodeMeta.getNodeType());
Assert.assertEquals("6e7b9c50-0fba-8a19-f029-d973e5a833c7", sqlNodeMeta.getId());
}
use of com.qlangtech.tis.sql.parser.meta.DependencyNode in project tis by qlangtech.
the class CollectionAction method createTopology.
private SqlTaskNodeMeta.SqlDataFlowTopology createTopology(String topologyName, OfflineManager.ProcessedTable dsTable, TargetColumnMeta targetColMetas) throws Exception {
SqlTaskNodeMeta.SqlDataFlowTopology topology = new SqlTaskNodeMeta.SqlDataFlowTopology();
SqlTaskNodeMeta.TopologyProfile profile = new SqlTaskNodeMeta.TopologyProfile();
profile.setName(topologyName);
profile.setTimestamp(System.currentTimeMillis());
topology.setProfile(profile);
DependencyNode dNode = createDumpNode(dsTable);
topology.addDumpTab(dNode);
SqlTaskNodeMeta joinNodeMeta = new SqlTaskNodeMeta();
joinNodeMeta.setId(String.valueOf(UUID.randomUUID()));
joinNodeMeta.addDependency(dNode);
joinNodeMeta.setExportName(topologyName);
joinNodeMeta.setType(NodeType.JOINER_SQL.getType());
joinNodeMeta.setPosition(DEFAULT_SINGLE_JOINER_POSITION);
joinNodeMeta.setSql(ColumnMetaData.buildExtractSQL(dsTable.getName(), true, targetColMetas.targetColMetas).toString());
topology.addNodeMeta(joinNodeMeta);
ERRules.createErRule(topologyName, createDumpNode(dsTable), targetColMetas.getPKMeta());
return topology;
}
use of com.qlangtech.tis.sql.parser.meta.DependencyNode in project tis by qlangtech.
the class CollectionAction method createDumpNode.
private DependencyNode createDumpNode(OfflineManager.ProcessedTable dsTable) {
DependencyNode dNode = new DependencyNode();
dNode.setId(String.valueOf(UUID.randomUUID()));
dNode.setDbName(dsTable.getDBName());
dNode.setName(dsTable.getName());
dNode.setDbid(String.valueOf(dsTable.getDbId()));
dNode.setTabid(String.valueOf(dsTable.getId()));
dNode.setExtraSql(dsTable.getExtraSql());
dNode.setPosition(DEFAULT_SINGLE_TABLE_POSITION);
dNode.setType(NodeType.DUMP.getType());
return dNode;
}
use of com.qlangtech.tis.sql.parser.meta.DependencyNode in project tis by qlangtech.
the class FlatTableRelation method isLinkable.
/**
* 是否能通过主外键相连
*
* @param next
* @return
*/
public boolean isLinkable(FlatTableRelation next) {
DependencyNode currForeig = this.getTailer();
DependencyNode nextPrimary = next.getHeader();
EntityName currEntityName = currForeig.parseEntityName();
EntityName nextEntityName = nextPrimary.parseEntityName();
if (!currEntityName.equals(nextEntityName)) {
// return false;
throw new IllegalStateException("curr foreign:" + currEntityName + " next primary:" + nextEntityName + " must be equal");
}
return CollectionUtils.isEqualCollection(this.getTailerKeys().stream().map((r) -> r.getHeadLinkKey()).collect(Collectors.toList()), next.getHeaderKeys().stream().map((r) -> r.getHeadLinkKey()).collect(Collectors.toList()));
}
Aggregations