Compare commits

...

36 Commits

Author SHA1 Message Date
vdrokov
82bf612299 APPINT-32905: Issue with Rest service flow 2021-04-30 18:17:02 +03:00
kjwang
0c25678af9 Revert the commit of TUP-31096 to test tuj (#4255)
Co-authored-by: kjwang <kjwang@LT-B1Z2R73.talend.com>
2021-04-30 10:21:37 +08:00
jiezhang-tlnd
52339da247 fix(TUP-29866)CVE on maven-shared-utils-3.2.1.jar (#4230)
* fix(TUP-29866)CVE on maven-shared-utils-3.2.1.jar

* remove maven-shared-utils:jar:3.0.0

* exclude maven-shared-utils 3.2.1

* fix run job

* update m2

* exclude maven-shared-utils:jar:3.1.0
2021-04-29 14:27:50 +08:00
Jane Ding
d25966f7ca fix(TUP-31234):Build job fail with option "Execute tests" if any test (#4244) (#4251)
case fail
https://jira.talendforge.org/browse/TUP-31234
2021-04-28 18:04:59 +08:00
kjwang
3268b36046 Fix TUP-31096 Could not find or load main class error on the jobs (#4245) (#4250)
Fix TUP-31096 Could not find or load main class error on the jobs created on the Feature Branch which has #
https://jira.talendforge.org/browse/TUP-31096
2021-04-28 16:32:52 +08:00
hzhao-talendbj
f11cc1d442 fix(TUP-30524): Commandline login svn project tag fail (#4228) (#4249) 2021-04-28 12:10:19 +08:00
hzhao-talendbj
1352dd1657 chore(TUP-31155): change the way to check if it's CI mode (#4240) 2021-04-28 11:55:46 +08:00
jiezhang-tlnd
bf8573f1ff fix(TUP-30945)CVE: xstream-1.4.15.jar (#4243) 2021-04-25 14:13:26 +08:00
sbliu
491f07624b feat(TUP-30846) Unify studio version information & patch info in studio logs. 2021-04-25 10:57:11 +08:00
Xilai Dai
4666d74567 chore(APPINT-32624) upgrade xstream in maven-bundle-plugin-5-1-1 (#4236) 2021-04-23 14:49:27 +08:00
ypiel
13193d142c chore: bump to tck:1.32.0 2021-04-22 12:13:43 +02:00
bhe-talendbj
3fbfd1c490 Revert "chore(TUP-30992): revert unncessary changes (#4224)" (#4235)
This reverts commit 6ebf18bb43.
2021-04-22 11:07:20 +08:00
Jane Ding
c9a27e2f06 feat(TUP-30730):Remove SAS from metadata wizard. (#4229)
https://jira.talendforge.org/browse/TUP-30730
2021-04-21 19:39:16 +08:00
bhe-talendbj
6ebf18bb43 chore(TUP-30992): revert unncessary changes (#4224) 2021-04-20 16:27:12 +08:00
bhe-talendbj
1f8e1d768b chore(TUP-30992): remove junit-4.12 (#4218)
* chore(TUP-30992): remove junit-4.12

* chore(TUP-30992): fix junit
2021-04-19 14:18:04 +08:00
Zhiwei Xue
d3b47d3db1 fix(TUP-30187):rename maven property (#4217) 2021-04-16 15:36:38 +08:00
jiezhang-tlnd
cef1fdd721 fix(TUP-30992)force to use the 4.13.2 (#4195) 2021-04-15 16:14:50 +08:00
hzhao-talendbj
222764d85c fix(TUP-30921):Job fails with "Could not find the context Default" after (#4209)
migration 7.2.1 to 7.3.1 R2021-01
2021-04-15 15:13:36 +08:00
bhe-talendbj
fb257c0e5a bugfix(TUP-30203): Performance issue when logon project / switch branch (#4205)
* fix(TUP-30360): add an option to disable sharing libraries (#4089)

* bugfix(TUP-26346) backport (#3515)

* fix(TUP-24953): Kjwang/fix tup 24953 nexus 3 gets populated by crypto utils.jar (#2883) (#2908)

* Fix TUP-24953 Nexus 3 gets populated by crypto-utils.jar
https://jira.talendforge.org/browse/TUP-24953

* TUP-24953 Nexus 3 gets populated by crypto-utils.jar
https://jira.talendforge.org/browse/TUP-24953

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/Nexus3RepositoryHandler.java

Conflicts:
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/ILibraryManagerService.java
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/routines/RoutineLibraryMananger.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/maven/ShareLibrareisHelper.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/ArtifacoryRepositoryHandler.java

* fix(TUP-25929):Studio re synchronizing jars with artifact repository
every time when logged into studio

* fix(TUP-23519): spark job can't run success when I select EMR58 as (#2534)

distribution
https://jira.talendforge.org/browse/TUP-23519

Conflicts:
	main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/utils/PomUtil.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* fix(TUP-26346): Files from custom component folders are uploaded to nexus (#3145)

multiple times (#3125)

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* fix(TUP-26346): Add debug logs

* fix(TUP-26687): backport

* fix(TUP-26346): Add log message

* fix(TUP-26346): remove unused log message

* fix(TUP-26110):Jar missing when install user component. (#3073)

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* Fix TUP-26346 Files from custom component folders are uploaded to nexus (#3145)

multiple times (#3125)

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

* Fix TUP-26346 Files from custom component folders are uploaded to
nexus
multiple times
https://jira.talendforge.org/browse/TUP-26346

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* fix(TUP-26810)if one jar used by two different components, it will (#… (#3465)

* fix(TUP-26810)if one jar used by two different components, it will (#3228)

fix(TUP-26810)if one jar used by two different components, it will upload to nexus with two versions

* TPS-4193  modify code mistake

* test github not pushed

* tps-4193

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/maven/ShareLibrareisHelper.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* TUP-26308 Nexus 2 gets populated by different crypto-utils jar versions (#3122)

(#3116)

https://jira.talendforge.org/browse/TUP-26308

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/Nexus2RepositoryHandler.java

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/maven/ShareLibrareisHelper.java

* fix(/TUP-26346): revert TUP-23519

* fix(TUP-26346): Fix switch nexus search hanlder

* fix(TUP-26346): deploy lib as release

* fix(TUP-26346): set release version for user cmodule

* fix(TUP-26346): set release version for module

Co-authored-by: kjwang <kjwang@talend.com>
Co-authored-by: Zhiwei Xue <zwxue@talend.com>
Co-authored-by: Chao MENG <cmeng@talend.com>
Co-authored-by: wchen-talend <wchen@talend.com>
Co-authored-by: hzhao-talendbj <49395568+hzhao-talendbj@users.noreply.github.com>

Conflicts:
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/ILibraryManagerService.java
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/general/ModuleNeeded.java
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/routines/RoutineLibraryMananger.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/maven/ShareLibrareisHelper.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/ArtifacoryRepositoryHandler.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/Nexus3RepositoryHandler.java

* fix(TUP-30360): add an option to disable sharing libraries (#4040) (#4058)

* fix(TUP-30360): add an option to disable sharing libraries (#4040)

* fix(TUP-30360): add an option to disable sharing libraries

* fix(TUP-30360): add new preference to disable sharing libs at startup

* fix(TUP-30360): update log message

* fix(TUP-30360): install libfile

Conflicts:
	main/plugins/org.talend.commons.runtime/src/org/talend/commons/utils/network/NetworkUtil.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* fix(TUP-30360): fix sharing user components

* fix(TUP-30360): fix sharing jars

* fix(TUP-30360): fix sharing components

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

Conflicts:
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/routines/RoutineLibraryMananger.java
	main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/ui/startup/ShareLibsSynchronizer.java
	main/plugins/org.talend.librariesmanager.ui/src/main/java/org/talend/librariesmanager/ui/startup/ShareMavenArtifactsOnStartup.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/maven/ShareLibrareisHelper.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/ArtifacoryRepositoryHandler.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/Nexus3RepositoryHandler.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/nexus/utils/ShareLibrariesUtil.java
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/prefs/LibrariesManagerUtils.java

* bugfix(TUP-30203): Search required groups only (#4174)

* fix(TUP-30203): only search required library groups

* fix(TUP-30203): only search required library groups, refactor

* fix(TUP-30203): only search required library groups, refactor

* fix(TUP-30203): exclude class file

* fix(TUP-30203): exclude class file

* fix(TUP-30203): share libs in background

* fix(TUP-30203): add i18n

Conflicts:
	main/plugins/org.talend.librariesmanager/src/main/java/org/talend/librariesmanager/model/service/LocalLibraryManager.java

* fix(TUP-30203): remove unncessary changes
2021-04-15 14:51:51 +08:00
hcyi
1d54b23c20 feat(TUP-30291):Add Suggestable support for Table options (List<Row> (#4199) 2021-04-15 12:04:45 +08:00
Zhiwei Xue
70df8da35f fix(TUP-30586):Routine/Bean custom jars dependency management issues left todo (#4206)
* fix(TUP-30782):Fail to run job if use a custom routine jar without inner
jar.

* fix(TUP-30791): fix test case run failure
2021-04-14 16:54:15 +08:00
hcyi
e60f193fe3 fix(TUP-27518):The download modules dialog take long time to list all jars avialable (#3780)
* fix(TUP-27518):The download modules dialog take long time to list all
jars avialable

* fix(TUP-27518):The download modules dialog take long time to list all
jars avialable
2021-04-14 11:12:37 +08:00
hzhao-talendbj
839e2f935c fix(TUP-30429): the job export from v6.5.1 can't be imported to v7.3.1 (#4180) (#4200) 2021-04-14 10:59:14 +08:00
mbasiuk-talend
930d119a0e chore(TDI-45894): prepare the next connectors iteration (#4191) 2021-04-13 13:33:52 +03:00
Jane Ding
c4a36bd77d Jding/tup 30849 improve build job performance (#4197) (#4198)
* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849



* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849
Signed-off-by: jding-tlnd <jding@talend.com>

* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849

Signed-off-by: jding-tlnd <jding@talend.com>

* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849

Signed-off-by: jding-tlnd <jding@talend.com>

* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849

Signed-off-by: jding-tlnd <jding@talend.com>

* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849

Signed-off-by: jding-tlnd <jding@talend.com>

* fix(TUP-30849):Improve build Job performance
https://jira.talendforge.org/browse/TUP-30849

Signed-off-by: jding-tlnd <jding@talend.com>

Conflicts:
	main/plugins/org.talend.core/src/main/java/org/talend/designer/runprocess/ProcessorUtilities.java
	test/plugins/org.talend.core.test/src/org/talend/designer/runprocess/ProcessorUtilitiesTest.java
2021-04-13 18:00:57 +08:00
jiezhang-tlnd
fd44bfb0ee feat(TUP-30381)Support greenplum driver for Greenplum Database in studio (#4196)
(#4138)

* feat(TUP-30381)Support greenplum driver for Greenplum Database in
studio
metadata
https://jira.talendforge.org/browse/TUP-30381

* add dbversion for greeenplu

* add dbversion

* update mapping_greenplum file

* update greenplum_mapping

* update greenplum mapping

Conflicts:
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/database/EDatabase4DriverClassName.java
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/database/conn/template/EDatabaseConnTemplate.java
	main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/database/conn/version/EDatabaseVersion4Drivers.java
2021-04-13 16:46:07 +08:00
hzhao-talendbj
065b59df2c chore(TUP-30942): upgrade to httpclient-4.5.13.jar (#4192) 2021-04-13 11:30:40 +08:00
sbliu
c938a2edea feat(TUP-30953) record install additional packages. 2021-04-13 11:09:22 +08:00
Zhiwei Xue
04be4c0113 fix(TUP-30786):Avoid to click finish button more than once when do (#4185)
create custom routine jar/bean jar.
2021-04-08 18:43:32 +08:00
sbliu
cfd6efdb67 fix(TUP-30768): Can't reset performance_record if first patch use manual installation then the second use Software update 2021-04-08 17:28:01 +08:00
Xilai Dai
31e3ed4a36 chore(APPINT-32718) override httpclient in karaf-maven-plugin (#4183) 2021-04-08 16:24:55 +08:00
hzhao-talendbj
d58f6c2c6c chore(TUP-30942): upgrade httpclient to 4.5.13 (#4187) 2021-04-08 15:56:01 +08:00
pyzhou
4f81538e7b fix(TDI-45881):Update jackson mapper (#4186) 2021-04-08 15:27:07 +08:00
nrousseau
7a770d7cbf feat(TUP-30475): Test of lite studio (#4064)
* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

* Revert "feat(TUP-30475): Test of lite studio"

This reverts commit 5cd76c561e.

* Revert "feat(TUP-30475): Test of lite studio"

This reverts commit 90c877dd9d.

* Revert "feat(TUP-30475): Test of lite studio"

This reverts commit 883ad0cf5d.

* feat(TUP-30475): Test of lite studio

* feat(TUP-30475): Test of lite studio

Co-authored-by: Chao MENG <cmeng@talend.com>
2021-04-08 14:25:09 +08:00
hzhao-talendbj
2b84fe712c feat(TUP-30347): Remove the usage of ATL / EMF migration system (#4125)
* feat(TUP-30347) remove alt

* tup-30347 remove from pom

* TUP-30347 remove from feature

* TUP-30347 remove from feature

* TUP-30347
remove migration task

* feat(TUP-30347): remove atl from feature
2021-04-08 11:58:24 +08:00
bhe-talendbj
737a8d3a16 feat(TUP-30047): port TUP-30047 (#4169) 2021-04-07 16:45:22 +08:00
190 changed files with 1429 additions and 281285 deletions

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="class"/>
</classpath>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.talend.model.migration.nl</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -1,6 +0,0 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Nl
Bundle-SymbolicName: org.talend.model.migration.nl
Bundle-Version: 7.4.1.qualifier
Fragment-Host: org.talend.model.migration

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,13 +0,0 @@
source.. = src/
output.. = class/
bin.includes = META-INF/,\
.\
,plugin_ru.properties\
,plugin_en.properties\
,plugin_hr.properties\
,plugin_fr.properties\
,plugin_el.properties\
,plugin_ja.properties\
,plugin_it.properties\
,plugin_de.properties\
,plugin_swtbot.properties

View File

@@ -1 +0,0 @@
providerName=www.beispiel.de

View File

@@ -1,2 +0,0 @@
pluginName=Migration Model
providerName=www.example.org

View File

@@ -1,2 +0,0 @@
pluginName=Mod\u00E8le de migration
providerName=www.example.org

View File

@@ -1 +0,0 @@
providerName=www.example.org

View File

@@ -1,2 +0,0 @@
pluginName=\u79FB\u884C\u30E2\u30C7\u30EB
providerName=www.example.org

View File

@@ -1 +0,0 @@
providerName=www.example.org

View File

@@ -1,2 +0,0 @@
pluginName = Migration Model
providerName = www.example.org

View File

@@ -1,2 +0,0 @@
pluginName=\u8FC1\u79FB\u6A21\u578B
providerName=www.example.org

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.talend.studio</groupId>
<artifactId>tcommon-studio-se</artifactId>
<version>7.4.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>org.talend.model.migration.nl</artifactId>
<packaging>eclipse-plugin</packaging>
</project>

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=error while loading the Transformation file : {0}
TosMetadataMigrationFrom400to410_tos_error_log=error while loading the Transformation file : {0}

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=error mientras se cargaba el fichero de Transformaci\u00F3n: {0}
TosMetadataMigrationFrom400to410_tos_error_log=error mientras se cargaba el fichero de Transformaci\u00F3n: {0}

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=erreur lors du chargement du fichier de transformation : {0}
TosMetadataMigrationFrom400to410_tos_error_log=Erreur lors du chargement du fichier de transformation : {0}

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=\u5909\u63DB\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\uFF1A{0}
TosMetadataMigrationFrom400to410_tos_error_log=\u5909\u63DB\u30D5\u30A1\u30A4\u30EB\u30ED\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\uFF1A{0}

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=error while loading the Transformation file : {0}
TosMetadataMigrationFrom400to410_tos_error_log=error while loading the Transformation file : {0}

View File

@@ -1,2 +0,0 @@
TopMetadataMigrationFrom400to410usingGenericVM_top_error_log=\u52A0\u8F7D\u8F6C\u6362\u6587\u4EF6\u65F6\u51FA\u9519\uFF1A{0}
TosMetadataMigrationFrom400to410_tos_error_log=\u52A0\u8F7D\u8F6C\u6362\u6587\u4EF6\u65F6\u51FA\u9519\uFF1A{0}

View File

@@ -8,7 +8,6 @@
<discovery label="Talend web site" url="http://www.talend.com"/>
</url>
<requires>
<import feature="org.talend.model.migration.feature" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.bouncycastle.bcprov" version="0.0.0" match="greaterOrEqual"/>
<import plugin="com.fasterxml.jackson.core.jackson-databind" version="2.9.8" match="greaterOrEqual"/>
<import plugin="jackson-core-asl" version="0.0.0" match="greaterOrEqual"/>

View File

@@ -38,7 +38,6 @@
<import plugin="org.apache.httpcomponents.httpcore" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.compare" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.compare.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.m2m.atl.emftvm.trace" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.ops4j.pax.url.mvn" version="0.0.0" match="greaterOrEqual"/>
</requires>
<plugin id="org.talend.core" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
@@ -66,8 +65,6 @@
<plugin id="org.talend.model" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.talend.model.edit" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.talend.model.edit.nl" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<plugin id="org.talend.model.migration" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.talend.model.migration.nl" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<plugin id="org.talend.model.nl" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
<plugin id="org.talend.osgi.lib.loader" download-size="0" install-size="0" version="0.0.0" unpack="false" fragment="true"/>
<plugin id="org.talend.resources" download-size="0" install-size="0" version="0.0.0"/>

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.talend.model.migration.feature</name>
<name>org.talend.help.di.feature</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.pde.FeatureBuilder</name>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.FeatureNature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>

View File

@@ -1,36 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.talend.jdt.feature"
label="Feature"
version="7.4.1.qualifier">
<description url="http://www.example.com/description">
[Enter Feature Description here.]
</description>
<copyright url="http://www.example.com/copyright">
[Enter Copyright Description here.]
</copyright>
<license url="http://www.example.com/license">
[Enter License Description here.]
</license>
<requires>
<import plugin="org.eclipse.jdt" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.annotation" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.pluggable.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.compiler.apt" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.compiler.tool" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core" version="3.16.0.xx-201903290056-e1812-RELEASE" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core.manipulation" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.debug" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.debug.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.launching" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.hamcrest.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="4.13.2" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.groovy.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.codehaus.groovy" version="2.4.16" match="equivalent"/>
</requires>
<plugin
id="org.eclipse.jdt.launching.macosx"
os="macosx"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.jdt.launching.ui.macosx"
os="macosx"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<feature id="org.talend.jdt.feature" label="Feature" version="7.4.1.qualifier">
<description url="http://www.example.com/description">[Enter Feature Description here.]</description>
<copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
<license url="http://www.example.com/license">[Enter License Description here.]</license>
<requires>
<!-- bonita requires org.codehaus.groovy version 2.4.16.xx-201903290056-e1812-RELEASE -->
<import plugin="org.codehaus.groovy" version="2.4.16.xx-201903290056-e1812-RELEASE" match="perfect"/>
<import plugin="org.eclipse.ant.launching" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.ant.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.annotation" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.pluggable.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.apt.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.compiler.apt" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.compiler.tool" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core" version="3.16.0.xx-201903290056-e1812-RELEASE" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.core.manipulation" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.debug" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.debug.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.doc.user" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.groovy.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.junit" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.junit.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.junit.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.junit4.runtime" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.launching" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.hamcrest.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="0.0.0" match="greaterOrEqual"/>
</requires>
<plugin id="org.eclipse.jdt.launching.macosx" os="macosx" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.eclipse.jdt.launching.ui.macosx" os="macosx" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
</feature>

View File

@@ -1 +0,0 @@
bin.includes = feature.xml

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.talend.model.migration.feature"
label="model Migration feature"
version="7.4.1.qualifier">
<description url="http://www.example.com/description">
[Enter Feature Description here.]
</description>
<copyright url="http://www.example.com/copyright">
[Enter Copyright Description here.]
</copyright>
<license url="http://www.example.com/license">
[Enter License Description here.]
</license>
<requires>
<import feature="org.eclipse.m2m.atl" version="0.0.0" match="greaterOrEqual"/>
<import feature="org.talend.utils.feature" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.bouncycastle.bcprov" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.objectweb.asm" version="0.0.0" match="greaterOrEqual"/>
</requires>
</feature>

View File

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.talend.studio</groupId>
<artifactId>tcommon-studio-se</artifactId>
<version>7.4.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>org.talend.model.migration.feature</artifactId>
<packaging>eclipse-feature</packaging>
</project>

View File

@@ -18,7 +18,7 @@
<import plugin="org.apache.commons.lang3" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.log4j" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.servicemix.bundles.avro" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="4.13.2" match="greaterOrEqual"/>
<import plugin="org.slf4j.api" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.configuration" version="2.0.0" match="greaterOrEqual"/>
</requires>

View File

@@ -15,6 +15,7 @@ package org.talend.commons.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Optional;
@@ -352,6 +353,12 @@ public class VersionUtils {
}
}
public static File getStudioConfigFile() throws Exception {
URL configLocation = new URL("platform:/config/config.ini"); //$NON-NLS-1$
URL fileUrl = FileLocator.toFileURL(configLocation);
return URIUtil.toFile(new URI(fileUrl.getProtocol(), fileUrl.getPath(), fileUrl.getQuery()));
}
public static String getSimplifiedPatchName(String projectPatchName) {
if (projectPatchName != null) {

View File

@@ -0,0 +1,55 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.commons.utils.time;
import java.io.File;
import java.util.Properties;
import org.eclipse.core.runtime.Platform;
public class PropertiesCollectorUtil {
private static final String ROOT_NODE = "additional_packages_records"; // additional packages
private static final String PREF_ADDITIONAL_PACKAGES = "AdditionalPackages"; // preference node
private static final String ADDITONAL_PACKAGE_FILE = "additionalPackages";
public static String getAdditionalPackageRecording() {
File file = getRecordFile(ADDITONAL_PACKAGE_FILE);
Properties props = PropertiesFileUtil.read(file, true);
String records = props.getProperty(ROOT_NODE, "");
return records;
}
public static void storeAdditionalPackageRecording(String records) {
File file = getRecordFile(ADDITONAL_PACKAGE_FILE);
Properties props = PropertiesFileUtil.read(file, false);
props.setProperty(ROOT_NODE, records);
PropertiesFileUtil.store(file, props);
}
private static File getRecordFile(String fileName) {
String configurationLocation = Platform.getConfigurationLocation().getURL().getPath();
File file = new File(configurationLocation + "/data_collector/" + fileName);
return file;
}
public static String getAdditionalPackagePreferenceNode() {
return PREF_ADDITIONAL_PACKAGES;
}
}

View File

@@ -12,17 +12,26 @@
<dbType type="BPCHAR" ignoreLen="true" ignorePre="true" />
<dbType type="BYTEA" ignoreLen="true" ignorePre="true" />
<dbType type="CHAR" defaultLength="50" ignorePre="true"/>
<dbType type="CHARACTER" defaultLength="50" ignorePre="true"/>
<dbType type="CID" ignoreLen="true" ignorePre="true" />
<dbType type="CIDR" ignoreLen="true" ignorePre="true" />
<dbType type="CIRCLE" ignoreLen="true" ignorePre="true" />
<dbType type="DATE" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT4" ignoreLen="true" ignorePre="true" />
<dbType type="REAL" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT8" ignoreLen="true" ignorePre="true" />
<dbType type="DOUBLE PRECISION" ignoreLen="true" ignorePre="true" />
<dbType type="INET" ignoreLen="true" ignorePre="true" />
<dbType type="INT2" ignoreLen="true" ignorePre="true" />
<dbType type="SMALLINT" ignoreLen="true" ignorePre="true" />
<dbType type="INT2VECTOR" ignoreLen="true" ignorePre="true" />
<dbType type="INT4" ignoreLen="true" ignorePre="true" />
<dbType type="INT8" ignoreLen="true" ignorePre="true" />
<dbType type="INTEGER" ignoreLen="true" ignorePre="true" />
<dbType type="CHARACTER VARYING" ignoreLen="true" ignorePre="true" />
<dbType type="BOOLEAN" ignoreLen="true" ignorePre="true" />
<dbType type="BIGINT" ignoreLen="true" ignorePre="true" />
<dbType type="BIT VARYING" ignoreLen="true" ignorePre="true" />
<dbType type="INTERVAL" ignorePre="true" />
<dbType type="LINE" ignoreLen="true" ignorePre="true" />
<dbType type="LSEG" ignoreLen="true" ignorePre="true" />
@@ -30,6 +39,7 @@
<dbType type="MONEY" ignoreLen="true" ignorePre="true" />
<dbType type="NAME" ignoreLen="true" ignorePre="true" />
<dbType type="NUMERIC" defaultLength="20" defaultPrecision="10"/>
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10"/>
<dbType type="OID" ignoreLen="true" ignorePre="true" />
<dbType type="OIDVECTOR" ignoreLen="true" ignorePre="true" />
<dbType type="PATH" ignoreLen="true" ignorePre="true" />
@@ -110,16 +120,19 @@
<talendToDbTypes><!-- Adviced mappings -->
<talendType type="id_List"/>
<talendType type="id_Boolean">
<dbType type="BOOL" default="true" />
<dbType type="BOOL" default="true" />
<dbType type="BOOLEAN" />
</talendType>
<talendType type="id_Byte">
</talendType>
<talendType type="id_byte[]">
<dbType type="BIT" default="true" />
<dbType type="VARBIT" />
<dbType type="VARBIT" />
<dbType type="BIT VARYING" />
</talendType>
<talendType type="id_Character">
<dbType type="CHAR" default="true" />
<dbType type="CHARACTER" />
<dbType type="BPCHAR" />
<dbType type="VARCHAR" />
<dbType type="TEXT" />
@@ -136,33 +149,47 @@
<dbType type="RELTIME" />
</talendType>
<talendType type="id_BigDecimal">
<dbType type="NUMERIC" default="true" />
<dbType type="NUMERIC" default="true" />
<dbType type="DECIMAL" />
<dbType type="FLOAT4" />
<dbType type="REAL" />
<dbType type="FLOAT8"/>
<dbType type="DOUBLE PRECISION"/>
</talendType>
<talendType type="id_Double">
<dbType type="FLOAT4" />
<dbType type="REAL" />
<dbType type="FLOAT8" default="true" />
<dbType type="NUMERIC" />
<dbType type="NUMERIC" />
<dbType type="DECIMAL" />
<dbType type="DOUBLE PRECISION"/>
</talendType>
<talendType type="id_Float">
<dbType type="FLOAT4" default="true" />
<dbType type="FLOAT8" />
<dbType type="NUMERIC" />
<dbType type="REAL" />
<dbType type="NUMERIC" />
<dbType type="DECIMAL" />
<dbType type="DOUBLE PRECISION"/>
</talendType>
<talendType type="id_Integer">
<dbType type="INT2" />
<dbType type="SMALLINT" />
<dbType type="INT4" default="true" />
<dbType type="SERIAL" />
<dbType type="INT8" />
<dbType type="BIGSERIAL" />
<dbType type="BIGINT" />
<dbType type="BIGSERIAL" />
<dbType type="INTEGER" />
</talendType>
<talendType type="id_Long">
<dbType type="INT2" />
<dbType type="INT4" />
<dbType type="SERIAL" />
<dbType type="INT8" default="true" />
<dbType type="BIGSERIAL" />
<dbType type="BIGINT" />
<dbType type="BIGSERIAL" />
<dbType type="SMALLINT" />
</talendType>
<talendType type="id_Object">
<dbType type="_POINT" />
@@ -209,18 +236,26 @@
<dbType type="_ABSTIME" />
<dbType type="_ACLITEM" />
<dbType type="_INT8" />
<dbType type="BIGINT" />
<dbType type="BIT VARYING" />
<dbType type="_VARBIT" />
<dbType type="_BIT" />
<dbType type="_BOOL" />
<dbType type="BOOLEAN" />
<dbType type="BOX" />
<dbType type="_BOX" />
<dbType type="_BYTEA" />
<dbType type="_VARCHAR" />
<dbType type="CHARACTER VARYING" />
<dbType type="CHARACTER" />
<dbType type="INTEGER" />
<dbType type="REAL" />
<dbType type="_BPCHAR" />
<dbType type="_CID" />
<dbType type="_CIDR" />
<dbType type="_CIRCLE" />
<dbType type="_DATE" />
<dbType type="DOUBLE PRECISION"/>
<dbType type="_FLOAT8" />
<dbType type="_INET" />
<dbType type="INT2VECTOR" />
@@ -236,6 +271,7 @@
<dbType type="NAME" />
<dbType type="_NAME" />
<dbType type="_NUMERIC" />
<dbType type="DECIMAL" />
<dbType type="_OID" />
<dbType type="OIDVECTOR" />
<dbType type="_OIDVECTOR" />
@@ -247,26 +283,44 @@
<dbType type="INT4" />
<dbType type="SERIAL" />
<dbType type="INT8" />
<dbType type="BIGSERIAL" />
<dbType type="BIGINT" />
<dbType type="BIGSERIAL" />
<dbType type="SMALLINT" />
</talendType>
<talendType type="id_String">
<dbType type="BPCHAR" />
<dbType type="VARCHAR" default="true" />
<dbType type="CHARACTER VARYING" />
<dbType type="TEXT" />
</talendType>
</talendToDbTypes>
<dbToTalendTypes>
<dbType type="INT2" >
<talendType type="id_Short" default="true" />
</dbType>
<dbType type="SMALLINT" >
<talendType type="id_Short" default="true" />
</dbType>
<dbType type="INT4" >
<talendType type="id_Integer" default="true" />
</dbType>
</dbType>
<dbType type="INTEGER" >
<talendType type="id_Integer" default="true" />
</dbType>
<dbType type="CHARACTER VARYING" >
<talendType type="id_String" default="true" />
</dbType>
<dbType type="BOOLEAN" >
<talendType type="id_Boolean" default="true" />
</dbType>
<dbType type="SERIAL" >
<talendType type="id_Integer" default="true" />
</dbType>
<dbType type="INT8" >
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="BIGINT" >
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="BIGSERIAL" >
<talendType type="id_Long" default="true" />
@@ -274,14 +328,26 @@
<dbType type="FLOAT4" >
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
</dbType>
<dbType type="REAL" >
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="FLOAT8" >
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="DOUBLE PRECISION" >
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="NUMERIC">
<talendType type="id_Double"/>
<talendType type="id_BigDecimal" default="true" />
</dbType>
<dbType type="DECIMAL">
<talendType type="id_Double"/>
<talendType type="id_BigDecimal" default="true" />
</dbType>
<dbType type="BOOL" >
<talendType type="id_Boolean" default="true" />
@@ -291,9 +357,15 @@
</dbType>
<dbType type="VARBIT" >
<talendType type="id_byte[]" default="true" />
</dbType>
</dbType>
<dbType type="BIT VARYING" >
<talendType type="id_byte[]" default="true" />
</dbType>
<dbType type="CHAR" >
<talendType type="id_String" default="true" />
</dbType>
<dbType type="CHARACTER" >
<talendType type="id_String" default="true" />
</dbType>
<dbType type="BPCHAR" >
<talendType type="id_String" default="true" />

View File

@@ -1,34 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core;
import org.talend.core.model.properties.Item;
import org.talend.migration.IMigrationTask.ExecutionResult;
/**
* DOC bZhou class global comment. Detailled comment
*/
public interface IMigrateDIMetadataItemService extends IService {
/**
* DOC bZhou Comment method "migrateDIItems".
*
* This method to invode the migration task in DI to do migration when import items from DQ perspective.
*
* It should be removed after merge the migrate mechanism.
*
* @param item
* @return
*/
ExecutionResult migrateDIItems(Item item);
}

View File

@@ -12,13 +12,19 @@
// ============================================================================
package org.talend.core;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Platform;
import org.osgi.framework.Bundle;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.VersionUtils;
/**
* This class can check whether some specific plugins are loaded or not. <br/>
@@ -62,6 +68,8 @@ public class PluginChecker {
private static final String PREVIEW_PLUGIN_ID = "org.talend.designer.component.preview"; //$NON-NLS-1$
private static final String REMOTE_PROVIDER_PLUGIN_ID = "org.talend.repository.remoteprovider"; //$NON-NLS-1$
private static final String SVN_PROVIDER_PLUGIN_ID = "org.talend.repository.svnprovider"; //$NON-NLS-1$
private static final String GIT_PROVIDER_PLUGIN_ID = "org.talend.repository.gitprovider"; //$NON-NLS-1$
@@ -140,6 +148,10 @@ public class PluginChecker {
public static final String APACHE_CXF_PLUGIN_ID = "org.talend.libraries.apache.cxf"; //$NON-NLS-1$
public static final String SWTBOT_PLUGIN_ID = "org.eclipse.swtbot.eclipse.core"; //$NON-NLS-1$
private static Boolean isStudioLite;
/**
* Check if specific plug-in is loaded.
*
@@ -158,6 +170,23 @@ public class PluginChecker {
return isJobLetPluginLoaded();
}
public static boolean isStudioLite() {
if (isStudioLite == null) {
try {
File studioConfigFile = VersionUtils.getStudioConfigFile();
Properties props = new Properties();
try (BufferedReader reader = Files.newBufferedReader(studioConfigFile.toPath())) {
props.load(reader);
}
isStudioLite = Boolean.valueOf(props.getProperty("talend.studio.lite"));
} catch (Exception e) {
isStudioLite = false;
ExceptionHandler.process(e);
}
}
return isStudioLite;
}
public static boolean isRefProjectLoaded() {
return isPluginLoaded(REF_PROJECT_PLUGIN_ID);
}
@@ -259,6 +288,10 @@ public class PluginChecker {
return isPluginLoaded(PREVIEW_PLUGIN_ID);
}
public static boolean isRemoteProviderPluginLoaded() {
return isPluginLoaded(REMOTE_PROVIDER_PLUGIN_ID);
}
public static boolean isSVNProviderPluginLoaded() {
return isPluginLoaded(SVN_PROVIDER_PLUGIN_ID);
}
@@ -372,6 +405,10 @@ public class PluginChecker {
return isPluginLoaded(BD_ROUTINE_PLUGIN_ID);
}
public static boolean isSWTBotLoaded() {
return isPluginLoaded(SWTBOT_PLUGIN_ID);
}
public static String getBundlePath(String bundleName) {
String bundlePath = ""; //$NON-NLS-1$
Bundle refBundle = Platform.getBundle(bundleName);

View File

@@ -68,7 +68,7 @@ public enum EDatabase4DriverClassName {
PSQL(EDatabaseTypeName.PSQL, "org.postgresql.Driver"), //$NON-NLS-1$
PLUSPSQL(EDatabaseTypeName.PLUSPSQL, "org.postgresql.Driver"), //$NON-NLS-1$
GREENPLUM(EDatabaseTypeName.GREENPLUM, "com.pivotal.jdbc.GreenplumDriver"), //$NON-NLS-1$
GREENPLUM_PSQL(EDatabaseTypeName.GREENPLUM, "org.postgresql.Driver"), //$NON-NLS-1$
SAS(EDatabaseTypeName.SAS, "com.sas.rio.MVADriver"), //$NON-NLS-1$
SAPHana(EDatabaseTypeName.SAPHana, "com.sap.db.jdbc.Driver"), //$NON-NLS-1$
SQLITE(EDatabaseTypeName.SQLITE, "org.sqlite.JDBC"), //$NON-NLS-1$

View File

@@ -336,10 +336,19 @@ public enum EDatabaseTypeName {
.getProjectPreferenceManager()
.getBoolean(IProjectSettingPreferenceConstants.METADATA_DBCONNECTION_ODBC_ENABLE);
isSupport = isSupportODBC;
} else if (EDatabaseTypeName.SAS == this) {
isSupport = false;
}
return isSupport;
}
public static boolean isDeprecateDbType(String dbType) {
if (EDatabaseTypeName.SAS.getXmlName().equals(dbType)) {
return true;
}
return false;
}
/**
* Getter for dbType.

View File

@@ -114,6 +114,13 @@ public class DatabaseConnStrUtil {
&& EDatabaseVersion4Drivers.SYBASEIQ_16_SA.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.SYBASEASE_16_SA;
}
if (EDatabaseTypeName.GREENPLUM.getDisplayName().equals(dbType)) {
if (EDatabaseVersion4Drivers.GREENPLUM.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.GREENPLUM;
}else if(EDatabaseVersion4Drivers.GREENPLUM_PSQL.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.GREENPLUM_PSQL;
}
}
EDatabaseVersion4Drivers version = EDatabaseVersion4Drivers.indexOfByVersion(dbVersion);
if (connStr != null) {
String s = connStr.getUrlTemplate(version);

View File

@@ -56,6 +56,11 @@ public enum EDatabaseConnTemplate {
GREENPLUM(new DbConnStr(EDatabaseTypeName.GREENPLUM, //
"jdbc:pivotal:greenplum://<host>:<port>;;DatabaseName=<sid>;<property>", //$NON-NLS-1$
"5432")), //$NON-NLS-1$
GREENPLUM_PSQL(new DbConnStr(EDatabaseTypeName.GREENPLUM, //
"jdbc:postgresql://<host>:<port>/<sid>?<property>", //$NON-NLS-1$
"5432")), //$NON-NLS-1$
ORACLEFORSID(new DbConnStr(EDatabaseTypeName.ORACLEFORSID, //
"jdbc:oracle:thin:@<host>:<port>:<sid>", //$NON-NLS-1$

View File

@@ -99,8 +99,8 @@ public enum EDatabaseVersion4Drivers {
VERTICA_3(new DbVersion4Drivers(EDatabaseTypeName.VERTICA, "VERTICA 3 (Deprecated)", "VERTICA_3", "vertica_3.0_jdk_5.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// for bug 0017930
GREENPLUM(new DbVersion4Drivers(EDatabaseTypeName.GREENPLUM, "greenplum-5.1.4.000275.jar")), //$NON-NLS-1$
GREENPLUM_PSQL(new DbVersion4Drivers(EDatabaseTypeName.GREENPLUM,"PostgreSQL", "POSTGRESQL", "postgresql-8.4-703.jdbc4.jar")), //$NON-NLS-1$
GREENPLUM(new DbVersion4Drivers(EDatabaseTypeName.GREENPLUM,"Greenplum", "GREENPLUM", "greenplum-5.1.4.000275.jar")), //$NON-NLS-1$
// PSQL_V10(new DbVersion4Drivers(EDatabaseTypeName.PSQL, "v10", "V10", "postgresql-42.2.5.jar")),
PSQL_V9_X(new DbVersion4Drivers(EDatabaseTypeName.PSQL, "v9 and later", "V9_X", "postgresql-42.2.14.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
PSQL_PRIOR_TO_V9(new DbVersion4Drivers(EDatabaseTypeName.PSQL, "Prior to v9", "PRIOR_TO_V9", "postgresql-8.4-703.jdbc4.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

View File

@@ -53,7 +53,7 @@ public class BigDataBasicUtil {
private static IDynamicDistributionManager getDynamicDistributionManager(IProgressMonitor monitor) throws Exception {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IHadoopDistributionService.class)) {
IHadoopDistributionService hdService = (IHadoopDistributionService) GlobalServiceRegister.getDefault()
IHadoopDistributionService hdService = GlobalServiceRegister.getDefault()
.getService(IHadoopDistributionService.class);
if (hdService != null) {
return hdService.getDynamicDistributionManager();

View File

@@ -191,6 +191,23 @@ public class ModuleToInstall {
}
}
@Override
public ModuleToInstall clone() {
ModuleToInstall module = new ModuleToInstall();
module.setName(this.name);
module.setRequired(this.required);
module.setContext(this.context);
module.setDescription(this.description);
module.setDistribution(this.distribution);
module.setFromCustomNexus(this.fromCustomNexus);
module.setLicenseType(this.licenseType);
module.setLicenseUrl(this.licenseUrl);
module.setMavenUri(this.mavenUri);
module.setUrl_description(this.url_description);
module.setUrl_download(this.url_download);
return module;
}
public static String removeAuthenrizationInfo(String mavenUri) throws Exception {
MavenArtifact ma = MavenUrlHelper.parseMvnUrl(mavenUri);
ma.setUsername(""); //$NON-NLS-1$

View File

@@ -32,6 +32,8 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -492,19 +494,55 @@ public final class MetadataTalendType {
}
}
private static String getSha1OfFile(File file) {
String sha1 = null;
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(file);
sha1 = DigestUtils.shaHex(fileInputStream);
} catch (Exception e) {
ExceptionHandler.process(e);
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace(); // Just print the exception for debug.
}
}
}
return sha1;
}
public static void copyFile(File in, IFile out) throws CoreException, IOException {
FileInputStream fis = new FileInputStream(in);
if (out.exists()) {
out.setContents(fis, true, false, null);
} else {
out.create(fis, true, null);
}
fis.close();
}
public static void syncNewMappingFileToProject() throws SystemException {
try {
File sysMappingFiles = new File(MetadataTalendType.getSystemForderURLOfMappingsFile().getPath());
IFolder projectMappingFolder = ResourceUtils.getProject(ProjectManager.getInstance().getCurrentProject())
.getFolder(MetadataTalendType.PROJECT_MAPPING_FOLDER);
File projectMappingFiles = new File(projectMappingFolder.getLocationURI());
if (!sysMappingFiles.exists() || !projectMappingFiles.exists()
|| sysMappingFiles.list().length == projectMappingFiles.list().length) {
if (!sysMappingFiles.exists() || !projectMappingFiles.exists()) {
return;
}
for (File sysMapping : sysMappingFiles.listFiles()) {
IFile projectMapping = projectMappingFolder.getFile(sysMapping.getName());
if (projectMapping.exists() && StringUtils.equals(sysMapping.getName(), "mapping_Greenplum.xml")) {
String sha1OfFile = DigestUtils.shaHex(projectMapping.getContents());
String shalOfOldSystem = "8431f19215dacb3caa126778ae695954552cce2a";
if (StringUtils.equals(sha1OfFile, shalOfOldSystem)) {
copyFile(sysMapping, projectMapping);
}
}
if (!projectMapping.exists()) {
FileInputStream fis = null;
try {

View File

@@ -25,8 +25,10 @@ import org.apache.avro.SchemaBuilder.FieldAssembler;
import org.apache.avro.SchemaBuilder.FieldBuilder;
import org.apache.avro.SchemaBuilder.PropBuilder;
import org.apache.avro.SchemaBuilder.RecordBuilder;
import org.apache.avro.SchemaParseException;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.EList;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.GlobalServiceRegister;
@@ -49,6 +51,10 @@ import orgomg.cwm.objectmodel.core.TaggedValue;
*/
public final class MetadataToolAvroHelper {
private static Logger LOGGER = Logger.getLogger(MetadataToolAvroHelper.class);
private static final String COLUMN = "Column";
private static final String TALEND_DB_COLUMN_NAME = "talend.field.dbColumnName";
/**
* @return An Avro schema with enriched properties from the incoming metadata table.
@@ -66,7 +72,7 @@ public final class MetadataToolAvroHelper {
dynamicPosition = i;
dynColumn = column;
} else {
fa = convertToAvro(fa, column);
fa = convertToAvro(fa, column, i);
}
i++;
}
@@ -137,7 +143,7 @@ public final class MetadataToolAvroHelper {
* Build a field into a schema using enriched properties from the incoming column.
*/
private static FieldAssembler<Schema> convertToAvro(FieldAssembler<Schema> fa,
org.talend.core.model.metadata.builder.connection.MetadataColumn in) {
org.talend.core.model.metadata.builder.connection.MetadataColumn in, int i) {
ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class);
String label = in.getLabel();
if (label != null && coreService != null) {
@@ -237,7 +243,27 @@ public final class MetadataToolAvroHelper {
}
type = in.isNullable() ? AvroUtils.wrapAsNullable(type) : type;
return defaultValue == null ? fb.type(type).noDefault() : fb.type(type).withDefault(defaultValue);
FieldAssembler<Schema> returnResult = null;
try {
if (defaultValue == null) {
returnResult = fb.type(type).noDefault();
} else {
returnResult = fb.type(type).withDefault(defaultValue);
}
} catch (SchemaParseException e) {
// if validation not pass from avro ,then generate a new name like Column0 to pass the validation, but
// actually the display name of schema and the column name is using TALEND_DB_COLUMN_NAME
String genColumn = COLUMN + i;
FieldBuilder<Schema> fbNew = fa.name(genColumn);
copyColumnProperties(fbNew, in);
if (defaultValue == null) {
returnResult = fbNew.type(type).noDefault();
} else {
returnResult = fbNew.type(type).withDefault(defaultValue);
}
LOGGER.info(e.getMessage() + ", use " + genColumn + " instead");
}
return returnResult;
}
private static Schema getLogicalTypeSchema(org.talend.core.model.metadata.builder.connection.MetadataColumn column) {

View File

@@ -1067,7 +1067,10 @@ public class RepositoryToComponentProperty {
return dbVersionString;
} else if (EDatabaseTypeName.SYBASEASE.getDisplayName().equals(databaseType)) {
return dbVersionString;
} else {
} else if (EDatabaseTypeName.GREENPLUM.getDisplayName().equals(databaseType)) {
return dbVersionString;
}else {
String driverValue = EDatabaseVersion4Drivers.getDriversStr(databaseType, dbVersionString);
if (EDatabaseConnTemplate.ORACLE_OCI.getDBDisplayName().equals(databaseType)
|| EDatabaseConnTemplate.ORACLE_CUSTOM.getDBDisplayName().equals(databaseType)

View File

@@ -124,6 +124,7 @@ public enum EParameterFieldType {
TACOKIT_BUTTON,
TACOKIT_SUGGESTABLE_TABLE,
TACOKIT_VALUE_SELECTION,
TACOKIT_TABLE,
TACOKIT_TEXT_AREA_SELECTION;
public String getName() {

View File

@@ -12,6 +12,7 @@
// ============================================================================
package org.talend.core.model.process;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -133,4 +134,8 @@ public interface IProcess extends IElement {
public String getComponentsType();
public INode getNodeByUniqueName(String uniqueName);
default List<? extends INode> getProcessNodes() {
return new ArrayList<INode>();
}
}

View File

@@ -67,6 +67,8 @@ public class JobInfo {
private boolean needUnloadProcessor;
private int includeESBFlag = 0;
public JobInfo(String jobId, String contextName, String version) {
this.jobId = jobId;
this.contextName = contextName;
@@ -572,4 +574,13 @@ public class JobInfo {
public boolean isNeedUnloadProcessor() {
return this.needUnloadProcessor;
}
public int getIncludeESBFlag() {
return includeESBFlag;
}
public void setIncludeESBFlag(int includeESBFlag) {
this.includeESBFlag = includeESBFlag;
}
}

View File

@@ -119,7 +119,7 @@ public final class RepositoryManager {
}
public static void syncUserComponents() {
if (PluginChecker.isSVNProviderPluginLoaded()) {
if (PluginChecker.isRemoteProviderPluginLoaded()) {
IComponentsService codeGenService = (IComponentsService) GlobalServiceRegister.getDefault().getService(
IComponentsService.class);
if (codeGenService != null) {

View File

@@ -418,6 +418,52 @@ public class NodeUtil {
return conns;
}
/**
* DOC
* <p>
* The method searches for the incoming node connections of type
* on a processing path and returns the first ones only
* </p>
*
* @param node
* @param type - node type to look for
* @return
*/
public static List<? extends IConnection> getFirstIncomingLineConnectionsOfType(INode node, String type) {
if (type == null)
return new ArrayList<IConnection>();
Set<String> uniqueNamesDone = new HashSet<String>();
List<? extends IConnection> allIncomingConnections = getFirstIncomingLineConnectionsOfType(node, uniqueNamesDone, type);
return allIncomingConnections;
}
private static List<? extends IConnection> getFirstIncomingLineConnectionsOfType(INode node, Set<String> uniqueNamesDone, String type) {
List<IConnection> conns = new ArrayList<IConnection>();
List<? extends IConnection> incomingConnections = node.getIncomingConnections();
if (incomingConnections != null) {
for (int i = 0; i < incomingConnections.size(); i++) {
IConnection connection = incomingConnections.get(i);
INode nextNode = connection.getSource();
if (!uniqueNamesDone.contains(nextNode.getUniqueName())) {
uniqueNamesDone.add(nextNode.getUniqueName());
if (type.equals((String)nextNode.getElementParameter("COMPONENT_NAME").getValue())) {
conns.add(connection);
} else {
conns.addAll(getFirstIncomingLineConnectionsOfType(nextNode, uniqueNamesDone, type)); // follow this way
}
}
}
}
return conns;
}
public static INode getFirstMergeNode(INode node) {
INode mergeNode = null;
for (IConnection connection : node.getOutgoingConnections()) {

View File

@@ -36,6 +36,8 @@ public interface MavenConstants {
static final String DEFAULT_GROUP_ID = "org.talend";
static final String APACHE_GROUP_ID = "org.apache";
static final String DEFAULT_VERSION = "6.0.0";
static final String SNAPSHOT = "-SNAPSHOT";

View File

@@ -80,4 +80,13 @@ public interface TalendProcessOptionConstants {
*/
public static final int MODULES_WITH_CODESJAR = 1 << 6;
/**
* flag for check if is ESB job
*/
public static final int ISESB_CHECKED = 1;
public static final int ISESB_CHILDREN_INCLUDE = 1 << 1;
public static final int ISESB_CURRENT_INCLUDE = 1 << 2;
}

View File

@@ -47,4 +47,6 @@ public interface ICoreUIService extends IService {
String getPreferenceValue(String key);
void loadComponentsFromProviders(ERepositoryObjectType type);
void resetDataCollectorData();
}

View File

@@ -147,4 +147,6 @@ public interface IJobletProviderService extends IService {
public void updateJobleModifiedRelated(Item item, String oldName, String newName);
public IProcess getJobletGEFProcessFromNode(INode node);
}

View File

@@ -36,6 +36,12 @@
id="org.talend.core.ui.token.RepositroyActionsTokenCollector"
name="actions">
</provider>
<provider
collector="org.talend.core.ui.token.AdditionalPackagesTokenCollector"
description="installed addtional package, old iems, amc"
id="org.talend.core.ui.token.AdditionalPackageTokenCollector"
name="addtional package">
</provider>
</extension>
<extension

View File

@@ -27,6 +27,7 @@ import org.talend.core.ui.component.ComponentPaletteUtilities;
import org.talend.core.ui.component.ComponentsFactoryProvider;
import org.talend.core.ui.services.IDesignerCoreUIService;
import org.talend.core.ui.services.IRulesProviderService;
import org.talend.core.ui.token.TokenCollectorFactory;
/**
* DOC ggu class global comment. Detailled comment
@@ -107,4 +108,9 @@ public class CoreUIService implements ICoreUIService {
designerCoreUIService.loadComponentsFromProviders(type);
}
}
@Override
public void resetDataCollectorData() {
TokenCollectorFactory.getFactory().reset();
}
}

View File

@@ -0,0 +1,40 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.ui.token;
import org.talend.commons.utils.time.PropertiesCollectorUtil;
import us.monoid.json.JSONObject;
public class AdditionalPackagesTokenCollector extends AbstractTokenCollector {
public AdditionalPackagesTokenCollector() {
// TODO Auto-generated constructor stub
}
@Override
public JSONObject collect() throws Exception {
String records = PropertiesCollectorUtil.getAdditionalPackageRecording();
JSONObject allRecords;
try {
allRecords = new JSONObject(records);
} catch (Exception e) {
// the value is not set, or is empty
allRecords = new JSONObject();
allRecords.put(PropertiesCollectorUtil.getAdditionalPackagePreferenceNode(), new JSONObject());
}
return allRecords;
}
}

View File

@@ -14,6 +14,7 @@ package org.talend.core.model.repository;
import java.util.List;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.IllegalPluginConfigurationException;
import org.talend.commons.utils.workbench.extensions.ExtensionImplementationProvider;
import org.talend.core.model.process.IExternalNode;
@@ -35,7 +36,8 @@ public class ExternalNodesFactory {
try {
listComponents = ExtensionImplementationProvider.getInstance(ExtensionPointFactory.EXTERNAL_COMPONENT, extensionId);
} catch (IllegalPluginConfigurationException e) {
throw new RuntimeException("plugin:" + extensionId + " not found", e); //$NON-NLS-1$ //$NON-NLS-2$
ExceptionHandler.process(new Exception("plugin:" + extensionId + " not found", e)); //$NON-NLS-1$ //$NON-NLS-2$
return null; //temporary
}
return listComponents.get(0);
}

View File

@@ -32,7 +32,6 @@ import org.apache.commons.lang.StringUtils;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.i18n.Messages;
import org.talend.core.model.context.ContextUtils;
import org.talend.core.model.general.Project;
import org.talend.core.model.process.IContextParameter;
import org.talend.core.model.properties.Item;
@@ -79,6 +78,9 @@ public class ContextOrderProperties extends Properties {
@Override
public Object put(Object key, Object value) {
keys.add(key);
if (value == null) {
return super.remove(key);
}
return super.put(key, value);
}

View File

@@ -19,9 +19,11 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.eclipse.core.resources.IFolder;
import org.eclipse.emf.common.util.EList;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.CorePlugin;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
@@ -36,6 +38,7 @@ import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.runtime.services.IDesignerMavenService;
import org.talend.core.ui.ITestContainerProviderService;
import org.talend.core.utils.CodesJarResourceCache;
@@ -151,7 +154,8 @@ public final class CodeGeneratorRoutine {
}
if (routinesParameterTypes != null) {
routinesParameterTypes.stream().filter(r -> r.getType() != null)
.map(r -> CodesJarResourceCache.getCodesJarById(r.getId())).filter(info -> info != null)
.map(r -> CodesJarResourceCache.getCodesJarById(r.getId()))
.filter(info -> info != null && hasInnerCodes(info))
.forEach(info -> neededCodesJars.add(designerMavenService.getImportGAVPackageForCodesJar(info)));
}
});
@@ -160,6 +164,18 @@ public final class CodeGeneratorRoutine {
return neededCodesJars;
}
private static boolean hasInnerCodes(CodesJarInfo info) {
try {
IFolder folder = ResourceUtils
.getProject(ProjectManager.getInstance().getProjectFromProjectTechLabel(info.getProjectTechName()))
.getFolder(ERepositoryObjectType.getFolderName(info.getType())).getFolder(info.getLabel());
return folder.exists() && folder.members().length > 0;
} catch (Exception e) {
ExceptionHandler.process(e);
}
return false;
}
/**
*
* Deprecate for won't use pigudf any more

View File

@@ -22,8 +22,10 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -65,8 +67,6 @@ import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.ComponentCategory;
import org.talend.core.model.components.EComponentType;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IComponentsFactory;
import org.talend.core.model.components.IComponentsService;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.general.Project;
import org.talend.core.model.metadata.IMetadataColumn;
@@ -84,10 +84,8 @@ import org.talend.core.model.process.JobInfo;
import org.talend.core.model.process.ProcessUtils;
import org.talend.core.model.process.ReplaceNodesInProcessProvider;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.JobletProcessItem;
import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.Property;
import org.talend.core.model.relationship.Relation;
import org.talend.core.model.relationship.RelationshipItemBuilder;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
@@ -178,11 +176,11 @@ public class ProcessorUtilities {
private static final Set<ModuleNeeded> retrievedJarsForCurrentBuild = new HashSet<ModuleNeeded>();
private static final Set<String> esbJobs = new HashSet<String>();
private static final Map<String, Integer> esbJobs = new HashMap<String, Integer>();
private static boolean isDebug = false;
private static boolean isCIMode = false;
private static boolean isDynamicJobAndCITest = false;
private static JobInfo mainJobInfo;
@@ -425,6 +423,76 @@ public class ProcessorUtilities {
return false;
}
public static boolean checkProcessLoopDependencies(IProcess mainProcess, String id, String version,
LinkedList<String> pathlink, Map<String, String> idToLatestVersion) {
if (ItemCacheManager.LATEST_VERSION.contains(version)) {
if (idToLatestVersion.get(id) == null) {
ProcessItem processItem = ItemCacheManager.getProcessItem(id);
version = processItem.getProperty().getVersion();
idToLatestVersion.put(id, version);
} else {
version = idToLatestVersion.get(id);
}
}
String pathNode = id + "-" + version;
if (pathlink.contains(pathNode)) {
return true;
}
pathlink.add(pathNode);
boolean hasLoop = false;
List<? extends INode> processNodes = mainProcess.getProcessNodes();
for (INode node : processNodes) {
if (!node.isActivate()) {
continue;
}
IElementParameter processIdParam = node.getElementParameter("PROCESS_TYPE_PROCESS");
if (processIdParam != null && StringUtils.isNotBlank((String) processIdParam.getValue())) {
String jobIds = (String) processIdParam.getValue();
String subNodeversion = (String) node.getElementParameter("PROCESS_TYPE_VERSION").getValue();
for (String jobId : jobIds.split(ProcessorUtilities.COMMA)) {
if (StringUtils.isBlank(jobId)) {
continue;
}
ProcessItem processItem = ItemCacheManager.getProcessItem(jobId, subNodeversion);
IDesignerCoreService service = CorePlugin.getDefault().getDesignerCoreService();
IProcess subProcess = service.getProcessFromProcessItem(processItem);
hasLoop = checkProcessLoopDependencies(subProcess, jobId, subNodeversion, pathlink, idToLatestVersion);
if (hasLoop) {
break;
}
}
} else {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IJobletProviderService.class)) {
IJobletProviderService jobletService = GlobalServiceRegister.getDefault()
.getService(IJobletProviderService.class);
if (jobletService != null) {
IProcess jobletProcess = jobletService.getJobletGEFProcessFromNode(node);
if (jobletProcess != null) {
String jobletId = jobletProcess.getId();
IElementParameter projectTecNameParam = jobletProcess.getElementParameter("PROJECT_TECHNICAL_NAME");
if (projectTecNameParam != null && StringUtils.isNotBlank((String) projectTecNameParam.getValue())) {
jobletId = projectTecNameParam.getValue() + ":" + jobletId;
}
hasLoop = checkProcessLoopDependencies(jobletProcess, jobletId, jobletProcess.getVersion(), pathlink,
idToLatestVersion);
}
}
}
}
if (hasLoop) {
break;
}
}
if (!hasLoop) {
pathlink.removeLast();
}
return hasLoop;
}
private static IProcessor generateCode(IProcessor processor2, JobInfo jobInfo, String selectedContextName,
boolean statistics, boolean trace, boolean needContext, int option, IProgressMonitor progressMonitor)
throws ProcessorException {
@@ -524,11 +592,10 @@ public class ProcessorUtilities {
jobInfo.setProcessor(processor);
if (isMainJob && selectedProcessItem != null) {
Relation mainRelation = new Relation();
mainRelation.setId(jobInfo.getJobId());
mainRelation.setVersion(jobInfo.getJobVersion());
mainRelation.setType(RelationshipItemBuilder.JOB_RELATION);
hasLoopDependency = checkLoopDependencies(mainRelation, new HashMap<String, String>());
Property property = selectedProcessItem.getProperty();
String jobId = ProjectManager.getInstance().getCurrentProject().getTechnicalLabel() + ":" + property.getId();
hasLoopDependency = checkProcessLoopDependencies(currentProcess, jobId, property.getVersion(),
new LinkedList<String>(), new HashMap<String, String>());
// clean the previous code in case it has deleted subjob
cleanSourceFolder(progressMonitor, currentProcess, processor);
}
@@ -631,233 +698,6 @@ public class ProcessorUtilities {
return processor;
}
public static boolean checkLoopDependencies(Relation mainJobInfo, Map<String, String> idToLastestVersionMap)
throws ProcessorException {
List<Relation> itemsJobRelatedTo = getItemsRelation(mainJobInfo, idToLastestVersionMap);
List<Relation> relationChecked = new ArrayList<>();
relationChecked.add(mainJobInfo);
return checkLoopDependencies(mainJobInfo, mainJobInfo, itemsJobRelatedTo, relationChecked, idToLastestVersionMap);
}
private static boolean checkLoopDependencies(Relation mainRelation, Relation currentRelation,
List<Relation> itemsJobRelatedTo,
List<Relation> relationChecked, Map<String, String> idToLastestVersionMap) throws ProcessorException {
boolean hasDependency = false;
for (Relation relation : itemsJobRelatedTo) {
try {
// means the tRunjob deactivate, or one of the specific version tRunjon deactivate, skip
Map<String, Set<String>> actTrunjobHM = getActivateTRunjobMap(currentRelation.getId(),
currentRelation.getVersion());
if (actTrunjobHM.get(relation.getId()) == null
|| !actTrunjobHM.get(relation.getId()).contains(relation.getVersion())) {
continue;
}
} catch (Exception e) {
throw new ProcessorException(e);
}
hasDependency = relation.getId().equals(mainRelation.getId())
&& relation.getVersion().equals(mainRelation.getVersion());
if (!hasDependency) {
List<Relation> itemsChildJob = getItemsRelation(relation, idToLastestVersionMap);
if (!relationChecked.contains(relation)) {
relationChecked.add(relation);
hasDependency = checkLoopDependencies(mainRelation, relation, itemsChildJob, relationChecked,
idToLastestVersionMap);
}
if (!hasDependency) {
for (Relation childRelation : itemsChildJob) {
try {
// means the tRunjob deactivate, or one of the specific version tRunjon deactivate, skip
Map<String, Set<String>> activateTRunjobMap = getActivateTRunjobMap(relation.getId(),
relation.getVersion());
if (activateTRunjobMap.get(childRelation.getId()) == null
|| !activateTRunjobMap.get(childRelation.getId()).contains(childRelation.getVersion())) {
continue;
}
} catch (Exception e) {
throw new ProcessorException(e);
}
hasDependency = checkLoopDependencies(childRelation, idToLastestVersionMap);
if (hasDependency) {
break;
}
}
}
}
if (hasDependency) {
break;
}
}
return hasDependency;
}
private static Map<String, Set<String>> getActivateTRunjobMap(String id, String version) throws PersistenceException {
Map<String, Set<String>> actTrunjobHM = new HashMap<String, Set<String>>();
ProcessType processType = null;
try {
IRepositoryViewObject currentJobObject = ProxyRepositoryFactory.getInstance().getSpecificVersion(id, version, true);
if (currentJobObject != null) {
Item item = currentJobObject.getProperty().getItem();
if (item instanceof ProcessItem) {
processType = ((ProcessItem) item).getProcess();
} else if (item instanceof JobletProcessItem) {
processType = ((JobletProcessItem) item).getJobletProcess();
}
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
if (processType != null) {
List<Project> allProjects = new ArrayList<Project>();
allProjects.add(ProjectManager.getInstance().getCurrentProject());
allProjects.addAll(ProjectManager.getInstance().getAllReferencedProjects());
List<String> jobletsComponentsList = new ArrayList<String>();
IComponentsFactory componentsFactory = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsService.class)) {
IComponentsService compService = GlobalServiceRegister.getDefault()
.getService(IComponentsService.class);
if (compService != null) {
componentsFactory = compService.getComponentsFactory();
for (IComponent component : componentsFactory.readComponents()) {
if (component.getComponentType() == EComponentType.JOBLET) {
jobletsComponentsList.add(component.getName());
}
}
}
}
String jobletPaletteType = null;
String frameWork = processType.getFramework();
if (StringUtils.isBlank(frameWork)) {
jobletPaletteType = ComponentCategory.CATEGORY_4_DI.getName();
} else if (frameWork.equals(HadoopConstants.FRAMEWORK_SPARK)) {
jobletPaletteType = ComponentCategory.CATEGORY_4_SPARK.getName();
} else if (frameWork.equals(HadoopConstants.FRAMEWORK_SPARK_STREAMING)) {
jobletPaletteType = ComponentCategory.CATEGORY_4_SPARKSTREAMING.getName();
}
for (Object nodeObject : processType.getNode()) {
NodeType node = (NodeType) nodeObject;
// not tRunjob && not joblet then continue
if (!node.getComponentName().equals("tRunJob") && !jobletsComponentsList.contains(node.getComponentName())) { // $NON-NLS-1$
continue;
}
boolean nodeActivate = true;
String processIds = null;
String processVersion = null;
for (Object elementParam : node.getElementParameter()) {
ElementParameterType elemParamType = (ElementParameterType) elementParam;
if ("PROCESS:PROCESS_TYPE_PROCESS".equals(elemParamType.getName())) { // $NON-NLS-1$
processIds = elemParamType.getValue();
if (StringUtils.isNotBlank(processIds)) {
for (String jobId : processIds.split(ProcessorUtilities.COMMA)) {
if (actTrunjobHM.get(jobId) == null) {
actTrunjobHM.put(jobId, new HashSet<String>());
}
}
}
} else if ("PROCESS:PROCESS_TYPE_VERSION".equals(elemParamType.getName()) // $NON-NLS-1$
|| "PROCESS_TYPE_VERSION".equals(elemParamType.getName())) { // $NON-NLS-1$
processVersion = elemParamType.getValue();
} else if ("ACTIVATE".equals(elemParamType.getName())) { // $NON-NLS-1$
nodeActivate = Boolean.parseBoolean(elemParamType.getValue());
}
}
if (nodeActivate) {
if (StringUtils.isNotBlank(processIds)) {
for (String jobId : processIds.split(ProcessorUtilities.COMMA)) {
String actualVersion = processVersion;
if (RelationshipItemBuilder.LATEST_VERSION.equals(processVersion)) {
for (Project project : allProjects) {
IRepositoryViewObject lastVersion = null;
lastVersion = ProxyRepositoryFactory.getInstance().getLastVersion(project, jobId);
if (lastVersion != null) {
actualVersion = lastVersion.getVersion();
break;
}
}
}
if (actTrunjobHM.get(jobId) != null) {
actTrunjobHM.get(jobId).add(actualVersion);
}
}
} else if (componentsFactory != null && jobletPaletteType != null) {
// for joblet
IComponent cc = componentsFactory.get(node.getComponentName(), jobletPaletteType);
if (GlobalServiceRegister.getDefault().isServiceRegistered(IJobletProviderService.class)) {
IJobletProviderService jobletService = GlobalServiceRegister.getDefault()
.getService(IJobletProviderService.class);
Property property = jobletService.getJobletComponentItem(cc);
if (property != null && StringUtils.isNotBlank(property.getId())) {
String jobletId = property.getId();
if (actTrunjobHM.get(jobletId) == null) {
actTrunjobHM.put(jobletId, new HashSet<String>());
}
String actualVersion = processVersion;
if (RelationshipItemBuilder.LATEST_VERSION.equals(processVersion)) {
for (Project project : allProjects) {
IRepositoryViewObject lastVersion = null;
lastVersion = ProxyRepositoryFactory.getInstance().getLastVersion(project, jobletId);
if (lastVersion != null) {
actualVersion = lastVersion.getVersion();
break;
}
}
}
actTrunjobHM.get(jobletId).add(actualVersion);
}
}
}
}
}
}
return actTrunjobHM;
}
private static List<Relation> getItemsRelation(Relation mainJobInfo, Map<String, String> idToLastestVersionMap) throws ProcessorException {
List<Relation> itemsJobRelatedTo = new ArrayList<Relation>();
try {
List<Project> allProjects = new ArrayList<Project>();
allProjects.add(ProjectManager.getInstance().getCurrentProject());
allProjects.addAll(ProjectManager.getInstance().getAllReferencedProjects());
RelationshipItemBuilder instance = RelationshipItemBuilder.getInstance();
if (instance != null) {
itemsJobRelatedTo.addAll(instance.getItemsChildRelatedTo(mainJobInfo.getId(), mainJobInfo.getVersion(),
mainJobInfo.getType(), RelationshipItemBuilder.JOB_RELATION));
itemsJobRelatedTo.addAll(instance.getItemsChildRelatedTo(mainJobInfo.getId(), mainJobInfo.getVersion(),
mainJobInfo.getType(), RelationshipItemBuilder.JOBLET_RELATION));
for (Relation relation : itemsJobRelatedTo) {
if (relation.getVersion().equals(RelationshipItemBuilder.LATEST_VERSION)) {
if (idToLastestVersionMap.containsKey(relation.getId())) {
relation.setVersion(idToLastestVersionMap.get(relation.getId()));
} else {
for (Project project : allProjects) {
IRepositoryViewObject lastVersion =
ProxyRepositoryFactory.getInstance().getLastVersion(project, relation.getId());
if (lastVersion != null) {
relation.setVersion(lastVersion.getVersion());
idToLastestVersionMap.put(relation.getId(), relation.getVersion());
break;
}
}
}
}
}
}
} catch (PersistenceException e) {
throw new ProcessorException(e);
}
return itemsJobRelatedTo;
}
private static void setNeededResources(final Map<String, Object> argumentsMap, JobInfo jobInfo) {
argumentsMap.put(TalendProcessArgumentConstant.ARG_NEED_XMLMAPPINGS,
@@ -1206,11 +1046,9 @@ public class ProcessorUtilities {
}
if (isMainJob && selectedProcessItem != null) {
Relation mainRelation = new Relation();
mainRelation.setId(jobInfo.getJobId());
mainRelation.setVersion(jobInfo.getJobVersion());
mainRelation.setType(RelationshipItemBuilder.JOB_RELATION);
hasLoopDependency = checkLoopDependencies(mainRelation, new HashMap<String, String>());
Property property = selectedProcessItem.getProperty();
hasLoopDependency = checkProcessLoopDependencies(currentProcess, property.getId(), property.getVersion(),
new LinkedList<String>(), new HashMap<String, String>());
// clean the previous code in case it has deleted subjob
cleanSourceFolder(progressMonitor, currentProcess, processor);
}
@@ -1256,7 +1094,7 @@ public class ProcessorUtilities {
checkMetadataDynamic(currentProcess, jobInfo);
int options = TalendProcessOptionConstants.MODULES_DEFAULT;
if (isCIMode && BitwiseOptionUtils.containOption(option, GENERATE_MAIN_ONLY)) {
if (isCIMode() && BitwiseOptionUtils.containOption(option, GENERATE_MAIN_ONLY)) {
options |= TalendProcessOptionConstants.MODULES_WITH_CHILDREN;
}
Set<ModuleNeeded> neededLibraries = new HashSet<>();
@@ -1707,13 +1545,16 @@ public class ProcessorUtilities {
}
}
}
if (isEsbComponentName(componentName)) {
addEsbJob(jobInfo);
}
}
}
}
private static void recordESBIncludingFlag(JobInfo jobInfo, int esbIncludingOption) {
int includeESBFlag = jobInfo.getIncludeESBFlag();
includeESBFlag |= esbIncludingOption;
jobInfo.setIncludeESBFlag(includeESBFlag);
}
static void setGenerationInfoWithChildrenJob(INode node, JobInfo jobInfo, final JobInfo subJobInfo) {
final LastGenerationInfo generationInfo = LastGenerationInfo.getInstance();
@@ -1822,6 +1663,13 @@ public class ProcessorUtilities {
static boolean hasLoopDependency = false;
private static void resetBuildFlagsAndCaches() {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
}
/**
* This function will generate the code of the process and all of this sub process.
*
@@ -1836,15 +1684,10 @@ public class ProcessorUtilities {
if (monitors == null) {
monitor = new NullProgressMonitor();
}
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
JobInfo jobInfo = new JobInfo(processName, contextName, version);
IProcessor process = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return process;
}
@@ -1864,14 +1707,9 @@ public class ProcessorUtilities {
}
JobInfo jobInfo = new JobInfo(processId, contextName, version);
jobInfo.setApplyContextToChildren(applyContextToChildren);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor process = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return process;
}
@@ -1886,14 +1724,9 @@ public class ProcessorUtilities {
}
JobInfo jobInfo = new JobInfo(process, contextName);
jobInfo.setApplyContextToChildren(applyContextToChildren);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor result = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return result;
}
@@ -1908,15 +1741,10 @@ public class ProcessorUtilities {
}
JobInfo jobInfo = new JobInfo(process, contextName, version);
jobInfo.setApplyContextToChildren(applyContextToChildren);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor result =
generateCode(jobInfo, contextName, statistics, trace, needContext, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return result;
}
@@ -1940,14 +1768,9 @@ public class ProcessorUtilities {
ProcessUtils.isOptionChecked(argumentsMap, TalendProcessArgumentConstant.ARG_NEED_CONTEXT);
int option = ProcessUtils.getOptionValue(argumentsMap, TalendProcessArgumentConstant.ARG_GENERATE_OPTION, 0);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor result = generateCode(jobInfo, contextName, statistics, trace, needContext, option, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return result;
}
@@ -1965,14 +1788,9 @@ public class ProcessorUtilities {
JobInfo jobInfo = new JobInfo(process, contextName, version);
jobInfo.setContext(context);
jobInfo.setApplyContextToChildren(applyContextToChildren);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
result = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
}
return result;
}
@@ -2011,14 +1829,9 @@ public class ProcessorUtilities {
public static IProcessor generateCode(ProcessItem process, String contextName, boolean statistics, boolean trace)
throws ProcessorException {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor returnValue = generateCode(process, contextName, statistics, trace, false);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return returnValue;
}
@@ -2040,29 +1853,19 @@ public class ProcessorUtilities {
jobInfo = new JobInfo(process, context);
}
jobInfo.setApplyContextToChildren(applyToChildren);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, contextProperties,
GENERATE_ALL_CHILDS, new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return genCode;
}
public static IProcessor generateCode(IProcess process, IContext context, boolean statistics, boolean trace,
boolean properties) throws ProcessorException {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor returnValue =
generateCode(process, context, statistics, trace, properties, new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return returnValue;
}
@@ -2083,15 +1886,10 @@ public class ProcessorUtilities {
} else {
jobInfo = new JobInfo(process, context);
}
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, properties,
GENERATE_ALL_CHILDS, progressMonitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return genCode;
}
@@ -2128,15 +1926,10 @@ public class ProcessorUtilities {
+ (jobInfo.getJobName() != null ? jobInfo.getJobName() : jobInfo.getJobId());
TimeMeasure.begin(timeMeasureGenerateCodesId);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor genCode = generateCode(processor, jobInfo, context.getName(), statistics, trace, properties,
GENERATE_ALL_CHILDS, progressMonitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
TimeMeasure.end(timeMeasureGenerateCodesId);
// if active before, not disable and active still.
@@ -2152,15 +1945,10 @@ public class ProcessorUtilities {
updateCodeSources();
// achen modify to fix 0006107
JobInfo jobInfo = new JobInfo(process, context);
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, properties, option,
new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
resetBuildFlagsAndCaches();
return genCode;
}
@@ -2476,8 +2264,15 @@ public class ProcessorUtilities {
}
JobInfo jobInfo = new JobInfo(testItem, testProcess.getDefaultContext());
jobInfo.setTestContainer(true);
jobInfos.add(jobInfo);
jobInfo.setFatherJobInfo(parentJobInfo);
if (!jobInfos.contains(jobInfo)) {
jobInfos.add(jobInfo);
// if job contains testcase, we need to get joblets of testcase and add them to the job pom, we
// must
// pass parentJobInfo instead of testProcess, otherwise joblet will be filtered out
getSubjobInfo(testProcess.getNode(), testProcess, parentJobInfo, jobInfos, firstChildOnly, includeJoblet);
}
}
}
}
@@ -2495,6 +2290,8 @@ public class ProcessorUtilities {
} else if (frameWork.equals(HadoopConstants.FRAMEWORK_SPARK_STREAMING)) {
jobletPaletteType = ComponentCategory.CATEGORY_4_SPARKSTREAMING.getName();
}
boolean hasChildrenIncludeESB = false;
for (NodeType node : nodes) {
boolean activate = true;
// check if node is active at least.
@@ -2509,8 +2306,8 @@ public class ProcessorUtilities {
continue;
}
if (isEsbComponentName(node.getComponentName())) {
addEsbJob(parentJobInfo);
if (!firstChildOnly && isEsbComponentName(node.getComponentName())) {
recordESBIncludingFlag(parentJobInfo, TalendProcessOptionConstants.ISESB_CURRENT_INCLUDE);
}
boolean isCTalendJob = "cTalendJob".equalsIgnoreCase(node.getComponentName());
@@ -2539,6 +2336,18 @@ public class ProcessorUtilities {
jobInfo.setFatherJobInfo(parentJobInfo);
if (!firstChildOnly) {
getAllJobInfo(processItem.getProcess(), jobInfo, jobInfos, firstChildOnly, includeJoblet);
if (jobInfo.getIncludeESBFlag() >= 2) {
hasChildrenIncludeESB = true;
}
}
} else {
Optional<JobInfo> infoOptional = jobInfos.stream().filter(info -> info.equals(jobInfo))
.findFirst();
if (infoOptional.isPresent()) {
JobInfo matchJobInfo = infoOptional.get();
if (matchJobInfo.getIncludeESBFlag() >= 2) {
hasChildrenIncludeESB = true;
}
}
}
}
@@ -2590,6 +2399,16 @@ public class ProcessorUtilities {
}
}
}
// checked done set the esb including option
if (!firstChildOnly) {
recordESBIncludingFlag(parentJobInfo, TalendProcessOptionConstants.ISESB_CHECKED);
if (hasChildrenIncludeESB) {
recordESBIncludingFlag(parentJobInfo, TalendProcessOptionConstants.ISESB_CHILDREN_INCLUDE);
}
esbJobs.put(esbJobKey(parentJobInfo.getJobId(), parentJobInfo.getJobVersion()), parentJobInfo.getIncludeESBFlag());
}
return jobInfos;
}
@@ -2806,9 +2625,21 @@ public class ProcessorUtilities {
}
public static boolean isEsbJob(IProcess process, boolean checkCurrentProcess) {
// get includeESBFlag from cache
if (process instanceof IProcess2) {
Property property = ((IProcess2) process).getProperty();
String esbJobKey = esbJobKey(property.getId(), property.getVersion());
if (esbJobs.get(esbJobKey) != null) {
Integer esbOptions = esbJobs.get(esbJobKey);
if (BitwiseOptionUtils.containOption(esbOptions, TalendProcessOptionConstants.ISESB_CHECKED)) {
return checkCurrentProcess
? BitwiseOptionUtils.containOption(esbOptions, TalendProcessOptionConstants.ISESB_CURRENT_INCLUDE)
: esbOptions > 2;
}
}
}
if (process instanceof IProcess2) {
if (checkCurrentProcess) {
for (INode n : process.getGraphicalNodes()) {
if (isEsbComponentName(n.getComponent().getName())) {
@@ -2834,17 +2665,6 @@ public class ProcessorUtilities {
return false;
}
private static void addEsbJob(JobInfo jobInfo) {
if (esbJobs.contains(esbJobKey(jobInfo.getJobId(), jobInfo.getJobVersion()))) {
return;
}
esbJobs.add(esbJobKey(jobInfo.getJobId(), jobInfo.getJobVersion()));
if (jobInfo.getFatherJobInfo() != null) {
addEsbJob(jobInfo.getFatherJobInfo());
}
}
private static String esbJobKey(String processId, String version) {
return processId + "_" + version;
}
@@ -2872,11 +2692,36 @@ public class ProcessorUtilities {
}
public static boolean isCIMode() {
return isCIMode;
// if it's CI mode , then the system property of maven.local.repository will store the value of studio
// m2 path,otherwise it's null
return System.getProperty("maven.local.repository") != null;
}
public static void setCIMode(boolean isCIMode) {
ProcessorUtilities.isCIMode = isCIMode;
public static void setExportConfig(boolean export) {
setExportConfig(JavaUtils.JAVA_APP_NAME, null, null, export, new Date());
}
public static boolean isJobTest(String processId, String contextName, String version) {
for (JobInfo jobInfo : jobList) {
if (jobInfo.getJobId().equals(processId)) {
if (contextName != null && !contextName.equals("") && !jobInfo.getContextName().equals(contextName)) {
continue;
}
if (version != null && !version.equals(jobInfo.getJobVersion())) {
continue;
}
return jobInfo.isTestContainer();
}
}
return false;
}
public static void setDynamicJobAndCITest(boolean dynamicJobAndCITest) {
isDynamicJobAndCITest = dynamicJobAndCITest;
}
public static boolean isDynamicJobAndCITest() {
return isDynamicJobAndCITest;
}
}

View File

@@ -11,7 +11,7 @@
<packaging>eclipse-plugin</packaging>
<properties>
<maven.resolver.version>1.3.1</maven.resolver.version>
<wagon.version>3.0.0</wagon.version>
<wagon.version>3.4.3</wagon.version>
</properties>
<dependencies>

View File

@@ -14,6 +14,12 @@
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>

View File

@@ -23,6 +23,10 @@
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
@@ -91,6 +95,11 @@
<artifactId>jackson-databind</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>
<build>
<plugins>

View File

@@ -75,7 +75,7 @@
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.15</version>
<version>1.4.16</version>
</dependency>
</dependencies>

View File

@@ -22,11 +22,23 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
@@ -37,6 +49,12 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>

View File

@@ -192,12 +192,12 @@
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.14-TALEND</version>
<version>${jackson-codehaus.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.14-TALEND</version>
<version>${jackson-codehaus.version}</version>
</dependency>
</dependencies>
<build>

View File

@@ -21,5 +21,6 @@
</modules>
<properties>
<m2.fasterxml.jackson.version>2.11.4</m2.fasterxml.jackson.version>
<jackson-codehaus.version>1.9.15-TALEND</jackson-codehaus.version>
</properties>
</project>

View File

@@ -23,7 +23,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<version>4.13.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>

View File

@@ -10,7 +10,7 @@
<artifactId>studio-tacokit-dependencies</artifactId>
<packaging>pom</packaging>
<properties>
<tacokit.components.version>1.20.0-SNAPSHOT</tacokit.components.version>
<tacokit.components.version>1.21.0-SNAPSHOT</tacokit.components.version>
</properties>
<repositories>
<repository>

View File

@@ -11,7 +11,7 @@
<packaging>pom</packaging>
<properties>
<tcomp.version>1.31.0</tcomp.version>
<tcomp.version>1.32.0</tcomp.version>
<slf4j.version>1.7.25</slf4j.version>
</properties>

View File

@@ -33,7 +33,7 @@
<artifactItem>
<groupId>org.talend.studio</groupId>
<artifactId>studio-maven-repository</artifactId>
<version>7.4.1.v20201225</version>
<version>7.4.1.v20210427</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/../repository</outputDirectory>

View File

@@ -17,8 +17,8 @@
<properties>
<talend.codes.package>@CodesPackage@</talend.codes.package>
<allow.codes.compile.error>true</allow.codes.compile.error>
<maven.compiler.failOnError>${allow.codes.compile.error}</maven.compiler.failOnError>
<codes.compile.failOnError>true</codes.compile.failOnError>
<maven.compiler.failOnError>${codes.compile.failOnError}</maven.compiler.failOnError>
</properties>
<dependencies>

View File

@@ -31,6 +31,11 @@
</configuration>
<dependencies>
<!-- This dependency provides the implementation of compiler "jdt": -->
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-jdt</artifactId>
@@ -53,6 +58,11 @@
<artifactId>plexus-utils</artifactId>
<version>3.0.24</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
</plugin>
<plugin>
@@ -60,6 +70,11 @@
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
@@ -82,6 +97,11 @@
<artifactId>maven-assembly-plugin</artifactId>
<version>3.0.0</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-shared-utils</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
@@ -108,7 +128,12 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.0.24</version>
</dependency>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
</plugin>
<plugin>

View File

@@ -97,7 +97,7 @@ public abstract class MavenCommandLauncher {
private Map<String, Object> argumentsMap;
private static final String REGEX_TEST_CASE_FAILURES_STR = "\\[ERROR\\] Tests run:.*\\[ERROR\\] There are test\\p{Print}+\n";
private static final String REGEX_TEST_CASE_FAILURES_STR = "\\[ERROR\\] There are test failures.*\n";
private static final Pattern REGEX_TEST_CASE_FAILURES = Pattern.compile(REGEX_TEST_CASE_FAILURES_STR, Pattern.DOTALL);

View File

@@ -49,6 +49,11 @@ public class ClasspathsJarGenerator {
public static String createJar(Property property, String classpath, String separator, boolean isRelativePath)
throws Exception {
return createJar(property, classpath, separator, isRelativePath, false);
}
public static String createJar(Property property, String classpath, String separator, boolean isRelativePath,
boolean usingTempDir) throws Exception {
String newClasspath = generateClasspathForManifest(classpath, separator, isRelativePath);
Manifest manifest = new Manifest();
@@ -57,7 +62,7 @@ public class ClasspathsJarGenerator {
a.put(Attributes.Name.IMPLEMENTATION_VENDOR, "Talend Open Studio"); //$NON-NLS-1$
a.put(Attributes.Name.CLASS_PATH, newClasspath);
String jarLocation = getJarLocation(property);
String jarLocation = getJarLocation(property, usingTempDir);
File jarFile = new File(jarLocation);
if (!jarFile.exists()) {
jarFile.createNewFile();
@@ -122,8 +127,8 @@ public class ClasspathsJarGenerator {
return finalClasspath.toString().trim();
}
public static String getClasspathFromManifest(Property property) throws Exception {
String jarLocation = getJarLocation(property);
public static String getClasspathFromManifest(Property property, boolean usingTempDir) throws Exception {
String jarLocation = getJarLocation(property, usingTempDir);
JarInputStream stream = null;
try {
stream = new JarInputStream(new FileInputStream(jarLocation));
@@ -148,10 +153,13 @@ public class ClasspathsJarGenerator {
return str;
}
private static String getJarLocation(Property property) {
private static String getJarLocation(Property property, boolean usingTempDir) {
ITalendProcessJavaProject jobProject = getRunProcessService().getTalendJobJavaProject(property);
String jarLocation = jobProject.getTargetFolder().getFile(CLASSPATHS_JAR_NAME).getLocation().toPortableString();
return jarLocation;
if (usingTempDir) {
return jobProject.getTempFolder().getFile(CLASSPATHS_JAR_NAME).getLocation().toPortableString();
} else {
return jobProject.getTargetFolder().getFile(CLASSPATHS_JAR_NAME).getLocation().toPortableString();
}
}
private static IRunProcessService getRunProcessService() {

View File

@@ -355,8 +355,9 @@ public class PomIdsHelper {
public static boolean skipFolders() {
String projectTechName = ProjectManager.getInstance().getCurrentProject().getTechnicalLabel();
ProjectPreferenceManager manager = getPreferenceManager(projectTechName);
return manager.getBoolean(MavenConstants.SKIP_FOLDERS);
Project project = ProjectManager.getInstance().getProjectFromProjectTechLabel(projectTechName);
ProjectPreferenceManager preferenceManager = new ProjectPreferenceManager(project, DesignerMavenPlugin.PLUGIN_ID, false);
return preferenceManager.getBoolean(MavenConstants.SKIP_FOLDERS);
}
public static boolean isValidGroupId(String text) {

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib" path="lib/fluent-hc-4.2.6.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.3.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.13.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpcore-4.4.6.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

View File

@@ -6,7 +6,7 @@ Bundle-Version: 7.4.1.qualifier
Bundle-ActivationPolicy: lazy
Eclipse-BundleShape: dir
Bundle-ClassPath: ./,
lib/httpclient-4.5.3.jar,
lib/httpclient-4.5.13.jar,
lib/httpcore-4.4.6.jar,
lib/fluent-hc-4.2.6.jar
Export-Package: org.apache.http,

View File

@@ -33,7 +33,7 @@
<artifactItem>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
<version>4.5.13</version>
</artifactItem>
<artifactItem>
<groupId>org.apache.httpcomponents</groupId>

View File

@@ -12,14 +12,10 @@
// ============================================================================
package org.talend.librariesmanager.ui.startup;
import org.eclipse.ui.IStartup;
import java.util.logging.Logger;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.network.NetworkUtil;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.eclipse.ui.IStartup;
import org.talend.librariesmanager.prefs.LibrariesManagerUtils;
/**
* created by wchen on 2015-6-15 Detailled comment
@@ -41,21 +37,12 @@ public class ShareLibsSynchronizer implements IStartup {
ShareCILibsJob ciJob = new ShareCILibsJob();
ciJob.schedule();
if (shareLibsAtStartup()) {
if (LibrariesManagerUtils.shareLibsAtStartup()) {
ShareLibsJob job = new ShareLibsJob();
job.schedule();
} else {
LOGGER.info("Skip sharing libraries");
}
}
public boolean shareLibsAtStartup() {
boolean ret = ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT;
try {
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(NetworkUtil.ORG_TALEND_DESIGNER_CORE);
ret = node.getBoolean(ITalendCorePrefConstants.NEXUS_SHARE_LIBS, ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT);
} catch (Throwable e) {
ExceptionHandler.process(e);
}
LOGGER.info("shareLibsAtStartup: " + ret);
return ret;
}
}

View File

@@ -115,7 +115,7 @@ public class RemoteModulesHelper {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
final Set<String> mavenUrisTofetch = new HashSet<String>(contextMap.keySet());
if (LibraryDataService.getInstance().isBuildLibrariesData()) {
if (LibraryDataService.isBuildLibrariesData()) {
LibraryDataService.getInstance().buildLibraryLicenseData(mavenUrisTofetch);
}
monitor.beginTask(Messages.getString("RemoteModulesHelper.fetch.module.info"), mavenUrisTofetch.size() * 10 + 10);//$NON-NLS-1$
@@ -160,7 +160,7 @@ public class RemoteModulesHelper {
if (useLocalLicenseData) {
searchFromLocalDataFile(mavenUrisTofetch, monitor);
addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, remoteCache);
}
}
if (!onlyUseLocalLicenseData || LibraryDataService.getInstance().isBuildLibrariesData()) {
searchFromRemoteNexus(mavenUrisTofetch, monitor);
addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, remoteCache);
@@ -270,6 +270,13 @@ public class RemoteModulesHelper {
String uriToCheck = iterator.next();
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(uriToCheck);
if (parseMvnUrl != null) {
String repositoryUrl = parseMvnUrl.getRepositoryUrl();
if (!LibraryDataService.getInstance().isBuildLibrariesData()) {
if (StringUtils.isNotEmpty(repositoryUrl)
&& parseMvnUrl.getGroupId().startsWith(MavenConstants.APACHE_GROUP_ID)) {
continue;
}
}
service.fillLibraryDataByRemote(uriToCheck, parseMvnUrl);
if (!MavenConstants.DOWNLOAD_MANUAL.equals(parseMvnUrl.getDistribution())) {
artifactList.add(parseMvnUrl);
@@ -370,7 +377,7 @@ public class RemoteModulesHelper {
}
}
toInstall.add(moduleToInstall);
toInstall.add(moduleToInstall.clone());
iterator.remove();
}
}
@@ -641,7 +648,7 @@ public class RemoteModulesHelper {
public RemoteModulesFetchRunnable getNotInstalledModulesRunnable(List<ModuleNeeded> neededModules,
List<ModuleToInstall> toInstall, boolean collectModulesWithJarName, boolean useLocalLicenseData, boolean onlyUseLocalLicenseData) {
Map<String, List<ModuleNeeded>> contextMap = new HashMap<String, List<ModuleNeeded>>();
ILibraryManagerService librairesManagerService = (ILibraryManagerService) GlobalServiceRegister.getDefault()
ILibraryManagerService librairesManagerService = GlobalServiceRegister.getDefault()
.getService(ILibraryManagerService.class);
// collect mvnuri and modules incase many modules have the same mvnuri
final Iterator<ModuleNeeded> iterator = neededModules.iterator();

View File

@@ -48,7 +48,7 @@
<artifactItem>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<version>1.7.25</version> <!-- Please sync the version with /org.talend.designer.maven.lite/resources/required/pom.xml -->
<overWrite>true</overWrite>
</artifactItem>
</artifactItems>

View File

@@ -28,6 +28,8 @@ ShareLibsJob.message=Share libraries from maven to {0} server
ShareLibsJob.sharingLibraries=Sharing libraries : {0}
ShareLibsJob.monitor.cancelled=User cancelled.
LocalLibraryManager.shareLibsForCustomponents=Sharing libraries for custom components
ExtensionModuleManager.moduleGroup.cycleReference=Module group {0} was cycle referenced!
NexusRepository.checkConnection.successMsg=Connection successful.
NexusRepository.checkConnection.invalidParam=Invalid Nexus Parameter.

View File

@@ -67,11 +67,17 @@ public class LibraryDataService {
private static boolean buildLibraryIfFileMissing = true;
private boolean buildLibraryLicense = false;
/**
* make it as static to avoid call of getInstance, so that we can avoid dead lock in some cases
*/
private static boolean buildLibraryLicense = Boolean
.valueOf(System.getProperty(KEY_LIBRARIES_BUILD_LICENSE, Boolean.FALSE.toString()));
private boolean buildLibraryIfLicenseMissing = false;
private static boolean buildLibraryIfLicenseMissing = Boolean
.valueOf(System.getProperty(KEY_BUILD_LIBRARY_IF_LICENSE_MISSING, Boolean.FALSE.toString()));
private boolean buildLibraryJarFile = false;
private static boolean buildLibraryJarFile = Boolean
.valueOf(System.getProperty(KEY_LIBRARIES_BUILD_JAR, Boolean.FALSE.toString()));
private static final Map<String, Library> mvnToLibraryMap = new ConcurrentHashMap<String, Library>();
@@ -86,10 +92,6 @@ public class LibraryDataService {
private LibraryLicense unknownLicense;;
private LibraryDataService() {
buildLibraryLicense = Boolean.valueOf(System.getProperty(KEY_LIBRARIES_BUILD_LICENSE, Boolean.FALSE.toString()));
buildLibraryIfLicenseMissing = Boolean
.valueOf(System.getProperty(KEY_BUILD_LIBRARY_IF_LICENSE_MISSING, Boolean.FALSE.toString()));
buildLibraryJarFile = Boolean.valueOf(System.getProperty(KEY_LIBRARIES_BUILD_JAR, Boolean.FALSE.toString()));
File studioLibraryDataFile = getStudioLibraryDataFile();
if (buildLibraryLicense) {
if (studioLibraryDataFile.exists()) {
@@ -329,7 +331,11 @@ public class LibraryDataService {
return value.toString();
}
public boolean isBuildLibrariesData() {
public static boolean isBuildLibrariesData() {
/**
* make the method as static to avoid call of getInstance, so that we can avoid dead lock in some cases
*/
if (buildLibraryLicense) {
return true;
}
@@ -348,7 +354,7 @@ public class LibraryDataService {
return new File(Platform.getConfigurationLocation().getURL().getPath(), LIBRARIES_DATA_FILE_NAME);
}
private File getStudioLibraryDataFile() {
private static File getStudioLibraryDataFile() {
String folder = System.getProperty(KEY_LIBRARIES_DATA_FOLDER);
if (folder == null) {
folder = new File(Platform.getInstallLocation().getURL().getPath(), "configuration").getAbsolutePath(); //$NON-NLS-1$

View File

@@ -13,7 +13,6 @@
package org.talend.librariesmanager.maven;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -77,13 +76,13 @@ public abstract class ShareLibrareisHelper {
// collect groupId to search
Set<String> snapshotGroupIdSet = new HashSet<String>();
Set<String> releaseGroupIdSet = new HashSet<String>();
checkCancel(monitor);
ShareLibrariesUtil.checkCancel(monitor);
for (ModuleNeeded module : filesToShare.keySet()) {
checkCancel(monitor);
ShareLibrariesUtil.checkCancel(monitor);
if (module.getMavenUri() != null) {
MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(module.getMavenUri());
if (parseMvnUrl != null) {
if (isSnapshotVersion(parseMvnUrl.getVersion())) {
if (ShareLibrariesUtil.isSnapshotVersion(parseMvnUrl.getVersion())) {
snapshotGroupIdSet.add(parseMvnUrl.getGroupId());
} else {
releaseGroupIdSet.add(parseMvnUrl.getGroupId());
@@ -93,22 +92,24 @@ public abstract class ShareLibrareisHelper {
}
// search from custom artifact repositories if any
seachArtifacts(monitor, customerRepHandler, snapshotArtifactMap, releaseArtifactMap, snapshotGroupIdSet,
ShareLibrariesUtil.seachArtifacts(monitor, customerRepHandler, snapshotArtifactMap, releaseArtifactMap,
snapshotGroupIdSet,
releaseGroupIdSet);
try {
// search from proxy artifact repository if any
seachArtifacts(monitor, proxyArtifactHandler, snapshotArtifactMap, releaseArtifactMap, snapshotGroupIdSet,
ShareLibrariesUtil.seachArtifacts(monitor, proxyArtifactHandler, snapshotArtifactMap, releaseArtifactMap,
snapshotGroupIdSet,
releaseGroupIdSet);
} catch (Exception e) {
ExceptionHandler.process(e);
}
checkCancel(monitor);
ShareLibrariesUtil.checkCancel(monitor);
Iterator<ModuleNeeded> iterator = filesToShare.keySet().iterator();
Map<File, MavenArtifact> shareFiles = new HashMap<>();
while (iterator.hasNext()) {
checkCancel(monitor);
ShareLibrariesUtil.checkCancel(monitor);
ModuleNeeded next = iterator.next();
File file = filesToShare.get(next);
MavenArtifact artifact = MavenUrlHelper.parseMvnUrl(next.getMavenUri());
@@ -118,7 +119,7 @@ public abstract class ShareLibrareisHelper {
// If from custom component definition file
if (LocalLibraryManager.isSystemCacheFile(file.getName())
|| (LocalLibraryManager.isComponentDefinitionFileType(file.getName())
&& isTalendLibraryGroupId(artifact))) {
&& ShareLibrariesUtil.isTalendLibraryGroupId(artifact))) {
continue;
}
try {
@@ -128,7 +129,7 @@ public abstract class ShareLibrareisHelper {
} catch (NumberFormatException e) {
//
}
boolean isSnapshotVersion = isSnapshotVersion(artifact.getVersion());
boolean isSnapshotVersion = ShareLibrariesUtil.isSnapshotVersion(artifact.getVersion());
String key = ShareLibrariesUtil.getArtifactKey(artifact, isSnapshotVersion);
List<MavenArtifact> artifactList = null;
if (isSnapshotVersion) {
@@ -151,7 +152,7 @@ public abstract class ShareLibrareisHelper {
}
SubMonitor mainSubMonitor = SubMonitor.convert(monitor, shareFiles.size());
for (Map.Entry<File, MavenArtifact> entry : shareFiles.entrySet()) {
checkCancel(monitor);
ShareLibrariesUtil.checkCancel(monitor);
try {
File k = entry.getKey();
MavenArtifact v = entry.getValue();
@@ -173,63 +174,12 @@ public abstract class ShareLibrareisHelper {
}
/**
* Search artifacts based on given snapshotGroupIdSet and releaseGroupIdSet from remote artifact repositories
* represented by artifactHandler, the search results are put to snapshotArtifactMap and releaseArtifactMap
*/
protected void seachArtifacts(IProgressMonitor monitor, IRepositoryArtifactHandler artifactHandler,
Map<String, List<MavenArtifact>> snapshotArtifactMap, Map<String, List<MavenArtifact>> releaseArtifactMap,
Set<String> snapshotGroupIdSet, Set<String> releaseGroupIdSet) throws Exception {
if (artifactHandler != null) {
checkCancel(monitor);
List<MavenArtifact> searchResults = new ArrayList<MavenArtifact>();
for (String groupId : releaseGroupIdSet) {
searchResults = artifactHandler.search(groupId, null, null, true, false);
if (searchResults != null) {
for (MavenArtifact result : searchResults) {
checkCancel(monitor);
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
}
}
}
checkCancel(monitor);
for (String groupId : snapshotGroupIdSet) {
searchResults = artifactHandler.search(groupId, null, null, false, true);
if (searchResults != null) {
for (MavenArtifact result : searchResults) {
checkCancel(monitor);
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
}
}
}
}
}
private boolean isTalendLibraryGroupId(MavenArtifact artifact) {
if ("org.talend.libraries".equalsIgnoreCase(artifact.getGroupId())) {
return true;
}
return false;
}
private boolean isSnapshotVersion(String version) {
if (version != null && version.toUpperCase().endsWith(MavenUrlHelper.VERSION_SNAPSHOT)) {
return true;
}
return false;
}
private void setJobName(Job job, String jobName) {
if (job != null) {
job.setName(jobName);
}
}
protected void checkCancel(IProgressMonitor monitor) throws InterruptedException {
if (monitor.isCanceled()) {
throw new InterruptedException(Messages.getString("ShareLibsJob.monitor.cancelled"));
}
}
public abstract Map<ModuleNeeded, File> getFilesToShare(IProgressMonitor monitor);
public abstract void shareToRepository(File jarFile, MavenArtifact module) throws Exception;

View File

@@ -83,6 +83,7 @@ import org.talend.core.model.routines.IRoutinesProvider;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.core.runtime.maven.MavenUrlHelper;
import org.talend.core.runtime.process.TalendProcessOptionConstants;
import org.talend.core.ui.ITestContainerProviderService;
import org.talend.core.utils.CodesJarResourceCache;
import org.talend.core.utils.TalendCacheUtils;
import org.talend.core.utils.TalendQuoteUtils;
@@ -575,6 +576,14 @@ public class ModulesNeededProvider {
}
EList<RoutinesParameterType> routinesParameterTypes = null;
if (item instanceof ProcessItem) {
ITestContainerProviderService testcaseService = ITestContainerProviderService.get();
if (testcaseService != null && testcaseService.isTestContainerItem(item)) {
try {
item = testcaseService.getParentJobItem(item);
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
if (((ProcessItem) item).getProcess() != null && ((ProcessItem) item).getProcess().getParameters() != null) {
routinesParameterTypes = ((ProcessItem) item).getProcess().getParameters().getRoutinesParameter();
}

View File

@@ -29,7 +29,6 @@ import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -68,10 +67,8 @@ import org.talend.core.model.general.ModuleNeeded.ELibraryInstallStatus;
import org.talend.core.model.general.ModuleStatusProvider;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.nexus.IRepositoryArtifactHandler;
import org.talend.core.nexus.NexusConstants;
import org.talend.core.nexus.NexusServerUtils;
import org.talend.core.nexus.RepositoryArtifactHandlerManager;
import org.talend.core.nexus.TalendLibsServerManager;
import org.talend.core.nexus.TalendMavenResolver;
import org.talend.core.prefs.ITalendCorePrefConstants;
@@ -83,10 +80,10 @@ import org.talend.core.utils.TalendQuoteUtils;
import org.talend.designer.maven.tools.BuildCacheManager;
import org.talend.designer.maven.utils.PomUtil;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.librariesmanager.i18n.Messages;
import org.talend.librariesmanager.maven.MavenArtifactsHandler;
import org.talend.librariesmanager.model.ExtensionModuleManager;
import org.talend.librariesmanager.model.ModulesNeededProvider;
import org.talend.librariesmanager.nexus.utils.ShareLibrariesUtil;
import org.talend.librariesmanager.prefs.LibrariesManagerUtils;
import org.talend.osgi.hook.notification.JarMissingObservable;
@@ -124,9 +121,13 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
add(".javajet");
add(".png");
add(".jpg");
add("_java.xml");
add(".xml");
add(".properties");
add(".txt");
add(".class");
add(".mf");
add(".rsa");
add(".sf");
}
};
@@ -1287,7 +1288,7 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
warnDuplicated(modules, duplicateMavenUri, "Maven Uri:");
}
}
if (service != null) {
calculateModulesIndexFromComponentFolder(service, platformURLMap);
}
@@ -1348,138 +1349,87 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
}
}
private boolean isExtComponentProvider(String id) {
if ("org.talend.designer.components.model.UserComponentsProvider".equals(id)
|| "org.talend.designer.codegen.components.model.SharedStudioUserComponentProvider".equals(id)
|| "org.talend.designer.components.exchange.ExchangeComponentsProvider".equals(id)
|| "org.talend.designer.components.exchange.SharedStudioExchangeComponentsProvider".equals(id)) {
return true;
}
return false;
}
private void deployLibsFromCustomComponents(IComponentsService service, Map<String, String> platformURLMap) {
Set<File> needToDeploy = new HashSet<>();
List<ComponentProviderInfo> componentsFolders = service.getComponentsFactory().getComponentsProvidersInfo();
for (ComponentProviderInfo providerInfo : componentsFolders) {
String id = providerInfo.getId();
try {
File file = new File(providerInfo.getLocation());
if (isExtComponentProvider(id)) {
if (file.isDirectory()) {
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null);
if (jarFiles.size() > 0) {
for (File jarFile : jarFiles) {
String name = jarFile.getName();
if (!canDeployFromCustomComponentFolder(name) || platformURLMap.get(name) != null) {
continue;
}
needToDeploy.add(jarFile);
}
}
} else {
if (platformURLMap.get(file.getName()) != null) {
continue;
}
needToDeploy.add(file);
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
continue;
}
}
// deploy needed jars for User and Exchange component providers
Map<String, List<MavenArtifact>> snapshotArtifactMap = new HashMap<String, List<MavenArtifact>>();
Map<String, List<MavenArtifact>> releaseArtifactMap = new HashMap<String, List<MavenArtifact>>();
if (!needToDeploy.isEmpty()) {
// search on nexus to avoid deploy the jar many times
Set<File> existFiles = new HashSet<>();
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
.getRepositoryHandler(customNexusServer);
if (customerRepHandler != null) {
List<MavenArtifact> snapshotResult = new ArrayList<>();
List<MavenArtifact> releaseResult = new ArrayList<>();
try {
snapshotResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, false, true);
if (snapshotResult != null) {
for (MavenArtifact result : snapshotResult) {
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
}
}
releaseResult = customerRepHandler.search(MavenConstants.DEFAULT_LIB_GROUP_ID, null, null, true, false);
if (releaseResult != null) {
for (MavenArtifact result : releaseResult) {
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
for(File exsitFile:needToDeploy) {
if (customerRepHandler != null) {
try {
String name = exsitFile.getName();
String mvnUrlSnapshot = MavenUrlHelper.generateMvnUrlForJarName(name, true, true);
MavenArtifact artifactSnapshot = MavenUrlHelper.parseMvnUrl(mvnUrlSnapshot);
String keySnapshot = ShareLibrariesUtil.getArtifactKey(artifactSnapshot, true);
List<MavenArtifact> artifactListSnapshot = null;
artifactListSnapshot = snapshotArtifactMap.get(keySnapshot);
// snapshot
if (artifactListSnapshot != null && artifactListSnapshot.size() > 0) {
if (ShareLibrariesUtil.isSameFileWithRemote(exsitFile, artifactListSnapshot, customNexusServer,
customerRepHandler, false)) {
existFiles.add(exsitFile);
}
}
// release
String mvnUrlRelease = MavenUrlHelper.generateMvnUrlForJarName(name, true, false);
MavenArtifact artifactRelease = MavenUrlHelper.parseMvnUrl(mvnUrlRelease);
String keyRelease = ShareLibrariesUtil.getArtifactKey(artifactRelease, false);
List<MavenArtifact> artifactListRelease = null;
artifactListRelease = releaseArtifactMap.get(keyRelease);
if (artifactListRelease != null && artifactListRelease.size() > 0) {
if (ShareLibrariesUtil.isSameFileWithRemote(exsitFile, artifactListRelease, customNexusServer,
customerRepHandler, false)) {
existFiles.add(exsitFile);
}
}
}catch(Exception e) {
ExceptionHandler.process(e);
}
}
}
needToDeploy.removeAll(existFiles);
// check sha code to avoid same jar in diff component depoly multi times
Map<String, File> shaMap = new HashMap<>();
Iterator<File> it = needToDeploy.iterator();
while (it.hasNext()) {
try {
File dupFile = it.next();
String localFileShaCode = DigestUtils.shaHex(new FileInputStream(dupFile));
if (shaMap.get(localFileShaCode) == null) {
shaMap.put(localFileShaCode, dupFile);
} else {
it.remove();
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
for (File file : needToDeploy) {
try {
// deploy as release version if can't find mvn url from index
install(file, null, true, true);
} catch (Exception e) {
ExceptionHandler.process(e);
continue;
}
}
private boolean isExtComponentProvider(String id) {
if ("org.talend.designer.components.model.UserComponentsProvider".equals(id)
|| "org.talend.designer.codegen.components.model.SharedStudioUserComponentProvider".equals(id)
|| "org.talend.designer.components.exchange.ExchangeComponentsProvider".equals(id)
|| "org.talend.designer.components.exchange.SharedStudioExchangeComponentsProvider".equals(id)) {
return true;
}
return false;
}
private void deployLibsFromCustomComponents(IComponentsService service, Map<String, String> platformURLMap) {
boolean deployToRemote = true;
if (!LibrariesManagerUtils.shareLibsAtStartup()) {
log.info("Skip deploying libs from custom components");
deployToRemote = false;
}
Map<File, Set<MavenArtifact>> needToDeploy = new HashMap<File, Set<MavenArtifact>>();
List<ComponentProviderInfo> componentsFolders = service.getComponentsFactory().getComponentsProvidersInfo();
for (ComponentProviderInfo providerInfo : componentsFolders) {
String id = providerInfo.getId();
try {
File file = new File(providerInfo.getLocation());
if (isExtComponentProvider(id)) {
if (file.isDirectory()) {
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null);
if (jarFiles.size() > 0) {
for (File jarFile : jarFiles) {
String name = jarFile.getName();
if (!canDeployFromCustomComponentFolder(name) || platformURLMap.get(name) != null) {
continue;
}
collectLibModules(jarFile, needToDeploy);
}
}
} else {
if (!canDeployFromCustomComponentFolder(file.getName()) || platformURLMap.get(file.getName()) != null) {
continue;
}
collectLibModules(file, needToDeploy);
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
continue;
}
}
// first install them locally
needToDeploy.forEach((k, v) -> {
try {
// install as release version if can't find mvn url from index
install(k, null, false, true);
} catch (Exception e) {
ExceptionHandler.process(e);
}
});
if (!deployToRemote) {
return;
}
ShareComponentsLibsJob shareJob = new ShareComponentsLibsJob(
Messages.getString("LocalLibraryManager.shareLibsForCustomponents"), needToDeploy, deployer);
shareJob.schedule();
}
private void collectLibModules(File jarFile, Map<File, Set<MavenArtifact>> needToDeploy) {
Map<String,String> mavenUris = new HashMap<String,String>();
guessMavenRUIFromIndex(jarFile, true, mavenUris);
Set<MavenArtifact> artifacts = new HashSet<MavenArtifact>();
for(String uri: mavenUris.keySet()) {
MavenArtifact art = MavenUrlHelper.parseMvnUrl(uri);
if(art!=null) {
artifacts.add(art);
}
}
needToDeploy.put(jarFile, artifacts);
}
private boolean canDeployFromCustomComponentFolder(String fileName) {

View File

@@ -0,0 +1,150 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.librariesmanager.model.service;
import java.io.File;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.nexus.IRepositoryArtifactHandler;
import org.talend.core.nexus.RepositoryArtifactHandlerManager;
import org.talend.core.nexus.TalendLibsServerManager;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.librariesmanager.maven.MavenArtifactsHandler;
import org.talend.librariesmanager.nexus.utils.ShareLibrariesUtil;
/**
* created by bhe
*/
public class ShareComponentsLibsJob extends Job {
private MavenArtifactsHandler deployer;
private Map<File, Set<MavenArtifact>> needToDeploy;
public ShareComponentsLibsJob(String name, Map<File, Set<MavenArtifact>> needToDeploy, MavenArtifactsHandler deployer) {
super(name);
if (needToDeploy == null || deployer == null) {
throw new IllegalArgumentException("needToDeploy or deployer is null!");
}
this.deployer = deployer;
this.needToDeploy = needToDeploy;
}
@Override
protected IStatus run(IProgressMonitor monitor) {
deploy();
return Status.OK_STATUS;
}
private void deploy() {
// deploy needed jars for User and Exchange component providers
Map<String, List<MavenArtifact>> snapshotArtifactMap = new HashMap<String, List<MavenArtifact>>();
Map<String, List<MavenArtifact>> releaseArtifactMap = new HashMap<String, List<MavenArtifact>>();
if (!needToDeploy.isEmpty()) {
// collect groupId to search
Set<String> snapshotGroupIdSet = new HashSet<String>();
Set<String> releaseGroupIdSet = new HashSet<String>();
Set<Entry<File, Set<MavenArtifact>>> entries = needToDeploy.entrySet();
for (Entry<File, Set<MavenArtifact>> entry : entries) {
for (MavenArtifact art : entry.getValue()) {
if (ShareLibrariesUtil.isSnapshotVersion(art.getVersion())) {
snapshotGroupIdSet.add(art.getGroupId());
} else {
releaseGroupIdSet.add(art.getGroupId());
}
}
}
// search on nexus to avoid deploy the jar many times
Map<File, Set<MavenArtifact>> shareFiles = new HashMap<File, Set<MavenArtifact>>();
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
.getRepositoryHandler(customNexusServer);
if (customerRepHandler != null) {
try {
ShareLibrariesUtil.seachArtifacts(null, customerRepHandler, snapshotArtifactMap, releaseArtifactMap,
snapshotGroupIdSet, releaseGroupIdSet);
} catch (Exception e1) {
ExceptionHandler.process(e1);
}
for (Entry<File, Set<MavenArtifact>> entry : entries) {
Set<MavenArtifact> toShareArtifacts = new HashSet<MavenArtifact>();
for (MavenArtifact art : entry.getValue()) {
boolean isSnapshotVersion = ShareLibrariesUtil.isSnapshotVersion(art.getVersion());
String key = ShareLibrariesUtil.getArtifactKey(art, isSnapshotVersion);
List<MavenArtifact> artifactList = null;
boolean toShare = true;
if (isSnapshotVersion) {
artifactList = snapshotArtifactMap.get(key);
if (artifactList != null && artifactList.size() > 0) {
try {
if (ShareLibrariesUtil.isSameFileWithRemote(entry.getKey(), artifactList, customNexusServer,
customerRepHandler, isSnapshotVersion)) {
toShare = false;
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
} else {
artifactList = releaseArtifactMap.get(key);
// skip checksum for release artifact.
if (artifactList != null && artifactList.contains(art)) {
toShare = false;
}
}
if (toShare) {
toShareArtifacts.add(art);
}
}
if (!toShareArtifacts.isEmpty()) {
shareFiles.put(entry.getKey(), toShareArtifacts);
}
}
// share to remote
Set<Entry<File, Set<MavenArtifact>>> entriesToShare = shareFiles.entrySet();
for (Entry<File, Set<MavenArtifact>> entry : entriesToShare) {
for (MavenArtifact art : entry.getValue()) {
try {
deployer.deploy(entry.getKey().getAbsoluteFile(), art);
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
}
}
}
}
}

View File

@@ -19,14 +19,18 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.map.util.ISO8601Utils;
import org.eclipse.core.runtime.IProgressMonitor;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.nexus.IRepositoryArtifactHandler;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.core.runtime.maven.MavenUrlHelper;
import org.talend.librariesmanager.i18n.Messages;
public class ShareLibrariesUtil {
@@ -139,4 +143,56 @@ public class ShareLibrariesUtil {
}
return classifier;
}
/**
* Search artifacts based on given snapshotGroupIdSet and releaseGroupIdSet from remote artifact repositories
* represented by artifactHandler, the search results are put to snapshotArtifactMap and releaseArtifactMap
*/
public static void seachArtifacts(IProgressMonitor monitor, IRepositoryArtifactHandler artifactHandler,
Map<String, List<MavenArtifact>> snapshotArtifactMap, Map<String, List<MavenArtifact>> releaseArtifactMap,
Set<String> snapshotGroupIdSet, Set<String> releaseGroupIdSet) throws Exception {
if (artifactHandler != null) {
checkCancel(monitor);
List<MavenArtifact> searchResults = new ArrayList<MavenArtifact>();
for (String groupId : releaseGroupIdSet) {
searchResults = artifactHandler.search(groupId, null, null, true, false);
if (searchResults != null) {
for (MavenArtifact result : searchResults) {
checkCancel(monitor);
ShareLibrariesUtil.putArtifactToMap(result, releaseArtifactMap, false);
}
}
}
checkCancel(monitor);
for (String groupId : snapshotGroupIdSet) {
searchResults = artifactHandler.search(groupId, null, null, false, true);
if (searchResults != null) {
for (MavenArtifact result : searchResults) {
checkCancel(monitor);
ShareLibrariesUtil.putArtifactToMap(result, snapshotArtifactMap, true);
}
}
}
}
}
public static boolean isTalendLibraryGroupId(MavenArtifact artifact) {
if ("org.talend.libraries".equalsIgnoreCase(artifact.getGroupId())) {
return true;
}
return false;
}
public static boolean isSnapshotVersion(String version) {
if (version != null && version.toUpperCase().endsWith(MavenUrlHelper.VERSION_SNAPSHOT)) {
return true;
}
return false;
}
public static void checkCancel(IProgressMonitor monitor) throws InterruptedException {
if (monitor != null && monitor.isCanceled()) {
throw new InterruptedException(Messages.getString("ShareLibsJob.monitor.cancelled"));
}
}
}

View File

@@ -18,11 +18,16 @@ import java.util.List;
import java.util.Set;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.network.NetworkUtil;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.general.ModuleNeeded.ELibraryInstallStatus;
import org.talend.core.model.process.INode;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.designer.core.IDesignerCoreService;
import org.talend.librariesmanager.model.ModulesNeededProvider;
@@ -122,4 +127,15 @@ public class LibrariesManagerUtils {
}
return false;
}
public static boolean shareLibsAtStartup() {
boolean ret = ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT;
try {
IEclipsePreferences node = InstanceScope.INSTANCE.getNode(NetworkUtil.ORG_TALEND_DESIGNER_CORE);
ret = node.getBoolean(ITalendCorePrefConstants.NEXUS_SHARE_LIBS, ITalendCorePrefConstants.NEXUS_SHARE_LIBS_DEFAULT);
} catch (Throwable e) {
ExceptionHandler.process(e);
}
return ret;
}
}

View File

@@ -995,6 +995,12 @@ public class ExtractMetaDataUtils {
}else if(EDatabaseTypeName.SYBASEASE.getDisplayName().equals(dbType)
&& EDatabaseVersion4Drivers.SYBASEIQ_16_SA.getVersionValue().equals(dbVersion)){
driverClassName = EDatabase4DriverClassName.SYBASEIQ_16_SA.getDriverClass();
}else if(EDatabaseTypeName.GREENPLUM.getDisplayName().equals(dbType)
&& EDatabaseVersion4Drivers.GREENPLUM_PSQL.getVersionValue().equals(dbVersion)){
driverClassName = EDatabase4DriverClassName.GREENPLUM_PSQL.getDriverClass();
}else if(EDatabaseTypeName.GREENPLUM.getDisplayName().equals(dbType)
&& EDatabaseVersion4Drivers.GREENPLUM.getVersionValue().equals(dbVersion)){
driverClassName = EDatabase4DriverClassName.GREENPLUM.getDriverClass();
}
}
} else {

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>org.talend.model.migration</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2m.atl.adt.builder.atlBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2m.atl.adt.builder.atlNature</nature>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -1,18 +0,0 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.talend.model.migration;singleton:=true
Bundle-Version: 7.4.1.qualifier
Bundle-ClassPath: .
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.talend.model,
org.apache.log4j,
org.eclipse.m2m.atl.core;visibility:=reexport,
org.eclipse.m2m.atl.engine.emfvm,
org.eclipse.m2m.atl.core.ui.vm,
org.eclipse.m2m.atl.engine.vm,
org.eclipse.m2m.atl.drivers.emf4atl,
org.talend.commons.runtime
Bundle-ActivationPolicy: lazy
Export-Package: org.talend.model.migration

View File

@@ -1 +0,0 @@
jarprocessor.exclude.children=true

View File

@@ -1,18 +0,0 @@
# <copyright>
# </copyright>
#
# $Id$
bin.includes = .,\
META-INF/,\
plugin.xml,\
plugin.properties,\
migration_metamodel/,\
transformation/
jars.compile.order = .
source.. = src/
output.. = bin/
bin.excludes = transformation/development/,\
transformation/top_metadata400to410.atl,\
transformation/tos_metadata400to410.atl

File diff suppressed because one or more lines are too long

View File

@@ -1,746 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<ecore:EPackage xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="connection"
nsURI="http://www.talend.org" nsPrefix="TalendMetadata">
<eClassifiers xsi:type="ecore:EClass" name="Metadata" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1"
eType="//Connection" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Connection" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="version">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="tables" upperBound="-1"
eType="//MetadataTable" containment="true" eOpposite="//MetadataTable/connection"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="queries" eType="//QueriesConnection"
containment="true" eOpposite="//QueriesConnection/connection"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ContextMode">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ContextId">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MetadataColumn" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="defaultValue" defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="talendType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="key" defaultValueLiteral="false">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="nullable" defaultValueLiteral="true">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="length" defaultValueLiteral="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="precision" defaultValueLiteral="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//ELong"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="table" eType="//MetadataTable"
eOpposite="//MetadataTable/columns"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="originalField" defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="pattern" defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="displayField">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="AbstractMetadataObject" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="properties" lowerBound="1"
defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="id">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="comment" defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="label">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="readOnly" volatile="true"
defaultValueLiteral="false">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="synchronised">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="divergency">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MetadataTable" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="tableType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="attachedCDC">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="activatedCDC">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="columns" upperBound="-1"
eType="//MetadataColumn" containment="true" eOpposite="//MetadataColumn/table"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="//Connection"
eOpposite="//Connection/tables"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="Map" instanceClassName="java.util.HashMap"/>
<eClassifiers xsi:type="ecore:EEnum" name="DatabaseProperties">
<eLiterals name="DatabaseType"/>
<eLiterals name="DriverClass" value="1"/>
<eLiterals name="URL" value="2"/>
<eLiterals name="Port" value="3"/>
<eLiterals name="Username" value="4"/>
<eLiterals name="Password" value="5"/>
<eLiterals name="ServerName" value="6"/>
<eLiterals name="DatasourceName" value="7"/>
<eLiterals name="FileFieldName" value="8"/>
<eLiterals name="Schema" value="9"/>
<eLiterals name="SID" value="10"/>
<eLiterals name="SqlSynthax" value="11"/>
<eLiterals name="StringQuote" value="12"/>
<eLiterals name="NullChar" value="13"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FileConnection" abstract="true" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Server" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FilePath" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Format" lowerBound="1"
eType="//FileFormat"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Encoding" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FieldSeparatorValue" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="RowSeparatorType" lowerBound="1"
eType="//RowSeparator" defaultValueLiteral="Standart_EOL = 1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="RowSeparatorValue">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="TextIdentifier" defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseHeader">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="HeaderValue">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseFooter">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FooterValue">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LimitValue">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FirstLineCaption">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="RemoveEmptyRow">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="EscapeType" lowerBound="1"
eType="//Escape"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="EscapeChar">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="TextEnclosure">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="CsvOption">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DelimitedFileConnection" eSuperTypes="//FileConnection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FieldSeparatorType" lowerBound="1"
defaultValueLiteral="Semicolon">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="splitRecord" defaultValueLiteral="false">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PositionalFileConnection" eSuperTypes="//FileConnection"/>
<eClassifiers xsi:type="ecore:EClass" name="EbcdicConnection" eSuperTypes="//FileConnection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="MidFile">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DataFile">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MDMConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Username">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Password">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Port">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Server">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Universe">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Datamodel">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Datacluster">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="schemas" upperBound="-1"
eType="//Concept" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="FileFormat">
<eLiterals name="UNIX"/>
<eLiterals name="MAC" value="1"/>
<eLiterals name="WINDOWS" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="FieldSeparator">
<eLiterals name="Tabulation"/>
<eLiterals name="Semicolon" value="1"/>
<eLiterals name="Comma" value="2"/>
<eLiterals name="Space" value="3"/>
<eLiterals name="Alt_65" value="4" literal="''(Alt 65, #A4)"/>
<eLiterals name="Custom_ANSI" value="5"/>
<eLiterals name="Custom_UTF8" value="6"/>
<eLiterals name="Custom_RegExp" value="7"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="Escape">
<eLiterals name="Delimited" value="1"/>
<eLiterals name="CSV"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" name="RowSeparator">
<eLiterals name="Custom_String" literal="Custom String"/>
<eLiterals name="Standart_EOL" value="1" literal="Standart EOL"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="DatabaseConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DatabaseType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DriverJarPath">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DriverClass">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="URL">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="dbVersionString">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Port">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Username">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Password">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ServerName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DatasourceName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FileFieldName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Schema">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SID">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SqlSynthax">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="StringQuote" defaultValueLiteral="&quot;">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="NullChar" defaultValueLiteral="000">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DbmsId">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ProductId">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DBRootPath">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="AdditionalParams">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="StandardSQL">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SystemSQL">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="cdcConns" eType="//CDCConnection"
containment="true" eOpposite="//CDCConnection/connection"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="cdcTypeMode">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SQLMode" defaultValueLiteral="true"
unsettable="true">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SAPConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Host">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Username">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Password">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Client">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SystemNumber">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Language">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="Funtions" upperBound="-1"
eType="//SAPFunctionUnit" containment="true" eOpposite="//SAPFunctionUnit/connection"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="currentFucntion">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SAPFunctionUnit" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Name">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="OutputType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="OutputTableName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Document">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="InputParameterTable" eType="//InputSAPFunctionParameterTable"
containment="true" eOpposite="//InputSAPFunctionParameterTable/functionUnit"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="OutputParameterTable" eType="//OutputSAPFunctionParameterTable"
containment="true" eOpposite="//OutputSAPFunctionParameterTable/functionUnit"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="MetadataTable" eType="//MetadataTable"
containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="//SAPConnection"
eOpposite="//SAPConnection/Funtions"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="tables" upperBound="-1"
eType="//MetadataTable" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="TestInputParameterTable"
eType="//SAPTestInputParameterTable" containment="true" eOpposite="//SAPTestInputParameterTable/functionUnit"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SAPFunctionParameterColumn" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Name">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ParameterType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="StructureOrTableName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="DataType">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Length">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Description">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Value">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="ParameterTable" eType="//SAPFunctionParameterTable"
eOpposite="//SAPFunctionParameterTable/columns"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SAPFunctionParameterTable" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EReference" name="columns" upperBound="-1"
eType="//SAPFunctionParameterColumn" containment="true" eOpposite="//SAPFunctionParameterColumn/ParameterTable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InputSAPFunctionParameterTable" eSuperTypes="//SAPFunctionParameterTable">
<eStructuralFeatures xsi:type="ecore:EReference" name="functionUnit" eType="//SAPFunctionUnit"
eOpposite="//SAPFunctionUnit/InputParameterTable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OutputSAPFunctionParameterTable" eSuperTypes="//SAPFunctionParameterTable">
<eStructuralFeatures xsi:type="ecore:EReference" name="functionUnit" eType="//SAPFunctionUnit"
eOpposite="//SAPFunctionUnit/OutputParameterTable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RegexpFileConnection" eSuperTypes="//FileConnection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FieldSeparatorType" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="XmlFileConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="XsdFilePath">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="XmlFilePath">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Guess">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="MaskXPattern">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="schema" upperBound="-1"
eType="//XmlXPathLoopDescriptor" containment="true" eOpposite="//XmlXPathLoopDescriptor/connection"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Encoding">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SchemaTarget">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="RelativeXPathQuery">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="TagName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="schema" eType="//XmlXPathLoopDescriptor"
eOpposite="//XmlXPathLoopDescriptor/schemaTargets"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="QueriesConnection">
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="//Connection"
resolveProxies="false" eOpposite="//Connection/queries"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="query" upperBound="-1"
eType="//Query" containment="true" eOpposite="//Query/queries"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Query" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="queries" eType="//QueriesConnection"
eOpposite="//QueriesConnection/query"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="contextMode">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LdifFileConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="value" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="FilePath" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LimitEntry">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Server" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FileExcelConnection" eSuperTypes="//FileConnection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SheetName" lowerBound="1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="sheetColumns" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="firstColumn">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="lastColumn">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="thousandSeparator">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="decimalSeparator">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="advancedSpearator">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="selectAllSheets">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="sheetList">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="XmlXPathLoopDescriptor">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LimitBoucle">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="AbsoluteXPathQuery">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="//XmlFileConnection"
eOpposite="//XmlFileConnection/schema"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="schemaTargets" upperBound="-1"
eType="//SchemaTarget" containment="true" eOpposite="//SchemaTarget/schema"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="GenericSchemaConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingTypeUsed">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="mappingTypeId">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LDAPSchemaConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Host">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Port">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Protocol">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Filter">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Separator">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseAdvanced">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="StorePath">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UseAuthen">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="BindPrincipal">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="BindPassword">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LimitValue">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="EncryptionMethodName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Value" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SavePassword">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Aliases">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Referrals">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="CountLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="TimeOutLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="BaseDNs" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="GetBaseDNsFromRoot">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="ReturnAttributes" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="SelectedDN">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WSDLSchemaConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="WSDL">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="needAuth">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="methodName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="parameters" lowerBound="1"
defaultValueLiteral="">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="UserName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Password">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="useProxy">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyHost">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyPort">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyUser">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyPassword">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Value" upperBound="-1">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="EndpointURI">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="Encoding">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="timeOut">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SalesforceSchemaConnection" eSuperTypes="//Connection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="webServiceUrl">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="userName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="password">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="moduleName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="queryCondition">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="useCustomModuleName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="useProxy">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyHost">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyPort">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyUsername">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="proxyPassword">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="batchSize">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="useHttpProxy">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="useAlphbet" defaultValueLiteral="true">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="timeOut">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" name="List" instanceClassName="java.util.ArrayList"/>
<eClassifiers xsi:type="ecore:EClass" name="CDCConnection">
<eStructuralFeatures xsi:type="ecore:EReference" name="connection" eType="//DatabaseConnection"
eOpposite="//DatabaseConnection/cdcConns"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cdcTypes" upperBound="-1"
eType="//CDCType" containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CDCType" eSuperTypes="//AbstractMetadataObject">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="linkDB">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="subscribers" upperBound="-1"
eType="//SubscriberTable" containment="true"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="cdcConnection" eType="//CDCConnection"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="journalName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SubscriberTable" eSuperTypes="//MetadataTable">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="system">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SAPTestInputParameterTable" eSuperTypes="//SAPFunctionParameterTable">
<eStructuralFeatures xsi:type="ecore:EReference" name="functionUnit" eType="//SAPFunctionUnit"
eOpposite="//SAPFunctionUnit/TestInputParameterTable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Concept" eSuperTypes="//MetadataTable">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LoopExpression">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="LoopLimit">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="conceptTargets" upperBound="-1"
eType="//ConceptTarget" containment="true" eOpposite="//ConceptTarget/schema"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ConceptTarget">
<eStructuralFeatures xsi:type="ecore:EReference" name="schema" eType="//Concept"
eOpposite="//Concept/conceptTargets"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="targetName">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="RelativeLoopExpression">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="HL7Connection" eSuperTypes="//FileConnection">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="StartChar">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="EndChar">
<eType xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>

Some files were not shown because too many files have changed in this diff Show More