Compare commits

...

81 Commits

Author SHA1 Message Date
apoltavtsev
4687a7ffec TESB-25418 Missing commons-parent dependency is added for TOS 2019-05-14 20:31:32 +03:00
chmyga
65b467f574 fix(TUP-21896): replace internal sun classes (#2234)
* Replace internal sun classes with java API classes

* Use default security algorithm instead of X509
2019-05-14 19:40:03 +08:00
slushatel
e0199336ef feat(TDI-41963): change jdbc driver version from 1.2.16.1027 to 1.2.2… (#2303)
* feat(TDI-41963): change jdbc driver version from 1.2.16.1027 to 1.2.20.1043

* feat(TDI-41963): change redshift module name to "redshift-jdbc42-no-awssdk-1.2.20.1043.jar"
2019-05-14 18:45:59 +08:00
kjwang-talend
f807ca1839 TUP-23004 Fail to decrypte password (#2411)
* TUP-23004 Fail to decrypte password
https://jira.talendforge.org/browse/TUP-23004

* TUP-23004 Fail to decrypte password
https://jira.talendforge.org/browse/TUP-23004
2019-05-14 17:01:59 +08:00
Igor Lazebny
8a8d5eeb0a Add crypto-utils version 2019-05-14 11:41:20 +03:00
Igor Lazebny
c968ed321c Add crypto-utils version 2019-05-14 11:40:23 +03:00
hzhao-talendbj
394a29cca2 change from https://www.talend.com to https://talend-update.talend.com (#2410) 2019-05-13 20:01:21 +08:00
hwang-talend
c6696371b2 bugfix(TUP-22426):[6.5.1]Test Case generation on tRunJob gives (#2398)
bugfix(TUP-22426):[6.5.1]Test Case generation on tRunJob gives compilation error "row1 cannot be resolved to a variable"
2019-05-13 10:37:13 +08:00
hwang-talend
3b582b21fc bugfix(TUP-22841):Cannot automap interval data type for Vertica database (#2406)
bugfix(TUP-22841):Cannot automap interval data type for Vertica database
2019-05-13 10:16:19 +08:00
Chao MENG
fa88cc5613 fix(TUP-22906): Job working in 6.3.1 fails to generate in 7.1.1 : Failed (#2394)
fix(TUP-22906): Job working in 6.3.1 fails to generate in 7.1.1 : Failed to generate code. /java.lang.reflect.InvocationTargetException
/java.lang.NullPointerException
https://jira.talendforge.org/browse/TUP-22906
2019-05-10 19:18:03 +08:00
Mike Yan
da2413c87c fix(TESB-24663): Remove "DOCTYPE" declaration for camel components (#2405) 2019-05-10 11:58:14 +02:00
kjwang-talend
a1ea92865b Fix TUP-21510 Update PasswordEncryptUtil (Update crypto-utils version) (#2400)
* Fix TUP-21510 Update PasswordEncryptUtil (Update crypto-utils version)
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil (Fix junit)
https://jira.talendforge.org/browse/TUP-21510
2019-05-10 16:34:57 +08:00
qiongli
acce4c5e8f fix(TDQ-16331)use 'select version()' to get correct version for Mysql (#2396)
* fix(TDQ-16331)use 'select version()' to get correct version for Mysql
2019-05-10 11:28:27 +08:00
zshen-talend
7ce62fc066 fix(TDQ-16872 TUP-22887) create method to keep custom attribute after (#2391) 2019-05-10 11:25:42 +08:00
wang wei
7f26a779bc fix(TDI-42075): try to remove the osgi dependencies which is introduced from log4j 1.2.17, so update tcompv0 version in studio to apply the fix (#2404) 2019-05-09 18:39:54 +08:00
kuanwang
70bfd5623b TUP-22747 ProcessorUtilitiesTest (#2401) 2019-05-09 14:50:24 +08:00
kjwang-talend
97dd532fdd Fix TUP-21510 Update PasswordEncryptUtil (#2380)
* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil
https://jira.talendforge.org/browse/TUP-21510

* Fix TUP-21510 Update PasswordEncryptUtil (Update slf4j version)
https://jira.talendforge.org/browse/TUP-21510
2019-05-09 11:52:58 +08:00
kuanwang
c9de20238c TUP-22747 MetadataFillFactoryTest (#2397) 2019-05-08 18:48:37 +08:00
hwang-talend
857f5459b6 bugfix(TUP-22222):tXMLMap generates wrong XML when imported schema from (#2385)
bugfix(TUP-22222):tXMLMap generates wrong XML when imported schema from wsdl is used
2019-05-08 18:13:15 +08:00
Chao MENG
76aa39dbd8 fix(TUP-22713): Possible thread lock during git update operation (#2392)
fix(TUP-22713): Possible thread lock during git update operation 
https://jira.talendforge.org/browse/TUP-22713
2019-05-08 15:32:59 +08:00
Jane Ding
e68d27d598 fix(TUP-22783)TELTPOSTGRESQL MAP Join Operator not working in Ubuntu (#2393)
16.04
https://jira.talendforge.org/browse/TUP-22783
2019-05-08 10:13:33 +08:00
Jane Ding
4abb63f274 fix(TUP-22827)Error:java.lang.LinkageError: loader constraint violation (#2389)
occurs while View documentation
https://jira.talendforge.org/browse/TUP-22827
2019-05-07 11:58:34 +08:00
kuanwang
4ad69a33d9 Kwang/tup 22747 dbones (#2388)
* TUP-22747 AbstractTest4ExtractManager and it's children

* TUP-22747 dbs tests
2019-04-29 16:40:50 +08:00
Zhiwei Xue
dd1853cf85 fix(TUP-22772):maven.repository=global doesn't work if set global maven (#2383)
repository to another place
2019-04-29 13:55:31 +08:00
Jane Ding
20656380ab fix(TUP-22735) fix wrong project migrations (#2386)
https://jira.talendforge.org/browse/TUP-22735
Conflicts:
	main/plugins/org.talend.core.repository/src/main/java/org/talend/core/repository/utils/ProjectDataJsonProvider.java
2019-04-29 11:22:06 +08:00
jiezhang-tlnd
43021956a4 fix(TUP-22484)Random issue: Compile error for simple job sometimes (#2382)
* fix(TUP-22484)Random issue: Compile error for simple job sometimes

* fix(TUP-22484)Random issue: Compile error for simple job sometimes

* fix(TUP-22484)Random issue: Compile error for simple job sometimes
2019-04-29 10:41:17 +08:00
Jane Ding
8bafc9ace7 fix(TUP-22681)Job in CI Builder gets generated and deployed, but doesn't (#2373)
show as a Tag
https://jira.talendforge.org/browse/TUP-22681
2019-04-26 16:12:34 +08:00
Zhiwei Xue
63f5588fec chore(TUP-22845):Improve Mojo version setup and update Junit. (#2379) 2019-04-26 14:32:25 +08:00
kuanwang
737e502767 Kwang/tup 22672 upgrade jars for powermock (#2361)
* TUP-22672 upgrade jars for powermock after running Junit cases with
java11

* TUP-22672 upgrade jars for powermock after running Junit cases with
java11 -- org.talend.metadata.managment.test

* TUP-22672 add classmexer:
2019-04-26 14:18:32 +08:00
Zhiwei Xue
da191288c5 fix(TUP-22806):Error pop up when build out job (#2376) 2019-04-24 16:01:14 +08:00
Mike Yan
f45a5ce571 fix(TESB-25657): Removed patch classifier for feature maven plugin (#2374) 2019-04-24 11:53:19 +08:00
Zhiwei Xue
b427e62f6e fix(TUP-22803):avoid to overwrite jars (#2372) 2019-04-23 19:34:29 +08:00
zshen-talend
667ceea4de fix(TDQ-16734): make sure Regex indicator supported on MariaDB (#2364) 2019-04-23 16:46:09 +08:00
Chao MENG
a6afca4ea5 feat(TUP-21546): Add commit mode on the studio (#2357)
* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

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

* feat(TUP-21546): Add commit mode on the studio

https://jira.talendforge.org/browse/TUP-21546
2019-04-23 16:13:56 +08:00
Mike Yan
02302f1116 Yyan/feat(tesb 25283 maven version plugin) (#2371)
* feat(TESB-25283): Add TESB for a patched features-maven-plugin

* feat(TESB-25283): Add build-helper-maven-plugin to deploy feature.xml

* fix(TESB-25283): Remove patch features-maven-plugin for M5
2019-04-23 16:08:36 +08:00
Mike Yan
136ca086a6 feat(TESB-25283): Add TESB for a patched features-maven-plugin (#2370)
* feat(TESB-25283): Add TESB for a patched features-maven-plugin

* feat(TESB-25283): Add build-helper-maven-plugin to deploy feature.xml
2019-04-23 15:30:54 +08:00
jiezhang-tlnd
38070a87f8 fix(TUP-22711)DB2: Cannot save Connection in Edit Connection Window (#2360)
* fix(TUP-22711)DB2: Cannot save Connection in Edit Connection Window

* fix(TUP-22711)DB2: Cannot save Connection in Edit Connection Window
2019-04-23 13:46:29 +08:00
jiezhang-tlnd
8668bd963b fix(TUP-22508)FireBird: Check Connection failed in Context mode (#2358)
* fix(TUP-22508)FireBird: Check Connection failed in Context mode

* fix(TUP-22508)add junits
2019-04-23 13:41:51 +08:00
Zhiwei Xue
1e232d2d40 feat(TUP-22628):Upgrade docker plugin to version 4.0.0 (#2369) 2019-04-23 12:15:41 +08:00
Zhiwei Xue
a9b2e15695 feat(TUP-22630):CI: Ensure all the jars from studio are uploaded to (#2343)
nexus
2019-04-22 16:38:02 +08:00
kjwang-talend
44b583ab0e kjwang/Fix TUP-22686 jars show download link(Fix can't install BPM) (#2367)
* kjwang/Fix TUP-22686 jars show download link(Fix can't install BPM)
https://jira.talendforge.org/browse/TUP-22686

* kjwang/Fix TUP-22686 jars show download link(Fix can't install BPM)
https://jira.talendforge.org/browse/TUP-22686
2019-04-19 19:34:46 +08:00
wang wei
79b2e0ecb8 fix(TDI-42053): [Java 11] Upgrade commons.lang3 version on javajet components(#2332) 2019-04-19 18:02:06 +08:00
nrousseau
c699fb6e6d fix(TUP-22741) change check of dynamic column (#2366) 2019-04-19 17:06:20 +08:00
Hanna Liashchuk
bec94deb0e fix(TBD-8573): new date formats suggestions (#2368) 2019-04-18 16:44:21 +03:00
kjwang-talend
b224b59c54 Fix TUP-22733 Try to delete class JavaHomeUtil (#2362)
https://jira.talendforge.org/browse/TUP-22733
2019-04-18 19:30:51 +08:00
Chao MENG
e485c1860e fix(TUP-22202): Studio will be closed after clicking "Setup routine (#2363)
dependencies" in Git Project

https://jira.talendforge.org/browse/TUP-22202
2019-04-18 15:01:33 +08:00
kjwang-talend
feb0bd5ef7 kjwang/Fix TUP-22686 jars show download link but can't download when run (#2359)
* kjwang/Fix TUP-22686 jars show download link but can't download when run
storm job
https://jira.talendforge.org/browse/TUP-22686

* kjwang/Fix TUP-22686 jars show download link but can't download when run
storm job
https://jira.talendforge.org/browse/TUP-22686

* kjwang/Fix TUP-22686 jars show download link but can't download when run
storm job
https://jira.talendforge.org/browse/TUP-22686
2019-04-17 17:35:26 +08:00
jiezhang-tlnd
09cfffc544 fix(TUP-22337)Border of Contexts in "Create/Edit a context group" dialog (#2347)
isn't static
2019-04-17 16:16:41 +08:00
jiezhang-tlnd
a6ee4c28fb fix(TUP-22655)Can't use DB2 sqlbuilder (#2345)
* fix(TUP-22655)Can't use DB2 sqlbuilder

* TUP(22655)add junits
2019-04-17 16:15:17 +08:00
Zhiwei Xue
f0aa480e42 fix(TUP-22524):add missing dependency for plugin. (#2354) 2019-04-16 11:45:30 +08:00
Zhiwei Xue
993a5b0460 workitem(TUP-22161):Update version of CI plugins. (#2307) 2019-04-16 10:46:01 +08:00
jiezhang-tlnd
6206252ef6 fix(TUP-22484)Random issue: Compile error for simple job sometimes (#2353) 2019-04-16 10:28:38 +08:00
Zhiwei Xue
fab28a3af2 fix(TUP-22524):fix duplicate artifactid. (#2352) 2019-04-15 19:17:16 +08:00
Zhiwei Xue
c3ff8e3891 fix(TUP-22524):upgrade tycho-compiler-jdt version to 1.4.0 (#2350) 2019-04-15 17:03:17 +08:00
kjwang-talend
bd69786c4f kjwang/Feat TUP-21191 Remove any internet check (#2348)
TUP-21191 Remove any internet check from Additional package dialog
2019-04-12 18:59:52 +08:00
Zhiwei Xue
b6bb7ffe65 fix(TUP-21657):There is NPE error after starting studio (#2319) 2019-04-12 16:34:39 +08:00
kjwang-talend
9aa2c69eb4 Kjwang/feat tup 21189 remove jar license (#2223)
* TUP-21189 Remove jar license fetch from studio startup
https://jira.talendforge.org/browse/TUP-21189

* TUP-21189 Remove jar license fetch from studio startup
https://jira.talendforge.org/browse/TUP-21189

* TUP-21189 Improve fetch license feature that can retrieve by
CI/commandline
https://jira.talendforge.org/browse/TUP-21866

* TUP-21189 Improve fetch license feature that can retrieve by
CI/commandline
https://jira.talendforge.org/browse/TUP-21866

* Fix: TUP-21866 Remove jar license fetch from studio startup
https://jira.talendforge.org/browse/TUP-21866
2019-04-12 11:01:49 +08:00
msjian
e75cba9a34 feat(TDQ-16610): add a check snowflake method (#2346) 2019-04-11 18:09:19 +08:00
apoltavtsev
5d2f8fe2c0 TESB-25418 Missing commons-parent dependency is added for TOS 2019-04-11 10:16:13 +03:00
Mike Yan
040cf2dee6 fix(TESB-24789): Remove spring-boot plugin in TOS for microservice (#2342) 2019-04-10 17:57:44 +08:00
Jane Ding
cde7238840 fix(TUP-22182)Non-default Artifactory context path, not working (#2338)
* fix(TUP-22182)Non-default Artifactory context path, not working
https://jira.talendforge.org/browse/TUP-22182

* fix(TUP-22182)Non-default Artifactory context path, not working
https://jira.talendforge.org/browse/TUP-22182
2019-04-10 11:20:47 +08:00
kjwang-talend
b281dcef45 TUP-21308 Fix SSLUtils TLS configuration (#2292)
* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308

* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308

* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308

* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308

* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308

* TUP-21308 Fix SSLUtils TLS configuration
https://jira.talendforge.org/browse/TUP-21308
2019-04-10 11:18:58 +08:00
Chao MENG
50f87d7d92 item(TUP-22610): update tacokit to version 1.1.9 (#2339)
* item(TUP-22610): update tacokit to version 1.1.8

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

* Update pom.xml

Update to 1.1.9-SNAPSHOT
2019-04-09 18:23:49 +08:00
kuanwang
5668a651b2 TUP-22549 ProjectPreferenceManagerTest.testReload (#2340) 2019-04-09 17:50:16 +08:00
nrousseau
0ec10cc9c3 chore(TUP-22343) add public 2019-04-08 17:54:22 +08:00
hcyi
cf74274d63 fix(TUP-22012):Upgrade Teradata driver 16.20 or latest (#2333) 2019-04-08 10:41:48 +08:00
TKaczynski
eb33120cac fix(TBD-7687): tFileInputDelimited issue with separator (#2314)
* fix(TBD-7687): tFileInputDelimited issue with separator

add a null instead of delete the column

* Update StringUtils.java

* Update StringUtils.java

* Update StringUtils.java

* Update StringUtils.java
2019-04-04 13:53:30 +02:00
jiezhang-tlnd
003a31b361 feat(TUP-21678)Provide external JDBC parameters to all our connectors (#2329)
* feat(TUP-21678)Provide external JDBC parameters to all our connectors

* fix(TUP-21678)Provide external JDBC parameters to all our connectors
2019-04-04 18:22:30 +08:00
Jane Ding
fda3573d7c fix(TUP-21920)Nullpointer on build job (#2309)
https://jira.talendforge.org/browse/TUP-21920
Loop dependency classpath issue caused main class not found
2019-04-03 14:59:13 +08:00
hcyi
eecc481d67 fix(TUP-22400):Classcastexception When Retrieving Db BigInt Column Value (#2321)
With tHiveInput Component.
2019-04-03 10:49:22 +08:00
hcyi
113db9246f fix(TUP-22012):Upgrade Teradata driver 16.20 or latest. (#2324) 2019-04-03 10:36:33 +08:00
Liu Xinquan
bfcdd968ed TDQ-16354 TOP i18n preference page (#2311) 2019-04-02 16:35:02 +08:00
nrousseau
f542ab5779 feat(TDI-41943) add missing dependency 2019-04-02 13:37:22 +08:00
kjwang-talend
2a0d494f49 Kjwang/fix tup 22425 stackoverflow (#2322)
* Fix TUP-22425 [7.1.1] Stackoverflow issue in studio
https://jira.talendforge.org/browse/TUP-22425

* Fix TUP-22425 [7.1.1] Stackoverflow issue in studio
https://jira.talendforge.org/browse/TUP-22425
2019-04-02 10:15:23 +08:00
kjwang-talend
fe0eab22bd Fix TUP-22469 Nexus3.15: studio can't detect patch for 701/711 release (#2320)
* Fix TUP-22469 Nexus3.15: studio can't detect patch for 701/711 release
https://jira.talendforge.org/browse/TUP-22469

* Fix TUP-22469 Nexus3.15: studio can't detect patch for 701/711 release
https://jira.talendforge.org/browse/TUP-22469

* Fix TUP-22469 Nexus3.15: studio can't detect patch for 701/711 release
https://jira.talendforge.org/browse/TUP-22469

* Fix TUP-22469 Nexus3.15: studio can't detect patch for 701/711 release
https://jira.talendforge.org/browse/TUP-22469
2019-04-01 16:59:10 +08:00
jiezhang-tlnd
12b9a4eee9 fix(TUP-17925)Sybase connection can check successfully even if a wrong db filled (#2214)
* fix(TUP-17925)Sybase connection can check successfully even if a wrong
db filled

* fix(TUP-17925)check database right or not

* fix(TUP-17925)check the database right or not

* fix(TUP-17925)check the database exist or not

* fix(TUP-17928)check the database existed or not

* fix(TUP-17925)connection can check successfully even if a wrong db
filled

* fix(TUP-17925)Sybase connection can check successfully even if a wrong
db filled
2019-04-01 09:50:42 +08:00
nrousseau
f0e07897a5 feat(TDI-41943) update tcomp/daikon dependencies 2019-03-29 18:00:45 +08:00
dmytroshekera
bb001061e8 fix(TDI-41876):Importing job from 6.2.1 to 7.1.1 is throwing error. (#2310)
apache AVRO schema have default values.
2019-03-28 10:35:09 +02:00
jiezhang-tlnd
bdd9a601b9 fix(TUP-22333)Cannot Edit Context Value in Job->Contexts View (#2316) 2019-03-27 18:27:44 +08:00
zshen-talend
3646a1bcd9 feat(TDQ-16567): support amazon aurora for DQ side (#2295) 2019-03-27 16:00:48 +08:00
kjwang-talend
9125f27236 Kjwang/fix tup 22281 missing jar 2 (#2315)
* TUP-22281 Missing jar in lib folder for Job Server(Solution 2)
https://jira.talendforge.org/browse/TUP-22281

* TUP-22281 Missing jar in lib folder for Job Server(Solution 2)
https://jira.talendforge.org/browse/TUP-22281

* TUP-22281 Missing jar in lib folder for Job Server(Solution 2)
https://jira.talendforge.org/browse/TUP-22281
2019-03-27 10:44:07 +08:00
169 changed files with 4661 additions and 1474 deletions

View File

@@ -10,7 +10,7 @@
<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.5" 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"/>
<import plugin="jackson-mapper-asl" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.xalan" version="0.0.0" match="greaterOrEqual"/>

View File

@@ -8,7 +8,7 @@
<import plugin="org.bouncycastle.bcprov" version="0.0.0" match="greaterOrEqual"/>
<import plugin="com.cedarsoftware.json-io" version="0.0.0" match="greaterOrEqual"/>
<import plugin="com.fasterxml.jackson.core.jackson-annotations" version="2.9.0" match="greaterOrEqual"/>
<import plugin="com.fasterxml.jackson.core.jackson-core" version="2.9.5" match="greaterOrEqual"/>
<import plugin="com.fasterxml.jackson.core.jackson-core" version="2.9.8" match="greaterOrEqual"/>
<import plugin="com.thoughtworks.paranamer" version="0.0.0" match="greaterOrEqual"/>
<import plugin="jackson-core-asl" version="0.0.0" match="greaterOrEqual"/>
<import plugin="jackson-mapper-asl" version="0.0.0" match="greaterOrEqual"/>
@@ -22,5 +22,6 @@
<import plugin="org.slf4j.api" version="0.0.0" match="greaterOrEqual"/>
</requires>
<plugin id="org.talend.daikon" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.talend.daikon.exception" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.talend.utils" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
</feature>

View File

@@ -18,6 +18,7 @@ import org.eclipse.jface.util.Assert;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyAdapter;
@@ -27,7 +28,6 @@ import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -53,7 +53,7 @@ public class ComboxCellEditorImproved extends CellEditor {
/**
* The custom combo box control.
*/
Combo comboBox;
CCombo comboBox;
/**
* Default ComboBoxCellEditor style
@@ -125,7 +125,7 @@ public class ComboxCellEditorImproved extends CellEditor {
*/
protected Control createControl(Composite parent) {
comboBox = new Combo(parent, getStyle());
comboBox = new CCombo(parent, getStyle());
comboBox.setFont(parent.getFont());
comboBox.addKeyListener(new KeyAdapter() {

View File

@@ -0,0 +1,175 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.ui.runtime.utils;
/**
* DOC Administrator class global comment. Detailled comment
*/
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
public class ZipFileUtils {
private static int bufSize = 2048; // size of bytes
public static String zip(String zipDirectory) {
File zipDir = new File(zipDirectory);
return zip(zipDirectory, zipDir.getPath(), false);
}
public static String zip(String zipDirectory, String zipFileName, boolean includeSelfDir) {
File zipDir = new File(zipDirectory);
File[] willZipFileArr;
if (includeSelfDir || zipDir.isFile()) {
willZipFileArr = new File[] { zipDir };
} else {
willZipFileArr = zipDir.listFiles();
}
return zip(willZipFileArr, zipFileName);
}
public static String zip(File[] files, String zipFileName) {
JarOutputStream jarOutput = null;
try {
jarOutput = new JarOutputStream(new FileOutputStream(zipFileName));
for (File file : files) {
zipFiles(file, jarOutput, "");
}
} catch (Exception e) {
ExceptionHandler.process(e);
} finally {
if (jarOutput != null) {
try {
jarOutput.close();
} catch (IOException e) {
ExceptionHandler.process(e);
}
}
}
return null;
}
private static void zipFiles(File file, JarOutputStream jos, String pathName) throws Exception {
String fileName = pathName + file.getName();
if (file.isDirectory()) {
fileName = fileName + "/";
jos.putNextEntry(new JarEntry(fileName));
String fileNames[] = file.list();
if (fileNames != null) {
for (int i = 0; i < fileNames.length; i++) {
zipFiles(new File(file, fileNames[i]), jos, fileName);
}
jos.closeEntry();
}
} else {
JarEntry jarEntry = new JarEntry(fileName);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
jos.putNextEntry(jarEntry);
byte[] buf = new byte[bufSize];
int len;
while ((len = in.read(buf)) >= 0) {
jos.write(buf, 0, len);
}
in.close();
jos.closeEntry();
}
}
public static String unZip(File unZipFile) {
return unZip(unZipFile.getPath(), null);
}
public static String unZip(File unZipFile, String destFileName) {
return unZip(unZipFile.getPath(), destFileName);
}
public static String unZip(String unZipFileName) {
return unZip(unZipFileName, null);
}
public static String unZip(String unZipFileName, String destFileName) {
File unzipFile = new File(unZipFileName);
if (destFileName == null || destFileName.trim().length() == 0) {
destFileName = unzipFile.getParent();
}
File destFile;
ZipFile zipFile = null;
try {
zipFile = new ZipFile(unzipFile, "GBK");
for (Enumeration entries = zipFile.getEntries(); entries.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
destFile = new File(destFileName, entry.getName());
unZipFile(destFile, zipFile, entry);
}
} catch (Exception e) {
ExceptionHandler.process(e);
return e.getMessage();
} finally {
try {
assert zipFile != null;
zipFile.close();
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
return null;
}
private static void unZipFile(File destFile, ZipFile zipFile, ZipEntry entry) throws IOException {
InputStream inputStream;
FileOutputStream fileOut;
if (entry.isDirectory()) {
destFile.mkdirs();
} else {
File parent = destFile.getParentFile();
if (parent != null && !parent.exists()) {
parent.mkdirs();
}
inputStream = zipFile.getInputStream(entry);
fileOut = new FileOutputStream(destFile);
byte[] buf = new byte[bufSize];
int readedBytes;
while ((readedBytes = inputStream.read(buf)) > 0) {
fileOut.write(buf, 0, readedBytes);
}
fileOut.close();
inputStream.close();
}
}
public void setBufSize(int bufSize) {
ZipFileUtils.bufSize = bufSize;
}
}

View File

@@ -21,6 +21,7 @@ import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.talend.utils.security.AESEncryption;
/**
* DOC chuang class global comment. Detailled comment
@@ -85,20 +86,6 @@ public class PasswordEncryptUtil {
return new String(clearByte);
}
private static SecretKey passwordKey = null;
private static String CHARSET = "UTF-8";
private static SecretKey getSecretKeyUTF8() throws Exception {
if (passwordKey == null) {
byte rawKeyData[] = rawKey.getBytes(CHARSET);
DESKeySpec dks = new DESKeySpec(rawKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //$NON-NLS-1$
passwordKey = keyFactory.generateSecret(dks);
}
return passwordKey;
}
/**
* Work for codegen only. and must be same as the routine
* "routines.system.PasswordEncryptUtil.encryptPassword(input)".
@@ -108,12 +95,7 @@ public class PasswordEncryptUtil {
if (input == null) {
return input;
}
SecretKey key = getSecretKeyUTF8();
Cipher c = Cipher.getInstance("DES"); //$NON-NLS-1$
c.init(Cipher.ENCRYPT_MODE, key, secureRandom);
byte[] cipherByte = c.doFinal(input.getBytes(CHARSET));
String dec = Hex.encodeHexString(cipherByte);
return dec;
return AESEncryption.encryptPassword(input);
}
/**
@@ -159,5 +141,4 @@ public class PasswordEncryptUtil {
return value.replaceAll(".", "*"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}

View File

@@ -15,10 +15,13 @@ package org.talend.commons.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Properties;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
@@ -26,6 +29,8 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.URIUtil;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
import org.talend.commons.CommonsPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.i18n.internal.Messages;
/**
@@ -213,6 +218,40 @@ public class VersionUtils {
return version;
}
public static String getMojoVersion(String mojoKey) {
String version = null;
String talendVersion = getTalendVersion();
Properties properties = new Properties();
File file = new Path(Platform.getConfigurationLocation().getURL().getPath()).append("mojo_version.properties").toFile(); //$NON-NLS-1$
if (file.exists()) {
try (InputStream inStream = new FileInputStream(file)) {
properties.load(inStream);
version = properties.getProperty(mojoKey);
} catch (IOException e) {
ExceptionHandler.process(e);
}
if (version != null && !version.startsWith(talendVersion)) {
ExceptionHandler
.process(new Exception(
"Incompatible Mojo version:" + mojoKey + "[" + version + "], use default version.")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
version = null;
}
}
// default version
if (StringUtils.isBlank(version)) {
version = talendVersion;
if (CommonsPlugin.isJUnitTest()) {
productVersion = null;
}
String productVersion = getInternalVersion();
String revision = StringUtils.substringAfterLast(productVersion, "-"); //$NON-NLS-1$
if (("SNAPSHOT").equals(revision) || Pattern.matches("M\\d{1}", revision)) { //$NON-NLS-1$ //$NON-NLS-2$
version += "-" + revision; //$NON-NLS-1$
}
}
return version;
}
public static void clearCache() {
synchronized (VersionUtils.class) {
productVersion = null;

View File

@@ -42,13 +42,15 @@ public class NetworkUtil {
private static final String TALEND_DISABLE_INTERNET = "talend.disable.internet";//$NON-NLS-1$
private static final String HTTP_NETWORK_URL = "https://talend-update.talend.com";
public static boolean isNetworkValid() {
String disableInternet = System.getProperty(TALEND_DISABLE_INTERNET);
if ("true".equals(disableInternet)) { //$NON-NLS-1$
return false;
}
try {
URL url = new URL("https://www.talend.com"); //$NON-NLS-1$
URL url = new URL(HTTP_NETWORK_URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(4000);
conn.setReadTimeout(4000);

View File

@@ -154,7 +154,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau ProjectRepositoryNode constructor comment.
*
*
* @param object
* @param parent
* @param type
@@ -277,7 +277,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
private void deleteHiddenNodes(List<IRepositoryNode> nodes) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IBrandingService.class)) {
IBrandingService service = (IBrandingService) GlobalServiceRegister.getDefault().getService(IBrandingService.class);
IBrandingService service = GlobalServiceRegister.getDefault().getService(IBrandingService.class);
List<IRepositoryNode> hiddens = service.getBrandingConfiguration().getHiddenRepositoryCategory(this, "DI");
for (IRepositoryNode node : hiddens) {
Iterator<IRepositoryNode> it = nodes.iterator();
@@ -384,7 +384,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
private void initNodesFromComponentSerivice(RepositoryNode curParentNode) {
IGenericWizardService wizardService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
wizardService = (IGenericWizardService) GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
wizardService = GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
}
if (wizardService != null) {
List<RepositoryNode> nodes = wizardService.createNodesFromComponentService(curParentNode);
@@ -453,7 +453,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "initializeChildren".
*
*
* @param parent
*/
public void initializeChildren(Object parent) {
@@ -547,8 +547,8 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
RuntimeExceptionHandler.process(e);
}
}
private void addExtraChildren(ERepositoryObjectType contentType, org.talend.core.model.general.Project newProject,
private void addExtraChildren(ERepositoryObjectType contentType, org.talend.core.model.general.Project newProject,
RepositoryNode repositoryNode) throws PersistenceException{
if(contentType != ERepositoryObjectType.METADATA_CONNECTIONS){
return;
@@ -556,7 +556,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
List<ERepositoryObjectType> extraTypes = new ArrayList<ERepositoryObjectType>();
IGenericDBService dbService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericDBService.class)) {
dbService = (IGenericDBService) GlobalServiceRegister.getDefault().getService(
dbService = GlobalServiceRegister.getDefault().getService(
IGenericDBService.class);
}
if(dbService != null){
@@ -645,7 +645,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "addDeletedElements".
*
*
* @param project2
* @param nodes
*/
@@ -654,7 +654,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
List<IRepositoryViewObject> elements = new ArrayList<IRepositoryViewObject>();
ITestContainerProviderService testContainerService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
testContainerService = (ITestContainerProviderService) GlobalServiceRegister.getDefault()
testContainerService = GlobalServiceRegister.getDefault()
.getService(ITestContainerProviderService.class);
}
for (IRepositoryViewObject currentObject : objects) {
@@ -687,7 +687,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "addDeletedElements".
*
*
* @param project2
* @param nodes
*/
@@ -695,7 +695,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
List<IRepositoryNode> rootNodes = rootNode.getChildren();
ITestContainerProviderService testContainerService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
testContainerService = (ITestContainerProviderService) GlobalServiceRegister.getDefault()
testContainerService = GlobalServiceRegister.getDefault()
.getService(ITestContainerProviderService.class);
}
for (IRepositoryViewObject currentObject : elements) {
@@ -726,7 +726,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC hwang Comment method "getTestCaseParent".
*
*
* @param repositoryObjectType
* @param path
* @return
@@ -750,7 +750,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "getFolder".
*
*
* @param repositoryObjectType
* @param path
* @return
@@ -804,7 +804,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "buildFolders".
*
*
* @param currentType
* @param path
* @param nodes
@@ -912,7 +912,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC nrousseau Comment method "addDeletedSubItems".
*
*
* @param item
* @param currentParentNode
*/
@@ -962,7 +962,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
Set<MetadataTable> tables = null;
IGenericWizardService wizardService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
wizardService = (IGenericWizardService) GlobalServiceRegister.getDefault()
wizardService = GlobalServiceRegister.getDefault()
.getService(IGenericWizardService.class);
}
if (wizardService != null && wizardService.isGenericItem(item)) {
@@ -997,9 +997,9 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
}
/**
*
*
* ggu Comment method "isGeneratedJobItem".
*
*
* feature 4393
*/
private boolean isGeneratedJobItem(Item item) {
@@ -1062,7 +1062,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
}
}
}
private void convert(org.talend.core.model.general.Project newProject, Container fromModel, RepositoryNode parent,
ERepositoryObjectType type) {
convert(newProject, fromModel, parent, type, false);
@@ -1128,7 +1128,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
break;
}
}
IBrandingService breaningService = (IBrandingService) GlobalServiceRegister.getDefault()
IBrandingService breaningService = GlobalServiceRegister.getDefault()
.getService(IBrandingService.class);
if (!existSystemFolder && !breaningService.isPoweredOnlyCamel()) {
@@ -1167,7 +1167,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
folder = new RepositoryNode(oFolder, parent, ENodeType.SIMPLE_FOLDER);
if (factory.getStatus(oFolder) != ERepositoryStatus.DELETED) {
parent.getChildren().add(folder);
}
}
}
}
} else {
@@ -1176,9 +1176,9 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
folder = new RepositoryNode(oFolder, parent, ENodeType.SIMPLE_FOLDER);
if (factory.getStatus(oFolder) != ERepositoryStatus.DELETED) {
parent.getChildren().add(folder);
}
}
}
}
}
@@ -1211,7 +1211,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
}
}
}
private RepositoryNode avoidReCreateFolder(RepositoryNode parent, Folder oFolder, boolean extra){
RepositoryNode folder = null;
if(extra){
@@ -1325,7 +1325,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
// node.setParent(recBinNode);
} else {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerCoreService.class)) {
IDesignerCoreService designerCoreService = (IDesignerCoreService) GlobalServiceRegister.getDefault()
IDesignerCoreService designerCoreService = GlobalServiceRegister.getDefault()
.getService(IDesignerCoreService.class);
if (designerCoreService != null) {
for (IRepositoryNode repositoryNode : parent.getChildren()) {
@@ -1377,7 +1377,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC tguiu Comment method "createTables".
*
*
* @param node
* @param repositoryObjectType TODO
* @param iMetadataConnection
@@ -1417,7 +1417,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC cantoine Comment method "createTable".
*
*
* @param node
* @param metadataTable
* @param repositoryObjectType TODO
@@ -1635,7 +1635,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
DatabaseConnectionItem connectionItem = (DatabaseConnectionItem) item;
DatabaseConnection connection = (DatabaseConnection) connectionItem.getConnection();
if (PluginChecker.isCDCPluginLoaded()) {
ICDCProviderService service = (ICDCProviderService) GlobalServiceRegister.getDefault()
ICDCProviderService service = GlobalServiceRegister.getDefault()
.getService(ICDCProviderService.class);
if (service != null && service.canCreateCDCConnection(connection)) {
RepositoryNode cdcNode = new StableRepositoryNode(node,
@@ -1886,7 +1886,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC YeXiaowei Comment method "createSAPFunctionNodes".
*
*
* @param metadataConnection
* @param functionNode
*/
@@ -1926,7 +1926,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC zli Comment method "createSAPIDocNodes".
*
*
* @param recBin
* @param rebObj
* @param metadataConnection
@@ -1961,7 +1961,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC YeXiaowei Comment method "createSAPNode".
*
*
* @param rebObj
* @param functionNode
* @param unit
@@ -1987,7 +1987,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC tguiu Comment method "createMetatable".
*
*
* @param node
* @param table
* @param repositoryObjectType TODO
@@ -2016,7 +2016,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/**
* DOC cantoine Comment method "createQueryNode".
*
*
* @param node
* @param repObj
* @param query
@@ -2032,7 +2032,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/*
* (non-Javadoc)
*
*
* @see org.talend.repository.model.IProjectRepositoryNode#getProject()
*/
@Override
@@ -2101,7 +2101,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
/*
* (non-Javadoc)
*
*
* @see org.talend.repository.model.nodes.IProjectRepositoryNode#getRecBinNode()
*/
@Override
@@ -2124,8 +2124,7 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
String branch = ProjectManager.getInstance().getMainProjectBranch(project);
if ("".equals(branch) || branch == null) { //$NON-NLS-1$
branch = null;
}
if (!branch.contains(SVNConstant.NAME_TRUNK) && !branch.contains(SVNConstant.NAME_BRANCHES)
} else if (!branch.contains(SVNConstant.NAME_TRUNK) && !branch.contains(SVNConstant.NAME_BRANCHES)
&& !branch.contains(SVNConstant.NAME_TAGS)) {
branch = null;
}
@@ -2295,9 +2294,9 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
public IRepositoryNode removeCache(String key) {
return nodeCache.removeCache(key);
}
public void setOptions(int options) {
this.options = options;
}
}

View File

@@ -68,10 +68,8 @@ import org.talend.commons.exception.SystemException;
import org.talend.commons.runtime.model.repository.ERepositoryStatus;
import org.talend.commons.runtime.service.ITaCoKitService;
import org.talend.commons.ui.gmf.util.DisplayUtils;
import org.talend.commons.ui.runtime.CommonUIPlugin;
import org.talend.commons.ui.runtime.exception.MessageBoxExceptionHandler;
import org.talend.commons.utils.data.container.RootContainer;
import org.talend.commons.utils.generation.JavaUtils;
import org.talend.commons.utils.time.TimeMeasure;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.AbstractDQModelService;
@@ -130,7 +128,6 @@ import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.runtime.repository.item.ItemProductKeys;
import org.talend.core.runtime.services.IMavenUIService;
import org.talend.core.runtime.util.ItemDateParser;
import org.talend.core.runtime.util.JavaHomeUtil;
import org.talend.core.service.ICoreUIService;
import org.talend.cwm.helper.SubItemHelper;
import org.talend.cwm.helper.TableHelper;
@@ -213,14 +210,14 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
private ICoreService getCoreService() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreService.class)) {
return (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class);
return GlobalServiceRegister.getDefault().getService(ICoreService.class);
}
return null;
}
private IRunProcessService getRunProcessService() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
return (IRunProcessService) GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
return GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
}
return null;
}
@@ -317,7 +314,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
* @throws LoginException
*/
private void checkProjectCompatibility(Project project) throws LoginException {
IMigrationToolService migrationToolService = (IMigrationToolService) GlobalServiceRegister.getDefault().getService(
IMigrationToolService migrationToolService = GlobalServiceRegister.getDefault().getService(
IMigrationToolService.class);
// update migration system.
migrationToolService.updateMigrationSystem(project.getEmfProject(), false);
@@ -386,7 +383,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
ITDQRepositoryService tdqRepService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
tdqRepService = (ITDQRepositoryService) GlobalServiceRegister.getDefault().getService(
tdqRepService = GlobalServiceRegister.getDefault().getService(
ITDQRepositoryService.class);
}
@@ -523,7 +520,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
checkFileName(projectInfor.getLabel(), RepositoryConstants.PROJECT_PATTERN);
Project toReturn = this.repositoryFactoryFromProvider.createProject(authUser, authPassword, projectInfor);
if (toReturn.isLocal()) {
IMigrationToolService service = (IMigrationToolService) GlobalServiceRegister.getDefault().getService(
IMigrationToolService service = GlobalServiceRegister.getDefault().getService(
IMigrationToolService.class);
service.initNewProjectTasks(toReturn);
}
@@ -853,7 +850,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
if (repositoryObjectType == ERepositoryObjectType.PROCESS && isFullLogonFinished()) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IESBService.class)) {
IESBService service = (IESBService) GlobalServiceRegister.getDefault().getService(IESBService.class);
IESBService service = GlobalServiceRegister.getDefault().getService(IESBService.class);
if (service != null) {
service.refreshOperationLabel(object.getProperty().getId());
}
@@ -920,7 +917,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
if (repositoryObjectType == ERepositoryObjectType.PROCESS && isFullLogonFinished()) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IESBService.class)) {
IESBService service = (IESBService) GlobalServiceRegister.getDefault().getService(IESBService.class);
IESBService service = GlobalServiceRegister.getDefault().getService(IESBService.class);
if (service != null) {
service.refreshOperationLabel(object.getProperty().getId());
}
@@ -931,7 +928,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
}
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
IRunProcessService service = (IRunProcessService) GlobalServiceRegister.getDefault()
IRunProcessService service = GlobalServiceRegister.getDefault()
.getService(IRunProcessService.class);
service.batchDeleteAllVersionTalendJobProject(idList);
}
@@ -2034,6 +2031,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
workspace.setDescription(description);
} catch (CoreException e) {
// do nothing
ExceptionHandler.process(e);
}
}
isCancelled = false;
@@ -2074,7 +2072,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
checkProjectCompatibility(project);
if (GlobalServiceRegister.getDefault().isServiceRegistered(IMavenUIService.class)) {
IMavenUIService mavenUIService = (IMavenUIService) GlobalServiceRegister.getDefault().getService(
IMavenUIService mavenUIService = GlobalServiceRegister.getDefault().getService(
IMavenUIService.class);
if (mavenUIService != null) {
mavenUIService.updateMavenResolver(true);
@@ -2111,7 +2109,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
currentMonitor.beginTask(Messages.getString("ProxyRepositoryFactory.load.componnents"), 1); //$NON-NLS-1$
ICoreUIService coreUiService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreUIService.class)) {
coreUiService = (ICoreUIService) GlobalServiceRegister.getDefault().getService(ICoreUIService.class);
coreUiService = GlobalServiceRegister.getDefault().getService(ICoreUIService.class);
}
if (coreUiService != null) {
coreUiService.componentsReset();
@@ -2144,20 +2142,6 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
if (coreService != null) {
// clean workspace
currentMonitor.beginTask(Messages.getString("ProxyRepositoryFactory.cleanWorkspace"), 1); //$NON-NLS-1$
String specifiedVersion = null;
String currentVersion = JavaUtils.getProjectJavaVersion();
String newVersion = null;
if (CommonUIPlugin.isFullyHeadless()) {
specifiedVersion = JavaHomeUtil.getSpecifiedJavaVersion();
}
if (specifiedVersion == null) {
newVersion = currentVersion != null ? currentVersion : JavaUtils.DEFAULT_VERSION;
} else {
newVersion = specifiedVersion;
}
JavaUtils.updateProjectJavaVersion(newVersion);
TimeMeasure.step("logOnProject", "clean Java project"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -2176,6 +2160,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
coreService.syncAllBeans();
} catch (SystemException e1) {
//
ExceptionHandler.process(e1);
}
}
}
@@ -2205,6 +2190,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
}
} catch (SystemException e) {
// ignore
ExceptionHandler.process(e);
}
if (runProcessService != null && !isCommandLineLocalRefProject) {
@@ -2213,7 +2199,7 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
TimeMeasure.step("logOnProject", "install / setup root poms"); //$NON-NLS-1$ //$NON-NLS-2$
}
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
ITDQRepositoryService tdqRepositoryService = (ITDQRepositoryService) GlobalServiceRegister.getDefault()
ITDQRepositoryService tdqRepositoryService = GlobalServiceRegister.getDefault()
.getService(ITDQRepositoryService.class);
if (tdqRepositoryService != null) {
tdqRepositoryService.initProxyRepository();

View File

@@ -22,15 +22,15 @@ import java.security.Security;
import java.util.Hashtable;
import javax.net.SocketFactory;
import javax.net.ssl.KeyManager;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import org.apache.log4j.Logger;
import org.talend.core.repository.i18n.Messages;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
/**
* This class is used for LDAP. <br/>
*
@@ -218,12 +218,12 @@ public class AdvancedSocketFactory extends SSLSocketFactory {
*/
private void init(KeyStore ks, char password[]) {
SSLContext ctx = null;
javax.net.ssl.KeyManager keyManagers[] = null;
KeyManager keyManagers[] = null;
TrustManager trustManagers[] = null;
try {
if (ks != null) {
KeyManagerFactory kmf = null;
kmf = KeyManagerFactory.getInstance("SunX509"); //$NON-NLS-1$
kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); //$NON-NLS-1$
kmf.init(ks, password);
keyManagers = kmf.getKeyManagers();
}
@@ -236,7 +236,4 @@ public class AdvancedSocketFactory extends SSLSocketFactory {
}
}
static {
Security.addProvider(java.security.Security.getProvider("SUN"));
}
}

View File

@@ -27,13 +27,13 @@ import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import org.apache.log4j.Logger;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.repository.i18n.Messages;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import org.apache.log4j.Logger;
import org.talend.core.repository.i18n.Messages;
/**
* This class is used for verifying CA for LDAP connection.
*
@@ -76,6 +76,26 @@ public class LDAPCATruster implements X509TrustManager {
init();
}
/**
* Comment method "deleteCert".
*
* @param id
* @return
*/
private boolean deleteCert(String id) {
try {
ks.deleteEntry(id);
} catch (KeyStoreException ex) {
return false;
}
return true;
}
/*
* (non-Javadoc)
*
* @see com.sun.net.ssl.X509TrustManager#getAcceptedIssuers()
*/
public X509Certificate[] getAcceptedIssuers() {
if (trustManager == null)
return null;
@@ -157,9 +177,9 @@ public class LDAPCATruster implements X509TrustManager {
*/
private X509TrustManager initTrustManager(KeyStore ks) throws NoSuchAlgorithmException, KeyStoreException {
TrustManagerFactory trustManagerFactory = null;
trustManagerFactory = TrustManagerFactory.getInstance("SunX509"); //$NON-NLS-1$
trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); //$NON-NLS-1$
trustManagerFactory.init(ks);
javax.net.ssl.TrustManager trusts[] = trustManagerFactory.getTrustManagers();
TrustManager trusts[] = trustManagerFactory.getTrustManagers();
return (X509TrustManager) trusts[0];
}
@@ -174,29 +194,28 @@ public class LDAPCATruster implements X509TrustManager {
return false;
}
/*
* (non-Javadoc)
*
* @see com.sun.net.ssl.X509TrustManager#isServerTrusted(java.security.cert.X509Certificate[])
*/
public boolean isServerTrusted(X509Certificate chain[], String authType) {
boolean isTrusted = false;
if (trustManager != null) {
try {
trustManager.checkServerTrusted(chain, authType);
isTrusted = true;
}catch (CertificateException e) {
ExceptionHandler.process(e);
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (trustManager == null)
throw new CertificateException("Trust manager is not initialized");
else
trustManager.checkClientTrusted(chain, authType);
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (trustManager != null) {
try {
trustManager.checkServerTrusted(chain, authType);
return;
} catch(Exception e) {
}
}
if (isTrusted) {
return true;
}
}
X509Certificate ca = getCACert(chain);
if (ca != null) {
if (isAccepted(ca)) {
log.error(Messages.getString("LDAPCATruster.sslError1")); //$NON-NLS-1$
return false;
if (!isAccepted(ca)) {
System.err.println("SSL Error:Server certificate chain verification failed.");
throw new CertificateException("Server certificate chain verification failed.");
}
String id = String.valueOf(System.currentTimeMillis());
X509TrustManager tmpTrustManager = null;
@@ -204,34 +223,26 @@ public class LDAPCATruster implements X509TrustManager {
ks.setCertificateEntry(id, ca);
tmpTrustManager = initTrustManager(ks);
} catch (Exception e) {
log.error(Messages.getString("LDAPCATruster.failedCreateTmp") + e.getMessage()); //$NON-NLS-1$
return false;
System.err.println("ASF Truster: Failed to create tmp trust store : " + e.getMessage());
throw new CertificateException(e);
}
boolean isTmpTrusted = false;
if (tmpTrustManager != null) {
try {
tmpTrustManager.checkServerTrusted(chain, authType);
isTmpTrusted = true;
}catch (CertificateException e) {
ExceptionHandler.process(e);
}
}
if (isTmpTrusted) {
try{
tmpTrustManager.checkServerTrusted(chain, authType);
if (this.isSaveCA) {
saveStore();
trustManager = tmpTrustManager;
}
return true;
} else {
log.error(Messages.getString("LDAPCATruster.sslError2")); //$NON-NLS-1$
return false;
return;
} catch(CertificateException e) {
System.err.println("SSL Error:Server certificate chain verification failed and \\nthe CA is missing.");
throw e;
}
} else {
log.error(Messages.getString("LDAPCATruster.sslError3") //$NON-NLS-1$
+ Messages.getString("LDAPCATruster.noCertificate")); //$NON-NLS-1$
return false;
System.err
.println("SSL Error:CA certificate is not in the server certificate chain.\nPlease use the keytool command to import the server certificate.");
throw new CertificateException("CA certificate is not in the server certificate chain.\\nPlease use the keytool command to import the server certificate.");
}
}
}
/**
* Comment method "saveStore".
@@ -266,18 +277,4 @@ public class LDAPCATruster implements X509TrustManager {
}
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (trustManager == null) {
throw new CertificateException(Messages.getString("LDAPCATruster.failedInitialTrust"));
}
trustManager.checkClientTrusted(chain, authType);
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (!isServerTrusted(chain, authType)) {
throw new CertificateException(Messages.getString("LDAPCATruster.sslError1"));
}
}
}

View File

@@ -21,8 +21,11 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.resources.IContainer;
@@ -274,20 +277,37 @@ public class ProjectDataJsonProvider {
public static void loadMigrationTaskSetting(Project project, InputStream input) throws PersistenceException {
try {
project.eSetDeliver(false);
MigrationTaskSetting migrationTaskSetting = null;
if (input != null) {
migrationTaskSetting = new ObjectMapper().readValue(input, MigrationTaskSetting.class);
}
if (migrationTaskSetting != null) {
MigrationTask fakeTask = createFakeMigrationTask();
List<MigrationTask> allRealTask = new ArrayList<MigrationTask>();
MigrationTask existingFakeTask = null;
for (int i = 0; i < project.getMigrationTask().size(); i++) {
MigrationTask task = (MigrationTask) project.getMigrationTask().get(i);
if (!StringUtils.equals(fakeTask.getId(), task.getId())) {
allRealTask.add(task);
if (StringUtils.equals(fakeTask.getId(), task.getId())) {
existingFakeTask = task;
break;
}
}
project.getMigrationTask().removeAll(allRealTask);
// remove all the migrations from the project
project.getMigrationTask().clear();
if (existingFakeTask != null) {
// keep only the fake migration task of 7.1.1 with new migration index
// re-use the same instance to make sure we keep the same emf id.
project.getMigrationTask().add(existingFakeTask);
}
Set<String> tasksIds = new HashSet<>();
Iterator<MigrationTaskJson> it = migrationTaskSetting.getMigrationTaskList().iterator();
while (it.hasNext()) { // remove duplicates to fix issues found in TUP-22735
MigrationTaskJson task = it.next();
if (tasksIds.contains(task.getId())) {
it.remove();
}
tasksIds.add(task.getId());
}
project.getMigrationTasks().clear();
if (migrationTaskSetting.getMigrationTaskList() != null) {
for (MigrationTaskJson json : migrationTaskSetting.getMigrationTaskList()) {
@@ -305,6 +325,7 @@ public class ProjectDataJsonProvider {
} catch (Exception e) {
throw new PersistenceException(e);
} finally {
project.eSetDeliver(true);
closeInputStream(input);
}
}

View File

@@ -0,0 +1,280 @@
<?xml version="1.0"?>
<mapping>
<dbms product="AMAZON_AURORA" id="amazon_aurora_id" label="Mapping AMAZON_AURORA"
default="true">
<dbTypes>
<dbType type="BIGINT" ignorePre="true"/>
<dbType type="BIGINT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="BINARY" ignorePre="true"/>
<dbType type="BIT" ignorePre="true" />
<dbType type="BLOB" ignoreLen="true" ignorePre="true" />
<dbType type="CHAR" defaultLength="200" ignorePre="true"/>
<dbType type="DATE" ignoreLen="true" ignorePre="true" />
<dbType type="DATETIME" ignoreLen="true" ignorePre="true" />
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10" preBeforelen="false"/>
<dbType type="DOUBLE" defaultLength="20" defaultPrecision="10"/>
<dbType type="DOUBLE UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="ENUM" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT" defaultPrecision="2"/>
<dbType type="FLOAT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="GEOMETRY" ignoreLen="true" ignorePre="true" />
<dbType type="GEOMETRYCOLLECTION" ignoreLen="true" ignorePre="true" />
<dbType type="INT" ignorePre="true" />
<dbType type="INT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="LINESTRING" ignoreLen="true" ignorePre="true" />
<dbType type="LONGTEXT" ignoreLen="true" ignorePre="true" />
<dbType type="LONGBLOB" ignoreLen="true" ignorePre="true"/>
<dbType type="MEDIUMBLOB" ignoreLen="true" ignorePre="true" />
<dbType type="MEDIUMINT" ignorePre="true" />
<dbType type="MEDIUMINT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="MEDIUMTEXT" ignoreLen="true" ignorePre="true" />
<dbType type="MULTILINESTRING" ignoreLen="true" ignorePre="true" />
<dbType type="MULTIPOINT" ignoreLen="true" ignorePre="true" />
<dbType type="MULTIPOLYGON" ignoreLen="true" ignorePre="true" />
<dbType type="POINT" ignoreLen="true" ignorePre="true" />
<dbType type="POLYGON" ignoreLen="true" ignorePre="true" />
<dbType type="SMALLINT" ignorePre="true" />
<dbType type="SMALLINT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="SET" ignoreLen="true" ignorePre="true" />
<dbType type="TEXT" ignoreLen="true" ignorePre="true" />
<dbType type="TIME" ignoreLen="true" ignorePre="true" />
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="true" />
<dbType type="TINYBLOB" ignoreLen="true" ignorePre="true" />
<dbType type="TINYINT" ignorePre="true" />
<dbType type="TINYINT UNSIGNED" ignoreLen="true" ignorePre="true" />
<dbType type="TINYTEXT" ignoreLen="true" ignorePre="true" />
<dbType type="VARBINARY" ignorePre="true" />
<dbType type="VARCHAR" default="true" defaultLength="100" ignorePre="true"/>
<dbType type="YEAR" ignorePre="true"/>
</dbTypes>
<language name="java">
<talendToDbTypes><!-- Adviced mappings -->
<talendType type="id_List"/>
<talendType type="id_Boolean">
<dbType type="BIT" default="true" />
</talendType>
<talendType type="id_Byte">
<dbType type="TINYINT" default="true" />
<dbType type="BIGINT" />
<dbType type="INT" />
<dbType type="MEDIUMINT" />
<dbType type="SMALLINT" />
</talendType>
<talendType type="id_byte[]">
</talendType>
<talendType type="id_Character">
<dbType type="CHAR" default="true" />
<dbType type="VARCHAR"/>
</talendType>
<talendType type="id_Date">
<dbType type="DATE" />
<dbType type="DATETIME" default="true" />
<dbType type="TIME" />
<dbType type="YEAR" />
<dbType type="TIMESTAMP" />
</talendType>
<talendType type="id_BigDecimal">
<dbType type="DECIMAL" default="true" />
<dbType type="FLOAT"/>
<dbType type="DOUBLE" />
</talendType>
<talendType type="id_Double">
<dbType type="DOUBLE" default="true" />
<dbType type="FLOAT"/>
<dbType type="DECIMAL" />
</talendType>
<talendType type="id_Float">
<dbType type="FLOAT" default="true" />
<dbType type="DOUBLE"/>
<dbType type="DECIMAL" />
</talendType>
<talendType type="id_Integer">
<dbType type="INT" default="true" />
<dbType type="BIGINT" />
</talendType>
<talendType type="id_Long">
<dbType type="BIGINT" default="true" />
</talendType>
<talendType type="id_Object">
<dbType type="BLOB" default="true"/>
<dbType type="ENUM" />
<dbType type="GEOMETRY" />
<dbType type="GEOMETRYCOLLECTION" />
<dbType type="MEDIUMINT" />
<dbType type="LONGBLOB" />
<dbType type="MEDIUMBLOB" />
<dbType type="MULTIPOINT" />
<dbType type="MULTIPOLYGON" />
<dbType type="POINT" />
<dbType type="POLYGON" />
<dbType type="SET" />
<dbType type="TINYBLOB" />
</talendType>
<talendType type="id_Short">
<dbType type="SMALLINT" default="true" />
<dbType type="INT" />
<dbType type="BIGINT"/>
<dbType type="MEDIUMINT" />
</talendType>
<talendType type="id_String">
<dbType type="VARCHAR" default="true" />
<dbType type="LINESTRING" />
<dbType type="LONGTEXT"/>
<dbType type="MEDIUMTEXT" />
<dbType type="MULTILINESTRING" />
<dbType type="TEXT" />
<dbType type="TINYTEXT" />
</talendType>
</talendToDbTypes>
<dbToTalendTypes>
<dbType type="BIGINT">
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="BINARY">
<talendType type="id_Boolean" default="true" />
</dbType>
<dbType type="BIT">
<talendType type="id_Boolean" default="true" />
</dbType>
<dbType type="BLOB">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="CHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="DATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="DATETIME">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="DECIMAL">
<talendType type="id_Float"/>
<talendType type="id_Double"/>
<talendType type="id_BigDecimal" default="true"/>
</dbType>
<dbType type="DOUBLE">
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="ENUM">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="FLOAT">
<talendType type="id_Float" default="true" />
<talendType type="id_Double"/>
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="GEOMETRY">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="GEOMETRYCOLLECTION">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="INT">
<talendType type="id_Integer" default="true" />
<talendType type="id_Long"/>
</dbType>
<dbType type="LINESTRING">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="LONGTEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="LONGBLOB">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="MEDIUMBLOB">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="MEDIUMINT">
<talendType type="id_Integer" default="true" />
<talendType type="id_Long"/>
</dbType>
<dbType type="MEDIUMTEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="MULTILINESTRING">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="MULTIPOINT">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="MULTIPOLYGON">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="POINT">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="POLYGON">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="SMALLINT">
<talendType type="id_Short" default="true" />
<talendType type="id_Long"/>
<talendType type="id_Integer"/>
</dbType>
<dbType type="SET">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="TEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="TIME">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TIMESTAMP">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TINYBLOB">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="TINYINT">
<talendType type="id_Byte" default="true" />
<talendType type="id_Integer"/>
<talendType type="id_Long"/>
<talendType type="id_Short"/>
</dbType>
<dbType type="TINYTEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="VARBINARY">
</dbType>
<dbType type="VARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="YEAR">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="BIGINT UNSIGNED" >
</dbType>
<dbType type="DOUBLE UNSIGNED" >
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="FLOAT UNSIGNED" >
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="INT UNSIGNED" >
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="MEDIUMINT UNSIGNED" >
<talendType type="id_Integer" default="true" />
<talendType type="id_Long" />
</dbType>
<dbType type="SMALLINT UNSIGNED" >
<talendType type="id_Integer" default="true" />
<talendType type="id_Long" />
</dbType>
<dbType type="TINYINT UNSIGNED" >
<talendType type="id_Short" default="true" />
<talendType type="id_Integer" />
<talendType type="id_Long" />
</dbType>
</dbToTalendTypes>
</language>
</dbms>
</mapping>

View File

@@ -88,10 +88,8 @@
<talendType type="id_BigDecimal" default="true"/>
</dbType>
<dbType type="BIGINT">
<talendType type="id_BigDecimal" default="true"/>
<talendType type="id_Byte"/>
<talendType type="id_Long" default="true"/>
<talendType type="id_Integer"/>
<talendType type="id_Long"/>
</dbType>
<dbType type="INT">
<talendType type="id_Integer" default="true"/>

View File

@@ -13,6 +13,8 @@
<dbType type="DOUBLE PRECISION" ignoreLen="true" ignorePre="true"/>
<dbType type="DATE" ignoreLen="true" ignorePre="true"/>
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="true"/>
<dbType type="INTERVAL DAY TO SECOND" ignoreLen="true" ignorePre="true"/>
<dbType type="INTERVAL YEAR TO MONTH" ignoreLen="true" ignorePre="true"/>
<dbType type="BINARY" ignorePre="true"/>
<dbType type="VARBINARY" ignorePre="true" />
<dbType type="NUMERIC" defaultLength="10" defaultPrecision="5"/>
@@ -46,6 +48,8 @@
<talendType type="id_Date">
<dbType type="DATE" default="true" />
<dbType type="TIMESTAMP"/>
<dbType type="INTERVAL DAY TO SECOND"/>
<dbType type="INTERVAL YEAR TO MONTH"/>
</talendType>
<talendType type="id_Double">
<dbType type="DOUBLE PRECISION" default="true" />
@@ -121,6 +125,12 @@
<dbType type="TIMESTAMP">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="INTERVAL DAY TO SECOND">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="INTERVAL YEAR TO MONTH">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="BINARY">
<talendType type="id_byte[]" default="true" />
</dbType>

View File

@@ -22,98 +22,105 @@ import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants
*/
public enum EDatabaseTypeName {
MYSQL(
"MySQL", "MySQL", Boolean.FALSE, "MYSQL", "MYSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"MySQL", "MySQL", Boolean.FALSE, "MYSQL", "MYSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
AMAZON_AURORA(
"Amazon Aurora", "Amazon Aurora", Boolean.FALSE, "AMAZON_AURORA", "AMAZON_AURORA", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"Amazon Aurora", "Amazon Aurora", Boolean.FALSE, "AMAZON_AURORA", "AMAZON_AURORA", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
PSQL(
"PostgreSQL", "PostgreSQL", Boolean.TRUE, "POSTGRESQL", "POSTGRE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"PostgreSQL", "PostgreSQL", Boolean.TRUE, "POSTGRESQL", "POSTGRE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
PLUSPSQL(
"PostgresPlus", "PostgresPlus", Boolean.TRUE, "POSTGRESPLUS", "POSTGREPLUS", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"PostgresPlus", "PostgresPlus", Boolean.TRUE, "POSTGRESPLUS", "POSTGREPLUS", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ORACLEFORSID(
"ORACLE_SID", "Oracle with SID", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"ORACLE_SID", "Oracle with SID", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ORACLESN(
"ORACLE_SERVICE_NAME", "Oracle with service name", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"ORACLE_SERVICE_NAME", "Oracle with service name", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ORACLE_OCI(
"ORACLE_OCI", "Oracle OCI", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"ORACLE_OCI", "Oracle OCI", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
ORACLE_CUSTOM(
"ORACLE_CUSTOM", "Oracle Custom", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"ORACLE_CUSTOM", "Oracle Custom", Boolean.TRUE, "ORACLE", "DBORACLE", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
/**
* @deprecated odbc is not supported in java8
*/
GODBC(
"Generic ODBC", "Generic ODBC (Unsupported)", Boolean.FALSE, "ODBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Generic ODBC", "Generic ODBC (Unsupported)", Boolean.FALSE, "ODBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
/**
* @deprecated odbc is not supported in java8
*/
MSODBC(
"Microsoft SQL (Odbc driver)", "Microsoft SQL Server (Odbc driver, Unsupported)", Boolean.FALSE, "ODBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Microsoft SQL (Odbc driver)", "Microsoft SQL Server (Odbc driver, Unsupported)", Boolean.FALSE, "ODBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
IBMDB2(
"IBM DB2", "IBM DB2", Boolean.TRUE, "IBM_DB2", "DB2", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"IBM DB2", "IBM DB2", Boolean.TRUE, "IBM_DB2", "DB2", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
IBMDB2ZOS(
"IBM DB2 ZOS", "IBM DB2 ZOS", Boolean.TRUE, "IBM_DB2", "DB2", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"IBM DB2 ZOS", "IBM DB2 ZOS", Boolean.TRUE, "IBM_DB2", "DB2", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
SYBASEASE(
"SybaseASE", "Sybase (ASE and IQ)", Boolean.TRUE, "SYBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"SybaseASE", "Sybase (ASE and IQ)", Boolean.TRUE, "SYBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// this Sybase IQ not used.
SYBASEIQ(
"Sybase IQ", "Sybase IQ", Boolean.TRUE, "SYBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Sybase IQ", "Sybase IQ", Boolean.TRUE, "SYBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
MSSQL(
"MSSQL", "Microsoft SQL Server", Boolean.TRUE, "SQL_SERVER", "MSSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"MSSQL", "Microsoft SQL Server", Boolean.TRUE, "SQL_SERVER", "MSSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
MSSQL05_08(
"MSSQL", "Microsoft SQL Server 2005/2008", Boolean.TRUE, "SQL_SERVER", "MSSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"MSSQL", "Microsoft SQL Server 2005/2008", Boolean.TRUE, "SQL_SERVER", "MSSQL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
// this don't use in Branch 2.0
HSQLDB("HSQLDB", "HSQLDB", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HSQLDB(
"HSQLDB", "HSQLDB", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HSQLDB_SERVER(
"HSQLDB Server", "HSQLDB Server", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"HSQLDB Server", "HSQLDB Server", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HSQLDB_WEBSERVER(
"HSQLDB WebServer", "HSQLDB WebServer", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"HSQLDB WebServer", "HSQLDB WebServer", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HSQLDB_IN_PROGRESS(
"HSQLDB In-Process", "HSQLDB In-Process", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"HSQLDB In-Process", "HSQLDB In-Process", Boolean.FALSE, "HSQLDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JAVADB("JavaDB", "JavaDB", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JAVADB(
"JavaDB", "JavaDB", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
INGRES(
"Ingres", "Ingres", Boolean.FALSE, "INGRES", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), // "INGRES"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Ingres", "Ingres", Boolean.FALSE, "INGRES", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), // "INGRES"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
INTERBASE(
"Interbase", "Interbase", Boolean.FALSE, "INTERBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "INTERBASE"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
SQLITE("SQLite", "SQLite", Boolean.FALSE, "SQLITE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "SQLITE"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Interbase", "Interbase", Boolean.FALSE, "INTERBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "INTERBASE"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
SQLITE(
"SQLite", "SQLite", Boolean.FALSE, "SQLITE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "SQLITE"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
FIREBIRD(
"FireBird", "FireBird", Boolean.FALSE, "FIREBIRD", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "FIREBIRD"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"FireBird", "FireBird", Boolean.FALSE, "FIREBIRD", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "FIREBIRD"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
INFORMIX(
"Informix", "Informix", Boolean.TRUE, "INFORMIX", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "INFORMIX"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Informix", "Informix", Boolean.TRUE, "INFORMIX", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), // "INFORMIX"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
VECTORWISE(
"VectorWise", "VectorWise", Boolean.FALSE, "VECTORWISE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"VectorWise", "VectorWise", Boolean.FALSE, "VECTORWISE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ACCESS(
"Access", "Access", Boolean.FALSE, "ACCESS", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Default_Name), // "ACCESS"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Access", "Access", Boolean.FALSE, "ACCESS", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Default_Name), // "ACCESS"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
TERADATA(
"Teradata", "Teradata", Boolean.TRUE, "TERADATA", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), // "TERADATA"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
AS400("AS400", "AS400", Boolean.FALSE, "AS400", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Login), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"Teradata", "Teradata", Boolean.TRUE, "TERADATA", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), // "TERADATA"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
AS400(
"AS400", "AS400", Boolean.FALSE, "AS400", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Login), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JAVADB_EMBEDED(
"JavaDB Embeded", "JavaDB Embeded", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"JavaDB Embeded", "JavaDB Embeded", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JAVADB_JCCJDBC(
"JavaDB JCCJDBC", "JavaDB JCCJDBC", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"JavaDB JCCJDBC", "JavaDB JCCJDBC", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
JAVADB_DERBYCLIENT(
"JavaDB DerbyClient", "JavaDB DerbyClient", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"JavaDB DerbyClient", "JavaDB DerbyClient", Boolean.FALSE, "JAVADB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
VERTICA(
"Vertica", "Vertica", Boolean.TRUE, "VERTICA", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
MAXDB("MAXDB", "MaxDB", Boolean.FALSE, "MAXDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
MAXDB(
"MAXDB", "MaxDB", Boolean.FALSE, "MAXDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
GREENPLUM(
"Greenplum", "Greenplum", Boolean.TRUE, "GREENPLUM", "GREENPLUM", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"Greenplum", "Greenplum", Boolean.TRUE, "GREENPLUM", "GREENPLUM", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
PARACCEL(
"ParAccel", "ParAccel", Boolean.TRUE, "PARACCEL", "PARACCEL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"ParAccel", "ParAccel", Boolean.TRUE, "PARACCEL", "PARACCEL", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
NETEZZA(
"Netezza", "Netezza", Boolean.FALSE, "NETEZZA", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
SAS("SAS", "SAS", Boolean.TRUE, "SAS", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// General JDBC not support schema defalut
GENERAL_JDBC(
"General JDBC", "General JDBC", Boolean.FALSE, "JDBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
EXASOL("Exasol", "Exasol", Boolean.TRUE, "Exasol", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"General JDBC", "General JDBC", Boolean.FALSE, "JDBC", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
EXASOL(
"Exasol", "Exasol", Boolean.TRUE, "Exasol", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HIVE("Hive", "Hive", Boolean.FALSE, "HIVE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HIVE(
"Hive", "Hive", Boolean.FALSE, "HIVE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
SAPHana(
"SAPHana", "SAPHana", Boolean.TRUE, "SAPHANA", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -121,24 +128,23 @@ public enum EDatabaseTypeName {
H2("H2", "H2", Boolean.FALSE, "H2", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.None), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
REDSHIFT(
"Redshift", "Redshift", Boolean.TRUE, "REDSHIFT", "REDSHIFT", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
REDSHIFT_SSO(
"Redshift SSO", //$NON-NLS-1$
"Redshift SSO", //$NON-NLS-1$
Boolean.TRUE,
"REDSHIFT", //$NON-NLS-1$
"REDSHIFT SSO", //$NON-NLS-1$
EDatabaseSchemaOrCatalogMapping.Sid,
EDatabaseSchemaOrCatalogMapping.Schema),
"Redshift", "Redshift", Boolean.TRUE, "REDSHIFT", "REDSHIFT", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
REDSHIFT_SSO("Redshift SSO", //$NON-NLS-1$
"Redshift SSO", //$NON-NLS-1$
Boolean.TRUE,
"REDSHIFT", //$NON-NLS-1$
"REDSHIFT SSO", //$NON-NLS-1$
EDatabaseSchemaOrCatalogMapping.Sid,
EDatabaseSchemaOrCatalogMapping.Schema),
IMPALA(
"IMPALA", "Impala", Boolean.TRUE, "IMPALA", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"IMPALA", "Impala", Boolean.TRUE, "IMPALA", EDatabaseSchemaOrCatalogMapping.None, EDatabaseSchemaOrCatalogMapping.Schema), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
HBASE(
"HBase", "HBase", Boolean.FALSE, "HBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Column_Family, true), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"HBase", "HBase", Boolean.FALSE, "HBASE", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Column_Family, true), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
MAPRDB(
"MapRDB", "MapRDB", Boolean.FALSE, "MAPRDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Column_Family, true);//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"MapRDB", "MapRDB", Boolean.FALSE, "MAPRDB", EDatabaseSchemaOrCatalogMapping.Sid, EDatabaseSchemaOrCatalogMapping.Column_Family, true);//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// displayName is used in Java code.
private String displayName;
@@ -322,11 +328,24 @@ public enum EDatabaseTypeName {
boolean isSupport = true;
if (EDatabaseTypeName.GODBC == this || EDatabaseTypeName.MSODBC == this) {
boolean isSupportODBC = CoreRuntimePlugin.getInstance().getProjectPreferenceManager()
.getBoolean(IProjectSettingPreferenceConstants.METADATA_DBCONNECTION_ODBC_ENABLE);
boolean isSupportODBC =
CoreRuntimePlugin
.getInstance()
.getProjectPreferenceManager()
.getBoolean(IProjectSettingPreferenceConstants.METADATA_DBCONNECTION_ODBC_ENABLE);
isSupport = isSupportODBC;
}
return isSupport;
}
/**
* Getter for dbType.
*
* @return the dbType
*/
public String getDbType() {
return this.dbType;
}
}

View File

@@ -96,11 +96,11 @@ public enum EDatabaseConnTemplate {
"jdbc:sqlanywhere:Host=<host>:<port>;DatabaseName=<sid>;<property>", //$NON-NLS-1$
"2638")), //$NON-NLS-1$
IBMDB2(new DbConnStr(EDatabaseTypeName.IBMDB2, //
"jdbc:db2://<host>:<port>/<sid>", //$NON-NLS-1$
"jdbc:db2://<host>:<port>/<sid>:<property>", //$NON-NLS-1$
"50000")), //$NON-NLS-1$
IBMDB2_ZOS(new DbConnStr(EDatabaseTypeName.IBMDB2ZOS, //
"jdbc:db2://<host>:<port>/<sid>", //$NON-NLS-1$
"jdbc:db2://<host>:<port>/<sid>:<property>", //$NON-NLS-1$
"557")), //$NON-NLS-1$
SQLITE(new DbConnStr(EDatabaseTypeName.SQLITE, //
@@ -145,11 +145,11 @@ public enum EDatabaseConnTemplate {
"1527")), //$NON-NLS-1$
HSQLDB_SERVER(new DbConnStr(EDatabaseTypeName.HSQLDB_SERVER, //
"jdbc:hsqldb:hsql://<host>:<port>/<sid>", //$NON-NLS-1$
"jdbc:hsqldb:hsql://<host>:<port>/<sid>;<property>", //$NON-NLS-1$
"9001")), //$NON-NLS-1$
HSQLDB_WEBSERVER(new DbConnStr(EDatabaseTypeName.HSQLDB_WEBSERVER, //
"jdbc:hsqldb:http://<host>:<port>/<sid>", //$NON-NLS-1$
"jdbc:hsqldb:http://<host>:<port>/<sid>;<property>", //$NON-NLS-1$
"9001")), //$NON-NLS-1$
HSQLDB_IN_PROGRESS(new DbConnStr(EDatabaseTypeName.HSQLDB_IN_PROGRESS, //
@@ -182,7 +182,7 @@ public enum EDatabaseConnTemplate {
"5439",//$NON-NLS-1$
"")), //$NON-NLS-1$
NETEZZA(new DbConnStr(EDatabaseTypeName.NETEZZA, //
"jdbc:netezza://<host>:<port>/<sid>", //$NON-NLS-1$
"jdbc:netezza://<host>:<port>/<sid>;<property>", //$NON-NLS-1$
"5480")), //$NON-NLS-1$
VERTICA(new DbConnStr(EDatabaseTypeName.VERTICA, //
@@ -306,7 +306,7 @@ public enum EDatabaseConnTemplate {
List<ERepositoryObjectType> extraTypes = new ArrayList<ERepositoryObjectType>();
IGenericDBService dbService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericDBService.class)) {
dbService = (IGenericDBService) GlobalServiceRegister.getDefault().getService(
dbService = GlobalServiceRegister.getDefault().getService(
IGenericDBService.class);
}
if(dbService != null){
@@ -420,6 +420,11 @@ public enum EDatabaseConnTemplate {
case JAVADB_JCCJDBC:
case JAVADB_DERBYCLIENT:
case MAXDB:
case IBMDB2:
case IBMDB2_ZOS:
case HSQLDB_SERVER:
case HSQLDB_WEBSERVER:
case NETEZZA:
return true;
default:
}

View File

@@ -64,7 +64,7 @@ public enum EDatabaseVersion4Drivers {
SQLITE(new DbVersion4Drivers(EDatabaseTypeName.SQLITE, "sqlitejdbc-v056.jar")), //$NON-NLS-1$
FIREBIRD(new DbVersion4Drivers(EDatabaseTypeName.FIREBIRD, "jaybird-full-2.1.1.jar")), //$NON-NLS-1$
TERADATA(new DbVersion4Drivers(EDatabaseTypeName.TERADATA,
new String[] { "terajdbc4-15.10.00.14.jar", "tdgssconfig-15.10.00.14.jar" })), //$NON-NLS-1$ //$NON-NLS-2$
new String[] { "terajdbc4-16.20.00.02.jar", "tdgssconfig-16.20.00.02.jar" })), //$NON-NLS-1$ //$NON-NLS-2$
JAVADB_DERBYCLIENT(new DbVersion4Drivers(EDatabaseTypeName.JAVADB_DERBYCLIENT, "derbyclient.jar")), //$NON-NLS-1$
NETEZZA(new DbVersion4Drivers(EDatabaseTypeName.NETEZZA, "nzjdbc.jar")), //$NON-NLS-1$
INFORMIX(new DbVersion4Drivers(EDatabaseTypeName.INFORMIX, "ifxjdbc.jar")), //$NON-NLS-1$
@@ -163,9 +163,9 @@ public enum EDatabaseVersion4Drivers {
MAPRDB(new DbVersion4Drivers(EDatabaseTypeName.MAPRDB, new String[] {})),
REDSHIFT(new DbVersion4Drivers(EDatabaseTypeName.REDSHIFT, "redshift", "REDSHIFT", //$NON-NLS-1$ //$NON-NLS-2$
"redshiftJDBC42-no-awssdk-1.2.16.1027.jar")), //$NON-NLS-1$
"redshift-jdbc42-no-awssdk-1.2.20.1043.jar")), //$NON-NLS-1$
REDSHIFT_SSO(new DbVersion4Drivers(EDatabaseTypeName.REDSHIFT_SSO, "redshift sso", "REDSHIFT_SSO", //$NON-NLS-1$ //$NON-NLS-2$
new String[] { "redshiftJDBC42-no-awssdk-1.2.16.1027.jar", "aws-java-sdk-1.11.406.jar", "jackson-core-2.9.5.jar", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new String[] { "redshift-jdbc42-no-awssdk-1.2.20.1043.jar", "aws-java-sdk-1.11.406.jar", "jackson-core-2.9.5.jar", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
"jackson-databind-2.9.5.jar", "jackson-annotations-2.9.0.jar", "httpcore-4.4.9.jar", "httpclient-4.5.5.jar", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$
"joda-time-2.8.1.jar", "commons-logging-1.1.3.jar" })), //$NON-NLS-1$ //$NON-NLS-2$

View File

@@ -55,6 +55,8 @@ public interface IComponentsFactory {
*/
public Set<IComponent> getComponents();
public boolean isInitialising();
/**
* Get a readonly components collection to avoid ConcurrentModificationException caused by multiple thread
* access;<br/>

View File

@@ -153,7 +153,7 @@ public class MetadataTable implements IMetadataTable, Cloneable {
List<IMetadataColumn> temp = new ArrayList<IMetadataColumn>();
temp.addAll(this.listColumns);
temp.addAll(this.unusedColumns);
if (isRepository && originalColumns != null) {
if (originalColumns != null) {
Collections.sort(temp, new Comparator<IMetadataColumn>() {
@Override

View File

@@ -213,6 +213,7 @@ public final class MetadataToolAvroHelper {
//ignore it now as we can't process the complex expression for the default value, and the default value is not useful for runtime like the old javajet tjdbcxxx
//TODO support the expression calculate, not sure it's necessary and sometimes, more complex like globalMap.get(xxx) which only have meaning after running the job.
ExceptionHandler.process(e, Level.WARN);
defaultValue = null;
}
// Types with Document/Unknown elements, store as binary

View File

@@ -162,7 +162,8 @@ public final class MetadataToolHelper {
if (itemId == null || itemId.equals("")) { //$NON-NLS-1$
return null;
}
final IProxyRepositoryFactory proxyRepositoryFactory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
final IProxyRepositoryFactory proxyRepositoryFactory =
CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
try {
final IRepositoryViewObject lastVersion = proxyRepositoryFactory.getLastVersion(itemId);
if (lastVersion != null) {
@@ -280,7 +281,8 @@ public final class MetadataToolHelper {
private static boolean isAllowSpecificCharacters() {
IEclipsePreferences coreUIPluginNode = new InstanceScope().getNode(ITalendCorePrefConstants.CoreUIPlugin_ID);
return coreUIPluginNode.getBoolean(IRepositoryPrefConstants.ALLOW_SPECIFIC_CHARACTERS_FOR_SCHEMA_COLUMNS, false);
return coreUIPluginNode
.getBoolean(IRepositoryPrefConstants.ALLOW_SPECIFIC_CHARACTERS_FOR_SCHEMA_COLUMNS, false);
}
/**
@@ -317,8 +319,8 @@ public final class MetadataToolHelper {
}
}
}
if (isKeyword
|| org.apache.commons.lang.StringUtils.countMatches(returnedColumnName, underLine) > (originalColumnName.length() / 2)) {
if (isKeyword || org.apache.commons.lang.StringUtils
.countMatches(returnedColumnName, underLine) > (originalColumnName.length() / 2)) {
returnedColumnName = "Column" + index; //$NON-NLS-1$
}
@@ -440,9 +442,9 @@ public final class MetadataToolHelper {
*
*
*/
private static String mapSpecialChar(String columnName) {
private static String mapSpecialChar(String columnName) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRoutinesService.class)) {
IRoutinesService service = (IRoutinesService) GlobalServiceRegister.getDefault().getService(IRoutinesService.class);
IRoutinesService service = GlobalServiceRegister.getDefault().getService(IRoutinesService.class);
if (service != null) {
Vector map = service.getAccents();
map.setElementAt("AE", 4);//$NON-NLS-1$
@@ -491,13 +493,15 @@ public final class MetadataToolHelper {
*/
public static void validateSchema(String value) {
if (value == null) {
MessageDialog.openError(Display.getCurrent().getActiveShell(),
Messages.getString("MetadataTool.nullValue"), Messages.getString("MetadataTool.nameNull")); //$NON-NLS-1$ //$NON-NLS-2$
MessageDialog
.openError(Display.getCurrent().getActiveShell(), Messages.getString("MetadataTool.nullValue"), //$NON-NLS-1$
Messages.getString("MetadataTool.nameNull")); //$NON-NLS-1$
return;
}
if (!isValidSchemaName(value)) {
MessageDialog.openError(Display.getCurrent().getActiveShell(),
Messages.getString("MetadataTool.invalid"), Messages.getString("MetadataTool.schemaInvalid")); //$NON-NLS-1$ //$NON-NLS-2$
MessageDialog
.openError(Display.getCurrent().getActiveShell(), Messages.getString("MetadataTool.invalid"), //$NON-NLS-1$
Messages.getString("MetadataTool.schemaInvalid")); //$NON-NLS-1$
return;
}
}
@@ -533,8 +537,9 @@ public final class MetadataToolHelper {
public static void checkSchema(Shell shell, KeyEvent event) {
if ((!Character.isIdentifierIgnorable(event.character)) && (event.character == ' ')) {
event.doit = false;
MessageDialog.openError(shell,
Messages.getString("MetadataTool.invalidChar"), Messages.getString("MetadataTool.errorMessage")); //$NON-NLS-1$ //$NON-NLS-2$
MessageDialog
.openError(shell, Messages.getString("MetadataTool.invalidChar"), //$NON-NLS-1$
Messages.getString("MetadataTool.errorMessage")); //$NON-NLS-1$
}
}
@@ -579,6 +584,11 @@ public final class MetadataToolHelper {
public static void copyTable(IMetadataTable source, IMetadataTable target, String targetDbms,
boolean avoidUsedColumnsFromInput) {
copyTable(source, target, targetDbms, avoidUsedColumnsFromInput, false);
}
public static void copyTable(IMetadataTable source, IMetadataTable target, String targetDbms,
boolean avoidUsedColumnsFromInput, boolean withCustoms) {
if (source == null || target == null) {
return;
}
@@ -598,10 +608,11 @@ public final class MetadataToolHelper {
List<IMetadataColumn> columnsTAdd = new ArrayList<IMetadataColumn>();
for (IMetadataColumn column : source.getListColumns(!avoidUsedColumnsFromInput)) {
IMetadataColumn targetColumn = target.getColumn(column.getLabel());
IMetadataColumn newTargetColumn = column.clone();
IMetadataColumn newTargetColumn = column.clone(withCustoms);
if (targetColumn == null) {
columnsTAdd.add(newTargetColumn);
newTargetColumn.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
newTargetColumn
.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
} else {
if (!targetColumn.isReadOnly()) {
target.getListColumns().remove(targetColumn);
@@ -615,6 +626,12 @@ public final class MetadataToolHelper {
target.sortCustomColumns();
target.setLabel(source.getLabel());
target.setOriginalColumns(source.getOriginalColumns());
// List<String> originalColumnsList = null;
// if (source.getOriginalColumns() != null) {
// originalColumnsList = new ArrayList<String>();
// originalColumnsList.addAll(source.getOriginalColumns());
// }
// target.setOriginalColumns(originalColumnsList);
Map<String, String> targetProperties = target.getAdditionalProperties();
Map<String, String> sourceProperties = source.getAdditionalProperties();
for (Entry<String, String> entry : sourceProperties.entrySet()) {
@@ -622,7 +639,8 @@ public final class MetadataToolHelper {
}
}
public static void copyTable(List<IMetadataColumn> sourceColumns, IMetadataTable target, List<IMetadataColumn> targetColumns) {
public static void copyTable(List<IMetadataColumn> sourceColumns, IMetadataTable target,
List<IMetadataColumn> targetColumns) {
if (sourceColumns == null || target == null || targetColumns == null) {
return;
}
@@ -644,7 +662,8 @@ public final class MetadataToolHelper {
IMetadataColumn newTargetColumn = column.clone();
if (targetColumn == null) {
columnsTAdd.add(newTargetColumn);
newTargetColumn.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
newTargetColumn
.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
} else {
if (!targetColumn.isReadOnly()) {
target.getListColumns().remove(targetColumn);
@@ -699,7 +718,8 @@ public final class MetadataToolHelper {
IMetadataColumn newTargetColumn = column.clone();
if (targetColumn == null) {
columnsTAdd.add(newTargetColumn);
newTargetColumn.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
newTargetColumn
.setReadOnly(target.isReadOnly() || readOnlycolumns.contains(newTargetColumn.getLabel()));
} else {
if (!targetColumn.isReadOnly()) {
target.getListColumns().remove(targetColumn);
@@ -745,9 +765,9 @@ public final class MetadataToolHelper {
}
Set<MetadataTable> tables = null;
IGenericWizardService wizardService = null;
if (!CommonsPlugin.isHeadless() && GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
wizardService = (IGenericWizardService) GlobalServiceRegister.getDefault()
.getService(IGenericWizardService.class);
if (!CommonsPlugin.isHeadless()
&& GlobalServiceRegister.getDefault().isServiceRegistered(IGenericWizardService.class)) {
wizardService = GlobalServiceRegister.getDefault().getService(IGenericWizardService.class);
}
if (wizardService != null && wizardService.isGenericConnection(connection)) {
List<MetadataTable> metadataTables = wizardService.getMetadataTables(connection);
@@ -773,7 +793,8 @@ public final class MetadataToolHelper {
* @param tableName
* @return
*/
public static MetadataTable getMetadataTableFromSAPFunction(String connectionId, String functionId, String tableName) {
public static MetadataTable getMetadataTableFromSAPFunction(String connectionId, String functionId,
String tableName) {
org.talend.core.model.metadata.builder.connection.Connection connection;
if (connectionId != null) {
connection = getConnectionFromRepository(connectionId);
@@ -845,7 +866,8 @@ public final class MetadataToolHelper {
return null;
}
public static org.talend.core.model.metadata.builder.connection.Connection getConnectionFromRepository(String metaRepositoryid) {
public static org.talend.core.model.metadata.builder.connection.Connection
getConnectionFromRepository(String metaRepositoryid) {
ConnectionItem connItem = getConnectionItemFromRepository(metaRepositoryid);
if (connItem != null) {
return connItem.getConnection();
@@ -911,9 +933,9 @@ public final class MetadataToolHelper {
// ////////////////////////////////////////////////////////////////////////////////////
// private static final String VALIDATE_PATTERN_NAME = "^[a-zA-Z_][a-zA-Z_0-9]*$"; //$NON-NLS-1$
// private static final String VALIDATE_PATTERN_NAME = "^[a-zA-Z_][a-zA-Z_0-9]*$"; //$NON-NLS-1$
// private static final String VALIDATE_PATTERN_SCHEMA_NAME = "^[a-zA-Z_0-9][a-zA-Z_0-9]*$"; //$NON-NLS-1$
// private static final String VALIDATE_PATTERN_SCHEMA_NAME = "^[a-zA-Z_0-9][a-zA-Z_0-9]*$"; //$NON-NLS-1$
public static List<ColumnNameChanged> getColumnNameChanged(IMetadataTable oldTable, IMetadataTable newTable) {
List<ColumnNameChanged> columnNameChanged = new ArrayList<ColumnNameChanged>();
@@ -944,8 +966,9 @@ public final class MetadataToolHelper {
IMetadataColumn clonedColumn = getColumn(newTable, originalColumn, oldIndex);
if (clonedColumn != null) {
if (!originalColumn.getLabel().equals(clonedColumn.getLabel())) {
columnNameChanged.add(new ColumnNameChangedExt(changedNode, originalColumn.getLabel(), clonedColumn
.getLabel()));
columnNameChanged
.add(new ColumnNameChangedExt(changedNode, originalColumn.getLabel(),
clonedColumn.getLabel()));
}
}
}
@@ -1094,8 +1117,8 @@ public final class MetadataToolHelper {
initilializeNewSchema(metadataTable, mappingParameter, param);
if (!param.getDefaultValues().isEmpty()) {
Schema schema = (Schema) param.getDefaultValues().get(0).getDefaultValue();
org.talend.core.model.metadata.builder.connection.MetadataTable defaultEmfTable = MetadataToolAvroHelper
.convertFromAvro(schema);
org.talend.core.model.metadata.builder.connection.MetadataTable defaultEmfTable =
MetadataToolAvroHelper.convertFromAvro(schema);
IMetadataTable defaultTable = MetadataToolHelper.convert(defaultEmfTable);
for (IMetadataColumn currentColumn : metadataTable.getListColumns()) {
IMetadataColumn defaultColumn = defaultTable.getColumn(currentColumn.getLabel());
@@ -1125,8 +1148,8 @@ public final class MetadataToolHelper {
Object schemaObj = properties.getValuedProperty(param.getName()).getValue();
if (schemaObj instanceof Schema) {
Schema schema = (Schema) schemaObj;
org.talend.core.model.metadata.builder.connection.MetadataTable emfTable = MetadataToolAvroHelper
.convertFromAvro(schema);
org.talend.core.model.metadata.builder.connection.MetadataTable emfTable =
MetadataToolAvroHelper.convertFromAvro(schema);
IMetadataTable newTable = MetadataToolHelper.convert(emfTable);
initilializeSchema(metadataTable, newTable, mappingParameter, node);
}
@@ -1286,8 +1309,8 @@ public final class MetadataToolHelper {
if (connection != null) {
IRepositoryViewObject lastVersion = null;
if (connection.getContextId() != null) {
IRepositoryService service = (IRepositoryService) GlobalServiceRegister.getDefault().getService(
IRepositoryService.class);
IRepositoryService service =
GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
lastVersion = service.getProxyRepositoryFactory().getLastVersion(connection.getContextId());
}
if (lastVersion != null) {
@@ -1381,7 +1404,7 @@ public final class MetadataToolHelper {
}
public static IMetadataTable convert(MetadataTable old) {
ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class);
ICoreService coreService = GlobalServiceRegister.getDefault().getService(ICoreService.class);
IMetadataTable result = new org.talend.core.model.metadata.MetadataTable();
result.setComment(old.getComment());
result.setId(old.getId());
@@ -1401,7 +1424,8 @@ public final class MetadataToolHelper {
}
for (Object o : old.getColumns()) {
org.talend.core.model.metadata.builder.connection.MetadataColumn column = (org.talend.core.model.metadata.builder.connection.MetadataColumn) o;
org.talend.core.model.metadata.builder.connection.MetadataColumn column =
(org.talend.core.model.metadata.builder.connection.MetadataColumn) o;
IMetadataColumn newColumn = new org.talend.core.model.metadata.MetadataColumn();
columns.add(newColumn);
newColumn.setComment(column.getComment());
@@ -1415,7 +1439,7 @@ public final class MetadataToolHelper {
}
newColumn.setLabel(label2);
newColumn.setPattern(column.getPattern());
if (column.getLength() < 0) {
newColumn.setLength(null);
} else {
@@ -1438,12 +1462,12 @@ public final class MetadataToolHelper {
newColumn.setCustom(Boolean.valueOf(tv.getValue()));
} else if (DiSchemaConstants.TALEND6_IS_READ_ONLY.equals(additionalTag)) {
newColumn.setReadOnly(Boolean.valueOf(tv.getValue()));
}else {
} else {
newColumn.getAdditionalField().put(additionalTag, tv.getValue());
}
}
}
newColumn.setNullable(column.isNullable());
if (column.getPrecision() < 0) {
newColumn.setPrecision(null);

View File

@@ -308,8 +308,19 @@ public abstract class AbstractNode implements INode {
return mapMerge.keySet().iterator().next().getSubProcessStartNode(withConditions);
}
}
if ((getCurrentActiveLinksNbInput(EConnectionType.MAIN) == 0)
&& !checkIfCurrentActiveLinksIsLookup()) {
if (getCurrentActiveLinksNbInput(EConnectionType.MAIN) == 0) {
IConnection aheadConnection = null;
for (IConnection inConnection : getIncomingConnections()) {
// refer to DataProcess.checkFlowRefLink() added RUN_AFTER for incoming connection
if (inConnection.isActivate()
&& inConnection.getLineStyle().getId() == EConnectionType.RUN_AFTER.getId()) {
aheadConnection = inConnection;
break;
}
}
if (aheadConnection != null) {
return aheadConnection.getSource().getDesignSubjobStartNode();
}
return this; // main branch here, so we got the correct sub
// process start.
}
@@ -348,27 +359,6 @@ public abstract class AbstractNode implements INode {
return nb;
}
private boolean checkIfCurrentActiveLinksIsLookup() {
boolean flag = false;
int input = 0;
for (IConnection inConnection : getIncomingConnections()) {
// refer to DataProcess.checkFlowRefLink() added RUN_AFTER for incoming connection
if (inConnection.isActivate() && inConnection.getLineStyle().getId() == EConnectionType.RUN_AFTER.getId()) {
input++;
}
}
// check if run_after is for lookup
if (input > 0) {
for (IConnection outConnection : getOutgoingConnections()) {
if (outConnection.isActivate() && outConnection.getLineStyle().getId() == EConnectionType.FLOW_REF.getId()) {
flag = true;
break;
}
}
}
return flag;
}
/*
* (non-Javadoc)
*

View File

@@ -115,6 +115,8 @@ public enum EParameterFieldType {
PATTERN_PROPERTY, // yyin, added TDQ-13437
UNIFIED_COMPONENTS,
LANGUAGE_CLOSED_LIST,
TACOKIT_INPUT_SCHEMA,
TACOKIT_GUESS_SCHEMA,

View File

@@ -1238,6 +1238,9 @@ public class RelationshipItemBuilder {
}
public void removeItemRelations(Relation relation, boolean save) {
if (!loaded) {
loadRelations();
}
Map<Relation, Set<Relation>> itemRelations = getCurrentProjectItemsRelations();
relation = findPossibleKeyObject(itemRelations.keySet(), relation);
if (itemRelations != null && itemRelations.containsKey(relation)) {

View File

@@ -79,6 +79,11 @@ public class ArtifactRepositoryBean implements Cloneable {
if (index > 0) {
nexusUrl = url.substring(0, index + ARTIFACT_MIDDLE_PATH.length());
repoId = StringUtilities.removeEndingString(url.substring(index + ARTIFACT_MIDDLE_PATH.length()), "/");
} else {
// can be non-default contextpath or root
String tempurl = StringUtilities.removeEndingString(url, "/");
repoId = tempurl.substring(tempurl.lastIndexOf("/") + 1);
nexusUrl = url.substring(0, url.indexOf(repoId));
}
}
return new String[] { nexusUrl, repoId };

View File

@@ -62,6 +62,8 @@ public interface TalendProcessArgumentConstant {
static final String ARG_LAUNCHER_NAME = "LAUNCHER_NAME";
static final String ARG_AVOID_BRANCH_NAME = "AVOID_BRANCH_NAME";
static final String CMD_ARG_STATS_PORT_PARAM = "stat_port";
static final String CMD_ARG_TRACE_PORT_PARAM = "trace_port";

View File

@@ -35,7 +35,7 @@ import org.talend.repository.model.IRepositoryService;
/**
* DOC ggu class global comment. Detailled comment
*/
public final class ProjectPreferenceManager {
public class ProjectPreferenceManager {
/**
* copied from EclipsePreferences.
@@ -61,11 +61,11 @@ public final class ProjectPreferenceManager {
static {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
runProcessService =
(IRunProcessService) GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
}
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRepositoryService.class)) {
repositoryService =
(IRepositoryService) GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
}
}
@@ -109,7 +109,7 @@ public final class ProjectPreferenceManager {
}
}
private void init(IProject project, String fileName) {
protected void init(IProject project, String fileName) {
Assert.isNotNull(fileName);
Assert.isNotNull(project);
this.qualifier = fileName;
@@ -148,6 +148,7 @@ public final class ProjectPreferenceManager {
/**
* @deprecated because don't support the default value setting, so use store directly.
*/
@Deprecated
private IEclipsePreferences getQulifierPreference() {
return getProjectScope().getNode(getQualifier());
}

View File

@@ -44,7 +44,7 @@ public/* final */class BuildExportManager {
return instance;
}
IBuildExportDependenciesProvider[] getDependenciesProviders() {
public IBuildExportDependenciesProvider[] getDependenciesProviders() {
return reader.getDependenciesProviders();
}

View File

@@ -1,185 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.runtime.util;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jdt.launching.IVMInstall;
import org.eclipse.jdt.launching.IVMInstall2;
import org.eclipse.jdt.launching.JavaRuntime;
import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
import org.eclipse.jdt.launching.environments.IExecutionEnvironmentsManager;
import org.talend.commons.utils.generation.JavaUtils;
/**
* created by nrousseau on Jun 13, 2015 Detailled comment
*
*/
public class JavaHomeUtil {
/**
* Initialize Java Home to the preferences if needed only.<br>
* This will take take first JDK8 if existing.<br>
* If not, take JDK7.<br>
* If no any JDK found, it will let eclipse set the default one.
*
* @throws CoreException
*/
public static void initializeJavaHome() throws CoreException {
IEclipsePreferences pref = InstanceScope.INSTANCE.getNode("org.eclipse.jdt.launching"); //$NON-NLS-1$
String defaultVM = pref.get("org.eclipse.jdt.launching.PREF_DEFAULT_ENVIRONMENTS_XML", ""); //$NON-NLS-1$//$NON-NLS-2$
boolean needSetupJVM = false;
if (!"".equals(defaultVM)) { //$NON-NLS-1$
if (!isJDKSetup()) {
// current JVM is not a JDK, means need to change the current setup
needSetupJVM = true;
} else if (isSetJdkHomeVariable() && !getJDKHomeVariable().equals(getCurrentJavaHomeString())) {
needSetupJVM = true;
}
} else {
needSetupJVM = true;
}
if (needSetupJVM) {
IVMInstall currentVM = JavaRuntime.getDefaultVMInstall();
if (isSetJdkHomeVariable()) {
if (currentVM != null) {
File installLocation = new File(getJDKHomeVariable());
currentVM.setInstallLocation(installLocation);
currentVM.setName(installLocation.getName());
}
} else {
boolean jkd8 = installJDKForEnvironment("JavaSE-1.8");//$NON-NLS-1$
if (!jkd8) {
boolean jdk7 = installJDKForEnvironment("JavaSE-1.7"); //$NON-NLS-1$
if (!jdk7) {
if (isSetJavaHomeVariable()) {
if (currentVM != null) {
File installLocation = new File(getJavaHomeVariable());
currentVM.setInstallLocation(installLocation);
currentVM.setName(installLocation.getName());
}
}
}
}
}
}
}
/**
* Only for TUJ to setup JDK version
* Should invoke after initializeJavaHome()
*/
public static String getSpecifiedJavaVersion() {
if (isSetJdkHomeVariable()) {
IVMInstall currentVM = JavaRuntime.getDefaultVMInstall();
if (currentVM instanceof IVMInstall2) {
return JavaUtils.getCompilerCompliance((IVMInstall2) currentVM, null);
}
}
return null;
}
public static boolean isSetJdkHomeVariable() {
String jdkHomeValue = getJDKHomeVariable();
return jdkHomeValue != null && !"".equals(jdkHomeValue); //$NON-NLS-1$
}
public static String getJDKHomeVariable() {
String jdkHome = System.getProperty("jdk.home"); //$NON-NLS-1$
if (jdkHome == null || "".equals(jdkHome)) { //$NON-NLS-1$
jdkHome = getJDKHomeFromEclipseVm();
}
if (jdkHome == null || "".equals(jdkHome)) { //$NON-NLS-1$
jdkHome = System.getenv("JDK_HOME"); //$NON-NLS-1$
}
return jdkHome;
}
private static String getJDKHomeFromEclipseVm() {
String eclipseVm = System.getProperty("eclipse.vm"); //$NON-NLS-1$
if (eclipseVm != null && !"".equals(eclipseVm)) {
File javaexe = new File(eclipseVm);
if (javaexe.exists()) {
String jdk = getJDKPath(javaexe);
if (jdk != null && new File(jdk, "lib/tools.jar").exists()) {//$NON-NLS-1$
return jdk;
}
}
}
return null;
}
private static String getJDKPath(File file) {
if (file == null) {
return null;
}
if ("bin".equals(file.getName())) {//$NON-NLS-1$
return file.getParent();
} else {
return getJDKPath(file.getParentFile());
}
}
public static boolean isSetJavaHomeVariable() {
String javaHomeValue = getJavaHomeVariable();
return javaHomeValue != null && !"".equals(javaHomeValue); //$NON-NLS-1$
}
public static String getJavaHomeVariable() {
return System.getenv("JAVA_HOME"); //$NON-NLS-1$
}
public static boolean isJDKSetup() {
if (getCurrentJavaHomeFile() == null) {
return false;
}
return new File(getCurrentJavaHomeFile(), "lib/tools.jar").exists(); //$NON-NLS-1$
}
public static File getCurrentJavaHomeFile() {
IVMInstall currentVM = JavaRuntime.getDefaultVMInstall();
if (currentVM == null) {
return null;
}
return currentVM.getInstallLocation();
}
public static String getCurrentJavaHomeString() {
IVMInstall currentVM = JavaRuntime.getDefaultVMInstall();
if (currentVM == null) {
return null;
}
return currentVM.getInstallLocation().getAbsolutePath();
}
private static boolean installJDKForEnvironment(String environmentName) throws CoreException {
IExecutionEnvironmentsManager manager = JavaRuntime.getExecutionEnvironmentsManager();
IExecutionEnvironment environment = manager.getEnvironment(environmentName);
for (IVMInstall install : environment.getCompatibleVMs()) {
if (new File(install.getInstallLocation(), "lib/tools.jar").exists()) {
// JDK found, install it !;
JavaRuntime.setDefaultVMInstall(install, new NullProgressMonitor());
return true;
}
}
return false;
}
}

View File

@@ -36,6 +36,7 @@ import org.talend.core.model.properties.Property;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryEditorInput;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
import org.talend.repository.model.RepositoryNode;
@@ -131,5 +132,7 @@ public interface ITestContainerProviderService extends IService {
Set<ModuleNeeded> getAllJobTestcaseModules(ProcessItem item) throws PersistenceException;
public void deleteDataFiles(Object deleteObj);
public List<NodeType> getOriginalNodes(ProcessType process);
}

View File

@@ -29,7 +29,9 @@ Require-Bundle: org.apache.commons.lang,
org.eclipse.e4.ui.services,
org.eclipse.ui.workbench,
org.talend.themes.core,
ca.odell.glazedlists
ca.odell.glazedlists,
org.talend.core,
org.apache.commons.io
Import-Package: org.eclipse.jdt.internal.ui.workingsets
Export-Package: org.talend.core.ui,
org.talend.core.ui.actions,

View File

@@ -613,3 +613,10 @@ WorkspaceDlg.browse.folder.title=Select a workspace folder
WorkspaceDlg.use.this.as.default.cb.message=&Use this workspace as the default and do not ask again
PerspectiveMenuManager.dummy=Dummy
PerspectiveMenuManager.perspectiveLabel=&Perspective
I18nPreferencePage.needRestart=Local Language(need restart)
I18nPreferencePage.translationInformation=Test translation with Babili (works only for current language,other language selection needs restart)
I18nPreferencePage.importBabili=Import Translation from Babili
I18nPreferencePage.restart=Restart
I18nPreferencePage.restartButton=Need to restart to take effect.
I18nPreferencePage.restoreDefault=Restore default
I18nPreferencePage.wait_process=Process will hold on several minutes, please wait...

View File

@@ -142,6 +142,8 @@ public class ContextTreeTable {
private final static int fixedTypeWidth = 90;
private final static int fixedHidePromptWidth = 1;
public ContextTreeTable(IContextModelManager manager) {
this.manager = manager;
}
@@ -320,7 +322,7 @@ public class ContextTreeTable {
GridDataFactory.fillDefaults().grab(true, true).applyTo(natTable);
// add selection listener for the context NatTable
addNatTableListener(bodyDataProvider, selectionProvider, bodyDataLayer);
addNatTableListener(bodyDataProvider, selectionProvider);
GridDataFactory.fillDefaults().grab(true, true).applyTo(natTable);
@@ -371,7 +373,7 @@ public class ContextTreeTable {
}
private void addNatTableListener(final GlazedListsDataProvider<ContextTreeNode> bodyDataProvider,
ISelectionProvider selectionProvider, DataLayer bodyDataLayer) {
ISelectionProvider selectionProvider) {
this.natTable.addMouseListener(new MouseListener() {
@Override
@@ -454,7 +456,8 @@ public class ContextTreeTable {
} else {
int typeColumnPos = dataLayer.getColumnPositionByIndex(1);
int leftWidth = maxWidth - fixedTypeWidth - fixedCheckBoxWidth * checkColumnsPos.size() - cornerWidth * 2;
int leftWidth = maxWidth - fixedTypeWidth - fixedCheckBoxWidth * checkColumnsPos.size() - cornerWidth * 2
- fixedHidePromptWidth;
int currentColumnsCount = dataColumnsCount - hideColumnsPos.size() - checkColumnsPos.size() - 1;
int averageWidth = leftWidth / currentColumnsCount;
@@ -469,7 +472,7 @@ public class ContextTreeTable {
for (int hidePos : hideColumnsPos) {
if (hidePos == i) {
findHide = true;
dataLayer.setColumnWidthByPosition(i, 0);
dataLayer.setColumnWidthByPosition(i, fixedHidePromptWidth);
}
}
for (int checkPos : checkColumnsPos) {

View File

@@ -52,10 +52,6 @@ public class ContextAutoResizeTextPainter extends TextPainter {
changeBackgroundColor = isChange;
}
@Override
protected boolean performRowResize(int contentHeight, Rectangle rectangle) {
return (contentHeight != rectangle.height) && (this.calculateByTextHeight);
}
@Override
protected void setNewMinLength(ILayerCell cell, int contentWidth) {

View File

@@ -725,6 +725,8 @@ public class MetadataDialog extends Dialog {
}
IDesignerCoreService designerCoreService = CoreUIPlugin.getDefault().getDesignerCoreService();
updateTableOriginalColumns(outputTable);
updateTableOriginalColumns(inputTable);
designerCoreService.setTraceFilterParameters(outputNode, outputTable, preOutputColumnSet, changedNameColumnsForOutput);
designerCoreService.setTraceFilterParameters(inputNode, inputTable, preInputColumnSet, changedNameColumnsForInput);
if (outputTable != null && inputTable != null) {
@@ -745,6 +747,16 @@ public class MetadataDialog extends Dialog {
}
}
}
private void updateTableOriginalColumns(IMetadataTable table) {
if (table != null && table.getListColumns() != null) {
List<String> columnNames = new ArrayList<String>();
for (IMetadataColumn column : table.getListColumns()) {
columnNames.add(column.getLabel());
}
table.setOriginalColumns(columnNames);
}
}
/**
* DOC wzhang Comment method "getPreColumnsSet".

View File

@@ -0,0 +1,652 @@
package org.talend.core.ui.preference;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.adaptor.EclipseStarter;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.PlatformUI;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.utils.ZipFileUtils;
import org.talend.commons.ui.swt.advanced.dataeditor.LabelFieldEditor;
import org.talend.commons.ui.utils.workbench.preferences.OneLineComboFieldEditor;
import org.talend.commons.utils.VersionUtils;
import org.talend.core.CorePlugin;
import org.talend.core.model.genhtml.FileCopyUtils;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.core.ui.i18n.Messages;
public abstract class I18nPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
private OneLineComboFieldEditor languageSelectionEditor;
private String fs = System.getProperties().getProperty("file.separator"); //$NON-NLS-1$
private List<FieldEditor> fields = new ArrayList<FieldEditor>();
private static Logger log = Logger.getLogger(I18nPreferencePage.class);
private static final Pattern VERSION_PATTERN = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(\\.(RC|M)\\d+)?_r\\d+"); //$NON-NLS-1$
private static final Pattern DEFAULT_PATTERN = Pattern.compile("(\\d+)\\.(\\d+)\\.*(\\d*)"); //$NON-NLS-1$
private boolean updateCompleted;
private boolean isBabiliButtonClicked = false;
/**
* Construct a new I18nPreferencePage.
*/
public I18nPreferencePage() {
super(GRID);
// Set the preference store for the preference page.
IPreferenceStore store = CorePlugin.getDefault().getPreferenceStore();
setPreferenceStore(store);
}
@Override
public void init(IWorkbench workbench) {
// nothing to do
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
@Override
protected void createFieldEditors() {
// Adds a combo for language selection.
String spanish = "Espa\u00F1ol"; //$NON-NLS-1$
byte[] utf8Bytes;
try {
utf8Bytes = spanish.getBytes("UTF8"); //$NON-NLS-1$
spanish = new String(utf8Bytes, "UTF8"); //$NON-NLS-1$
} catch (UnsupportedEncodingException e1) {
// could be translated, but it's only in case of error when change UTF8 characters.
spanish = "Spanish"; //$NON-NLS-1$
}
String russian = "\u0420\u0443\u0441\u0441\u043A\u0438\u0439"; //$NON-NLS-1$
try {
utf8Bytes = russian.getBytes("UTF8"); //$NON-NLS-1$
russian = new String(utf8Bytes, "UTF8"); //$NON-NLS-1$
} catch (UnsupportedEncodingException e1) {
// could be translated, but it's only in case of error when change UTF8 characters.
russian = "Russian"; //$NON-NLS-1$
}
String greek = "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"; //$NON-NLS-1$
try {
utf8Bytes = greek.getBytes("UTF8"); //$NON-NLS-1$
greek = new String(utf8Bytes, "UTF8"); //$NON-NLS-1$
} catch (UnsupportedEncodingException e1) {
// could be translated, but it's only in case of error when change UTF8 characters.
greek = "Greek"; //$NON-NLS-1$
}
String arabic = "\u0627\u0644\u0639\u0631\u0628\u064a\u0647"; //$NON-NLS-1$
try {
utf8Bytes = arabic.getBytes("UTF8"); //$NON-NLS-1$
arabic = new String(utf8Bytes, "UTF8"); //$NON-NLS-1$
} catch (UnsupportedEncodingException e1) {
// could be translated, but it's only in case of error when change UTF8 characters.
arabic = "Arabic"; //$NON-NLS-1$
}
String serbian = "\u0421\u0440\u043f\u0441\u043a\u0438"; //$NON-NLS-1$
try {
utf8Bytes = serbian.getBytes("UTF8"); //$NON-NLS-1$
serbian = new String(utf8Bytes, "UTF8"); //$NON-NLS-1$
} catch (UnsupportedEncodingException e1) {
// could be translated, but it's only in case of error when change UTF8 characters.
serbian = "Serbian"; //$NON-NLS-1$
}
String[][] entryNamesAndValues =
{ { Locale.ENGLISH.getDisplayLanguage(Locale.ENGLISH), Locale.ENGLISH.getLanguage() },
{ Locale.FRENCH.getDisplayLanguage(Locale.FRENCH), Locale.FRENCH.getLanguage() },
{ Locale.CHINESE.getDisplayLanguage(Locale.CHINESE), "zh_CN" },
{ Locale.GERMAN.getDisplayLanguage(Locale.GERMAN), Locale.GERMAN.getLanguage() },
{ Locale.JAPANESE.getDisplayLanguage(Locale.JAPANESE), Locale.JAPANESE.getLanguage() },
{ Locale.ITALIAN.getDisplayLanguage(Locale.ITALIAN), Locale.ITALIAN.getLanguage() },
{ "Brasil", "pt_BR" }, //$NON-NLS-1$ //$NON-NLS-2$
{ spanish, "es" }, { russian, "ru" }, //$NON-NLS-1$ //$NON-NLS-2$
{ Locale.KOREA.getDisplayLanguage(Locale.KOREA), "kr" }, { "Turkish", "tr" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
{ greek, "el" }, { "Hrvatski", "hr" }, { arabic, "ar" }, { serbian, "sr" }, { "Polski", "pl" },
{ "Romanian", "ro" }, { "Netherlands", "nl" } }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
// // /$NON-NLS-7$
languageSelectionEditor = new OneLineComboFieldEditor(ITalendCorePrefConstants.LANGUAGE_SELECTOR,
Messages.getString("I18nPreferencePage.needRestart"), entryNamesAndValues, getFieldEditorParent()); //$NON-NLS-1$
addField(languageSelectionEditor);
Composite composite = getFieldEditorParent();
LabelFieldEditor importAll =
new LabelFieldEditor(Messages.getString("I18nPreferencePage.translationInformation"), //$NON-NLS-1$
composite);
addField(importAll);
Button allUpdate = new Button(composite, SWT.FLAT);
allUpdate.setText(Messages.getString("I18nPreferencePage.importBabili")); //$NON-NLS-1$
allUpdate.setLayoutData(new GridData());
allUpdate.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
// import all update from Babili
// select the .zip file
FileDialog fd =
new FileDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), SWT.OPEN);
fd.setText("Open"); //$NON-NLS-1$
fd.setFilterPath("C:" + fs); //$NON-NLS-1$
String[] filterExtensions = { "*.zip" }; //$NON-NLS-1$
fd.setFilterExtensions(filterExtensions);
String selected = fd.open();
if (selected != null) {
isBabiliButtonClicked = true;
runProgressMonitorDialog(selected);
if (MessageDialog
.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
Messages.getString("I18nPreferencePage.restart"), //$NON-NLS-1$
Messages.getString("I18nPreferencePage.restartButton"))) {
PlatformUI.getWorkbench().restart();
}
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
// Nothing to do
}
});
// added by nma
Button restoredefault = new Button(composite, SWT.FLAT);
restoredefault.setText("Restore Defaults"); //$NON-NLS-1$
restoredefault.setLayoutData(new GridData());
restoredefault.addSelectionListener(new SelectionListener() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
// Nothing to do
}
@Override
public void widgetSelected(SelectionEvent e) {
isBabiliButtonClicked = true;
runProgressMonitorDialog(Messages.getString("I18nPreferencePage.restoreDefault")); //$NON-NLS-1$
if (MessageDialog
.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
Messages.getString("I18nPreferencePage.restart"),
Messages.getString("I18nPreferencePage.restartButton"))) {
PlatformUI.getWorkbench().restart();
}
}
});
}
private void applyBabiliResource(String zipFileName) {
String jarFolderPath = System.getProperty("user.dir") + fs + "jarTemp"; //$NON-NLS-1$ //$NON-NLS-2$
String zipFolderPath = System.getProperty("user.dir") + fs + "zipTemp"; //$NON-NLS-1$ //$NON-NLS-2$
File jarFolderPathFile = new File(jarFolderPath);
File zipFolderPathFile = new File(zipFolderPath);
if (!jarFolderPathFile.exists()) {
jarFolderPathFile.mkdir();
}
if (!zipFolderPathFile.exists()) {
zipFolderPathFile.mkdir();
}
String pluginPath = System.getProperty("user.dir") + fs + "plugins"; //$NON-NLS-1$ //$NON-NLS-2$
HashMap jarFileMap = new HashMap();
File file = new File(pluginPath);
if (file.isDirectory()) {
String[] fileNameList = file.list();
final int length = fileNameList.length;
File[] fileList = file.listFiles();
final int length2 = fileList.length;
for (File f : fileList) {
if (f.getName().startsWith("net.sourceforge.sqlexplorer.nl")) { //$NON-NLS-1$
jarFileMap.put("net.sourceforge.sqlexplorer.nl", f); //$NON-NLS-1$
}
if (f.getName().startsWith("org.talend.designer.components.localprovider")) { //$NON-NLS-1$
jarFileMap.put("org.talend.designer.components.localprovider", f); //$NON-NLS-1$
}
if (f.getName().startsWith("org.talend.designer.components.tdqprovider")) { //$NON-NLS-1$
jarFileMap.put("org.talend.designer.components.tdqprovider", f); //$NON-NLS-1$
}
if (f.getName().startsWith("org.talend.designer.components.tisprovider")) { //$NON-NLS-1$
jarFileMap.put("org.talend.designer.components.tisprovider", f); //$NON-NLS-1$
}
if (f.getName().startsWith("org.talend.designer.components.tispeprovider")) { //$NON-NLS-1$
jarFileMap.put("org.talend.designer.components.tispeprovider", f); //$NON-NLS-1$
}
if (f.getName().endsWith(".jar") && f.getName().indexOf("nl") != -1 //$NON-NLS-1$ //$NON-NLS-2$
&& f.getName().indexOf("talend") != -1) { //$NON-NLS-1$
String[] fileNameArr = f.getName().split("_"); //$NON-NLS-1$
jarFileMap.put(fileNameArr[0], f);
}
}
}
if (zipFileName.equals("Restore default")) { //$NON-NLS-1$
Iterator iter = jarFileMap.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
File currentFileToBak = (File) entry.getValue();
if (key.toString().endsWith(".nl") //$NON-NLS-1$
|| key.toString().startsWith("org.talend.designer.components.localprovider") //$NON-NLS-1$
|| key.toString().startsWith("org.talend.designer.components.tdqprovider") //$NON-NLS-1$
|| key.toString().startsWith("org.talend.designer.components.tisprovider") //$NON-NLS-1$
|| key.toString().startsWith("org.talend.designer.components.tispeprovider") //$NON-NLS-1$
|| key.toString().startsWith("net.sourceforge.sqlexplorer.nl")) { //$NON-NLS-1$
if (currentFileToBak.toString().endsWith(".jar")) { //$NON-NLS-1$
ZipFileUtils.unZip(currentFileToBak, jarFolderPath + fs + currentFileToBak.getName());
} else {
FileCopyUtils
.copyFolder(currentFileToBak.getAbsolutePath(),
jarFolderPath + fs + currentFileToBak.getName());
}
File jarFiles = new File(jarFolderPath + fs + currentFileToBak.getName());
File[] jarSubFiles = jarFiles.listFiles();
for (File subJarf : jarSubFiles) {
if (subJarf.isFile()) {
if (subJarf.getName().endsWith(".original")) { //$NON-NLS-1$
String subjarfPath = subJarf
.getAbsolutePath()
.substring(0, subJarf.getAbsolutePath().indexOf(".original")); //$NON-NLS-1$
File subjarfPathFile = new File(subjarfPath);
if (subjarfPathFile.exists()) {
subjarfPathFile.delete();
}
subJarf.renameTo(subjarfPathFile);
}
} else {
if (subJarf.getName().equals("components")) { //$NON-NLS-1$
File[] componentFiles = subJarf.listFiles();
for (File componentFile : componentFiles) {
if (componentFile.isDirectory()) {
File[] comFiles = componentFile.listFiles();
if (comFiles != null) {
for (File com : comFiles) {
if (com.isFile() && com.getName().endsWith(".original")) { //$NON-NLS-1$
String comPath = com
.getAbsolutePath()
.substring(0, com.getAbsolutePath().indexOf(".original")); //$NON-NLS-1$
File comPathFile = new File(comPath);
if (comPathFile.exists()) {
comPathFile.delete();
}
com.renameTo(comPathFile);
}
}
}
}
}
}
}
}
String writeJarFileName = jarFolderPath + fs + currentFileToBak.getName();
if (currentFileToBak.exists()) {
if (currentFileToBak.isDirectory()) {
try {
org.apache.commons.io.FileUtils.deleteDirectory(currentFileToBak);
} catch (IOException e) {
e.printStackTrace();
}
} else {
currentFileToBak.delete();
}
}
if (currentFileToBak.toString().endsWith(".jar")) { //$NON-NLS-1$
ZipFileUtils.zip(writeJarFileName, currentFileToBak.getAbsolutePath(), false);
} else {
FileCopyUtils.copyFolder(writeJarFileName, currentFileToBak.getAbsolutePath());
}
}
}
} else {
ZipFileUtils.unZip(zipFileName, zipFolderPath);
File zipFile = new File(zipFolderPath);
File[] zipFiles = zipFile.listFiles()[0].listFiles();
for (File f : zipFiles) {
if (f.getName().endsWith(".nl") //$NON-NLS-1$
|| f.getName().startsWith("org.talend.designer.components.localprovider") //$NON-NLS-1$
|| f.getName().startsWith("org.talend.designer.components.tdqprovider") //$NON-NLS-1$
|| f.getName().startsWith("org.talend.designer.components.tisprovider") //$NON-NLS-1$
|| f.getName().startsWith("org.talend.designer.components.tispeprovider") //$NON-NLS-1$
|| f.getName().startsWith("net.sourceforge.sqlexplorer.nl")) { //$NON-NLS-1$
File writeJarFile = (File) jarFileMap.get(f.getName());
if (writeJarFile == null) {
continue;
}
String jarFilePath = writeJarFile.getAbsolutePath();
// for bug 13620
if (writeJarFile.toString().endsWith(".jar")) {//$NON-NLS-1$
ZipFileUtils.unZip(writeJarFile, jarFolderPath + fs + writeJarFile.getName());
} else {
FileCopyUtils.copyFolder(jarFilePath, jarFolderPath + fs + writeJarFile.getName());
}
File[] zipSubFiles = f.listFiles();
File jarFiles = new File(jarFolderPath + fs + writeJarFile.getName());
File[] jarSubFiles = jarFiles.listFiles();
boolean flag = false;
boolean componentFlag = false;
for (File subJarf : jarSubFiles) {
if (subJarf.isFile()) {
if (subJarf.getName().endsWith(".original")) { //$NON-NLS-1$
flag = true;
break;
}
} // specific bug if .properties for components, since structure of babili resource is different
// with local plugin
else {
if (subJarf.getName().equals("components")) { //$NON-NLS-1$
File[] componentFiles = subJarf.listFiles();
if (componentFiles != null) {
for (File componentFile : componentFiles) {
if (componentFile.isDirectory()) {
File[] comFiles = componentFile.listFiles();
if (comFiles != null) {
for (File com : comFiles) {
if (com.getName().endsWith(".original")) { //$NON-NLS-1$
componentFlag = true;
break;
}
}
}
}
}
}
}
}
}
for (File subf : zipSubFiles) {
boolean subfNotExistBool = true;
for (File subJarf : jarSubFiles) {
if (subJarf.isDirectory() && subJarf.getName().equals("components")) { //$NON-NLS-1$
if (subf.getName().startsWith("t") && subf.getName().endsWith(".properties")) { //$NON-NLS-1$ //$NON-NLS-2$
File[] componentFiles = subJarf.listFiles();
for (File componentFile : componentFiles) {
if (componentFile
.getName()
.equals(subf.getName().substring(0, subf.getName().indexOf("_")))) { //$NON-NLS-1$
File[] comFiles = componentFile.listFiles();
if (comFiles != null) {
for (File com : comFiles) {
if (subf.getName().equals(com.getName())) {
transferFile(subf, com, componentFlag);
subfNotExistBool = false;
break;
}
}
}
}
}
}
} else {
if (subf.getName().equals(subJarf.getName())) {
transferFile(subf, subJarf, flag);
subfNotExistBool = false;
break;
}
}
}
}
String writeJarFileName = jarFolderPath + fs + writeJarFile.getName();
writeJarFile.delete();
if (writeJarFileName.endsWith(".jar")) {//$NON-NLS-1$
ZipFileUtils.zip(writeJarFileName, jarFilePath, false);
} else {
FileCopyUtils.copyFolder(writeJarFileName, jarFilePath);
}
}
}
}
updateCompleted = true;
try {
if (zipFolderPathFile.exists()) {
org.apache.commons.io.FileUtils.deleteDirectory(zipFolderPathFile);
}
if (jarFolderPathFile.exists()) {
org.apache.commons.io.FileUtils.deleteDirectory(jarFolderPathFile);
}
} catch (IOException e) {
ExceptionHandler.process(e);
}
}
private void transferFile(File sourceFile, File targetFile, boolean changed) {
String targetPath = targetFile.getAbsolutePath();
File newTargetFile = new File(targetPath + ".original"); //$NON-NLS-1$
if (!newTargetFile.exists() && changed == false) {
targetFile.renameTo(newTargetFile);
}
transferStream(sourceFile, targetFile);
}
private void transferStream(File sourceFile, File targetFile) {
if (!sourceFile.exists()) {
return;
}
try {
FileChannel sourceChannel = new FileInputStream(sourceFile.getAbsoluteFile()).getChannel();
FileChannel targetChannel = new FileOutputStream(targetFile.getAbsoluteFile()).getChannel();
targetChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
sourceChannel.close();
targetChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* DOC wzhang Comment method "runProgressMonitorDialog".
*
* @param validated
*/
public void runProgressMonitorDialog(final String zipFileName) {
updateCompleted = false;
ProgressMonitorDialog progressDialog = new ProgressMonitorDialog(getFieldEditorParent().getShell());
IRunnableWithProgress runnable = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) {
try {
monitor.beginTask(Messages.getString("I18nPreferencePage.wait_process"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
applyBabiliResource(zipFileName);
} catch (Exception e1) {
ExceptionHandler.process(e1);
} finally {
monitor.done();
}
}
};
try {
progressDialog.run(true, true, runnable);
} catch (InvocationTargetException e1) {
ExceptionHandler.process(e1);
} catch (InterruptedException e1) {
ExceptionHandler.process(e1);
}
if (updateCompleted) {
} else {
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#performOk()
*/
@Override
public boolean performOk() {
boolean ok = super.performOk();
saveLanguageType();
CorePlugin.getDefault().savePluginPreferences();
if (isBabiliButtonClicked) {
refreshAll();
}
return ok;
}
abstract protected void refreshAll();
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performApply()
*/
@Override
protected void performApply() {
saveLanguageType();
CorePlugin.getDefault().savePluginPreferences();
}
/**
*
* DOC wzhang Comment method "saveLanguageType".
*/
private void saveLanguageType() {
FileInputStream fin = null;
FileOutputStream fout = null;
try {
URL url = Platform.getConfigurationLocation().getURL();
log(url.getFile());
Properties p = new Properties();
// load the file configuration/config.ini
File iniFile = new File(url.getFile(), "config.ini"); //$NON-NLS-1$
fin = new FileInputStream(iniFile);
p.load(fin);
String languageType = CorePlugin
.getDefault()
.getPluginPreferences()
.getString(ITalendCorePrefConstants.LANGUAGE_SELECTOR);
if (languageType.equals(p.getProperty(EclipseStarter.PROP_NL))) {
return;
}
p.setProperty(EclipseStarter.PROP_NL, languageType);
fout = new FileOutputStream(iniFile);
p.store(fout, "#Configuration File"); //$NON-NLS-1$
fout.flush();
} catch (Exception e) {
ExceptionHandler.process(e);
} finally {
if (fin != null) {
try {
fin.close();
} catch (Exception e) {
// do nothing
}
}
if (fout != null) {
try {
fout.close();
} catch (Exception e) {
// do nothing
}
}
}
}
/**
*
* DOC wzhang Comment method "getCurrentTosVersion".
*
* @param normalize
* @return
*/
public static String getCurrentTosVersion(boolean normalize) {
String version = VersionUtils.getVersion();
if (normalize) {
version = normalizeVersion(version);
}
return version;
}
/**
*
* DOC wzhang Comment method "normalizeVersion".
*
* @param version
* @return
*/
public static String normalizeVersion(String version) {
Matcher matcher = VERSION_PATTERN.matcher(version);
if (matcher.matches()) {
String str = version.substring(0, version.indexOf("_r")); //$NON-NLS-1$
return str.replaceAll("\\.RC", "RC").replaceAll("\\.M", "M"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
} else {
// try again, ignore M, RC
matcher = DEFAULT_PATTERN.matcher(version);
matcher.find();
return matcher.group();
}
}
private void log(String s) {
log.log(Level.INFO, s);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#addField(org.eclipse.jface.preference.FieldEditor)
*/
@Override
protected void addField(FieldEditor editor) {
super.addField(editor);
fields.add(editor);
}
}

View File

@@ -72,10 +72,20 @@ public class JavaSimpleDateFormatProposalProvider implements IContentProposalPro
"\"dd/MM/yyyy\" : common format", "dd/MM/yyyy", "Date\n Examples : \n 01/01/2007\n 31/12/2007"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal(
"\"MM/dd/yyyy\" : common format", "MM/dd/yyyy", "Date\n Examples : \n 01/01/2007\n 12/31/2007"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal("\"yyyy-MM-dd'T'HH:mm:ss\" : common format", "yyyy-MM-dd'T'HH:mm:ss", //$NON-NLS-1$ //$NON-NLS-2$
new DateFormatContentProposal(
"\"yyyy-MM-dd\" : common format", "yyyy-MM-dd", "Date\n Examples : \n 2007-01-01\n 2007-12-31"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal("\"yyyy-MM-dd HH:mm:ss\" : common format", "yyyy-MM-dd HH:mm:ss",
"Date\n Examples : \n 2014-08-19 07:41:35\n 2014-12-31 07:41:35"),//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal("\"yyyy-MM-dd'T'HH:mm:ss\" : common format", "yyyy-MM-dd'T'HH:mm:ss",
"Date\n Examples : \n 2007-01-01T00:00:00\n 2007-12-31T23:59:59"), // hywang //$NON-NLS-1$
new DateFormatContentProposal("\"yyyy-MM-dd'T'HH:mm:ss'000Z'\" : common format", "yyyy-MM-dd'T'HH:mm:ss'000Z'", //$NON-NLS-1$ //$NON-NLS-2$
"Date\n Examples : \n 2007-01-01T00:00:00000Z\n 2007-12-31T23:59:59000Z"), // hywang //$NON-NLS-1$
new DateFormatContentProposal("\"yyyy-MM-dd'T'HH:mm:ss.SSSSSS\" : common format", "yyyy-MM-dd'T'HH:mm:ss.SSSSSS",
"Date\n Examples : \n 2019-04-18T09:47:49.568095"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal("\"yyyy-MM-dd HH:mm:ss zzz\" : common format", "yyyy-MM-dd HH:mm:ss zzz", //$NON-NLS-1$ //$NON-NLS-2$
"Date\n Examples : \n 2008-01-01 00:00:00 UTC\n 2008-12-31 04:08:00 PDT"),
new DateFormatContentProposal("\"yyyy-MM-dd HH:mm:ss.SSSXXX\" : common format", "yyyy-MM-dd HH:mm:ss.SSSXXX", //$NON-NLS-1$ //$NON-NLS-2$
"Date\n Examples : \n 2014-08-19 07:41:35.220 -05:00"),
new DateFormatContentProposal(
"\"HH:mm:ss\" : common format", "HH:mm:ss", "Date\n Examples : \n 00:00:00 \n 23:59:59"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new DateFormatContentProposal("\"yy\" : Year (00-99)", "yy", "Year \nExamples : \n 98\n 07"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$

View File

@@ -21,7 +21,8 @@ Require-Bundle: org.eclipse.debug.core,
org.talend.core.repository,
org.talend.libraries.apache,
org.talend.core.runtime,
org.talend.utils
org.talend.utils,
org.talend.libraries.dom4j-jaxen
Bundle-Vendor: .Talend SA.
Export-Package: org.talend.core,
org.talend.core.branding,
@@ -53,6 +54,4 @@ Export-Package: org.talend.core,
org.talend.core.services.resource,
org.talend.core.views,
org.talend.designer.runprocess
Import-Package: org.apache.commons.collections4.map,
org.dom4j,
org.dom4j.io
Import-Package: org.apache.commons.collections4.map

View File

@@ -15,10 +15,11 @@ package org.talend.core.services;
import java.util.Collection;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.general.Project;
@@ -47,4 +48,11 @@ public interface IGITProviderService extends IService {
void createOrUpdateGitIgnoreFile(IProject eclipseProject) throws CoreException;
public static IGITProviderService get() {
GlobalServiceRegister register = GlobalServiceRegister.getDefault();
if (!register.isServiceRegistered(IGITProviderService.class)) {
return null;
}
return register.getService(IGITProviderService.class);
}
}

View File

@@ -96,6 +96,7 @@ import org.talend.core.runtime.process.TalendProcessArgumentConstant;
import org.talend.core.runtime.process.TalendProcessOptionConstants;
import org.talend.core.runtime.repository.build.BuildExportManager;
import org.talend.core.service.IResourcesDependenciesService;
import org.talend.core.services.ICoreTisService;
import org.talend.core.services.ISVNProviderService;
import org.talend.core.ui.IJobletProviderService;
import org.talend.core.ui.ITestContainerProviderService;
@@ -167,6 +168,8 @@ public class ProcessorUtilities {
private static boolean isDebug = false;
private static JobInfo mainJobInfo;
public static void addOpenEditor(IEditorPart editor) {
openedEditors.add(editor);
}
@@ -435,6 +438,7 @@ public class ProcessorUtilities {
isMainJob = true;
codeModified = false;
mainJobInfo = jobInfo;
// this cache only keep the last main job's generation, so clear it since we regenerate a new job.
LastGenerationInfo.getInstance().getLastGeneratedjobs().clear();
@@ -760,32 +764,26 @@ public class ProcessorUtilities {
}
}
out: for (INode node : (List<? extends INode>) currentProcess.getGeneratingNodes()) {
ICoreTisService service = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreTisService.class)) {
service = (ICoreTisService) GlobalServiceRegister.getDefault().getService(ICoreTisService.class);
}
for (INode node : (List<? extends INode>) currentProcess.getGeneratingNodes()) {
if (node.getComponent() != null && node.getComponent().getComponentType() == EComponentType.GENERIC) {
// generic component, true always
return true;
}
// to check if node is db component , maybe need modification
boolean isDbNode = false;
for (IElementParameter param : (List<? extends IElementParameter>) node.getElementParameters()) {
if (EParameterFieldType.TEXT == param.getFieldType() && param.getValue() != null) {
if (("TYPE".equals(param.getName()) && !"".equals(param.getValue()))
|| ("FAMILY".equals(param.getName())
&& param.getValue().toString().startsWith("Database"))) {
isDbNode = true;
break;
}
}
}
if (isDbNode) {
for (IMetadataTable metadataTable : node.getMetadataList()) {
for (IMetadataColumn column : metadataTable.getListColumns()) {
if ("id_Dynamic".equals(column.getTalendType())) {
hasDynamicMetadata = true;
break out;
}
}
}
if (service != null && service.isSupportDynamicType(node)) {
IElementParameter mappingParam = node.getElementParameterFromField(EParameterFieldType.MAPPING_TYPE);
if (mappingParam != null) {
for (IMetadataTable metadataTable : node.getMetadataList()) {
for (IMetadataColumn column : metadataTable.getListColumns()) {
if ("id_Dynamic".equals(column.getTalendType())) {
return true;
}
}
}
}
}
}
return hasDynamicMetadata;
@@ -960,6 +958,7 @@ public class ProcessorUtilities {
if (jobInfo.getFatherJobInfo() == null) {
isMainJob = true;
codeModified = false;
mainJobInfo = jobInfo;
// this cache only keep the last main job's generation, so clear it since we regenerate a new job.
LastGenerationInfo.getInstance().getLastGeneratedjobs().clear();
@@ -1627,10 +1626,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
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;
return process;
}
@@ -1653,9 +1654,11 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor process = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return process;
}
@@ -1673,9 +1676,11 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor result = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return result;
}
@@ -1693,10 +1698,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor result =
generateCode(jobInfo, contextName, statistics, trace, needContext, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return result;
}
@@ -1723,9 +1730,11 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor result = generateCode(jobInfo, contextName, statistics, trace, needContext, option, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return result;
}
@@ -1746,9 +1755,11 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
result = generateCode(jobInfo, contextName, statistics, trace, true, GENERATE_ALL_CHILDS, monitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
}
return result;
}
@@ -1758,9 +1769,11 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor returnValue = generateCode(process, contextName, statistics, trace, false);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return returnValue;
}
@@ -1792,10 +1805,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, contextProperties,
GENERATE_ALL_CHILDS, new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return genCode;
}
@@ -1804,10 +1819,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor returnValue =
generateCode(process, context, statistics, trace, properties, new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return returnValue;
}
@@ -1839,10 +1856,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, properties,
GENERATE_ALL_CHILDS, progressMonitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return genCode;
}
@@ -1888,10 +1907,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor genCode = generateCode(processor, jobInfo, context.getName(), statistics, trace, properties,
GENERATE_ALL_CHILDS, progressMonitor);
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
TimeMeasure.end(timeMeasureGenerateCodesId);
// if active before, not disable and active still.
@@ -1918,10 +1939,12 @@ public class ProcessorUtilities {
jobList.clear();
esbJobs.clear();
hasLoopDependency = false;
mainJobInfo = null;
IProcessor genCode = generateCode(jobInfo, context.getName(), statistics, trace, properties, option,
new NullProgressMonitor());
jobList.clear();
hasLoopDependency = false;
mainJobInfo = null;
return genCode;
}
@@ -2179,6 +2202,47 @@ public class ProcessorUtilities {
}
// trunjob component
EList<NodeType> nodes = ptype.getNode();
getSubjobInfo(nodes, ptype, parentJobInfo, jobInfos,firstChildOnly);
if (parentJobInfo.isTestContainer()
&& GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
ITestContainerProviderService testContainerService =
(ITestContainerProviderService) GlobalServiceRegister.getDefault().getService(
ITestContainerProviderService.class);
if (testContainerService != null) {
getSubjobInfo(testContainerService.getOriginalNodes(ptype), ptype, parentJobInfo, jobInfos,firstChildOnly);
}
}
if (!parentJobInfo.isTestContainer() && !parentJobInfo.isJoblet()
&& GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
ITestContainerProviderService testContainerService =
(ITestContainerProviderService) GlobalServiceRegister.getDefault().getService(
ITestContainerProviderService.class);
if (testContainerService != null) {
List<ProcessItem> testsItems =
testContainerService.getTestContainersByVersion(parentJobInfo.getProcessItem());
for (ProcessItem testItem : testsItems) {
ProcessType testProcess = testContainerService.getTestContainerProcess(testItem);
if (testItem.getProcess() == null) {
testItem.setProcess(testProcess);
}
if (testProcess == null) {
log.warn(Messages.getString("ProcessorUtilities.nullProcess")); //$NON-NLS-1$
continue;
}
JobInfo jobInfo = new JobInfo(testItem, testProcess.getDefaultContext());
jobInfo.setTestContainer(true);
jobInfos.add(jobInfo);
jobInfo.setFatherJobInfo(parentJobInfo);
}
}
}
return jobInfos;
}
private static Set<JobInfo> getSubjobInfo(List<NodeType> nodes, ProcessType ptype, JobInfo parentJobInfo, Set<JobInfo> jobInfos,
boolean firstChildOnly) {
String jobletPaletteType = null;
String frameWork = ptype.getFramework();
if (StringUtils.isBlank(frameWork)) {
@@ -2188,7 +2252,7 @@ public class ProcessorUtilities {
} else if (frameWork.equals(HadoopConstants.FRAMEWORK_SPARK_STREAMING)) {
jobletPaletteType = ComponentCategory.CATEGORY_4_SPARKSTREAMING.getName();
}
for (NodeType node : nodes) {
for (NodeType node : nodes) {
boolean activate = true;
// check if node is active at least.
for (Object o : node.getElementParameter()) {
@@ -2286,31 +2350,7 @@ public class ProcessorUtilities {
}
}
}
if (!parentJobInfo.isTestContainer() && !parentJobInfo.isJoblet()
&& GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
ITestContainerProviderService testContainerService =
(ITestContainerProviderService) GlobalServiceRegister.getDefault().getService(
ITestContainerProviderService.class);
if (testContainerService != null) {
List<ProcessItem> testsItems =
testContainerService.getTestContainersByVersion(parentJobInfo.getProcessItem());
for (ProcessItem testItem : testsItems) {
ProcessType testProcess = testContainerService.getTestContainerProcess(testItem);
if (testItem.getProcess() == null) {
testItem.setProcess(testProcess);
}
if (testProcess == null) {
log.warn(Messages.getString("ProcessorUtilities.nullProcess")); //$NON-NLS-1$
continue;
}
JobInfo jobInfo = new JobInfo(testItem, testProcess.getDefaultContext());
jobInfo.setTestContainer(true);
jobInfos.add(jobInfo);
jobInfo.setFatherJobInfo(parentJobInfo);
}
}
}
return jobInfos;
return jobInfos;
}
private static boolean isRouteletNode(NodeType node) {
@@ -2468,6 +2508,15 @@ public class ProcessorUtilities {
return hasLoopDependency;
}
/**
* Getter for mainJobInfo. <font color="red">Need to check null</font>
*
* @return the mainJobInfo
*/
public static JobInfo getMainJobInfo() {
return mainJobInfo;
}
/**
* The dynamic loading of the hadoop configuration library is supported in DI, MapReduce and Spark (batch and
* streaming).

View File

@@ -1,29 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib" path="lib/commons-codec.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpclient.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpcore.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-connector-basic.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-impl.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-spi.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-classpath.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-file.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-http.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-wagon.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-util.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-utils.jar"/>
<classpathentry exported="true" kind="lib" path="lib/slf4j-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/wagon-provider-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-aether-provider-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-model-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-model-builder-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-repository-metadata-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-interpolation-1.19.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-utils-3.0.17.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry exported="true" kind="lib" path="lib/commons-codec.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpclient.jar"/>
<classpathentry exported="true" kind="lib" path="lib/httpcore.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-connector-basic.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-impl.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-spi.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-classpath.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-file.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-http.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-transport-wagon.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-resolver-util.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-utils.jar"/>
<classpathentry exported="true" kind="lib" path="lib/slf4j-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/wagon-provider-api.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-aether-provider-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-model-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-model-builder-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/maven-repository-metadata-3.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-interpolation-1.19.jar"/>
<classpathentry exported="true" kind="lib" path="lib/plexus-utils-3.0.17.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View File

@@ -6,7 +6,9 @@ Bundle-Version: 7.2.1.qualifier
Bundle-Activator: org.talend.designer.maven.aether.Activator
Require-Bundle: org.eclipse.core.runtime,
org.talend.libraries.jackson,
org.talend.core.runtime
org.talend.core.runtime,
org.eclipse.m2e.core,
org.eclipse.m2e.maven.runtime
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .,
lib/maven-aether-provider-3.2.1.jar,

View File

@@ -0,0 +1,185 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.designer.maven.aether.util;
import java.util.HashMap;
import java.util.Map;
import org.apache.maven.model.License;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingResult;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
import org.eclipse.aether.impl.DefaultServiceLocator;
import org.eclipse.aether.repository.Authentication;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.resolution.ArtifactRequest;
import org.eclipse.aether.resolution.ArtifactResult;
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
import org.eclipse.aether.transport.file.FileTransporterFactory;
import org.eclipse.aether.transport.http.HttpTransporterFactory;
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.nexus.TalendLibsServerManager;
import org.talend.core.runtime.maven.MavenArtifact;
public class MavenLibraryResolverProvider {
public static final String KEY_LOCAL_MVN_REPOSITORY = "talend.mvn.repository"; //$NON-NLS-1$
private static Map<String, RemoteRepository> urlToRepositoryMap = new HashMap<String, RemoteRepository>();
private RepositorySystem defaultRepoSystem;
private RepositorySystemSession defaultRepoSystemSession;
private RemoteRepository defaultRemoteRepository = null;
private static MavenLibraryResolverProvider instance;
public static MavenLibraryResolverProvider getInstance() {
if (instance == null) {
synchronized (MavenLibraryResolverProvider.class) {
if (instance == null) {
try {
instance = new MavenLibraryResolverProvider();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
return instance;
}
private MavenLibraryResolverProvider() {
defaultRepoSystem = newRepositorySystem();
defaultRepoSystemSession = newSession(defaultRepoSystem, getLocalMVNRepository());
ArtifactRepositoryBean talendServer = TalendLibsServerManager.getInstance().getTalentArtifactServer();
if (talendServer.getUserName() == null && talendServer.getPassword() == null) {
defaultRemoteRepository = new RemoteRepository.Builder("talend", "default", talendServer.getRepositoryURL()).build(); //$NON-NLS-1$ //$NON-NLS-2$
} else {
Authentication authentication = new AuthenticationBuilder().addUsername(talendServer.getUserName())
.addPassword(talendServer.getPassword()).build();
defaultRemoteRepository = new RemoteRepository.Builder("talend", "default", talendServer.getRepositoryURL()) //$NON-NLS-1$ //$NON-NLS-2$
.setAuthentication(authentication).build();
}
}
public ArtifactResult resolveArtifact(MavenArtifact aritfact) throws Exception {
RemoteRepository remoteRepo = getRemoteRepositroy(aritfact);
Artifact artifact = new DefaultArtifact(aritfact.getGroupId(), aritfact.getArtifactId(), aritfact.getClassifier(),
aritfact.getType(), aritfact.getVersion());
ArtifactRequest artifactRequest = new ArtifactRequest();
artifactRequest.addRepository(remoteRepo);
artifactRequest.setArtifact(artifact);
ArtifactResult result = defaultRepoSystem.resolveArtifact(defaultRepoSystemSession, artifactRequest);
return result;
}
public Map<String, Object> resolveDescProperties(MavenArtifact aritfact) throws Exception {
MavenArtifact clonedArtifact = aritfact.clone();
clonedArtifact.setType("pom"); //$NON-NLS-1$
Map<String, Object> properties = new HashMap<String, Object>();
ArtifactResult result = resolveArtifact(clonedArtifact);
if (result != null && result.isResolved()) {
DefaultModelBuilderFactory factory = new DefaultModelBuilderFactory();
DefaultModelBuildingRequest request = new DefaultModelBuildingRequest();
request.setPomFile(result.getArtifact().getFile());
ModelBuildingResult modelResult = factory.newInstance().build(request);
Model model = modelResult.getEffectiveModel();
if (model != null) {
properties.put("type", model.getPackaging()); //$NON-NLS-1$
properties.put("license.count", model.getLicenses().size()); //$NON-NLS-1$
if (model.getLicenses() != null) {
for (int i = 0; i < model.getLicenses().size(); i++) {
License license = model.getLicenses().get(i);
properties.put("license." + i + ".name", license.getName()); //$NON-NLS-1$//$NON-NLS-2$
properties.put("license." + i + ".url", license.getUrl()); //$NON-NLS-1$ //$NON-NLS-2$
properties.put("license." + i + ".comments", license.getComments()); //$NON-NLS-1$ //$NON-NLS-2$
properties.put("license." + i + ".distribution", license.getDistribution()); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
}
return properties;
}
public RemoteRepository getRemoteRepositroy(MavenArtifact aritfact) {
if (aritfact != null && aritfact.getRepositoryUrl() != null) {
if (urlToRepositoryMap.containsKey(aritfact.getRepositoryUrl())) {
return urlToRepositoryMap.get(aritfact.getRepositoryUrl());
}
RemoteRepository repository = buildRemoteRepository(aritfact);
urlToRepositoryMap.put(aritfact.getRepositoryUrl(), repository);
return repository;
}
return defaultRemoteRepository;
}
private RemoteRepository buildRemoteRepository(MavenArtifact aritfact) {
RemoteRepository repository = null;
if (aritfact.getUsername() == null && aritfact.getPassword() == null) {
repository = new RemoteRepository.Builder("talend", "default", aritfact.getRepositoryUrl()).build(); //$NON-NLS-1$ //$NON-NLS-2$
} else {
Authentication authentication = new AuthenticationBuilder().addUsername(aritfact.getUsername())
.addPassword(aritfact.getPassword()).build();
repository = new RemoteRepository.Builder("talend", "default", aritfact.getRepositoryUrl()) //$NON-NLS-1$ //$NON-NLS-2$
.setAuthentication(authentication).build();
}
return repository;
}
private RepositorySystem newRepositorySystem() {
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
return locator.getService(RepositorySystem.class);
}
private RepositorySystemSession newSession(RepositorySystem system, String target) {
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
LocalRepository localRepo = new LocalRepository( /* "target/local-repo" */target);
session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
return session;
}
private String getLocalMVNRepository() {
String repository = null;
try {
repository = MavenPlugin.getMaven().getLocalRepositoryPath();
} catch (Exception ex) {
// Ignore here
}
if (repository == null) {
repository = System.getProperty(KEY_LOCAL_MVN_REPOSITORY);
}
return repository;
}
}

View File

@@ -66,7 +66,7 @@
</dependency>
<dependency>
<groupId>org.talend.studio</groupId>
<artifactId>spring-boot-maven-plugin-1-5-9-RELEASE-tos</artifactId>
<artifactId>talend-compiler-plugin-tos</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
@@ -76,6 +76,12 @@
<version>${project.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.talend.studio</groupId>
<artifactId>build-helper-maven-plugin-3-0-0-tos</artifactId>
<version>${project.version}</version>
<type>pom</type>
</dependency>
</dependencies>
<profiles>
<profile>

View File

@@ -0,0 +1,44 @@
<?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>studio-maven-repository-tos</artifactId>
<version>7.2.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>build-helper-maven-plugin-3-0-0-tos</artifactId>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<addParentPoms>true</addParentPoms>
<copyPom>true</copyPom>
<includeScope>compile</includeScope>
<outputDirectory>${basedir}/../../../tmp/repository</outputDirectory>
<useRepositoryLayout>true</useRepositoryLayout>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -35,6 +35,13 @@
<version>3.1</version>
</dependency>
<!-- Required by commons-lang-2.6.pom -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-parent</artifactId>
<version>17</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>

View File

@@ -1,115 +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>studio-maven-repository-tos</artifactId>
<version>7.2.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>spring-boot-maven-plugin-1-5-9-RELEASE-tos</artifactId>
<packaging>pom</packaging>
<properties>
<!-- Dependency versions -->
<features-maven-plugin.version>2.2.9</features-maven-plugin.version>
<maven-install-plugin.version>2.5.1</maven-install-plugin.version>
<plexus-utils.version>2.1</plexus-utils.version>
</properties>
<dependencies>
<!-- Required by MS packaging for Jobs -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.8.10</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.13.RELEASE </version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Ingalls-SR9</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>4.3.12.RELEASE</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
<!-- Required for MS packaging for Routes -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-boot</artifactId>
<version>2.20.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<addParentPoms>true</addParentPoms>
<copyPom>true</copyPom>
<includeScope>compile</includeScope>
<outputDirectory>${basedir}/../../../tmp/repository</outputDirectory>
<useRepositoryLayout>true</useRepositoryLayout>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,46 @@
<?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>studio-maven-repository-tos</artifactId>
<version>7.2.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>talend-compiler-plugin-tos</artifactId>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-jdt</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<addParentPoms>true</addParentPoms>
<copyPom>true</copyPom>
<includeScope>compile</includeScope>
<outputDirectory>${basedir}/../../../tmp/repository</outputDirectory>
<useRepositoryLayout>true</useRepositoryLayout>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -14,7 +14,8 @@
<module>plugins/maven-bundle-plugin-2-3-7</module>
<module>plugins/maven-bundle-plugin-2-5-3</module>
<module>plugins/maven-install-plugin-2-5-1</module>
<module>plugins/spring-boot-maven-plugin-1-5-9-RELEASE</module>
<module>plugins/talend-compiler-plugin</module>
<module>plugins/build-helper-maven-plugin-3-0-0</module>
</modules>
<dependencies>
<dependency>

View File

@@ -10,7 +10,7 @@
<artifactId>studio-components-dependencies</artifactId>
<packaging>pom</packaging>
<properties>
<components.version>0.26.0-SNAPSHOT</components.version>
<components.version>0.27.0-SNAPSHOT</components.version>
</properties>
<repositories>
<repository>
@@ -52,15 +52,22 @@
<artifactId>jackson-dataformat-cbor</artifactId>
<version>2.9.5</version>
</dependency>
<!-- It fixes provided dependency scope to compile, because maven-dependency-plugin is setup to include
only compile and runtime scopes, but provided is also required. It's not possible to setup plugin to
include all: compile, runtime and provided dependencies -->
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>annotation</artifactId>
<version>2.4.0</version>
<scope>compile</scope>
</dependency>
<!-- Required by commons-lang-2.6.pom -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-parent</artifactId>
<version>17</version>
<type>pom</type>
</dependency>
<!-- It fixes provided dependency scope to compile, because maven-dependency-plugin is setup to include
only compile and runtime scopes, but provided is also required. It's not possible to setup plugin to
include all: compile, runtime and provided dependencies -->
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>annotation</artifactId>
<version>2.4.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.talend.components</groupId>
<artifactId>components-bom</artifactId>
@@ -152,12 +159,13 @@
<artifactId>components-api</artifactId>
<version>${components.version}</version>
</dependency>
<!-- Dependencies in provided scope should be explicitly added as dependency in this module,
because provided scope is not transitive -->
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>annotation</artifactId>
<version>2.4.0</version>
<!-- Dependencies in provided scope should be explicitly added as dependency in this module,
because provided scope is not transitive -->
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.component.annotations</artifactId>
<version>1.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.sisu</groupId>

View File

@@ -43,7 +43,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>

View File

@@ -11,7 +11,7 @@
<packaging>pom</packaging>
<properties>
<tcomp.version>1.1.4</tcomp.version>
<tcomp.version>1.1.9-SNAPSHOT</tcomp.version>
<slf4j.version>1.7.25</slf4j.version>
</properties>

View File

@@ -25,7 +25,10 @@ import java.util.GregorianCalendar;
import java.util.List;
import java.util.Properties;
import org.apache.maven.cli.MavenCli;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.cli.configuration.SettingsXmlConfigurationProcessor;
import org.apache.maven.settings.Profile;
import org.apache.maven.settings.Proxy;
@@ -53,6 +56,8 @@ import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.ui.DesignerMavenUiPlugin;
import org.talend.login.AbstractLoginTask;
import org.talend.utils.io.FilesUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
* DOC ggu class global comment. Detailled comment
@@ -286,10 +291,34 @@ public class M2eUserSettingForTalendLoginTask extends AbstractLoginTask {
return false;
}
final String m2Repo = ".m2/repository"; //$NON-NLS-1$
// default one
IPath localRepoPath = new Path(System.getProperty("user.home")).append(m2Repo); //$NON-NLS-1$
boolean isLocal = isLocalRepository();
IPath localRepoPath = null;
if (!isLocal) {
String mvnHome = System.getenv("M2_HOME"); //$NON-NLS-1$
if (mvnHome == null) {
mvnHome = System.getenv("MAVEN_HOME"); //$NON-NLS-1$
}
if (StringUtils.isNotBlank(mvnHome)) {
File globalSettings = new File(mvnHome).toPath().resolve("conf").resolve("settings.xml").toFile(); //$NON-NLS-1$ //$NON-NLS-2$
if (globalSettings.exists()) {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(globalSettings);
Node node = document.getElementsByTagName("localRepository").item(0); //$NON-NLS-1$
if (node != null) {
String repoPath = node.getTextContent();
if (StringUtils.isNotBlank(repoPath)) {
localRepoPath = new Path(repoPath);
}
}
}
}
if (localRepoPath == null) {
// set default
localRepoPath = new Path(System.getProperty("user.home")).append(m2Repo); //$NON-NLS-1$
}
}
// if local, always use config one
if (isLocalRepository() || !enableAccessM2Repository(monitor, localRepoPath.toString())) {
if (isLocal || !enableAccessM2Repository(monitor, localRepoPath.toString())) {
// need change the repo setting
localRepoPath = configPath.append(m2Repo);
File studioDefaultRepoFolder = localRepoPath.toFile();
@@ -394,7 +423,7 @@ public class M2eUserSettingForTalendLoginTask extends AbstractLoginTask {
String nonProxyHosts = p.getNonProxyHosts();
if (nonProxyHosts != null && nonProxyHosts.trim().length() > 0) {
List<String> bypassHosts = new ArrayList<String>();
List<String> bypassHosts = new ArrayList<>();
String[] nonProxiedHosts = proxyService.getNonProxiedHosts();
if (nonProxiedHosts != null) {
bypassHosts.addAll(Arrays.asList(nonProxiedHosts));

View File

@@ -34,7 +34,7 @@
<dependency>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-jdt</artifactId>
<version>1.0.0</version>
<version>1.4.0</version>
</dependency>
</dependencies>
</plugin>
@@ -63,28 +63,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>fabric8-maven-plugin</artifactId>
<version>3.5.37</version>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>

View File

@@ -43,6 +43,8 @@ public class MavenSystemFolders {
public static final ProjectSystemFolder TEMP = new ProjectSystemFolder("temp");
public static final ProjectSystemFolder SRC = new ProjectSystemFolder("src");
public static final ProjectSystemFolder[] SIMPLE_DIRS = { JAVA, RESOURCES };
public static final ProjectSystemFolder[] TEST_DIRS = { JAVA_TEST, RESOURCES_TEST };

View File

@@ -62,7 +62,7 @@ public final class DefaultMavenRepositoryProvider {
if (!zipFile.exists()) {
return;
}
FilesUtils.unzip(zipFile.getAbsolutePath(), dest.getAbsolutePath());
FilesUtils.unzip(zipFile.getAbsolutePath(), dest.getAbsolutePath(), false);
} catch (Exception e) {
ExceptionHandler.process(e);
}

View File

@@ -33,7 +33,6 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.utils.VersionUtils;
import org.talend.commons.utils.generation.JavaUtils;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants;
@@ -247,7 +246,6 @@ public class MavenTemplateManager {
Properties properties = model.getProperties();
properties.put("talend.project.name", projectTechName); //$NON-NLS-1$
properties.put("talend.version", VersionUtils.getTalendVersion()); //$NON-NLS-1$
return model;
}

View File

@@ -12,7 +12,13 @@
// ============================================================================
package org.talend.designer.maven.tools;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.*;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_AGGREGATORS;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_BEANS;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_CODES;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_JOBS;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_PIGUDFS;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_POMS;
import static org.talend.designer.maven.model.TalendJavaProjectConstants.DIR_ROUTINES;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
@@ -21,6 +27,7 @@ import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import org.apache.maven.model.Model;
import org.eclipse.core.resources.IContainer;
@@ -517,9 +524,10 @@ public class AggregatorPomsHelper {
}
/**
* without create/open project
* without create/open project<br/>
* Use Function to get the relativePath from property at realtime, since the property may be changed
*/
public static IFolder getItemPomFolder(Property property, String realVersion) {
public static IFolder getItemPomFolder(Property property, String realVersion, Function<Property, IPath> getItemRelativePath) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
ITestContainerProviderService testContainerService =
(ITestContainerProviderService) GlobalServiceRegister.getDefault().getService(
@@ -535,9 +543,10 @@ public class AggregatorPomsHelper {
}
}
}
String projectTechName = ProjectManager.getInstance().getProject(property).getTechnicalLabel();
AggregatorPomsHelper helper = new AggregatorPomsHelper(projectTechName);
IPath itemRelativePath = ItemResourceUtil.getItemRelativePath(property);
IPath itemRelativePath = getItemRelativePath.apply(property);
String version = realVersion == null ? property.getVersion() : realVersion;
String jobFolderName = getJobProjectFolderName(property.getLabel(), version);
ERepositoryObjectType type = ERepositoryObjectType.getItemType(property.getItem());
@@ -546,6 +555,10 @@ public class AggregatorPomsHelper {
return jobFolder;
}
public static IFolder getItemPomFolder(Property property, String realVersion) {
return getItemPomFolder(property, realVersion, p -> ItemResourceUtil.getItemRelativePath(p));
}
private static void createFoldersIfNeeded(IFolder folder) {
if (!folder.exists()) {
if (folder.getParent() instanceof IFolder) {

View File

@@ -77,6 +77,7 @@ import org.talend.designer.maven.template.ETalendMavenVariables;
import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.utils.PomIdsHelper;
import org.talend.designer.maven.utils.PomUtil;
import org.talend.designer.maven.utils.SortableDependency;
import org.talend.designer.runprocess.IProcessor;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.repository.ProjectManager;
@@ -600,7 +601,10 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
mainProjectBranch = "";
}
}
jobInfoContent = StringUtils.replace(jobInfoContent, "${talend.project.branch}", mainProjectBranch);
if (!isOptionChecked(TalendProcessArgumentConstant.ARG_AVOID_BRANCH_NAME)) {
jobInfoContent = StringUtils.replace(jobInfoContent, "${talend.project.branch}", mainProjectBranch);
}
IFolder templateFolder = codeProject.getTemplatesFolder();
IFile shFile = templateFolder.getFile(IProjectSettingTemplateConstants.JOB_RUN_SH_TEMPLATE_FILE_NAME);
@@ -650,7 +654,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
}
protected void updateDependencySet(IFile assemblyFile) {
Set<String> jobCoordinate = new HashSet<>();
Map<String, Dependency> jobCoordinateMap = new HashMap<String, Dependency>();
Set<JobInfo> childrenJobInfo = new HashSet<>();
if (!hasLoopDependency()) {
childrenJobInfo = getJobProcessor().getBuildChildrenJobs();
@@ -662,7 +666,9 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
String coordinate =
getCoordinate(PomIdsHelper.getJobGroupId(property), PomIdsHelper.getJobArtifactId(jobInfo),
MavenConstants.PACKAGING_JAR, PomIdsHelper.getJobVersion(property));
jobCoordinate.add(coordinate);
Dependency dependency = getDependencyObject(PomIdsHelper.getJobGroupId(property), PomIdsHelper.getJobArtifactId(jobInfo), PomIdsHelper.getJobVersion(property),
MavenConstants.PACKAGING_JAR, null);
jobCoordinateMap.put(coordinate, dependency);
}
// add parent job
@@ -670,10 +676,12 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
String parentCoordinate =
getCoordinate(PomIdsHelper.getJobGroupId(parentProperty), PomIdsHelper.getJobArtifactId(parentProperty),
MavenConstants.PACKAGING_JAR, PomIdsHelper.getJobVersion(parentProperty));
jobCoordinate.add(parentCoordinate);
Dependency parentDependency = getDependencyObject(PomIdsHelper.getJobGroupId(parentProperty), PomIdsHelper.getJobArtifactId(parentProperty), PomIdsHelper.getJobVersion(parentProperty),
MavenConstants.PACKAGING_JAR, null);
jobCoordinateMap.put(parentCoordinate, parentDependency);
// add talend libraries and codes
Set<String> talendLibCoordinate = new HashSet<>();
Map<String, Dependency> talendLibCoordinateMap = new HashMap<String, Dependency>();
String projectTechName = ProjectManager.getInstance().getProject(parentProperty).getTechnicalLabel();
String projectGroupId = PomIdsHelper.getProjectGroupId(projectTechName);
@@ -681,7 +689,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
List<Dependency> dependencies = new ArrayList<>();
addCodesDependencies(dependencies);
for (Dependency dependency : dependencies) {
talendLibCoordinate.add(getCoordinate(dependency));
talendLibCoordinateMap.put(getCoordinate(dependency), dependency);
}
// libraries
@@ -700,23 +708,23 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
}
String dependencyGroupId = dependency.getGroupId();
String coordinate = getCoordinate(dependency);
if (!jobCoordinate.contains(coordinate)) {
if (!jobCoordinateMap.containsKey(coordinate)) {
if (MavenConstants.DEFAULT_LIB_GROUP_ID.equals(dependencyGroupId)) {
talendLibCoordinate.add(coordinate);
talendLibCoordinateMap.put(coordinate, dependency);
}
}
}
// add 3rd party libraries
Set<String> _3rdDepLib = new HashSet<>();
Map<String, Dependency> _3rdDepLibMap = new HashMap<String, Dependency>();
Map<String, Set<Dependency>> duplicateLibs = new HashMap<>();
for (Dependency dependency : dependencies) {
if (MavenConstants.PACKAGING_POM.equals(dependency.getType())) {
continue;
}
String coordinate = getCoordinate(dependency);
if (!jobCoordinate.contains(coordinate) && !talendLibCoordinate.contains(coordinate)) {
_3rdDepLib.add(coordinate);
if (!jobCoordinateMap.containsKey(coordinate) && !talendLibCoordinateMap.containsKey(coordinate)) {
_3rdDepLibMap.put(coordinate, dependency);
addToDuplicateLibs(duplicateLibs, dependency);
}
}
@@ -736,13 +744,14 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
MavenArtifact artifact = MavenUrlHelper.parseMvnUrl(moduleNeeded.getMavenUri());
String coordinate = getCoordinate(artifact.getGroupId(), artifact.getArtifactId(), artifact.getType(),
artifact.getVersion());
if (!jobCoordinate.contains(coordinate) && !talendLibCoordinate.contains(coordinate)
&& !_3rdDepLib.contains(coordinate)) {
if (!jobCoordinateMap.containsKey(coordinate) && !talendLibCoordinateMap.containsKey(coordinate)
&& !_3rdDepLibMap.containsKey(coordinate)) {
Dependency dependencyObject = getDependencyObject(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier());
if (MavenConstants.DEFAULT_LIB_GROUP_ID.equals(artifact.getGroupId())
|| artifact.getGroupId().startsWith(projectGroupId)) {
talendLibCoordinate.add(coordinate);
talendLibCoordinateMap.put(coordinate, dependencyObject);
} else {
_3rdDepLib.add(coordinate);
_3rdDepLibMap.put(coordinate, dependencyObject);
Dependency dependency = PomUtil
.createDependency(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
artifact.getType(), artifact.getClassifier());
@@ -761,7 +770,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
} else {
// remove duplicated dependencies from 3rd lib list
for (Dependency dependency : dupDependencies) {
_3rdDepLib.remove(getCoordinate(dependency));
_3rdDepLibMap.remove(getCoordinate(dependency));
}
}
}
@@ -769,12 +778,12 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
try {
Document document = PomUtil.loadAssemblyFile(null, assemblyFile);
// add talend libs & codes
setupDependencySetNode(document, talendLibCoordinate, "lib", "${artifact.artifactId}.${artifact.extension}",
setupDependencySetNode(document, talendLibCoordinateMap, "lib", "${artifact.artifactId}.${artifact.extension}",
false);
// add 3rd party libs <dependencySet>
setupDependencySetNode(document, _3rdDepLib, "lib", null, false);
setupDependencySetNode(document, _3rdDepLibMap, "lib", null, false);
// add jobs
setupDependencySetNode(document, jobCoordinate, "${talend.job.name}",
setupDependencySetNode(document, jobCoordinateMap, "${talend.job.name}",
"${artifact.build.finalName}.${artifact.extension}", true);
// add duplicate dependencies if exists
setupFileNode(document, duplicateLibs);
@@ -797,11 +806,41 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
if (type != null) {
coordinate += type;
}
if (version != null) {
coordinate += separator + version;
}
return coordinate;
}
protected String getAssemblyCoordinate(Dependency dependency) {
String separator = ":"; //$NON-NLS-1$
String coordinate = dependency.getGroupId() + separator;
coordinate += dependency.getArtifactId() + separator;
if (dependency.getType() != null) {
coordinate += dependency.getType();
}
if (dependency.getClassifier() != null) {
coordinate += separator + "*";
}
if (dependency.getVersion() != null) {
coordinate += separator + dependency.getVersion();
}
return coordinate;
}
protected Dependency getDependencyObject(String groupId, String artifactId, String version, String type, String classifier) {
Dependency object = new SortableDependency();
object.setGroupId(groupId);
object.setArtifactId(artifactId);
object.setVersion(version);
object.setType(type);
object.setClassifier(classifier);
return object;
}
private void addToDuplicateLibs(Map<String, Set<Dependency>> map, Dependency dependency) {
String coordinate =
@@ -813,7 +852,7 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
map.get(coordinate).add(dependency);
}
protected void setupDependencySetNode(Document document, Set<String> libIncludes, String outputDir,
protected void setupDependencySetNode(Document document, Map<String, Dependency> libIncludes, String outputDir,
String fileNameMapping, boolean useProjectArtifact) {
if (libIncludes.isEmpty()) {
return;
@@ -832,9 +871,9 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
Node includesNode = document.createElement("includes");
dependencySetNode.appendChild(includesNode);
for (String include : libIncludes) {
for (Dependency dependency : libIncludes.values()) {
Node includeNode = document.createElement("include");
includeNode.setTextContent(include);
includeNode.setTextContent(getAssemblyCoordinate(dependency));
includesNode.appendChild(includeNode);
}

View File

@@ -18,12 +18,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.maven.model.Build;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
@@ -203,7 +203,7 @@ public class CreateMavenStandardJobOSGiPom extends CreateMavenJobPom {
@Override
protected void updateDependencySet(IFile assemblyFile) {
Set<String> jobCoordinate = new HashSet<>();
Map<String, Dependency> jobCoordinateMap = new HashMap<String, Dependency>();
if (!hasLoopDependency()) {
// add children jobs
Set<JobInfo> childrenJobInfo = getJobProcessor().getBuildChildrenJobs();
@@ -211,7 +211,9 @@ public class CreateMavenStandardJobOSGiPom extends CreateMavenJobPom {
Property property = jobInfo.getProcessItem().getProperty();
String coordinate = getCoordinate(PomIdsHelper.getJobGroupId(property), PomIdsHelper.getJobArtifactId(jobInfo),
MavenConstants.PACKAGING_JAR, PomIdsHelper.getJobVersion(property));
jobCoordinate.add(coordinate);
Dependency dependency = getDependencyObject(PomIdsHelper.getJobGroupId(property), PomIdsHelper.getJobArtifactId(jobInfo), PomIdsHelper.getJobVersion(property),
MavenConstants.PACKAGING_JAR, null);
jobCoordinateMap.put(coordinate, dependency);
}
}
// add parent job
@@ -219,11 +221,13 @@ public class CreateMavenStandardJobOSGiPom extends CreateMavenJobPom {
String parentCoordinate = getCoordinate(PomIdsHelper.getJobGroupId(parentProperty),
PomIdsHelper.getJobArtifactId(parentProperty), MavenConstants.PACKAGING_JAR,
PomIdsHelper.getJobVersion(parentProperty));
jobCoordinate.add(parentCoordinate);
Dependency parentDependency = getDependencyObject(PomIdsHelper.getJobGroupId(parentProperty), PomIdsHelper.getJobArtifactId(parentProperty), PomIdsHelper.getJobVersion(parentProperty),
MavenConstants.PACKAGING_JAR, null);
jobCoordinateMap.put(parentCoordinate, parentDependency);
try {
Document document = PomUtil.loadAssemblyFile(null, assemblyFile);
// add jobs
setupDependencySetNode(document, jobCoordinate, "${talend.job.name}",
setupDependencySetNode(document, jobCoordinateMap, "${talend.job.name}",
"${artifact.build.finalName}.${artifact.extension}", true);
PomUtil.saveAssemblyFile(assemblyFile, document);
} catch (Exception e) {

View File

@@ -2,7 +2,5 @@
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry exported="true" kind="lib" path="lib/terajdbc4-15.10.00.14.jar" sourcepath="org.talend.libraries.jdbc.teradatasrc.zip"/>
<classpathentry exported="true" kind="lib" path="lib/tdgssconfig-15.10.00.14.jar" sourcepath="org.talend.libraries.jdbc.teradatasrc.zip"/>
<classpathentry kind="output" path="class"/>
</classpath>

View File

@@ -4,32 +4,5 @@ Bundle-Name: Teradata Plug-in
Bundle-SymbolicName: org.talend.libraries.jdbc.teradata;singleton:=true
Bundle-Version: 7.2.1.qualifier
Bundle-Vendor: .Talend SA.
Bundle-ClassPath: lib/terajdbc4-15.10.00.14.jar,
lib/tdgssconfig-15.10.00.14.jar,
.
Export-Package: com.ncr.teradata,
com.teradata.jdbc,
com.teradata.jdbc.jdbc,
com.teradata.jdbc.jdbc.console,
com.teradata.jdbc.jdbc.fastexport,
com.teradata.jdbc.jdbc.fastload,
com.teradata.jdbc.jdbc.monitor,
com.teradata.jdbc.jdbc.raw,
com.teradata.jdbc.jdbc_3.dbmetadata,
com.teradata.jdbc.jdbc_4,
com.teradata.jdbc.jdbc_4.ifsupport,
com.teradata.jdbc.jdbc_4.io,
com.teradata.jdbc.jdbc_4.logging,
com.teradata.jdbc.jdbc_4.parcel,
com.teradata.jdbc.jdbc_4.statemachine,
com.teradata.jdbc.jdbc_4.util,
com.teradata.jdbc.resource,
com.teradata.tdgss.jalgapi,
com.teradata.tdgss.jgssp2gss,
com.teradata.tdgss.jgssp2ldap,
com.teradata.tdgss.jgssp2td1,
com.teradata.tdgss.jgssp2td2,
com.teradata.tdgss.jgssspi,
com.teradata.tdgss.jtdgss
Bundle-ActivationPolicy: lazy
Eclipse-BundleShape: dir

View File

@@ -1,4 +1,3 @@
output.. = class/
bin.includes = META-INF/,\
.,\
plugin.xml

View File

@@ -6,14 +6,14 @@
context="plugin:org.talend.libraries.jdbc.teradata"
language="java"
message="Needed for Teradata jdbc plugin"
name="terajdbc4-15.10.00.14.jar" mvn_uri="mvn:org.talend.libraries/terajdbc4-15.10.00.14/6.0.0"
name="terajdbc4-16.20.00.02.jar" mvn_uri="mvn:com.teradata/terajdbc4/16.20.00.02"
required="true">
</libraryNeeded>
<libraryNeeded
context="plugin:org.talend.libraries.jdbc.teradata"
language="java"
message="Needed for Teradata jdbc plugin"
name="tdgssconfig-15.10.00.14.jar" mvn_uri="mvn:org.talend.libraries/tdgssconfig-15.10.00.14/6.0.0"
name="tdgssconfig-16.20.00.02.jar" mvn_uri="mvn:com.teradata/tdgssconfig/16.20.00.02"
required="true">
</libraryNeeded>
</extension>

View File

@@ -699,7 +699,7 @@ public class ExternalModulesInstallDialogWithProgress extends ExternalModulesIns
// remove duplicated
List<ModuleNeeded> required = new ArrayList<ModuleNeeded>(requiredModules);
IRunnableWithProgress notInstalledModulesRunnable = RemoteModulesHelper.getInstance().getNotInstalledModulesRunnable(
required, inputList, true);
required, inputList, true, false);
setBlockOnOpen(block);
setInitialRunnable(notInstalledModulesRunnable);
open();

View File

@@ -14,6 +14,7 @@ package org.talend.librariesmanager.ui.startup;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -53,10 +54,16 @@ public class ShareMavenArtifactsOnStartup extends ShareLibrareisHelper {
if (monitor.isCanceled()) {
return null;
}
final String jarPathFromMaven = librariesService.getJarPathFromMaven(module.getMavenUri());
String jarPathFromMaven = librariesService.getJarPathFromMaven(module.getMavenUri());
if (jarPathFromMaven == null) {
continue;
String moduleLocation = module.getModuleLocaion();
if (moduleLocation != null && librariesService.checkJarInstalledFromPlatform(moduleLocation)) {
librariesService.installModules(Arrays.asList(module), monitor);
jarPathFromMaven = librariesService.getJarPathFromMaven(module.getMavenUri());
}
if (jarPathFromMaven == null) {
continue;
}
}
File jarFile = new File(jarPathFromMaven);
if (jarFile.exists()) {

View File

@@ -55,6 +55,7 @@ import org.talend.core.nexus.TalendLibsServerManager;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.core.runtime.maven.MavenConstants;
import org.talend.core.runtime.maven.MavenUrlHelper;
import org.talend.librariesmanager.librarydata.LibraryDataService;
import org.talend.librariesmanager.model.service.DynamicDistibutionLicenseUtil;
import org.talend.librariesmanager.ui.i18n.Messages;
@@ -68,8 +69,6 @@ import us.monoid.json.JSONObject;
*/
public class RemoteModulesHelper {
private static final String SLASH = "/"; //$NON-NLS-1$
// TODO to be removed after nexus server available
public static final boolean nexus_available = true;
@@ -81,9 +80,10 @@ public class RemoteModulesHelper {
*
*/
private final class RemoteModulesFetchRunnable implements IRunnableWithProgress {
private final boolean collectModulesWithJarName;
private volatile boolean useLocalLicenseData;
/**
*
*/
@@ -102,15 +102,19 @@ public class RemoteModulesHelper {
* @param toInstall
*/
private RemoteModulesFetchRunnable(Map<String, List<ModuleNeeded>> requiredModules, List<ModuleToInstall> toInstall,
boolean collectModulesWithJarName) {
boolean collectModulesWithJarName, boolean useLocalLicenseData) {
this.toInstall = toInstall;
this.contextMap = requiredModules;
this.collectModulesWithJarName = collectModulesWithJarName;
this.useLocalLicenseData = useLocalLicenseData;
}
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
final Set<String> mavenUrisTofetch = new HashSet<String>(contextMap.keySet());
if (LibraryDataService.getInstance().isBuildLibrariesData()) {
LibraryDataService.getInstance().buildLibraryLicenseData(mavenUrisTofetch);
}
monitor.beginTask(Messages.getString("RemoteModulesHelper.fetch.module.info"), mavenUrisTofetch.size() * 10 + 10);//$NON-NLS-1$
// fetch modules from local nexus first
if (addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, localCache)) {
@@ -131,7 +135,7 @@ public class RemoteModulesHelper {
return;
}
if (addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, remoteCache)) {
if (addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, getRemoteCache())) {
if (collectModulesWithJarName) {
collectModulesWithJarName(toInstall);
}
@@ -148,8 +152,12 @@ public class RemoteModulesHelper {
alreadyWarnedAboutConnectionIssue = true;
} // else already warned so do nothing
} else {
searchFromRemoteNexus(mavenUrisTofetch, monitor);
addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, remoteCache);
if (useLocalLicenseData) {
searchFromLocalDataFile(mavenUrisTofetch, monitor);
} else {
searchFromRemoteNexus(mavenUrisTofetch, monitor);
}
addCachedModulesToToBeInstallModules(toInstall, mavenUrisTofetch, contextMap, getRemoteCache());
}
unavailableModules.addAll(mavenUrisTofetch);
@@ -168,25 +176,32 @@ public class RemoteModulesHelper {
monitor.done();
}
private Map<String, ModuleToInstall> getRemoteCache() {
if (useLocalLicenseData) {
return localLicenseDataCache;
}
return remoteCache;
}
private void searchFromLocalNexus(Set<String> mavenUristoSearch, IProgressMonitor monitor) {
try {
ArtifactRepositoryBean customNexusServer = TalendLibsServerManager.getInstance().getCustomNexusServer();
IRepositoryArtifactHandler customerRepHandler = RepositoryArtifactHandlerManager
.getRepositoryHandler(customNexusServer);
if (customerRepHandler != null) {
// collect the groupIds to check
Set<String> groupIds = new HashSet<String>();
Set<String> snapshotgroupIds = new HashSet<String>();
for (String mvnUri : mavenUristoSearch) {
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(mvnUri);
if (parseMvnUrl != null) {
if (parseMvnUrl.getVersion() != null && parseMvnUrl.getVersion().endsWith(MavenConstants.SNAPSHOT)) {
snapshotgroupIds.add(parseMvnUrl.getGroupId());
} else {
groupIds.add(parseMvnUrl.getGroupId());
// collect the groupIds to check
Set<String> groupIds = new HashSet<String>();
Set<String> snapshotgroupIds = new HashSet<String>();
for (String mvnUri : mavenUristoSearch) {
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(mvnUri);
if (parseMvnUrl != null) {
if (parseMvnUrl.getVersion() != null && parseMvnUrl.getVersion().endsWith(MavenConstants.SNAPSHOT)) {
snapshotgroupIds.add(parseMvnUrl.getGroupId());
} else {
groupIds.add(parseMvnUrl.getGroupId());
}
}
}
}
for (String groupId : groupIds) {
List<MavenArtifact> searchResults = customerRepHandler.search(groupId, null, null, true, false);
@@ -205,66 +220,51 @@ public class RemoteModulesHelper {
}
}
private void searchFromRemoteNexus(Set<String> mavenUristoSearch, IProgressMonitor monitor) {
try {
ArtifactRepositoryBean talendServer = TalendLibsServerManager.getInstance().getTalentArtifactServer();
IRepositoryArtifactHandler talendRepositoryHander = RepositoryArtifactHandlerManager
.getRepositoryHandler(talendServer);
if (talendRepositoryHander != null) {
final Iterator<String> iterator = mavenUristoSearch.iterator();
Map<String, List<StringBuffer>> groupIdAndJarsToCheck = new HashMap<>();
while (iterator.hasNext()) {
if (monitor.isCanceled()) {
break;
}
String uriToCheck = iterator.next();
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(uriToCheck);
if (parseMvnUrl != null) {
//
if (StringUtils.isNotEmpty(parseMvnUrl.getRepositoryUrl())) {
continue;
}
StringBuffer jarsToCheck = null;
List<StringBuffer> buffers = groupIdAndJarsToCheck.get(parseMvnUrl.getGroupId());
if (buffers == null) {
buffers = new ArrayList<>();
groupIdAndJarsToCheck.put(parseMvnUrl.getGroupId(), buffers);
}
if (buffers.isEmpty() || buffers.get(buffers.size() - 1).length() > 2000) {
jarsToCheck = new StringBuffer();
buffers.add(jarsToCheck);
} else {
jarsToCheck = buffers.get(buffers.size() - 1);
}
if (parseMvnUrl.getArtifactId() != null && !parseMvnUrl.getArtifactId().contains("$")) { //$NON-NLS-1$
jarsToCheck.append(parseMvnUrl.getArtifactId());
jarsToCheck.append(","); //$NON-NLS-1$
} else {
ExceptionHandler.log("wrong setup of artifact, cf:" + parseMvnUrl.getArtifactId()); //$NON-NLS-1$
}
}
}
for (String groupId : groupIdAndJarsToCheck.keySet()) {
List<StringBuffer> buffers = groupIdAndJarsToCheck.get(groupId);
for (StringBuffer toCheck : buffers) {
String jarsToCheck = toCheck.toString();
if (jarsToCheck.endsWith(",")) {
jarsToCheck = jarsToCheck.substring(0, jarsToCheck.length() - 1);
}
List<MavenArtifact> searchResults = talendRepositoryHander.search(groupId, jarsToCheck, null, true,
false);
monitor.worked(10);
addModulesToCache(mavenUristoSearch, searchResults, remoteCache);
}
}
private void searchFromLocalDataFile(Set<String> mavenUristoSearch, IProgressMonitor monitor) {
LibraryDataService service = LibraryDataService.getInstance();
List<MavenArtifact> artifactList = new ArrayList<MavenArtifact>();
final Iterator<String> iterator = mavenUristoSearch.iterator();
while (iterator.hasNext()) {
if (monitor.isCanceled()) {
break;
}
String uriToCheck = iterator.next();
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(uriToCheck);
boolean isExist = false;
if (parseMvnUrl != null) {
isExist = service.fillLibraryData(uriToCheck, parseMvnUrl);
}
if (isExist) {
artifactList.add(parseMvnUrl);
}
} catch (Exception e1) {
ExceptionHandler.process(e1);
}
addModulesToCache(mavenUristoSearch, artifactList, getRemoteCache());
}
private void searchFromRemoteNexus(Set<String> mavenUristoSearch, IProgressMonitor monitor) {
LibraryDataService service = LibraryDataService.getInstance();
List<MavenArtifact> artifactList = new ArrayList<MavenArtifact>();
final Iterator<String> iterator = mavenUristoSearch.iterator();
while (iterator.hasNext()) {
if (monitor.isCanceled()) {
break;
}
String uriToCheck = iterator.next();
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(uriToCheck);
Map<String, Object> properties;
try {
properties = service.resolveDescProperties(parseMvnUrl);
if (properties != null && properties.size() > 0) {
service.fillArtifactPropertyData(properties, parseMvnUrl);
if (!MavenConstants.DOWNLOAD_MANUAL.equals(parseMvnUrl.getDistribution())) {
artifactList.add(parseMvnUrl);
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
addModulesToCache(mavenUristoSearch, artifactList, getRemoteCache());
}
private void addModulesToCache(Set<String> mavenUristoSearch, List<MavenArtifact> searchResults,
@@ -509,13 +509,11 @@ public class RemoteModulesHelper {
private static final String SEPARATOR_DISPLAY = " | "; //$NON-NLS-1$
private static final String SEPARATOR = "|"; //$NON-NLS-1$
private static final String SEPARATOR_SLIP = "\\|"; //$NON-NLS-1$
/**
* key : mvnuri(without SANPSHOT in version) value : ModuleToInstall
*/
private Map<String, ModuleToInstall> localLicenseDataCache = new HashMap<String, ModuleToInstall>();
private Map<String, ModuleToInstall> remoteCache = new HashMap<String, ModuleToInstall>();
private Map<String, ModuleToInstall> localCache = new HashMap<String, ModuleToInstall>();
@@ -531,8 +529,8 @@ public class RemoteModulesHelper {
}
public RemoteModulesFetchRunnable createRemoteModuleFetchRunnable(final Map<String, List<ModuleNeeded>> requiredModules,
final List<ModuleToInstall> toInstall, boolean collectModulesWithJarName) {
return new RemoteModulesFetchRunnable(requiredModules, toInstall, collectModulesWithJarName);
final List<ModuleToInstall> toInstall, boolean collectModulesWithJarName, boolean useLocalLicenseData) {
return new RemoteModulesFetchRunnable(requiredModules, toInstall, collectModulesWithJarName, useLocalLicenseData);
}
private JSONObject readJsonFromUrl(String url) throws IOException {
@@ -628,7 +626,7 @@ public class RemoteModulesHelper {
* ModuleToInstall.mavenUris set to download all needed versions
*/
public RemoteModulesFetchRunnable getNotInstalledModulesRunnable(List<ModuleNeeded> neededModules,
List<ModuleToInstall> toInstall, boolean collectModulesWithJarName) {
List<ModuleToInstall> toInstall, boolean collectModulesWithJarName, boolean useLocalLicenseData) {
Map<String, List<ModuleNeeded>> contextMap = new HashMap<String, List<ModuleNeeded>>();
ILibraryManagerService librairesManagerService = (ILibraryManagerService) GlobalServiceRegister.getDefault()
.getService(ILibraryManagerService.class);
@@ -679,13 +677,13 @@ public class RemoteModulesHelper {
}
}
// fetch the jars which are not in cache.
return createRemoteModuleFetchRunnable(contextMap, toInstall, collectModulesWithJarName);
return createRemoteModuleFetchRunnable(contextMap, toInstall, collectModulesWithJarName, useLocalLicenseData);
}
public RemoteModulesFetchRunnable getNotInstalledModulesRunnable(List<ModuleNeeded> neededModules,
List<ModuleToInstall> toInstall) {
return getNotInstalledModulesRunnable(neededModules, toInstall, false);
return getNotInstalledModulesRunnable(neededModules, toInstall, false, true);
}
/**
@@ -755,6 +753,6 @@ public class RemoteModulesHelper {
}
}
return null;
}
}
}

View File

@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="resources/java"/>
<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>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="src" path="resources/java"/>
<classpathentry kind="lib" path="lib/crypto-utils.jar"/>
<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

@@ -25,8 +25,10 @@ Require-Bundle: org.eclipse.core.runtime,
javax.xml.bind,
org.talend.model
Eclipse-LazyStart: true
Bundle-ClassPath: .
Bundle-ClassPath: .,
lib/crypto-utils.jar
Export-Package: org.talend.librariesmanager.emf.librariesindex,
org.talend.librariesmanager.librarydata,
org.talend.librariesmanager.maven,
org.talend.librariesmanager.model,
org.talend.librariesmanager.model.service,

View File

@@ -7,4 +7,6 @@ bin.includes = META-INF/,\
resources/,\
plugin.properties,\
model/,\
templates/
templates/,\
distribution/license.json,\
lib/crypto-utils.jar

View File

@@ -41,6 +41,27 @@
bundleId="">
</bundleId>
</library>
</systemRoutine>
<systemRoutine
name="PasswordEncryptUtil">
<library
name="crypto-utils.jar">
<bundleId
bundleId="">
</bundleId>
</library>
<library
name="slf4j-api-1.7.10.jar">
<bundleId
bundleId="org.talend.libraries.slf4j">
</bundleId>
</library>
<library
name="slf4j-log4j12-1.7.10.jar">
<bundleId
bundleId="org.talend.libraries.slf4j">
</bundleId>
</library>
</systemRoutine>
</extension>
<extension

View File

@@ -9,4 +9,34 @@
</parent>
<artifactId>org.talend.librariesmanager</artifactId>
<packaging>eclipse-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<!-- same as org.talend.libraries.excel -->
<id>copy-maven-repository</id>
<phase>generate-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/lib</outputDirectory>
<destFileName>crypto-utils.jar</destFileName>
<artifactItems>
<dependency>
<groupId>org.talend.daikon</groupId>
<artifactId>crypto-utils</artifactId>
<version>${org.talend.daikon.crypto-utils.version}</version>
</dependency>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -12,12 +12,9 @@
// ============================================================================
package routines.system;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.talend.daikon.crypto.CipherSources;
import org.talend.daikon.crypto.Encryption;
import org.talend.daikon.crypto.KeySources;
/**
* DOC chuang class global comment. Detailled comment
@@ -26,36 +23,15 @@ public class PasswordEncryptUtil {
public static String ENCRYPT_KEY = "Encrypt"; //$NON-NLS-1$
private static String rawKey = "Talend-Key"; //$NON-NLS-1$
private static final String ENCRYPTION_KEY = "Talend_TalendKey";
private static SecretKey key = null;
private static SecureRandom secureRandom = new SecureRandom();
private static String CHARSET = "UTF-8";
private static SecretKey getSecretKey() throws Exception {
if (key == null) {
byte rawKeyData[] = rawKey.getBytes(CHARSET);
DESKeySpec dks = new DESKeySpec(rawKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); //$NON-NLS-1$
key = keyFactory.generateSecret(dks);
}
return key;
}
private static Encryption defaultEncryption;
public static String encryptPassword(String input) throws Exception {
if (input == null) {
return input;
}
SecretKey key = getSecretKey();
Cipher c = Cipher.getInstance("DES"); //$NON-NLS-1$
c.init(Cipher.ENCRYPT_MODE, key, secureRandom);
byte[] cipherByte = c.doFinal(input.getBytes(CHARSET));
String dec = Hex.encodeHexString(cipherByte);
return dec;
return getEncryption().encrypt(input);
}
public static String decryptPassword(String input) {
@@ -63,18 +39,20 @@ public class PasswordEncryptUtil {
return input;
}
try {
byte[] dec = Hex.decodeHex(input.toCharArray());
SecretKey key = getSecretKey();
Cipher c = Cipher.getInstance("DES"); //$NON-NLS-1$
c.init(Cipher.DECRYPT_MODE, key, secureRandom);
byte[] clearByte = c.doFinal(dec);
return new String(clearByte, CHARSET);
return getEncryption().decrypt(input);
} catch (Exception e) {
//do nothing
// do nothing
}
return input;
}
private static Encryption getEncryption() {
if (defaultEncryption == null) {
defaultEncryption = new Encryption(KeySources.fixedKey(ENCRYPTION_KEY), CipherSources.aes());
}
return defaultEncryption;
}
public static final String PASSWORD_FOR_LOGS_VALUE = "...";
}

View File

@@ -166,12 +166,16 @@ public class StringUtils {
}
}
int resultSize = substrings.size();
String[] result = substrings.toArray(new String[resultSize]);
while (resultSize > 0 && substrings.get(resultSize - 1).equals("")) {
resultSize--;
resultSize--;
// Setting data to null for empty string in last columns to keep original behavior
result[resultSize] = null;
}
String[] result = new String[resultSize];
return substrings.subList(0, resultSize).toArray(result);
return result;
}
/**

View File

@@ -0,0 +1,299 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.librarydata;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.talend.commons.exception.ExceptionHandler;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class LibraryDataJsonProvider {
private static Logger log = Logger.getLogger(LibraryDataJsonProvider.class);
private File dataFile;
public LibraryDataJsonProvider(File dataFile) {
this.dataFile = dataFile;
}
public Map<String, Library> loadLicenseData() {
Map<String, Library> mvnToLibraryMap = new HashMap<String, Library>();
TypeReference<Libraries> typeReference = new TypeReference<Libraries>() {
// no need to overwrite
};
if (dataFile.exists()) {
try {
Libraries libraries = new ObjectMapper().readValue(dataFile, typeReference);
mvnToLibraryMap.clear();
for (Library obj : libraries.getLibraryList()) {
mvnToLibraryMap.put(obj.getMvnUrl(), obj);
}
} catch (IOException e) {
ExceptionHandler.process(e);
}
} else {
log.error("Can't find license data file:" + dataFile.getAbsolutePath());
}
return mvnToLibraryMap;
}
public synchronized void saveLicenseData(Map<String, Library> mvnToLibraryMap) {
Libraries libraries = new Libraries();
for (String mvnUrl : mvnToLibraryMap.keySet()) {
Library library = mvnToLibraryMap.get(mvnUrl);
libraries.getLibraryList().add(library);
}
ObjectMapper objectMapper = new ObjectMapper();
try {
if (!dataFile.exists()) {
dataFile.createNewFile();
}
objectMapper.writerWithDefaultPrettyPrinter().writeValue(dataFile, libraries);
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
}
class Libraries {
@JsonProperty("library")
private List<Library> libraryList = new ArrayList<Library>();
public List<Library> getLibraryList() {
return libraryList;
}
public void setLibraryList(List<Library> libraryList) {
this.libraryList = libraryList;
}
}
class Library {
@JsonProperty("mvnUrl")
private String mvnUrl;
@JsonProperty("groupId")
private String groupId;
@JsonProperty("artifactId")
private String artifactId;
@JsonProperty("version")
private String version;
@JsonProperty("type")
private String type;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty("classifier")
private String classifier;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty("url")
private String url;
@JsonProperty("licenseMissing")
@JsonInclude(Include.NON_DEFAULT)
private boolean licenseMissing = false;
@JsonProperty("pomMissing")
@JsonInclude(Include.NON_DEFAULT)
private boolean pomMissing = false;
@JsonProperty("jarMissing")
@JsonInclude(Include.NON_DEFAULT)
private boolean jarMissing = false;
@JsonProperty("licenses")
List<LibraryLicense> licenses = new ArrayList<LibraryLicense>();
public Library() {
}
public String getMvnUrl() {
return mvnUrl;
}
public void setMvnUrl(String mvnUrl) {
this.mvnUrl = mvnUrl;
}
public List<LibraryLicense> getLicenses() {
return licenses;
}
public void setLicenses(List<LibraryLicense> licenses) {
this.licenses = licenses;
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getArtifactId() {
return artifactId;
}
public void setArtifactId(String artifactId) {
this.artifactId = artifactId;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getClassifier() {
return classifier;
}
public void setClassifier(String classifier) {
this.classifier = classifier;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public boolean isLicenseMissing() {
return licenseMissing;
}
public void setLicenseMissing(boolean licenseMissing) {
this.licenseMissing = licenseMissing;
}
public boolean isJarMissing() {
return jarMissing;
}
public void setJarMissing(boolean jarMissing) {
this.jarMissing = jarMissing;
}
public boolean isPomMissing() {
return pomMissing;
}
public void setPomMissing(boolean pomMissing) {
this.pomMissing = pomMissing;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("mvnUrl: ").append(mvnUrl);
sb.append("groupId: ").append(groupId);
sb.append("artifactId: ").append(artifactId);
sb.append("version: ").append(version);
sb.append("type: ").append(type);
for (int i = 0; i < licenses.size(); i++) {
sb.append("License " + i + ": " + licenses.get(i).toString());
}
return sb.toString();
}
}
class LibraryLicense {
@JsonProperty("name")
private String name;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty("url")
private String url;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty("distribution")
private String distribution;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty("comments")
private String comments;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDistribution() {
return distribution;
}
public void setDistribution(String distribution) {
this.distribution = distribution;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("name: ").append(name == null ? "" : name);
sb.append("name: ").append(url == null ? "" : url);
sb.append("distribution: ").append(distribution == null ? "" : distribution);
sb.append("comments: ").append(comments == null ? "" : comments);
return sb.toString();
}
}

View File

@@ -0,0 +1,331 @@
// ============================================================================
//
// Copyright (C) 2006-2018 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.librarydata;
import java.io.File;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.Platform;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.core.runtime.maven.MavenConstants;
import org.talend.core.runtime.maven.MavenUrlHelper;
import org.talend.designer.maven.aether.util.MavenLibraryResolverProvider;
public class LibraryDataService {
private static Logger logger = Logger.getLogger(LibraryDataService.class);
/**
* {@value}
* <p>
* System property of build studio library license file, the default value is <b>false</b>.
*/
public static final String KEY_LIBRARIES_BUILD_LICENSE = "talend.libraries.buildLicense"; //$NON-NLS-1$
/**
* {@value}
* <p>
* System property of build studio library file, the default value is <b>false</b>.
*/
public static final String KEY_LIBRARIES_BUILD_JAR = "talend.libraries.buildJar"; //$NON-NLS-1$
/**
* {@value}
* <p>
* System property of studio library data file folder path, the default value is Studio install
* folder/configuration.
*/
public static final String KEY_LIBRARIES_DATA_FOLDER = "talend.libraries.folder"; //$NON-NLS-1$
/**
* {@value}
* <p>
* System property of retrieve library data, the default value is <b>true</b>.
*/
public static final String KEY_BUILD_LIBRARY_IF_MISSING = "talend.libraries.buildIfMissing"; //$NON-NLS-1$
/**
* {@value}
* <p>
* System property of retrieve library data, the default value is <b>false</b>.
*/
public static final String KEY_BUILD_LIBRARY_IF_LICENSE_MISSING = "talend.libraries.buildIfLicenseMissing"; //$NON-NLS-1$
private static final String LIBRARIES_DATA_FILE_NAME = "library_data.index"; //$NON-NLS-1$
private static final String UNRESOLVED_LICENSE_NAME = "UNKNOW"; //$NON-NLS-1$
private static boolean buildLibraryIfFileMissing = true;
private boolean buildLibraryLicense = false;
private boolean buildLibraryIfLibraryMissing = true;
private boolean buildLibraryIfLicenseMissing = false;
private boolean buildLibraryJarFile = false;
private static final Map<String, Library> mvnToLibraryMap = new ConcurrentHashMap<String, Library>();
private static LibraryDataService instance;
private LibraryDataJsonProvider dataProvider;
private Set<String> retievedMissingSet = new HashSet<String>();
private int repeatTime = 3;
private LibraryLicense unknownLicense;;
private LibraryDataService() {
buildLibraryLicense = Boolean.valueOf(System.getProperty(KEY_LIBRARIES_BUILD_LICENSE, Boolean.FALSE.toString()));
buildLibraryIfLibraryMissing = Boolean.valueOf(System.getProperty(KEY_BUILD_LIBRARY_IF_MISSING, Boolean.TRUE.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 libraryDataFile = getLibraryDataFile();
if (buildLibraryLicense) {
if (libraryDataFile.exists()) {
libraryDataFile.delete();
}
}
unknownLicense = new LibraryLicense();
unknownLicense.setName(UNRESOLVED_LICENSE_NAME);
dataProvider = new LibraryDataJsonProvider(libraryDataFile);
mvnToLibraryMap.putAll(dataProvider.loadLicenseData());
}
public static LibraryDataService getInstance() {
if (instance == null) {
synchronized (LibraryDataService.class) {
if (instance == null) {
instance = new LibraryDataService();
}
}
}
return instance;
}
public void buildLibraryLicenseData(Set<String> mvnUrlList) {
for (String mvnUrl : mvnUrlList) {
Library libraryObj = resolve(mvnUrl);
mvnToLibraryMap.put(getShortMvnUrl(mvnUrl), libraryObj);
}
dataProvider.saveLicenseData(mvnToLibraryMap);
}
private Library resolve(String mvnUrl) {
MavenArtifact artifact = MavenUrlHelper.parseMvnUrl(mvnUrl);
Library libraryObj = new Library();
libraryObj.setGroupId(artifact.getGroupId());
libraryObj.setArtifactId(artifact.getArtifactId());
libraryObj.setVersion(artifact.getVersion());
libraryObj.setMvnUrl(getShortMvnUrl(mvnUrl));
libraryObj.setType(artifact.getType());
libraryObj.setClassifier(artifact.getClassifier());
boolean hasError = false;
logger.debug("Resolving artifact descriptor:" + getShortMvnUrl(mvnUrl)); //$NON-NLS-1$
for (int repeated = 0; repeated < repeatTime; repeated++) {
try {
if (repeated > 0) {
Thread.sleep(1000); // To avoid server connection pool shut down
}
Map<String, Object> properties = resolveDescProperties(artifact);
parseDescriptorResult(libraryObj, properties);
hasError = false;
} catch (Exception e) {
hasError = true;
}
if (!hasError) {
break;
}
}
logger.debug("Resolved artifact descriptor:" + getShortMvnUrl(mvnUrl)); //$NON-NLS-1$
if (buildLibraryJarFile) {
boolean jarMissing = false;
try {
MavenLibraryResolverProvider.getInstance().resolveArtifact(artifact);
} catch (Exception ex) {
jarMissing = true;
} finally {
libraryObj.setJarMissing(jarMissing);
}
}
return libraryObj;
}
public Map<String, Object> resolveDescProperties(MavenArtifact artifact) throws Exception {
Map<String, Object> properties = MavenLibraryResolverProvider.getInstance().resolveDescProperties(artifact);
return properties;
}
public void fillArtifactPropertyData(Map<String, Object> properties, MavenArtifact artifact) {
Library libraryObj = new Library();
libraryObj.setGroupId(artifact.getGroupId());
libraryObj.setArtifactId(artifact.getArtifactId());
libraryObj.setVersion(artifact.getVersion());
libraryObj.setMvnUrl(artifact.getUrl());
libraryObj.setType(artifact.getType());
libraryObj.setClassifier(artifact.getClassifier());
parseDescriptorResult(libraryObj, properties);
fillLibraryData(libraryObj, artifact);
}
private boolean isPackagePom(Library libraryObj) {
if (libraryObj != null) {
if ("pom".equalsIgnoreCase(libraryObj.getType())) {
return true;
}
for (LibraryLicense license : libraryObj.getLicenses()) {
if (MavenConstants.DOWNLOAD_MANUAL.equalsIgnoreCase(license.getDistribution())) {
return true;
}
}
}
return false;
}
private void parseDescriptorResult(Library libraryObj, Map<String, Object> properties) {
if (properties.size() == 0) {
libraryObj.setPomMissing(true);
}
libraryObj.setType(String.valueOf(properties.get("type"))); //$NON-NLS-1$
int licenseCount = 0;
if (properties.containsKey("license.count")) { //$NON-NLS-1$
licenseCount = (int) properties.get("license.count"); //$NON-NLS-1$
}
for (int i = 0; i < licenseCount; i++) {
String name = getStringValue(properties.get("license." + i + ".name")); //$NON-NLS-1$ //$NON-NLS-2$
String url = getStringValue(properties.get("license." + i + ".url")); //$NON-NLS-1$ //$NON-NLS-2$
String comments = getStringValue(properties.get("license." + i + ".comments")); //$NON-NLS-1$ //$NON-NLS-2$
String distribution = getStringValue(properties.get("license." + i + ".distribution")); //$NON-NLS-1$ //$NON-NLS-2$
LibraryLicense license = new LibraryLicense();
license.setName(name);
license.setUrl(url);
license.setComments(comments);
license.setDistribution(distribution);
libraryObj.getLicenses().add(license);
}
if (libraryObj.getLicenses().size() == 0) {
libraryObj.setLicenseMissing(true);
libraryObj.getLicenses().add(unknownLicense);
}
}
private String getStringValue(Object value) {
if (value == null) {
return null;
}
return value.toString();
}
public boolean isBuildLibrariesData() {
if (buildLibraryLicense) {
return true;
}
if (buildLibraryIfFileMissing && !getLibraryDataFile().exists()) {
return true;
}
return false;
}
private File getLibraryDataFile() {
String folder = System.getProperty(KEY_LIBRARIES_DATA_FOLDER);
if (folder == null) {
folder = new File(Platform.getInstallLocation().getURL().getPath(), "configuration").getAbsolutePath(); //$NON-NLS-1$
}
return new File(folder, LIBRARIES_DATA_FILE_NAME);
}
public boolean fillLibraryData(String mvnUrl, MavenArtifact artifact) {
boolean isExist = false;
String shortMvnUrl = getShortMvnUrl(mvnUrl);
Library object = mvnToLibraryMap.get(shortMvnUrl);
if (!retievedMissingSet.contains(mvnUrl) && ((object == null && buildLibraryIfLibraryMissing)
|| (object.isLicenseMissing() && buildLibraryIfLicenseMissing))) {
Library newObject = null;
retievedMissingSet.add(mvnUrl);
try {
newObject = resolve(mvnUrl);
} catch (Exception e) {
logger.warn("Resolve pom failed:" + shortMvnUrl); //$NON-NLS-1$
}
if (newObject != null && (evaluateLibrary(newObject) > evaluateLibrary(object))) {
object = newObject;
mvnToLibraryMap.put(shortMvnUrl, object);
dataProvider.saveLicenseData(mvnToLibraryMap);
}
}
if (object != null) {
if ("jar".equalsIgnoreCase(object.getType()) && !object.isJarMissing() && !object.isPomMissing()) {
isExist = true;
}
fillLibraryData(object, artifact);
}
return isExist;
}
public void fillLibraryData(Library object, MavenArtifact artifact) {
if (object != null && artifact != null) {
List<LibraryLicense> objLicenseList = object.getLicenses();
LibraryLicense bestLicense = null;
if (objLicenseList.size() >= 1) {
bestLicense = objLicenseList.get(0);
}
if (bestLicense != null) {
artifact.setLicense(bestLicense.getName());
artifact.setLicenseUrl(bestLicense.getUrl());
}
// URL
if (StringUtils.isEmpty(artifact.getUrl()) && StringUtils.isNotEmpty(object.getUrl())) {
artifact.setUrl(object.getUrl());
}
if (isPackagePom(object)) {
artifact.setDistribution(MavenConstants.DOWNLOAD_MANUAL);
}
}
}
private String getShortMvnUrl(String mvnUrl) {
if (mvnUrl.indexOf("@") > 0 && mvnUrl.indexOf("!") > 0) {
mvnUrl = "mvn:" + mvnUrl.substring(mvnUrl.indexOf("!") + 1);
}
return mvnUrl;
}
private int evaluateLibrary(Library obj1) {
int score = -1;
if (obj1 != null) {
score++;
if (!obj1.isJarMissing()) {
score++;
}
if (!obj1.isLicenseMissing()) {
score += 2;
}
}
return score;
}
}

View File

@@ -14,7 +14,6 @@ package org.talend.librariesmanager.nexus;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
@@ -22,21 +21,20 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.fluent.Request;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.nexus.IRepositoryArtifactHandler;
import org.talend.core.runtime.maven.MavenArtifact;
import org.talend.core.runtime.maven.MavenUrlHelper;
import org.talend.designer.maven.aether.RepositorySystemFactory;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.talend.librariesmanager.nexus.nexus3.handler.INexus3SearchHandler;
import org.talend.librariesmanager.nexus.nexus3.handler.Nexus3BetaSearchHandler;
import org.talend.librariesmanager.nexus.nexus3.handler.Nexus3ScriptSearchHandler;
import org.talend.librariesmanager.nexus.nexus3.handler.Nexus3V1SearchHandler;
/**
* created by wchen on Aug 2, 2017 Detailled comment
@@ -44,10 +42,14 @@ import net.sf.json.JSONObject;
*/
public class Nexus3RepositoryHandler extends AbstractArtifactRepositoryHandler {
private String SEARCH_SERVICE = "service/rest/v1/script/search/run";
private static Logger LOGGER = Logger.getLogger(Nexus3RepositoryHandler.class);
private String REP_PREFIX_PATH = "/repository/";
private INexus3SearchHandler currentQueryHandler = null;
private static List<INexus3SearchHandler> queryHandlerList = new ArrayList<INexus3SearchHandler>();
@Override
public IRepositoryArtifactHandler clone() {
return new Nexus3RepositoryHandler();
@@ -108,75 +110,50 @@ public class Nexus3RepositoryHandler extends AbstractArtifactRepositoryHandler {
@Override
public List<MavenArtifact> search(String groupIdToSearch, String artifactId, String versionToSearch, boolean fromRelease,
boolean fromSnapshot) throws Exception {
String serverUrl = serverBean.getServer();
if (!serverUrl.endsWith("/")) {
serverUrl = serverUrl + "/";
}
String searchUrl = serverUrl + SEARCH_SERVICE;
Request request = Request.Post(searchUrl);
String userPass = serverBean.getUserName() + ":" + serverBean.getPassword();
String basicAuth = "Basic " + new String(new Base64().encode(userPass.getBytes()));
Header authority = new BasicHeader("Authorization", basicAuth);
Header contentType = new BasicHeader("Content-Type", "text/plain");
request.addHeader(contentType);
request.addHeader(authority);
List<MavenArtifact> resultList = new ArrayList<MavenArtifact>();
if (fromRelease) {
resultList.addAll(doSearch(request, serverBean.getRepositoryId(), groupIdToSearch, artifactId, versionToSearch));
resultList.addAll(doSearch(serverBean.getRepositoryId(), groupIdToSearch, artifactId, versionToSearch));
}
if (fromSnapshot) {
resultList.addAll(doSearch(request, serverBean.getSnapshotRepId(), groupIdToSearch, artifactId, versionToSearch));
resultList.addAll(doSearch(serverBean.getSnapshotRepId(), groupIdToSearch, artifactId, versionToSearch));
}
return resultList;
}
private List<MavenArtifact> doSearch(Request request, String repositoryId, String groupIdToSearch, String artifactId,
String versionToSearch) throws Exception {
List<MavenArtifact> resultList = new ArrayList<MavenArtifact>();
JSONObject body = new JSONObject();
body.put("repositoryId", repositoryId);
if (groupIdToSearch != null) {
body.put("g", groupIdToSearch);
private List<MavenArtifact> doSearch(String repositoryId, String groupIdToSearch, String artifactId, String versionToSearch)
throws Exception {
if (currentQueryHandler == null) {
currentQueryHandler = getQueryHandler();
}
if (artifactId != null) {
body.put("a", artifactId);
}
if (versionToSearch != null) {
body.put("v", versionToSearch);
}
request.bodyString(body.toString(),
ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), StandardCharsets.UTF_8));
HttpResponse response = request.execute().returnResponse();
String content = EntityUtils.toString(response.getEntity());
if (content.isEmpty()) {
return resultList;
}
JSONObject responseObject = new JSONObject().fromObject(content);
String resultStr = responseObject.getString("result");
JSONArray resultArray = null;
List<MavenArtifact> result = new ArrayList<MavenArtifact>();
try {
resultArray = new JSONArray().fromObject(resultStr);
} catch (Exception e) {
throw new Exception(resultStr);
}
if (resultArray != null) {
for (int i = 0; i < resultArray.size(); i++) {
JSONObject jsonObject = resultArray.getJSONObject(i);
MavenArtifact artifact = new MavenArtifact();
artifact.setGroupId(jsonObject.getString("groupId"));
artifact.setArtifactId(jsonObject.getString("artifactId"));
artifact.setVersion(jsonObject.getString("version"));
artifact.setType(jsonObject.getString("extension"));
artifact.setDescription(jsonObject.getString("description"));
artifact.setLastUpdated(jsonObject.getString("last_updated"));
// artifact.setLicense(jsonObject.getString("license"));
// artifact.setLicenseUrl(jsonObject.getString("licenseUrl"));
// artifact.setUrl(jsonObject.getString("url"));
resultList.add(artifact);
result = currentQueryHandler.search(repositoryId, groupIdToSearch, artifactId, versionToSearch);
} catch (Exception ex) {
for (int i = 0; i < queryHandlerList.size(); i++) {// Try to other version
INexus3SearchHandler handler = queryHandlerList.get(i);
if (handler != currentQueryHandler) {
try {
result = handler.search(repositoryId, groupIdToSearch, artifactId, versionToSearch);
currentQueryHandler = handler;
LOGGER.info("Switch to new search handler,the handler version is:" + currentQueryHandler.getHandlerVersion());
} catch (Exception e) {
LOGGER.info("Try to switch search handler failed" + e.getMessage());
}
}
}
}
return resultList;
return result;
}
private INexus3SearchHandler getQueryHandler() {
if (queryHandlerList.size() == 0) {
queryHandlerList.add(new Nexus3ScriptSearchHandler(serverBean));
queryHandlerList.add(new Nexus3BetaSearchHandler(serverBean));
queryHandlerList.add(new Nexus3V1SearchHandler(serverBean));
}
return queryHandlerList.get(0);
}
/*

View File

@@ -0,0 +1,186 @@
package org.talend.librariesmanager.nexus.nexus3.handler;
// ============================================================================
//
// Copyright (C) 2006-2018 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
//
// ============================================================================
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.eclipse.core.runtime.IProgressMonitor;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.nexus.HttpClientTransport;
import org.talend.core.runtime.maven.MavenArtifact;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public abstract class AbsNexus3SearchHandler implements INexus3SearchHandler {
protected ArtifactRepositoryBean serverBean;
public AbsNexus3SearchHandler(ArtifactRepositoryBean serverBean) {
this.serverBean = serverBean;
}
protected String getServerUrl() {
String serverUrl = serverBean.getServer();
if (!serverUrl.endsWith("/")) { //$NON-NLS-1$
serverUrl = serverUrl + "/"; //$NON-NLS-1$
}
return serverUrl;
}
protected abstract String getSearchUrl();
public List<MavenArtifact> search(String repositoryId, String groupIdToSearch, String artifactId, String versionToSearch)
throws Exception {
List<MavenArtifact> resultList = new ArrayList<MavenArtifact>();
String searchUrl = getSearchUrl();
String continuationToken = null;
while (true) {
String query = getQueryParameter(repositoryId, groupIdToSearch, artifactId, versionToSearch, continuationToken);
String content = doRequest(searchUrl + query);
continuationToken = parseResult(content, resultList);
if (continuationToken == null) {
break;
}
}
return resultList;
}
protected String doRequest(final String url) throws URISyntaxException, Exception {
final StringBuffer sb = new StringBuffer();
new HttpClientTransport(url, serverBean.getUserName(), serverBean.getPassword()) {
@Override
protected HttpResponse execute(IProgressMonitor monitor, DefaultHttpClient httpClient, URI targetURI)
throws Exception {
HttpGet httpGet = new HttpGet(targetURI);
HttpResponse response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
sb.append(EntityUtils.toString(response.getEntity()));
} else {
throw new Exception(response.toString());
}
return response;
}
}.doRequest(null, new URI(url));
return sb.toString();
}
protected String parseResult(String content, List<MavenArtifact> resultList) throws Exception {
if (StringUtils.isEmpty(content)) {
return null;
}
JSONObject responseObject = JSONObject.fromObject(content);
String resultStr = responseObject.getString("items"); //$NON-NLS-1$
String continuationToken = responseObject.getString("continuationToken");
if (StringUtils.isEmpty(continuationToken) || "null".equalsIgnoreCase(continuationToken)) {
continuationToken = null;
}
JSONArray resultArray = null;
try {
resultArray = JSONArray.fromObject(resultStr);
} catch (Exception e) {
throw new Exception(resultStr);
}
if (resultArray != null) {
for (int i = 0; i < resultArray.size(); i++) {
JSONObject jsonObject = resultArray.getJSONObject(i);
MavenArtifact artifact = new MavenArtifact();
artifact.setGroupId(jsonObject.getString("group")); //$NON-NLS-1$
artifact.setArtifactId(jsonObject.getString("name")); //$NON-NLS-1$
artifact.setVersion(jsonObject.getString("version")); //$NON-NLS-1$
JSONArray assertsArray = jsonObject.getJSONArray("assets"); //$NON-NLS-1$
artifact.setType(getPackageType(assertsArray));
resultList.add(artifact);
}
}
return continuationToken;
}
protected String getPackageType(JSONArray assertsArray) {
String type = null;
if (assertsArray != null) {
for (int i = 0; i < assertsArray.size(); i++) {
JSONObject jsonObject = assertsArray.getJSONObject(i);
String path = jsonObject.getString("path"); //$NON-NLS-1$
if (path != null && path.endsWith(".zip")) { //$NON-NLS-1$
return "zip"; //$NON-NLS-1$
}
if (path != null && path.endsWith(".jar")) { //$NON-NLS-1$
return "jar"; //$NON-NLS-1$
}
if (path != null && path.endsWith(".pom")) { //$NON-NLS-1$
type = "pom"; //$NON-NLS-1$
}
}
}
return type;
}
protected String getQueryParameter(String repositoryId, String groupIdToSearch, String artifactId, String versionToSearch,
String continuationToken) {
StringBuffer sb = new StringBuffer();
boolean hasParameter = false;
if (StringUtils.isNoneEmpty(repositoryId)) {
sb.append("repository=").append(repositoryId); //$NON-NLS-1$
hasParameter = true;
}
if (StringUtils.isNoneEmpty(groupIdToSearch)) {
if (hasParameter) {
sb.append("&"); //$NON-NLS-1$
}
sb.append("group=").append(groupIdToSearch); //$NON-NLS-1$
hasParameter = true;
}
if (StringUtils.isNoneEmpty(artifactId)) {
if (hasParameter) {
sb.append("&"); //$NON-NLS-1$
}
sb.append("name=").append(artifactId); //$NON-NLS-1$
hasParameter = true;
}
if (StringUtils.isNoneEmpty(versionToSearch)) {
if (hasParameter) {
sb.append("&"); //$NON-NLS-1$
}
sb.append("version=").append(versionToSearch); //$NON-NLS-1$
hasParameter = true;
}
if (StringUtils.isNoneEmpty(continuationToken)) {
if (hasParameter) {
sb.append("&"); //$NON-NLS-1$
}
sb.append("continuationToken=").append(continuationToken); //$NON-NLS-1$
hasParameter = true;
}
return sb.toString();
}
protected String getAuthenticationItem() {
String userPass = serverBean.getUserName() + ":" + serverBean.getPassword(); //$NON-NLS-1$
String basicAuth = "Basic " + new String(new Base64().encode(userPass.getBytes())); //$NON-NLS-1$
return basicAuth;
}
}

View File

@@ -0,0 +1,26 @@
package org.talend.librariesmanager.nexus.nexus3.handler;
// ============================================================================
//
// Copyright (C) 2006-2018 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
//
// ============================================================================
import java.util.List;
import org.talend.core.runtime.maven.MavenArtifact;
public interface INexus3SearchHandler {
public List<MavenArtifact> search(String repositoryId, String groupIdToSearch, String artifactId, String versionToSearch)
throws Exception;
public String getHandlerVersion();
}

View File

@@ -0,0 +1,20 @@
package org.talend.librariesmanager.nexus.nexus3.handler;
import org.talend.core.nexus.ArtifactRepositoryBean;
public class Nexus3BetaSearchHandler extends AbsNexus3SearchHandler {
private String SEARCH_SERVICE = "service/rest/beta/search?"; //$NON-NLS-1$
public Nexus3BetaSearchHandler(ArtifactRepositoryBean serverBean) {
super(serverBean);
}
protected String getSearchUrl() {
return this.getServerUrl() + SEARCH_SERVICE;
}
public String getHandlerVersion() {
return "Nexus3.beta"; //$NON-NLS-1$
}
}

View File

@@ -0,0 +1,109 @@
package org.talend.librariesmanager.nexus.nexus3.handler;
// ============================================================================
//
// Copyright (C) 2006-2018 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
//
// ============================================================================
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import org.talend.core.nexus.ArtifactRepositoryBean;
import org.talend.core.runtime.maven.MavenArtifact;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Nexus3ScriptSearchHandler extends AbsNexus3SearchHandler {
private String SEARCH_SERVICE = "service/rest/v1/script/search/run"; //$NON-NLS-1$
public Nexus3ScriptSearchHandler(ArtifactRepositoryBean serverBean) {
super(serverBean);
}
@Override
public List<MavenArtifact> search(String repositoryId, String groupIdToSearch, String artifactId, String versionToSearch)
throws Exception {
String searchUrl = getSearchUrl();
Request request = this.getRequest(searchUrl);
List<MavenArtifact> resultList = new ArrayList<MavenArtifact>();
JSONObject body = new JSONObject();
body.put("repositoryId", repositoryId); //$NON-NLS-1$
if (groupIdToSearch != null) {
body.put("g", groupIdToSearch); //$NON-NLS-1$
}
if (artifactId != null) {
body.put("a", artifactId); //$NON-NLS-1$
}
if (versionToSearch != null) {
body.put("v", versionToSearch); //$NON-NLS-1$
}
request.bodyString(body.toString(),
ContentType.create(ContentType.APPLICATION_JSON.getMimeType(), StandardCharsets.UTF_8));
HttpResponse response = request.execute().returnResponse();
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String content = EntityUtils.toString(response.getEntity());
if (content.isEmpty()) {
return resultList;
}
JSONObject responseObject = JSONObject.fromObject(content);
String resultStr = responseObject.getString("result"); //$NON-NLS-1$
JSONArray resultArray = null;
try {
resultArray = JSONArray.fromObject(resultStr);
} catch (Exception e) {
throw new Exception(resultStr);
}
if (resultArray != null) {
for (int i = 0; i < resultArray.size(); i++) {
JSONObject jsonObject = resultArray.getJSONObject(i);
MavenArtifact artifact = new MavenArtifact();
artifact.setGroupId(jsonObject.getString("groupId")); //$NON-NLS-1$
artifact.setArtifactId(jsonObject.getString("artifactId")); //$NON-NLS-1$
artifact.setVersion(jsonObject.getString("version")); //$NON-NLS-1$
artifact.setType(jsonObject.getString("extension")); //$NON-NLS-1$
artifact.setDescription(jsonObject.getString("description")); //$NON-NLS-1$
artifact.setLastUpdated(jsonObject.getString("last_updated")); //$NON-NLS-1$
resultList.add(artifact);
}
}
return resultList;
} else {
throw new Exception(response.toString());
}
}
protected Request getRequest(String searchUrl) {
Request request = Request.Post(searchUrl);
Header authority = new BasicHeader("Authorization", getAuthenticationItem()); //$NON-NLS-1$
Header contentType = new BasicHeader("Content-Type", "text/plain"); //$NON-NLS-1$ //$NON-NLS-2$
request.addHeader(contentType);
request.addHeader(authority);
return request;
}
protected String getSearchUrl() {
return this.getServerUrl() + SEARCH_SERVICE;
}
public String getHandlerVersion() {
return "Nexus3.script"; //$NON-NLS-1$
}
}

View File

@@ -0,0 +1,20 @@
package org.talend.librariesmanager.nexus.nexus3.handler;
import org.talend.core.nexus.ArtifactRepositoryBean;
public class Nexus3V1SearchHandler extends AbsNexus3SearchHandler {
private String SEARCH_SERVICE = "service/rest/v1/search?";
public Nexus3V1SearchHandler(ArtifactRepositoryBean serverBean) {
super(serverBean);
}
protected String getSearchUrl() {
return this.getServerUrl() + SEARCH_SERVICE;
}
public String getHandlerVersion() {
return "Nexus3.V1"; //$NON-NLS-1$
}
}

View File

@@ -837,9 +837,12 @@ public final class DBConnectionContextUtils {
if (dbConn.getDatabaseType().equals(EDatabaseConnTemplate.GENERAL_JDBC.getDBDisplayName())) {
urlConnection = ConnectionContextHelper.getOriginalValue(contextType, dbConn.getURL());
} else {
if (!StringUtils.equals(dbConn.getDatabaseType(), EDatabaseTypeName.FIREBIRD.getXmlName())) {
filePath = filePath.toLowerCase();
}
urlConnection =
DatabaseConnStrUtil.getURLString(dbConn.getDatabaseType(), dbConn.getDbVersionString(), server,
username, password, port, sidOrDatabase, filePath.toLowerCase(), datasource, dbRootPath,
username, password, port, sidOrDatabase, filePath, datasource, dbRootPath,
additionParam);
}
@@ -1267,12 +1270,12 @@ public final class DBConnectionContextUtils {
// TDI-28124:tdb2input can't guess schema from join sql on system table
if (EDatabaseTypeName.IBMDB2.equals(EDatabaseTypeName.getTypeFromDbType(dbConn.getDatabaseType()))) {
String cursorForDb2 = ":cursorSensitivity=2;";
String database = sidOrDatabase + cursorForDb2;
String cursorForDb2 = "cursorSensitivity=2;";
String database = sidOrDatabase;
String newURL =
DatabaseConnStrUtil.getURLString(cloneConn.getDatabaseType(), dbConn.getDbVersionString(), server,
username, password, port, database, filePath.toLowerCase(), datasource, dbRootPath,
additionParam);
additionParam) + cursorForDb2;
cloneConn.setURL(newURL);
return cloneConn;
}

View File

@@ -344,7 +344,11 @@ public final class XsdMetadataUtils {
xmlNode.setRelatedColumn(uniqueName);
metadataTable.getColumns().add(column);
} else {
xmlNode.setAttribute("main"); //$NON-NLS-1$
if(loopElementFound) {
xmlNode.setAttribute("branch");//$NON-NLS-1$
}else {
xmlNode.setAttribute("main"); //$NON-NLS-1$
}
}
break;
case ATreeNode.NAMESPACE_TYPE:
@@ -357,13 +361,14 @@ public final class XsdMetadataUtils {
case ATreeNode.OTHER_TYPE:
break;
}
boolean subElementsInLoop = inLoop;
// will try to get the first element (branch or main), and set it as loop.
if ((!loopElementFound && path.split("/").length == 2 && node.getType() == ATreeNode.ELEMENT_TYPE) || subElementsInLoop) { //$NON-NLS-1$
connection.getLoop().add(xmlNode);
loopElementFound = true;
subElementsInLoop = true;
} else {
}else {
connection.getRoot().add(xmlNode);
}
if (node.getChildren().length > 0) {

View File

@@ -146,6 +146,7 @@ EMetadataEncoding.UTF8=Unicode 2.0 UTF-8
ERepositoryObjectType.FolderNotFound=Folder for type {0} cannot be found.
ERepositoryObjectType.NotImplemented=not implemented
ExtractMetaDataFromDataBase.SchemaNoPresent=Schema not present in Database
ExtractMetaDataFromDataBase.DatabaseNoPresent=The database '{0}' not exist
ExtractMetaDataFromDataBase.connectionSuccessful=Connection successful
ExtractMetaDataFromDataBase.dbTypeNotFound=dbType '{0}' not found
ExtractMetaDataUtils.1=Impossible to initialize the connection \!

View File

@@ -299,12 +299,12 @@ public class ExtractMetaDataFromDataBase {
public static ConnectionStatus testConnection(String dbType, String url, String username, String pwd, String schema,
final String driverClassName, final String driverJarPath, String dbVersionString, String additionalParam) {
return testConnection(dbType, url, username, pwd, schema, driverClassName, driverJarPath, dbVersionString,
additionalParam, null);
additionalParam, null, null);
}
public static ConnectionStatus testConnection(String dbType, String url, String username, String pwd, String schema,
final String driverClassName, final String driverJarPath, String dbVersionString, String additionalParam,
StringBuffer retProposedSchema) {
StringBuffer retProposedSchema, String sidOrDatabase) {
Connection connection = null;
ConnectionStatus connectionStatus = new ConnectionStatus();
connectionStatus.setResult(false);
@@ -334,6 +334,14 @@ public class ExtractMetaDataFromDataBase {
return connectionStatus;
}
}
if (EDatabaseTypeName.SYBASEASE == EDatabaseTypeName.getTypeFromDisplayName(dbType)) {
boolean exsitedSybaseDB = checkSybaseDB(connection, sidOrDatabase);
if (!exsitedSybaseDB) {
connectionStatus.setMessageException(
Messages.getString("ExtractMetaDataFromDataBase.DatabaseNoPresent", sidOrDatabase)); //$NON-NLS-1$
return connectionStatus;
}
}
connectionStatus.setResult(true);
connectionStatus.setMessageException(Messages.getString("ExtractMetaDataFromDataBase.connectionSuccessful")); //$NON-NLS-1$
@@ -371,6 +379,35 @@ public class ExtractMetaDataFromDataBase {
return checkSchemaConnection(schema, connection, notCaseSensitive, dbType, null);
}
private static boolean checkSybaseDB(Connection connection, String database) {
ExtractMetaDataUtils extractMeta = ExtractMetaDataUtils.getInstance();
if (extractMeta != null) {
Statement stmt = null;
ResultSet resultSet = null;
try {
stmt = connection.createStatement();
extractMeta.setQueryStatementTimeout(stmt);
resultSet = stmt.executeQuery("sp_helpdb " + database);
return true;
} catch (SQLException e) {
ExceptionHandler.process(e);
return false;
} finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
ExceptionHandler.process(e);
}
}
}
return false;
}
public static boolean checkSchemaConnection(final String schema, Connection connection, boolean notCaseSensitive,
String dbType, final StringBuffer retPropsedSchema) throws SQLException {
ExtractMetaDataUtils extractMeta = ExtractMetaDataUtils.getInstance();

View File

@@ -25,6 +25,7 @@ import java.util.Map;
import java.util.Properties;
import org.apache.commons.collections.map.MultiKeyMap;
import org.apache.commons.lang.StringUtils;
import org.talend.commons.utils.encoding.CharsetToolkit;
import org.talend.core.database.EDatabaseTypeName;
import org.talend.core.database.conn.version.EDatabaseVersion4Drivers;
@@ -154,8 +155,12 @@ public class JDBCDriverLoader {
// to avoid NPE
username = username != null ? username : "";
password = password != null ? password : "";
info.put("user", username); //$NON-NLS-1$
info.put("password", password); //$NON-NLS-1$
if (StringUtils.isNotEmpty(username)) {
info.put("user", username); //$NON-NLS-1$
}
if (StringUtils.isNotEmpty(password)) {
info.put("password", password); //$NON-NLS-1$
}
if (dbType.equals(EDatabaseTypeName.ACCESS.getXmlName()) || dbType.equals(EDatabaseTypeName.GODBC.getXmlName())) {
Charset systemCharset = CharsetToolkit.getInternalSystemCharset();
if (systemCharset != null && systemCharset.displayName() != null) {

View File

@@ -70,11 +70,13 @@ public final class SupportDBUrlStore {
// PTODO scorreia choose here which Database types to enable
// supportDBUrlMap.put(SupportDBUrlType.ODBCDEFAULTURL.getDBKey(), SupportDBUrlType.ODBCDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.MYSQLDEFAULTURL.getDBKey(), SupportDBUrlType.MYSQLDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.ORACLEWITHSIDDEFAULTURL.getDBKey(), SupportDBUrlType.ORACLEWITHSIDDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.ORACLEWITHSIDDEFAULTURL.getDBKey(),
SupportDBUrlType.ORACLEWITHSIDDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.ORACLEWITHSERVICENAMEDEFAULTURL.getDBKey(),
SupportDBUrlType.ORACLEWITHSERVICENAMEDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.ORACLEOCIDEFAULTURL.getDBKey(), SupportDBUrlType.ORACLEOCIDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.ORACLECUSTOMDEFAULTURL.getDBKey(), SupportDBUrlType.ORACLECUSTOMDEFAULTURL);
supportDBUrlMap
.put(SupportDBUrlType.ORACLECUSTOMDEFAULTURL.getDBKey(), SupportDBUrlType.ORACLECUSTOMDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.MSSQLDEFAULTURL.getDBKey(), SupportDBUrlType.MSSQLDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.MSSQL2008URL.getDBKey(), SupportDBUrlType.MSSQL2008URL);
supportDBUrlMap.put(SupportDBUrlType.DB2DEFAULTURL.getDBKey(), SupportDBUrlType.DB2DEFAULTURL);
@@ -100,6 +102,7 @@ public final class SupportDBUrlStore {
supportDBUrlMap.put(SupportDBUrlType.REDSHIFT.getDBKey(), SupportDBUrlType.REDSHIFT);
supportDBUrlMap.put(SupportDBUrlType.REDSHIFT_SSO.getDBKey(), SupportDBUrlType.REDSHIFT_SSO);
supportDBUrlMap.put(SupportDBUrlType.EXASOL.getDBKey(), SupportDBUrlType.EXASOL);
supportDBUrlMap.put(SupportDBUrlType.AMAZONAURORA.getDBKey(), SupportDBUrlType.AMAZONAURORA);
// MOD mzhao bug 12313, 2010-04-02 There is not dbType in prv files before 4.0 release, here use driver class
// name
@@ -113,30 +116,39 @@ public final class SupportDBUrlStore {
supportDiverNameDBUrlMap.put(SupportDBUrlType.MSSQLDEFAULTURL.getDbDriver(), SupportDBUrlType.MSSQLDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.MSSQL2008URL.getDbDriver(), SupportDBUrlType.MSSQL2008URL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.DB2DEFAULTURL.getDbDriver(), SupportDBUrlType.DB2DEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.DB2ZOSDEFAULTURL.getDbDriver(), SupportDBUrlType.DB2ZOSDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.POSTGRESQLEFAULTURL.getDbDriver(), SupportDBUrlType.POSTGRESQLEFAULTURL);
supportDiverNameDBUrlMap
.put(SupportDBUrlType.DB2ZOSDEFAULTURL.getDbDriver(), SupportDBUrlType.DB2ZOSDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.POSTGRESQLEFAULTURL.getDbDriver(),
SupportDBUrlType.POSTGRESQLEFAULTURL);
// supportDiverNameDBUrlMap.put(SupportDBUrlType.INTERBASEDEFAULTURL.getDbDriver(),
// SupportDBUrlType.INTERBASEDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.SYBASEDEFAULTURL.getDbDriver(), SupportDBUrlType.SYBASEDEFAULTURL);
supportDiverNameDBUrlMap
.put(SupportDBUrlType.SYBASEDEFAULTURL.getDbDriver(), SupportDBUrlType.SYBASEDEFAULTURL);
// supportDiverNameDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDbDriver(),
// SupportDBUrlType.INFORMIXDEFAULTURL);
// supportDiverNameDBUrlMap.put(SupportDBUrlType.FIREBIRDDEFAULTURL.getDbDriver(),
// SupportDBUrlType.FIREBIRDDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.INGRESDEFAULTURL.getDbDriver(), SupportDBUrlType.INGRESDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDbDriver(), SupportDBUrlType.INFORMIXDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.SQLITE3DEFAULTURL.getDbDriver(), SupportDBUrlType.SQLITE3DEFAULTURL);
supportDiverNameDBUrlMap
.put(SupportDBUrlType.GENERICJDBCDEFAULTURL.getDbDriver(), SupportDBUrlType.GENERICJDBCDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.TERADATADEFAULTURL.getDbDriver(), SupportDBUrlType.TERADATADEFAULTURL);
.put(SupportDBUrlType.INGRESDEFAULTURL.getDbDriver(), SupportDBUrlType.INGRESDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDbDriver(),
SupportDBUrlType.INFORMIXDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.SQLITE3DEFAULTURL.getDbDriver(),
SupportDBUrlType.SQLITE3DEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.GENERICJDBCDEFAULTURL.getDbDriver(),
SupportDBUrlType.GENERICJDBCDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.TERADATADEFAULTURL.getDbDriver(),
SupportDBUrlType.TERADATADEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.AS400DEFAULTURL.getDbDriver(), SupportDBUrlType.AS400DEFAULTURL);
// supportDiverNameDBUrlMap.put(SupportDBUrlType.XML_eXist.getDbDriver(), SupportDBUrlType.XML_eXist);
supportDiverNameDBUrlMap.put(SupportDBUrlType.MDM.getDbDriver(), SupportDBUrlType.MDM);
supportDiverNameDBUrlMap.put(SupportDBUrlType.NETEZZADEFAULTURL.getDbDriver(), SupportDBUrlType.NETEZZADEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.NETEZZADEFAULTURL.getDbDriver(),
SupportDBUrlType.NETEZZADEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.HIVEDEFAULTURL.getDbDriver(), SupportDBUrlType.HIVEDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.VERTICA.getDbDriver(), SupportDBUrlType.VERTICA);
supportDiverNameDBUrlMap.put(SupportDBUrlType.VERTICA2.getDbDriver(), SupportDBUrlType.VERTICA2);
supportDiverNameDBUrlMap.put(SupportDBUrlType.REDSHIFT.getDbDriver(), SupportDBUrlType.REDSHIFT);
supportDiverNameDBUrlMap.put(SupportDBUrlType.EXASOL.getDbDriver(), SupportDBUrlType.EXASOL);
// ~12313
}
@@ -175,8 +187,9 @@ public final class SupportDBUrlStore {
}
public String getDBUrl(SupportDBUrlType dbType) {
return getDBUrl(dbType.getDBKey(), dbType.getHostName(), dbType.getPort(), dbType.getDBName(), dbType.getDataSource(),
dbType.getParamSeprator() != null ? PluginConstant.DEFAULT_PARAMETERS : PluginConstant.EMPTY_STRING);
return getDBUrl(dbType.getDBKey(), dbType.getHostName(), dbType.getPort(), dbType.getDBName(),
dbType.getDataSource(), dbType.getParamSeprator() != null ? PluginConstant.DEFAULT_PARAMETERS
: PluginConstant.EMPTY_STRING);
}
/**
@@ -200,7 +213,8 @@ public final class SupportDBUrlStore {
}
/**
* Get dburl which content are replaced by parameter value.(note: for mssql, this method result is wrong, so i deprecated this
* Get dburl which content are replaced by parameter value.(note: for mssql, this method result is wrong, so i
* deprecated this
* method)
*
* @param dbType
@@ -214,7 +228,8 @@ public final class SupportDBUrlStore {
* {@link #getDBUrl(String dbType, String Version, String host, String username, String password, String port, String dbName, String dataSource, String paramString)}
*/
@Deprecated
public String getDBUrl(String dbType, String host, String port, String dbName, String dataSource, String paramString) {
public String
getDBUrl(String dbType, String host, String port, String dbName, String dataSource, String paramString) {
String propUrlValue = PROP.getProperty(dbType);
SupportDBUrlType defaultUrlType = supportDBUrlMap.get(dbType);
// defaultUrlType = defaultUrlType == null ? SupportDBUrlType.ODBCDEFAULTURL : defaultUrlType;
@@ -250,8 +265,9 @@ public final class SupportDBUrlStore {
if (propUrlValue == null) {
return PluginConstant.EMPTY_STRING;
}
Object[] args = { defaultUrlType.getHostName(), defaultUrlType.getPort(), defaultUrlType.getDBName(),
defaultUrlType.getDataSource() };
Object[] args =
{ defaultUrlType.getHostName(), defaultUrlType.getPort(), defaultUrlType.getDBName(),
defaultUrlType.getDataSource() };
return MessageFormat.format(propUrlValue, args);
}

View File

@@ -13,6 +13,7 @@
package org.talend.core.model.metadata.builder.database.dburl;
import org.apache.commons.lang.StringUtils;
import org.talend.core.database.EDatabaseTypeName;
/**
* DOC rli class global comment. Detailled comment <br/>
@@ -29,6 +30,14 @@ public enum SupportDBUrlType {
null,
"sun.jdbc.odbc.JdbcOdbcDriver", //$NON-NLS-1$
"datasourceName", "ODBC"), //$NON-NLS-1$ //$NON-NLS-2$
AMAZONAURORA(EDatabaseTypeName.AMAZON_AURORA.getDbType(), "localhost", //$NON-NLS-1$
"3306", //$NON-NLS-1$
"dbname", //$NON-NLS-1$
"?", //$NON-NLS-1$
"org.gjt.mm.mysql.Driver", //$NON-NLS-1$
null,
EDatabaseTypeName.AMAZON_AURORA.getDbType()),
MYSQLDEFAULTURL("MySQL", //$NON-NLS-1$
"localhost", //$NON-NLS-1$
"3306", //$NON-NLS-1$
@@ -352,7 +361,8 @@ public enum SupportDBUrlType {
public static boolean isOracle(String dbKey) {
SupportDBUrlType dbTypeByKey = getDBTypeByKey(dbKey);
return dbTypeByKey != null && (dbTypeByKey == ORACLEWITHSIDDEFAULTURL || dbTypeByKey == ORACLEWITHSERVICENAMEDEFAULTURL);
return dbTypeByKey != null
&& (dbTypeByKey == ORACLEWITHSIDDEFAULTURL || dbTypeByKey == ORACLEWITHSERVICENAMEDEFAULTURL);
}
/**

View File

@@ -144,6 +144,8 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
}
}
java.sql.Connection sqlConnection = null;
Statement stmt = null;
ResultSet rs = null;
try {
// MetadataConnectionUtils.setMetadataCon(metadataBean);
// fill some base parameter
@@ -167,13 +169,22 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
: dbMetadata.getDatabaseProductName();
String productVersion = dbMetadata.getDatabaseProductVersion() == null ? PluginConstant.EMPTY_STRING
: dbMetadata.getDatabaseProductVersion();
String databaseType = dbconn.getDatabaseType();
// TDQ-16331 Azure Mysql must use 'select version()' to get correct version
if (EDatabaseTypeName.MYSQL.getDisplayName().equals(databaseType)) {
stmt = sqlConnection.createStatement();
rs = stmt.executeQuery("select version()"); //$NON-NLS-1$
while (rs.next()) {
productVersion = rs.getString(1);
}
}
// TDI-35419 TDQ-11853: make sure the redshift connection save the productName is redshift, not use the
// postgresql.becauses we use this value to create dbmslauguage
boolean isRedshift = dbconn.getDatabaseType().equals(EDatabaseTypeName.REDSHIFT.getDisplayName());
boolean isRedshift = EDatabaseTypeName.REDSHIFT.getDisplayName().equals(databaseType);
if (isRedshift) {
productName = EDatabaseTypeName.REDSHIFT.getDisplayName();
}
boolean isRedshift_SSO = dbconn.getDatabaseType().equals(EDatabaseTypeName.REDSHIFT_SSO.getDisplayName());
boolean isRedshift_SSO = EDatabaseTypeName.REDSHIFT_SSO.getDisplayName().equals(databaseType);
if (isRedshift_SSO) {
productName = EDatabaseTypeName.REDSHIFT_SSO.getDisplayName();
}
@@ -181,14 +192,12 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
TaggedValueHelper.setTaggedValue(dbconn, TaggedValueHelper.DB_PRODUCT_NAME, productName);
TaggedValueHelper.setTaggedValue(dbconn, TaggedValueHelper.DB_PRODUCT_VERSION, productVersion);
boolean isHive = dbconn.getDatabaseType().equals(EDatabaseTypeName.HIVE.getDisplayName());
boolean isHiveJdbc = dbconn.getDatabaseType().equals(EDatabaseTypeName.GENERAL_JDBC.getDisplayName())
&& dbconn.getDriverClass() != null
&& dbconn.getDriverClass().equals(EDatabase4DriverClassName.HIVE.getDriverClass());
boolean isImpala = dbconn.getDatabaseType().equals(EDatabaseTypeName.IMPALA.getDisplayName());
boolean isImpalaJdbc = dbconn.getDatabaseType().equals(EDatabaseTypeName.IMPALA.getDisplayName())
&& dbconn.getDriverClass() != null
&& dbconn.getDriverClass().equals(EDatabase4DriverClassName.IMPALA.getDriverClass());
boolean isHive = EDatabaseTypeName.HIVE.getDisplayName().equals(databaseType);
boolean isHiveJdbc = EDatabaseTypeName.GENERAL_JDBC.getDisplayName().equals(databaseType)
&& EDatabase4DriverClassName.HIVE.getDriverClass().equals(dbconn.getDriverClass());
boolean isImpala = EDatabaseTypeName.IMPALA.getDisplayName().equals(databaseType);
boolean isImpalaJdbc = EDatabaseTypeName.IMPALA.getDisplayName().equals(databaseType)
&& EDatabase4DriverClassName.IMPALA.getDriverClass().equals(dbconn.getDriverClass());
if (!isHive && !isHiveJdbc && !isImpala && !isImpalaJdbc) {
String identifierQuote = dbMetadata.getIdentifierQuoteString();
ConnectionHelper.setIdentifierQuoteString(identifierQuote == null ? "" : identifierQuote, dbconn); //$NON-NLS-1$
@@ -206,13 +215,19 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
if (sqlConnection != null) {
ConnectionUtils.closeConnection(sqlConnection);
}
if (driver != null
&& MetadataConnectionUtils.isDerbyRelatedDb(metadataBean.getDriverClass(), metadataBean.getDbType())) {
try {
try {
if (driver != null && MetadataConnectionUtils
.isDerbyRelatedDb(metadataBean.getDriverClass(), metadataBean.getDbType())) {
driver.connect("jdbc:derby:;shutdown=true", null); //$NON-NLS-1$
} catch (SQLException e) {
// exception of shutdown success. no need to catch.
}
if (stmt != null) {
stmt.close();
}
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
// exception of shutdown success. no need to catch.
}
}
if (newConnection != null) {

View File

@@ -288,7 +288,8 @@ public class ManagerConnection {
}
// test the connection
testConnection = ExtractMetaDataFromDataBase.testConnection(dbTypeString, urlConnectionString, username, password,
schemaName, driverClassName, driverJarPath, dbVersionString, additionalParams, retProposedSchema);
schemaName, driverClassName, driverJarPath, dbVersionString, additionalParams, retProposedSchema,
sidOrDatabase);
isValide = testConnection.getResult();
messageException = testConnection.getMessageException();
} catch (Exception e) {
@@ -387,7 +388,7 @@ public class ManagerConnection {
metadataConnection.getUrl(), metadataConnection.getUsername(), metadataConnection.getPassword(),
metadataConnection.getSchema(), metadataConnection.getDriverClass(),
metadataConnection.getDriverJarPath(), metadataConnection.getDbVersionString(),
metadataConnection.getAdditionalParams(), retProposedSchema);
metadataConnection.getAdditionalParams(), retProposedSchema, metadataConnection.getDatabase());
}
// qli
// record this metadataConnection as old connection.

View File

@@ -1088,6 +1088,11 @@ public class ConnectionHelper {
return result;
}
/**
*
* TUP-21510, should only work for old migration task.
*/
@Deprecated
public static String getCleanPassword(String password) {
if (StringUtils.isBlank(password)) {
return password;

View File

@@ -6,6 +6,7 @@
package org.talend.cwm.relational;
import java.util.HashMap;
import orgomg.cwm.objectmodel.core.Expression;
/**
@@ -16,10 +17,10 @@ import orgomg.cwm.objectmodel.core.Expression;
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.talend.cwm.relational.TdExpression#getVersion <em>Version</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getModificationDate <em>Modification Date</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getName <em>Name</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getExpressionVariableMap <em>Expression Variable Map</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getVersion <em>Version</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getModificationDate <em>Modification Date</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getName <em>Name</em>}</li>
* <li>{@link org.talend.cwm.relational.TdExpression#getExpressionVariableMap <em>Expression Variable Map</em>}</li>
* </ul>
* </p>
*
@@ -37,6 +38,7 @@ public interface TdExpression extends Expression {
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Version</em>' attribute.
* @see #setVersion(String)
* @see org.talend.cwm.relational.RelationalPackage#getTdExpression_Version()
@@ -49,6 +51,7 @@ public interface TdExpression extends Expression {
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getVersion <em>Version</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param value the new value of the '<em>Version</em>' attribute.
* @see #getVersion()
* @generated
@@ -63,6 +66,7 @@ public interface TdExpression extends Expression {
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Modification Date</em>' attribute.
* @see #setModificationDate(String)
* @see org.talend.cwm.relational.RelationalPackage#getTdExpression_ModificationDate()
@@ -72,9 +76,11 @@ public interface TdExpression extends Expression {
String getModificationDate();
/**
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getModificationDate <em>Modification Date</em>}' attribute.
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getModificationDate <em>Modification
* Date</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param value the new value of the '<em>Modification Date</em>' attribute.
* @see #getModificationDate()
* @generated
@@ -89,6 +95,7 @@ public interface TdExpression extends Expression {
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Name</em>' attribute.
* @see #setName(String)
* @see org.talend.cwm.relational.RelationalPackage#getTdExpression_Name()
@@ -101,6 +108,7 @@ public interface TdExpression extends Expression {
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getName <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param value the new value of the '<em>Name</em>' attribute.
* @see #getName()
* @generated
@@ -115,6 +123,7 @@ public interface TdExpression extends Expression {
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
*
* @return the value of the '<em>Expression Variable Map</em>' attribute.
* @see #setExpressionVariableMap(HashMap)
* @see org.talend.cwm.relational.RelationalPackage#getTdExpression_ExpressionVariableMap()
@@ -124,13 +133,22 @@ public interface TdExpression extends Expression {
HashMap<String, String> getExpressionVariableMap();
/**
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getExpressionVariableMap <em>Expression Variable Map</em>}' attribute.
* Sets the value of the '{@link org.talend.cwm.relational.TdExpression#getExpressionVariableMap <em>Expression
* Variable Map</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @param value the new value of the '<em>Expression Variable Map</em>' attribute.
* @see #getExpressionVariableMap()
* @generated
*/
void setExpressionVariableMap(HashMap<String, String> value);
/**
* Judge whether two expression take same database type and same version
*
* @generated not
*/
boolean sameVersionAndType(TdExpression targetEx);
} // TdExpression

View File

@@ -6,12 +6,10 @@
package org.talend.cwm.relational.impl;
import java.util.HashMap;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.talend.cwm.relational.RelationalPackage;
import org.talend.cwm.relational.TdExpression;
@@ -24,10 +22,11 @@ import orgomg.cwm.objectmodel.core.impl.ExpressionImpl;
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getVersion <em>Version</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getModificationDate <em>Modification Date</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getName <em>Name</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getExpressionVariableMap <em>Expression Variable Map</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getVersion <em>Version</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getModificationDate <em>Modification Date</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getName <em>Name</em>}</li>
* <li>{@link org.talend.cwm.relational.impl.TdExpressionImpl#getExpressionVariableMap <em>Expression Variable
* Map</em>}</li>
* </ul>
* </p>
*
@@ -39,6 +38,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getVersion()
* @generated
* @ordered
@@ -49,6 +49,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getVersion()
* @generated
* @ordered
@@ -59,6 +60,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The default value of the '{@link #getModificationDate() <em>Modification Date</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getModificationDate()
* @generated
* @ordered
@@ -69,6 +71,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The cached value of the '{@link #getModificationDate() <em>Modification Date</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getModificationDate()
* @generated
* @ordered
@@ -79,6 +82,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The default value of the '{@link #getName() <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getName()
* @generated
* @ordered
@@ -89,6 +93,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The cached value of the '{@link #getName() <em>Name</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getName()
* @generated
* @ordered
@@ -99,6 +104,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
* The cached value of the '{@link #getExpressionVariableMap() <em>Expression Variable Map</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @see #getExpressionVariableMap()
* @generated
* @ordered
@@ -108,6 +114,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
protected TdExpressionImpl() {
@@ -117,6 +124,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
@@ -127,8 +135,10 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public String getVersion() {
return version;
}
@@ -136,20 +146,26 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setVersion(String newVersion) {
String oldVersion = version;
version = newVersion;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__VERSION, oldVersion, version));
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__VERSION, oldVersion,
version));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public String getModificationDate() {
return modificationDate;
}
@@ -157,21 +173,26 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setModificationDate(String newModificationDate) {
String oldModificationDate = modificationDate;
modificationDate = newModificationDate;
if (eNotificationRequired())
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__MODIFICATION_DATE,
oldModificationDate, modificationDate));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public String getName() {
return name;
}
@@ -179,20 +200,26 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setName(String newName) {
String oldName = name;
name = newName;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__NAME, oldName, name));
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__NAME, oldName,
name));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public HashMap<String, String> getExpressionVariableMap() {
return expressionVariableMap;
}
@@ -200,19 +227,24 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public void setExpressionVariableMap(HashMap<String, String> newExpressionVariableMap) {
HashMap<String, String> oldExpressionVariableMap = expressionVariableMap;
expressionVariableMap = newExpressionVariableMap;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, RelationalPackage.TD_EXPRESSION__EXPRESSION_VARIABLE_MAP,
oldExpressionVariableMap, expressionVariableMap));
if (eNotificationRequired()) {
eNotify(new ENotificationImpl(this, Notification.SET,
RelationalPackage.TD_EXPRESSION__EXPRESSION_VARIABLE_MAP, oldExpressionVariableMap,
expressionVariableMap));
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
@@ -233,6 +265,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@SuppressWarnings("unchecked")
@@ -258,6 +291,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
@@ -282,6 +316,7 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
@@ -290,8 +325,8 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
case RelationalPackage.TD_EXPRESSION__VERSION:
return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
case RelationalPackage.TD_EXPRESSION__MODIFICATION_DATE:
return MODIFICATION_DATE_EDEFAULT == null ? modificationDate != null : !MODIFICATION_DATE_EDEFAULT
.equals(modificationDate);
return MODIFICATION_DATE_EDEFAULT == null ? modificationDate != null
: !MODIFICATION_DATE_EDEFAULT.equals(modificationDate);
case RelationalPackage.TD_EXPRESSION__NAME:
return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
case RelationalPackage.TD_EXPRESSION__EXPRESSION_VARIABLE_MAP:
@@ -303,12 +338,14 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public String toString() {
if (eIsProxy())
if (eIsProxy()) {
return super.toString();
}
StringBuffer result = new StringBuffer(super.toString());
result.append(" (version: ");
@@ -323,4 +360,19 @@ public class TdExpressionImpl extends ExpressionImpl implements TdExpression {
return result.toString();
}
} //TdExpressionImpl
/**
* Judge whether two expression take same database type and same version
*
* @generated not
*/
@Override
public boolean sameVersionAndType(TdExpression targetEx) {
boolean sameLanguage = this.getLanguage().equals(targetEx.getLanguage());
String currentVersion = this.getVersion();
String targetVersion = targetEx.getVersion();
boolean sameVersion = currentVersion != null && currentVersion.equals(targetVersion);
sameVersion = sameVersion || currentVersion == null && targetVersion == null;
return sameLanguage && sameVersion;
}
} // TdExpressionImpl

View File

@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Set;
import org.eclipse.core.commands.IHandler;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -69,13 +68,11 @@ import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
import org.eclipse.ui.internal.util.PrefUtil;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.osgi.service.prefs.BackingStoreException;
import org.talend.commons.exception.CommonExceptionHandler;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.utils.CheatSheetPerspectiveAdapter;
import org.talend.commons.utils.VersionUtils;
import org.talend.commons.utils.generation.JavaUtils;
import org.talend.commons.utils.workbench.extensions.ExtensionImplementationProvider;
import org.talend.commons.utils.workbench.extensions.ExtensionPointLimiterImpl;
import org.talend.commons.utils.workbench.extensions.IExtensionPointLimiter;
@@ -93,7 +90,6 @@ import org.talend.core.model.utils.TalendPropertiesUtil;
import org.talend.core.prefs.IDEInternalPreferences;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.util.JavaHomeUtil;
import org.talend.core.ui.CoreUIPlugin;
import org.talend.core.ui.branding.IBrandingConfiguration;
import org.talend.core.ui.branding.IBrandingService;
@@ -264,24 +260,6 @@ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
myJob.schedule();
}
try {
JavaHomeUtil.initializeJavaHome();
if (JavaHomeUtil.isSetJdkHomeVariable()) {
String specifiedVersion = JavaHomeUtil.getSpecifiedJavaVersion();
if (specifiedVersion != null && !specifiedVersion.equals(JavaUtils.getProjectJavaVersion())) {
JavaUtils.updateProjectJavaVersion(specifiedVersion);
}
}
} catch (CoreException e1) {
CommonExceptionHandler.process(e1);
}
// if (!JavaHomeUtil.isJDKSetup()) {
// MessageDialog.openWarning(DisplayUtils.getDefaultShell(),
// Messages.getString("ApplicationWorkbenchWindowAdvisor.wrongJavaSetup"), //$NON-NLS-1$
// Messages.getString("ApplicationWorkbenchWindowAdvisor.jdkRequired")); //$NON-NLS-1$
// }
createActions();
registerActions();
adviser.getHelper().postWindowOpen();

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