Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
b75b8a86
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b75b8a86
编写于
10月 10, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Dependencies model
Former-commit-id:
a6367fa2
上级
3d6e63d3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
55 addition
and
25 deletion
+55
-25
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverDependencies.java
...org/jkiss/dbeaver/registry/driver/DriverDependencies.java
+55
-25
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverDependencies.java
浏览文件 @
b75b8a86
...
...
@@ -30,59 +30,89 @@ import java.util.*;
*/
public
class
DriverDependencies
implements
DBPDriverDependencies
{
final
List
<
DependencyNode
>
rootNodes
=
new
ArrayList
<>();
final
List
<
DBPDriverLibrary
>
libraryList
=
new
ArrayList
<>();
public
DriverDependencies
()
{
}
void
resolveDependencies
(
DBRProgressMonitor
monitor
,
Collection
<?
extends
DBPDriverLibrary
>
rootLibraries
)
throws
DBException
{
try
{
// Dependency map. Key is artifact version (exact)
final
Map
<
String
,
List
<
DBPDriverLibrary
>>
depMap
=
new
LinkedHashMap
<>();
for
(
DBPDriverLibrary
library
:
rootLibraries
)
{
resolveDependencies
(
monitor
,
library
,
null
,
depMap
);
}
{
rootNodes
.
clear
();
/*
// Replace multiple versions of the same artifact with the first found one
Map<String, DBPDriverLibrary> flatDependencies = new LinkedHashMap<>();
List<DependencyNode> nodes = new ArrayList<>();
for (Map.Entry<String, List<DBPDriverLibrary>> entry : depMap.entrySet()) {
final
Map
<
String
,
DBPDriverLibrary
>
libMap
=
new
LinkedHashMap
<>();
for
(
DBPDriverLibrary
library
:
rootLibraries
)
{
DependencyNode
node
=
new
DependencyNode
(
null
,
library
);
resolveDependencies
(
monitor
,
node
,
libMap
);
rootNodes
.
add
(
node
);
}
libraryList
.
clear
();
libraryList
.
addAll
(
libMap
.
values
());
}
*/
{
StringBuilder
sb
=
new
StringBuilder
();
Set
<
String
>
ns
=
new
TreeSet
<>();
for
(
String
lib
:
libMap
.
keySet
())
{
String
newName
=
lib
.
replaceAll
(
".+\\:"
,
""
);
if
(
ns
.
contains
(
newName
))
{
System
.
out
.
println
(
123
);
}
ns
.
add
(
newName
);
}
for
(
String
lib
:
ns
)
{
sb
.
append
(
lib
).
append
(
"\n"
);
}
System
.
out
.
println
(
sb
.
toString
());
System
.
out
.
println
(
"---------------------------"
);
for
(
DependencyNode
node
:
rootNodes
)
{
dumpNode
(
node
,
0
);
}
}
}
}
catch
(
IOException
e
)
{
throw
new
DBException
(
"IO error while resolving dependencies"
,
e
);
}
}
private
void
resolveDependencies
(
DBRProgressMonitor
monitor
,
DBPDriverLibrary
library
,
DBPDriverLibrary
ownerLibrary
,
Map
<
String
,
List
<
DBPDriverLibrary
>>
depMap
)
throws
IOException
{
String
libraryPath
=
library
.
getPath
();
List
<
DBPDriverLibrary
>
deps
=
depMap
.
get
(
libraryPath
);
if
(
deps
!=
null
)
{
private
void
dumpNode
(
DependencyNode
node
,
int
level
)
{
if
(
node
.
duplicate
)
{
return
;
}
for
(
int
i
=
0
;
i
<
level
;
i
++)
System
.
out
.
print
(
"\t"
);
System
.
out
.
println
(
node
.
library
.
getId
()
+
":"
+
node
.
library
.
getVersion
());
for
(
DependencyNode
child
:
node
.
dependencies
)
{
dumpNode
(
child
,
level
+
1
);
}
}
deps
=
new
ArrayList
<>();
depMap
.
put
(
libraryPath
,
deps
);
Collection
<?
extends
DBPDriverLibrary
>
dependencies
=
library
.
getDependencies
(
monitor
,
ownerLibrary
);
private
void
resolveDependencies
(
DBRProgressMonitor
monitor
,
DependencyNode
ownerNode
,
Map
<
String
,
DBPDriverLibrary
>
libMap
)
throws
IOException
{
Collection
<?
extends
DBPDriverLibrary
>
dependencies
=
ownerNode
.
library
.
getDependencies
(
monitor
,
ownerNode
.
owner
==
null
?
null
:
ownerNode
.
owner
.
library
);
if
(
dependencies
!=
null
&&
!
dependencies
.
isEmpty
())
{
for
(
DBPDriverLibrary
dep
:
dependencies
)
{
deps
.
add
(
dep
);
resolveDependencies
(
monitor
,
dep
,
library
,
depMap
);
DependencyNode
node
=
new
DependencyNode
(
ownerNode
,
dep
);
node
.
duplicate
=
libMap
.
containsKey
(
node
.
library
.
getId
());
if
(!
node
.
duplicate
)
{
libMap
.
put
(
node
.
library
.
getId
(),
node
.
library
);
}
ownerNode
.
dependencies
.
add
(
node
);
}
for
(
DependencyNode
node
:
ownerNode
.
dependencies
)
{
resolveDependencies
(
monitor
,
node
,
libMap
);
}
}
}
@Override
public
List
<
DBPDriverLibrary
>
getLibraryList
()
{
return
null
;
return
libraryList
;
}
@Override
public
List
<
DependencyNode
>
getLibraryMap
()
{
return
null
;
return
rootNodes
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录