Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
5822bd95
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
5822bd95
编写于
10月 06, 2015
作者:
J
jurgen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Driver libraries model
上级
8adca1e7
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
119 addition
and
33 deletion
+119
-33
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverDescriptor.java
...c/org/jkiss/dbeaver/registry/driver/DriverDescriptor.java
+2
-3
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryAbstract.java
.../jkiss/dbeaver/registry/driver/DriverLibraryAbstract.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryLocal.java
...org/jkiss/dbeaver/registry/driver/DriverLibraryLocal.java
+2
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryMavenArtifact.java
...s/dbeaver/registry/driver/DriverLibraryMavenArtifact.java
+22
-17
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenArtifact.java
...e/src/org/jkiss/dbeaver/registry/maven/MavenArtifact.java
+1
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenArtifactVersion.java
...rg/jkiss/dbeaver/registry/maven/MavenArtifactVersion.java
+36
-8
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java
...iss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java
+34
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java
...jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java
+8
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java
...s/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java
+5
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java
...g/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java
+2
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java
...jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java
+4
-0
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverLibrary.java
...r.model/src/org/jkiss/dbeaver/model/DBPDriverLibrary.java
+2
-2
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverDescriptor.java
浏览文件 @
5822bd95
...
...
@@ -31,9 +31,7 @@ import org.jkiss.dbeaver.model.impl.AbstractDescriptor;
import
org.jkiss.dbeaver.model.impl.PropertyDescriptor
;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.navigator.meta.DBXTreeNode
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.model.runtime.OSDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceDescriptor
;
import
org.jkiss.dbeaver.registry.DataSourceProviderDescriptor
;
...
...
@@ -48,7 +46,6 @@ import org.jkiss.utils.xml.XMLBuilder;
import
java.io.File
;
import
java.io.IOException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.net.MalformedURLException
;
import
java.net.URL
;
import
java.util.*
;
...
...
@@ -897,6 +894,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver
public
boolean
acceptDriverLicenses
(
DBRRunnableContext
runnableContext
)
{
/*
// User must accept all licenses before actual drivers download
for (final DBPDriverLibrary file : libraries) {
if (file.getType() == DBPDriverLibrary.FileType.license) {
...
...
@@ -924,6 +922,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver
if (!CommonUtils.isEmpty(licenseText)) {
return acceptLicense(licenseText);
}
*/
// No license
return
true
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryAbstract.java
浏览文件 @
5822bd95
...
...
@@ -147,7 +147,7 @@ public abstract class DriverLibraryAbstract implements DBPDriverLibrary
return
system
==
null
||
system
.
matches
(
DBeaverCore
.
getInstance
().
getLocalSystem
());
}
public
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
updateVersion
)
throws
IOException
,
InterruptedException
public
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
forceUpdate
)
throws
IOException
,
InterruptedException
{
String
externalURL
=
getExternalURL
();
if
(
externalURL
==
null
)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryLocal.java
浏览文件 @
5822bd95
...
...
@@ -25,6 +25,7 @@ import org.jkiss.code.Nullable;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.model.DBIcon
;
import
org.jkiss.dbeaver.model.DBPDriverLibrary
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
java.io.File
;
...
...
@@ -129,7 +130,7 @@ public class DriverLibraryLocal extends DriverLibraryAbstract
@Nullable
@Override
public
Collection
<
DBPDriverLibrary
>
getDependencies
(
)
{
public
Collection
<
DBPDriverLibrary
>
getDependencies
(
DBRProgressMonitor
monitor
)
throws
IOException
{
return
null
;
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/driver/DriverLibraryMavenArtifact.java
浏览文件 @
5822bd95
...
...
@@ -25,10 +25,7 @@ import org.jkiss.dbeaver.model.DBIcon;
import
org.jkiss.dbeaver.model.DBPDriverLibrary
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.registry.maven.MavenArtifact
;
import
org.jkiss.dbeaver.registry.maven.MavenArtifactReference
;
import
org.jkiss.dbeaver.registry.maven.MavenLocalVersion
;
import
org.jkiss.dbeaver.registry.maven.MavenRegistry
;
import
org.jkiss.dbeaver.registry.maven.*
;
import
org.jkiss.dbeaver.ui.UIIcon
;
import
java.io.File
;
...
...
@@ -126,7 +123,18 @@ public class DriverLibraryMavenArtifact extends DriverLibraryAbstract
@Nullable
@Override
public
Collection
<
DBPDriverLibrary
>
getDependencies
()
{
public
Collection
<
DBPDriverLibrary
>
getDependencies
(
DBRProgressMonitor
monitor
)
throws
IOException
{
MavenLocalVersion
localVersion
=
resolveLocalVersion
(
monitor
,
false
);
if
(
localVersion
==
null
)
{
return
null
;
}
MavenArtifactVersion
metaData
=
localVersion
.
getMetaData
();
if
(
metaData
==
null
)
{
return
null
;
}
for
(
MavenArtifactDependency
dependency
:
metaData
.
getDependencies
())
{
System
.
out
.
println
(
dependency
);
}
return
null
;
}
...
...
@@ -148,35 +156,32 @@ public class DriverLibraryMavenArtifact extends DriverLibraryAbstract
return
UIIcon
.
APACHE
;
}
public
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
updateVersion
)
throws
IOException
,
InterruptedException
{
Maven
Artifact
artifact
=
downloadMavenArtifact
(
monitor
,
updateVersion
);
if
(
artifact
.
getRepository
().
isLocal
())
{
public
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
forceUpdate
)
throws
IOException
,
InterruptedException
{
Maven
LocalVersion
localVersion
=
resolveLocalVersion
(
monitor
,
forceUpdate
);
if
(
localVersion
.
getArtifact
()
.
getRepository
().
isLocal
())
{
// No need to download local artifacts
return
;
}
super
.
downloadLibraryFile
(
monitor
,
updateVersion
);
super
.
downloadLibraryFile
(
monitor
,
forceUpdate
);
}
private
Maven
Artifact
downloadMavenArtifact
(
DBRProgressMonitor
monitor
,
boolean
updateVersion
)
throws
IOException
{
private
Maven
LocalVersion
resolveLocalVersion
(
DBRProgressMonitor
monitor
,
boolean
forceUpdate
)
throws
IOException
{
MavenArtifactReference
artifactInfo
=
new
MavenArtifactReference
(
path
);
if
(
updateVersion
)
{
if
(
forceUpdate
)
{
MavenRegistry
.
getInstance
().
resetArtifactInfo
(
artifactInfo
);
}
MavenArtifact
artifact
=
MavenRegistry
.
getInstance
().
findArtifact
(
artifactInfo
);
if
(
artifact
==
null
)
{
throw
new
IOException
(
"Maven artifact '"
+
path
+
"' not found"
);
}
if
(
updateVersion
)
{
artifact
.
loadMetadata
();
}
else
{
if
(!
forceUpdate
)
{
MavenLocalVersion
localVersion
=
artifact
.
getActiveLocalVersion
();
if
(
localVersion
!=
null
&&
localVersion
.
getCacheFile
().
exists
())
{
// Already cached
return
artifact
;
return
localVersion
;
}
}
artifact
.
resolveVersion
(
monitor
,
artifactInfo
.
getVersion
());
return
artifact
;
return
artifact
.
resolveVersion
(
monitor
,
artifactInfo
.
getVersion
());
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenArtifact.java
浏览文件 @
5822bd95
...
...
@@ -197,6 +197,7 @@ public class MavenArtifact
log
.
debug
(
"Artifact '"
+
artifactId
+
"' do not have version '"
+
versionStr
+
"' info in metadata"
);
}
version
=
new
MavenLocalVersion
(
this
,
versionStr
,
getVersionFileName
(
versionStr
,
FILE_JAR
),
new
Date
());
version
.
getMetaData
();
localVersions
.
add
(
version
);
}
if
(
setActive
)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/registry/maven/MavenArtifactVersion.java
浏览文件 @
5822bd95
...
...
@@ -26,9 +26,7 @@ import org.xml.sax.Attributes;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* Maven artifact version descriptor (POM).
...
...
@@ -42,8 +40,10 @@ public class MavenArtifactVersion
private
String
version
;
private
String
description
;
private
String
url
;
private
List
<
MavenArtifactLicense
>
licenses
;
private
List
<
MavenArtifactDependency
>
dependencies
;
private
MavenArtifactReference
parent
;
private
Map
<
String
,
String
>
properties
=
new
LinkedHashMap
<>();
private
List
<
MavenArtifactLicense
>
licenses
=
new
ArrayList
<>();
private
List
<
MavenArtifactDependency
>
dependencies
=
new
ArrayList
<>();
MavenArtifactVersion
(
MavenLocalVersion
localVersion
)
throws
IOException
{
this
.
localVersion
=
localVersion
;
...
...
@@ -75,6 +75,14 @@ public class MavenArtifactVersion
return
url
;
}
public
MavenArtifactReference
getParent
()
{
return
parent
;
}
public
Map
<
String
,
String
>
getProperties
()
{
return
properties
;
}
public
List
<
MavenArtifactLicense
>
getLicenses
()
{
return
licenses
;
}
...
...
@@ -90,6 +98,8 @@ public class MavenArtifactVersion
private
enum
ParserState
{
ROOT
,
PARENT
,
PROPERTIES
,
LICENSE
,
DEPENDENCIES
,
DEPENDENCY
...
...
@@ -107,7 +117,11 @@ public class MavenArtifactVersion
@Override
public
void
saxStartElement
(
SAXReader
reader
,
String
namespaceURI
,
String
localName
,
Attributes
atts
)
throws
XMLException
{
lastTag
=
localName
;
if
(
"license"
.
equals
(
localName
))
{
if
(
"parent"
.
equals
(
localName
)
&&
state
==
ParserState
.
ROOT
)
{
state
=
ParserState
.
PARENT
;
}
else
if
(
"properties"
.
equals
(
localName
))
{
state
=
ParserState
.
PROPERTIES
;
}
else
if
(
"license"
.
equals
(
localName
))
{
state
=
ParserState
.
LICENSE
;
}
else
if
(
"dependencies"
.
equals
(
localName
))
{
state
=
ParserState
.
DEPENDENCIES
;
...
...
@@ -130,6 +144,8 @@ public class MavenArtifactVersion
url
=
data
;
}
break
;
case
PARENT:
case
PROPERTIES:
case
LICENSE:
case
DEPENDENCY:
attributes
.
put
(
lastTag
,
data
);
...
...
@@ -149,6 +165,8 @@ public class MavenArtifactVersion
attributes
.
clear
();
}
else
if
(
"dependencies"
.
equals
(
localName
)
&&
state
==
ParserState
.
DEPENDENCIES
)
{
state
=
ParserState
.
ROOT
;
attributes
.
clear
();
}
else
if
(
"dependency"
.
equals
(
localName
)
&&
state
==
ParserState
.
DEPENDENCY
)
{
dependencies
.
add
(
new
MavenArtifactDependency
(
new
MavenArtifactReference
(
attributes
.
get
(
"groupId"
),
...
...
@@ -158,10 +176,20 @@ public class MavenArtifactVersion
attributes
.
get
(
"type"
),
Boolean
.
valueOf
(
attributes
.
get
(
"optional"
))
));
attributes
.
clear
();
}
else
if
(
"dependency"
.
equals
(
localName
)
&&
state
==
ParserState
.
DEPENDENCY
)
{
state
=
ParserState
.
DEPENDENCIES
;
attributes
.
clear
();
}
else
if
(
"properties"
.
equals
(
localName
)
&&
state
==
ParserState
.
PROPERTIES
)
{
properties
.
putAll
(
attributes
);
attributes
.
clear
();
state
=
ParserState
.
ROOT
;
}
else
if
(
"parent"
.
equals
(
localName
)
&&
state
==
ParserState
.
PARENT
)
{
parent
=
new
MavenArtifactReference
(
attributes
.
get
(
"groupId"
),
attributes
.
get
(
"artifactId"
),
attributes
.
get
(
"version"
)
);
attributes
.
clear
();
state
=
ParserState
.
ROOT
;
}
}
});
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadAutoPage.java
浏览文件 @
5822bd95
...
...
@@ -17,9 +17,11 @@
*/
package
org.jkiss.dbeaver.ui.dialogs.driver
;
import
org.eclipse.core.runtime.IProgressMonitor
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.jface.dialogs.ErrorDialog
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.jface.operation.IRunnableWithProgress
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.widgets.*
;
...
...
@@ -28,7 +30,6 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableContext
;
import
org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress
;
import
org.jkiss.dbeaver.registry.driver.DriverDescriptor
;
import
org.jkiss.dbeaver.registry.driver.DriverLibraryAbstract
;
import
org.jkiss.dbeaver.runtime.RunnableContextDelegate
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIUtils
;
...
...
@@ -36,6 +37,7 @@ import org.jkiss.dbeaver.utils.GeneralUtils;
import
java.io.IOException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Collection
;
import
java.util.List
;
class
DriverDownloadAutoPage
extends
DriverDownloadPage
{
...
...
@@ -90,6 +92,37 @@ class DriverDownloadAutoPage extends DriverDownloadPage {
setControl
(
composite
);
}
@Override
void
resolveLibraries
()
{
try
{
new
RunnableContextDelegate
(
getContainer
()).
run
(
true
,
true
,
new
DBRRunnableWithProgress
()
{
@Override
public
void
run
(
DBRProgressMonitor
monitor
)
throws
InvocationTargetException
,
InterruptedException
{
try
{
for
(
DBPDriverLibrary
library
:
getWizard
().
getFiles
())
{
resolveDependencies
(
monitor
,
library
);
}
}
catch
(
IOException
e
)
{
throw
new
InvocationTargetException
(
e
);
}
}
});
}
catch
(
InterruptedException
e
)
{
// User just canceled download
}
catch
(
InvocationTargetException
e
)
{
UIUtils
.
showErrorDialog
(
null
,
"Resolve libraries"
,
"Error resolving driver libraries"
,
e
.
getTargetException
());
}
}
private
void
resolveDependencies
(
DBRProgressMonitor
monitor
,
DBPDriverLibrary
library
)
throws
IOException
{
Collection
<
DBPDriverLibrary
>
dependencies
=
library
.
getDependencies
(
monitor
);
if
(
dependencies
!=
null
&&
!
dependencies
.
isEmpty
())
{
for
(
DBPDriverLibrary
dep
:
dependencies
)
{
resolveDependencies
(
monitor
,
dep
);
}
}
}
@Override
void
performFinish
()
{
downloadLibraryFiles
(
new
RunnableContextDelegate
(
getContainer
()),
getWizard
().
getFiles
());
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadDialog.java
浏览文件 @
5822bd95
...
...
@@ -18,6 +18,8 @@
package
org.jkiss.dbeaver.ui.dialogs.driver
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.jface.dialogs.IPageChangedListener
;
import
org.eclipse.jface.dialogs.PageChangedEvent
;
import
org.eclipse.jface.wizard.WizardDialog
;
import
org.eclipse.swt.widgets.Button
;
import
org.eclipse.swt.widgets.Composite
;
...
...
@@ -45,6 +47,12 @@ public class DriverDownloadDialog extends WizardDialog
{
super
(
shell
,
new
DriverDownloadWizard
(
driver
,
files
,
updateVersion
,
forceDownload
));
getWizard
().
init
(
DBeaverUI
.
getActiveWorkbenchWindow
().
getWorkbench
(),
null
);
addPageChangedListener
(
new
IPageChangedListener
()
{
@Override
public
void
pageChanged
(
PageChangedEvent
event
)
{
getWizard
().
pageActivated
(
event
.
getSelectedPage
());
}
});
}
DriverDescriptor
getDriver
()
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadManualPage.java
浏览文件 @
5822bd95
...
...
@@ -102,6 +102,11 @@ class DriverDownloadManualPage extends DriverDownloadPage {
return
fileSource
!=
null
;
}
@Override
void
resolveLibraries
()
{
// do nothing
}
@Override
void
performFinish
()
{
UIUtils
.
runInDetachedUI
(
getShell
(),
new
Runnable
()
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadPage.java
浏览文件 @
5822bd95
...
...
@@ -40,6 +40,8 @@ abstract class DriverDownloadPage extends WizardPage {
return
(
DriverDownloadWizard
)
super
.
getWizard
();
}
abstract
void
resolveLibraries
();
abstract
void
performFinish
();
protected
void
createLinksPanel
(
Composite
composite
)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/driver/DriverDownloadWizard.java
浏览文件 @
5822bd95
...
...
@@ -83,6 +83,10 @@ public class DriverDownloadWizard extends Wizard implements IExportWizard {
addPage
(
downloadPage
);
}
void
pageActivated
(
Object
selectedPage
)
{
downloadPage
.
resolveLibraries
();
}
@Override
public
void
init
(
IWorkbench
workbench
,
IStructuredSelection
currentSelection
)
{
setWindowTitle
(
"Driver settings"
);
...
...
plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/DBPDriverLibrary.java
浏览文件 @
5822bd95
...
...
@@ -80,8 +80,8 @@ public interface DBPDriverLibrary
boolean
matchesCurrentPlatform
();
@Nullable
Collection
<
DBPDriverLibrary
>
getDependencies
(
)
;
Collection
<
DBPDriverLibrary
>
getDependencies
(
DBRProgressMonitor
monitor
)
throws
IOException
;
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
updateVersion
)
void
downloadLibraryFile
(
DBRProgressMonitor
monitor
,
boolean
forceUpdate
)
throws
IOException
,
InterruptedException
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录