public static Collection<DataNode> buildDataNode(final DataNode dataNode, final Map<String, Collection<String>> dataSources) {
        if (!dataSources.containsKey(dataNode.getDataSourceName())) {
            return Collections.singletonList(dataNode);
        }
        Collection<DataNode> result = new LinkedList<>();
        for (String each : dataSources.get(dataNode.getDataSourceName())) {
            result.add(new DataNode(each, dataNode.getTableName()));
        }
        return result;
    }
@Test
    void assertBuildDataNodeWithSameDataSource() {
        DataNode dataNode = new DataNode("readwrite_ds.t_order");
        Collection<DataNode> dataNodes = DataNodeUtils.buildDataNode(dataNode, Collections.singletonMap("readwrite_ds", Arrays.asList("ds_0", "shadow_ds_0")));
        assertThat(dataNodes.size(), is(2));
        Iterator<DataNode> iterator = dataNodes.iterator();
        assertThat(iterator.next().getDataSourceName(), is("ds_0"));
        assertThat(iterator.next().getDataSourceName(), is("shadow_ds_0"));
    }