Compare commits

...

90 Commits

Author SHA1 Message Date
vdrokov
56f19902d0 APPINT-32905: Issue with Rest service flow 2021-04-30 16:20:11 +03:00
kjwang
75176b6f45 Revert the commit of TUP-31096 to test tuj (#4253)
Co-authored-by: kjwang <kjwang@LT-B1Z2R73.talend.com>
2021-04-30 10:21:23 +08:00
hzhao-talendbj
11ecc1cbfd fix(TUP-31248):impala metadata connection issues for Cloudera (#4246)
* fix(TUP-31248):impala metadata connection issues for Cloudera

* TUP-31248 revert mistake remove

* TUP-31248 remove some useless code

* TUP-31248 add connection info to log when connection failed
2021-04-29 15:29:56 +08:00
jiezhang-tlnd
53efef8de0 fix(TUP-29866)CVE on maven-shared-utils (#4225)
* fix(TUP-29866)CVE on maven-shared-utils

* exclude maven-shared-utils 3.2.1

* update pom_project_template.xml

* exclude maven-shared-utils:jar:3.1.0
2021-04-29 14:27:16 +08:00
Jane Ding
db2eb01c38 fix(TUP-31234):Build job fail with option "Execute tests" if any test (#4244)
case fail
https://jira.talendforge.org/browse/TUP-31234
2021-04-28 17:59:19 +08:00
hzhao-talendbj
f9af16ba90 fix(TUP-30524): Commandline login svn project tag fail (#4228) 2021-04-28 11:59:24 +08:00
kjwang
23f2926741 Fix TUP-31096 Could not find or load main class error on the jobs (#4245)
Fix TUP-31096 Could not find or load main class error on the jobs created on the Feature Branch which has #
https://jira.talendforge.org/browse/TUP-31096
2021-04-27 17:57:52 +08:00
Jane Ding
48653aa380 feat(TUP-30730):Deprecate SAS from metadata wizard (#4210)
https://jira.talendforge.org/browse/TUP-30730
2021-04-27 15:15:31 +08:00
bhe-talendbj
d80fefc234 fix(TUP-31069): remove beanutils-core (#4227)
* fix(TUP-31069): remove beanutils-core

* chore(TUP-31069): change commons-io to 2.4

* chore(TUP-31069): change commons-io to 2.7

* chore(TUP-31069): change commons-io to 2.7

* chore(TUP-31069): only remove unsed cve jars
2021-04-26 18:21:31 +08:00
sbliu
a0b395cd3a feat(TUP-30846) Unify studio version information & patch info in studio logs. 2021-04-25 10:50:31 +08:00
hzhao-talendbj
98bcc66479 chore(TUP-31155): change the way to check if it's CI mode (#4208)
* chore(TUP-31155): change the way to check if it's CI mode

* TUP-31155 code change

* TUP-31155 add comments
2021-04-23 18:22:37 +08:00
ypiel
a716257dd0 chore: bump to tck:1.32.0 2021-04-22 12:13:51 +02:00
wang wei
b164f8c447 fix(TDI-43921): backport to 73 (#4231) 2021-04-21 18:08:04 +08:00
jiezhang-tlnd
dd352b4a8f fix(TUP-29381)CVE on (#4222)
commons-codec-1.6.jar/commons-codec-1.9.jar/commons-codec-1.10.jar
2021-04-19 15:43:12 +08:00
Jane Ding
08ac05c23e fix(TUP-30992):CVE: junit-4.11,4.13 (#4220)
https://jira.talendforge.org/browse/TUP-30992

Signed-off-by: jding-tlnd <jding@talend.com>
2021-04-16 19:19:40 +08:00
Zhiwei Xue
90a37f8418 fix(TUP-30187):rename maven property (#4216) 2021-04-16 15:36:36 +08:00
Liu Xinquan
137c543bfd Revert "fix(TDQ-19030): fix complier error (#4172)" (#4212)
This reverts commit c22eba9ead.
2021-04-15 16:39:40 +08:00
jiezhang-tlnd
42e94c6508 fix(TUP-30992)CVE: junit-4.11,4.13 (#4202)
* fix(TUP-30992)CVE: junit-4.11,4.13

* fix(TUP-30992)CVE: junit-4.11,4.13
2021-04-15 16:13:04 +08:00
hzhao-talendbj
ff9c4c021a fix(TUP-30921):Job fails with "Could not find the context Default" after migration 7.2.1 to 7.3.1 R2021-01 (#4154)
* fix(TUP-30921): Job fails with "Could not find the context Default"
after migration 7.2.1 to 7.3.1 R2021-01

* TUP-30921 new code change
2021-04-15 15:13:28 +08:00
Zhiwei Xue
291f56e505 fix(TUP-30586):Routine/Bean custom jars dependency management issues left todo (#4201)
* fix(TUP-30782):Fail to run job if use a custom routine jar without inner
jar.

* fix(TUP-30791): fix test case run failure
2021-04-14 16:54:11 +08:00
hzhao-talendbj
c67b2f479e chore(TUP-30942): upgrade to httpclient-4.5.13.jar (#4193) 2021-04-14 09:38:28 +08:00
mbasiuk-talend
45d373f447 chore(TDI-45894): bump connectors version to 1.20.0 (#4190) 2021-04-13 13:29:33 +03:00
Emmanuel GALLOIS
edff6eeeb8 feat(TDI-45842): bump component-runtime to 1.31.2 (#4164)
* feat(TDI-45842): bump component-runtime to 1.31.1-SNAPSHOT

* chore(TDI-45842): bump component-runtime to 1.31.2

Co-authored-by: jzhao-talend <jzhao@talend.com>
Co-authored-by: mbasiuk <mbasiuk@talend.com>
2021-04-13 12:39:28 +03:00
bhe-talendbj
acd1555a2b fix(TUP-26813): upgrade bcprov-jdk15on (#4053)
* fix(TUP-26813): upgrade bcprov-jdk15on

* fix(TUP-26813): upgrade bcprov-jdk15on

* fix(TUP-26813): add test case
2021-04-13 11:42:21 +08:00
sbliu
97a77ec401 feat(TUP-30953) record install additional packages. 2021-04-13 11:07:46 +08:00
bhe-talendbj
a5f6364467 bugfix(TUP-30203): Search required groups only (#4174)
* fix(TUP-30203): only search required library groups

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

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

* fix(TUP-30203): exclude class file

* fix(TUP-30203): exclude class file

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

* fix(TUP-30203): add i18n
2021-04-12 18:05:35 +08:00
hcyi
db39d84224 feat(TUP-30291):Add Suggestable support for Table options (List<Row>) in (#4150)
Studio.
2021-04-12 15:24:23 +08:00
jiezhang-tlnd
d153fe9fa0 feat(TUP-30381)Support greenplum driver for Greenplum Database in studio (#4138)
* feat(TUP-30381)Support greenplum driver for Greenplum Database in studio
metadata
https://jira.talendforge.org/browse/TUP-30381

* add dbversion for greeenplu

* add dbversion

* update mapping_greenplum file

* update greenplum_mapping

* update greenplum mapping
2021-04-12 10:02:25 +08:00
hzhao-talendbj
939e974d1c fix(TUP-30429): the job export from v6.5.1 can't be imported to v7.3.1 (#4180) 2021-04-09 11:33:04 +08:00
Zhiwei Xue
722a0b1341 fix(TUP-30786):Avoid to click finish button more than once when do (#4184)
create custom routine jar/bean jar.
2021-04-08 18:32:55 +08:00
sbliu
7b391d516f TUP-30768 Can't reset performance_record if first patch use manual installation then the second use Software update 2021-04-08 17:26:50 +08:00
Xilai Dai
b5478c3f2f chore(APPINT-32718) override the httpclient version (#4189)
* chore(APPINT-32718) override the httpclient version

* chore(APPINT-32718) override the httpclient version
2021-04-08 16:27:29 +08:00
hzhao-talendbj
0726cb38fd chore(TUP-30942): CVE: httpclient-4.5.3.jar (#4157)
* chore(TUP-30942): CVE: httpclient-4.5.3.jar

* TUP-30942 modify manifest
2021-04-08 15:55:37 +08:00
pyzhou
687ab637be fix(TDI-45881):Update jackson mapper (#4188) 2021-04-08 15:27:31 +08:00
hzhao-talendbj
4cb1deb115 chore(TUP-27039): Update Commons Compress to 1.19 backport to 7.3 (#4140)
* chore(TUP-27039): Update Commons Compress to 1.19 backport to 7.3

* TUP-27093 fix wrong code dependency

* TUP-27039 revert tycho to 1.4.0

* TUP-27039 change karaf-maven-plugin to 4.2.7

* TUP-27039 change karaf-maven-plugin to 4.2.7

* TUP-27039 if packaging pom ,then use origin one
2021-04-08 10:51:39 +08:00
Zhiwei Xue
c594011902 fix(TUP-30187):CI: Add options to disable compile error of (#4177)
routines/beans/codejars pom
2021-04-07 09:46:54 +08:00
vdrokov
c6d7da2121 TESB-32416: Importing route from a zip file, imports all the other jobs (Clone TESB-32400) (#4147) 2021-04-06 15:00:36 +02:00
Zhiwei Xue
90951dced8 fix(TUP-30780):Only check used custom jars when run/build Job (#4173) 2021-04-06 15:51:34 +08:00
msjian
c22eba9ead fix(TDQ-19030): fix complier error (#4172) 2021-04-06 14:14:56 +08:00
Zhiwei Xue
e466c31b88 fix(TUP-30977):test run map using custom routines and beans doesn't work (#4159)
after switch branch
2021-04-06 12:05:53 +08:00
bhe-talendbj
6a601fadd2 fix(TUP-30047): fix missing joblet (#4107)
* fix(TUP-30047): fix missing joblet

* fix(TUP-30047): add missing joblets for test case job

* fix(TUP-30047): add missing joblets for test case job, infinite loop

* feat(TUP-30047): support running dynamic jobs

* feat(TUP-30047): change location of classpath.jar if running ci test
2021-04-02 16:14:23 +08:00
sbliu
28a216d0af fix(TUP-30685) Mvn package job use joblet in subref project fail to run the bat file correct. 2021-04-01 17:27:24 +08:00
hzhao-talendbj
5622490ca4 chore(TUP-29181): upgrade cxf backport to 73 (#4142)
* chore(TUP-29181): upgrade cxf backport to 73

* TUP-29181 remove extra bundle activationpolicy

* TUP-29181 try add source src

* TUP-29181 remove jars from lib folder

* TUP-29181 remove jars from lib
2021-03-30 16:14:45 +08:00
jiezhang-tlnd
283fa4ac93 Jzhang/73/tup 29381 (#4057)
* fix(TUP-29381)CVE on
commons-codec-1.6.jar/commons-codec-1.9.jar/commons-codec-1.10.jar

* fix(TUP-29381)CVE on
commons-codec-1.6.jar/commons-codec-1.9.jar/commons-codec-1.10.jar

* update on tos

* remove common-codec-1.6

* remove commons-dodec 1.6
2021-03-30 15:57:45 +08:00
Zhiwei Xue
b55a302e9f fix(TUP-30813):Add Junits for dependency management feature (#4144) 2021-03-25 09:39:16 +08:00
Jane Ding
887d1249dc fix(TUP-30216):Commandline install patch and login project throw NPE (#4114)
https://jira.talendforge.org/browse/TUP-30216

Signed-off-by: jding-tlnd <jding@talend.com>
2021-03-25 00:39:52 +08:00
Zhiwei Xue
caa73983c8 fix(TUP-30779):Custom jar resource unload issue after git pull&merge. (#4133) 2021-03-24 16:20:48 +08:00
Jane Ding
7a502a7dc1 fix(TUP-30615):Schema Update Detection popping up everytime upon opening (#4131)
the job
https://jira.talendforge.org/browse/TUP-30615

Signed-off-by: jding-tlnd <jding@talend.com>
2021-03-23 11:30:29 +08:00
hzhao-talendbj
c395d11c00 TUP-30558 (#4111) (#4130) 2021-03-23 09:53:34 +08:00
Zhiwei Xue
1fc99eaa02 feat(TUP-29014): bugfix 2021-03-16 (#4128) 2021-03-16 17:11:55 +08:00
jiezhang-tlnd
77a076cea1 revert the commit 94914d676b 2021-03-16 16:06:51 +08:00
jiezhang-tlnd
94914d676b check if custom nexus is available or not before deploy the jar 2021-03-16 16:01:53 +08:00
Laurent BOURGEOIS
1faf28843b fix(TBD-11964): Different time zone for Standard jobs and BD Batch (#4082) 2021-03-15 17:01:22 +01:00
Zhiwei Xue
f62e85356c feat(TUP-29014): bugfix 2021-03-11 (#4116)
* feat(TUP-29014):init custom jar cache before migration tasks

* feat(TUP-29014): bugfix 2021-03-11
2021-03-11 16:24:47 +08:00
Chao MENG
81a6422c0b item(TUP-30180): Studio slowness on merge operation (#4066)
* fix(TUP-29390): Improve the file commit logic in RepositoryWorkUnit (#3901)

fix(TUP-29390): Improve the file commit logic in RepositoryWorkUnit during Pull and Merge
https://jira.talendforge.org/browse/TUP-29390

* fix(TUP-30103): [7.1.1] Studio somtimes hangs for 20 seconds
https://jira.talendforge.org/browse/TUP-30103

* fix(TUP-30103): [7.1.1] Studio somtimes hangs for 20 seconds
https://jira.talendforge.org/browse/TUP-30103

Conflicts:
	main/plugins/org.talend.designer.maven/src/main/java/org/talend/designer/maven/tools/AggregatorPomsHelper.java
2021-03-11 09:51:38 +08:00
Zhiwei Xue
941c36921b feat(TUP-29014):fix junit failure (#4112) 2021-03-10 11:43:05 +08:00
sbliu
e01cecfb68 feat(TUP-30338) Data Collector improvement step 1
* log action activation, log perspective switch.
* reset performance record after install patch, read/write info from/to new performance file location.
* set default DATA_COLLECTOR_UPLOAD_PERIOD to 5.
* don't send data when closing studio.
* When there is no action or dialog popped , check data collector enable, network enable, data send period, if need sent, try to send data.
2021-03-10 10:34:56 +08:00
Zhiwei Xue
9d3fb2213b feat(TUP-29014): Add only compile code projects function for TDM (#4109) 2021-03-09 15:51:25 +08:00
sbliu
aa4ccadbaf fix(TUP-29586) Change repository context variable type would pop up job update dialog. 2021-03-09 14:22:49 +08:00
Zhiwei Xue
1c7f2a311c feat(TUP-29014): Only build and package beans/routines that are used in Route/Job (#4028)
* feat(TUP-29018): Rearrange single routines into jars

* feat(TUP-29019): Generation and Build: Build routine jars in different
maven projects.

* feat(TUP-29019): Build routine jars in different maven projects

* feat(TUP-29019): fix codesjar cache and update job maven project problem

* feat(TUP-29019): fix several issues

* feat(TUP-29943):codejars under recycle bin should be hierarchy (#3979)

* feat(TUP-29943):codejars under recycle bin should be hierarchy
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29943):codejars under recycle bin should be hierarchy
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29014): refactor codesjar resource cache

* feat(TUP-29943):delete codejar forever should also delete child code (#3985)

items, include delete forever from recycle bin and empty recycle bin
Restore code should also restore parent node codeJar
https://jira.talendforge.org/browse/TUP-29943
Signed-off-by: jding-tlnd <jding@talend.com>

* feat(TUP-29943):Fail to import custom Routine jar (#3987)

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

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

* feat(TUP-29014): fix codesjar dependencies can't set required issue

* feat(TUP-29943):delete forever should also delete codejar folder (#3991)

should not have duplicate nodes in import dialog
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29943):delete forever should also delete codejar folder (#3992)

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

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

* feat(TUP-29943):import no value present issue and import to change inner (#4000)

code
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29019):fix missing codesjar module in CI without -pl

* feat(TUP-29019): improve update codesjar project logic

* feat(TUP-29014): fix generate pom and sync inner code issues

* feat(TUP-29014): fix opeing ref inner codes issue

* feat(TUP-29014): fix missing codesjars module for regenerate poms issue

* feat(TUP-29943):delete folder issue and build job routinesJar (#4003)

* feat(TUP-29943):delete folder issue and build job routinesJar
relationship
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29943):make impact analysis work for beansjar
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29014):fix several import issue and build code jar problem

* feat(TUP-29014): avoid to fail all install if some code jar projects got
problem

* feat(TUP-29943): rename codejar should update package and folder path (#4012)

for inner code
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29943):export and import to deploy libs issue (#4020)

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

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

* feat(TUP-29014):fix retrieve jar from nexus and aggregate build code jar
project issues

* feat(TUP-29014):fix several missing class in jar for custom jar issues

* feat(TUP-29014): update ref code projects after resolved dependencies

* Revert "feat(TUP-29014): update ref code projects after resolved dependencies"

This reverts commit e9256e359f.

* feat(TUP-29014): support shot class name for custom jars in component

* feat(TUP-29943):rename issues (#4044)

* feat(TUP-29943):rename issues
https://jira.talendforge.org/browse/TUP-29943

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

* feat(TUP-29943)disable duplicate for codejar and innercode
https://jira.talendforge.org/browse/TUP-29943

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

* fix(TUP-29014):fix generating code error.

* feat(TUP-29014): improve update codesjar project performance and fix
regression

* feat(TUP-29014):fix rename regressions and improve import performance

* feat(TUP-29943):fix some copy paste issues (#4069)

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

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

* feat(TUP-29014):fix codesjar modules not share problem

* feat(TUP-29014):fix git collaborative work issues

* feat(TUP-29943):image issue (#4071)

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

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

* feat(TUP-29014):fix compilation error

* feat(TUP-29014):fix git pull deadlock and ref inner code sync issues

* fix(TESB-32252):Bundle is not compatible with this blueprint extender

* fix(TUP-30597):Fix junit failures caused by dependency management (#4099)

feature

* feat(TUP-29014):fix several git reset issues

* feat(TUP-29014): bugfix 2021-03-05

* feat(TUP-29014): bugfix 2021-03-08

* feat(TUP-29014): bugfix 2021-03-08 2

* feat(TUP-29014):bugfix 2021-03-09

Co-authored-by: Jane Ding <jding@talend.com>
2021-03-09 12:12:58 +08:00
hzhao-talendbj
0b7cba2a9d fix(TUP-29719): upgrade jackson to 2.11.4 (#4077) 2021-03-09 11:59:36 +08:00
nrousseau
f8dd9f0c1a Jzhang/73/tup 30093 (#4084)
* fix(TUP-30093)upgrade the commons-codec plugin

* TUP-30093 change crypto-utils

Co-authored-by: jiezhang-tlnd <jie.zhang@talend.com>
Co-authored-by: hzhao-talendbj <hzhao@talend.com>
2021-03-09 11:53:17 +08:00
bhe-talendbj
9c12a2e19e chore(TUP-27154): Upgrade commons-beanutils (#4017)
* chore(TUP-27154): Upgrade commons-beanutils

* TUP-27154 add include GroupIds to filter beanutils in generated in lib
folder

Co-authored-by: hzhao-talendbj <hzhao@talend.com>
2021-03-08 14:32:11 +08:00
Dmytro Sylaiev
a2132cb833 feat(TDI-45721): Bump TCK version for monthly (#4105) 2021-03-05 14:02:06 +02:00
jiezhang-tlnd
ed4655f2aa chore(TUP-27791 )remove feature (#4039) 2021-03-05 17:11:55 +08:00
jiezhang-tlnd
910e3fb601 TUP-26534 (#3400) (#4016)
* TUP-26534

* TUP-26534  revert for EHiveWithTezJars

* remove unknown version

Co-authored-by: hzhao-talendbj <49395568+hzhao-talendbj@users.noreply.github.com>
Co-authored-by: hzhao-talendbj <hzhao@talend.com>
2021-03-05 14:43:20 +08:00
hzhao-talendbj
bda6b0a1a7 fix(TUP-30269) Snowflake components having schema cannot retrieve column (#4076)
* fix(TUP-30269) Snowflake components having schema cannot retrieve column
name in Japanese

* TUP-30269 fix when uncheck allowspecialchar will generate column0 always

* TUP-30269 add junit
2021-03-04 15:29:25 +08:00
Emmanuel GALLOIS
4ad4d3e5b2 feat(TDI-45704): bump component-runtime to 1.30.0 (#4091) 2021-03-03 10:05:59 +01:00
wang wei
8031d9adb3 fix(TDI-45563): Runtime Lineage: Compile error seen with "RESPONSE_HEADERS"(#4046) 2021-03-03 16:11:02 +08:00
jiezhang-tlnd
74232f3dc3 chore(TUP-27224)Update Daikon Crypto Utils to 1.15.0 (#4034)
* chore(TUP-27224)Update Daikon Crypto Utils to 1.15.0

* chore(TUP-27224)Update Daikon Crypto Utils to 1.15.0

* fix(TUP-27224)Update Daikon Crypto Utils to 1.15.0
2021-03-01 15:04:33 +08:00
bhe-talendbj
b2e5ab5630 chore(TUP-30230): Remove org.talend.libraries.apache.batik (#4014)
* chore(TUP-30230): Remove org.talend.libraries.apache.batik

* chore(TUP-30230): Remove org.talend.libraries.apache.batik
2021-02-26 14:39:18 +08:00
jiezhang-tlnd
f1b9ed2e86 fix(TUP-30273)tDBOutput component compilation error (#4029)
* fix(TUP-30273)tDBOutput component compilation error
https://jira.talendforge.org/browse/TUP-30273

* fix(TUP-30273)tDBOutput component compilation error
2021-02-23 16:33:05 +08:00
wang wei
de48a67805 fix(TDI-45664): meet an build issue when build studio patch for 7.3.1 (#4070) 2021-02-22 16:21:57 +08:00
bhe-talendbj
55723c1a48 fix(TUP-30416): compact project folders if compactProjectFolders is set (#4056)
* fix(TUP-30416): compact project folders if compactProjectFolders is set

* fix(TUP-30416): add project settings

* fix(TUP-30416): fix typo
2021-02-19 17:39:09 +08:00
apoltavtsev
7bb5692418 bugfix(TESB-31529) cleanup Studio artifact sensitive parameters in contexts files during publish to Cloud [2] 2021-02-17 09:35:40 +01:00
Laurent BOURGEOIS
4010656564 TBD(11971):Add method to find Node by unique name (#4047) 2021-02-12 11:22:59 +01:00
Emmanuel GALLOIS
966becc5e5 feat(TDI-45225): bump component-runtime to 1.29.1 (#4035)
* feat(TDI-45225): bump component-runtime to 1.28.2 for bouncycastle CVE
2021-02-12 09:56:22 +01:00
bhe-talendbj
8bd1fd724f fix(TUP-30360): add preference to disable sharing libs from components (#4043)
* fix(TUP-30360): add preference to disable sharing libs from components

* fix(TUP-30360): install libfile
2021-02-09 16:40:37 +08:00
hcyi
92d31aa477 fix(TUP-30067):Dataproc Hive metadata not in sync with Hive component. (#4032) 2021-02-08 15:39:22 +08:00
vdrokov
b4f77effd8 TESB-31044: Data service's endpoint can't be updated if passed as a context variable (#4019) 2021-02-03 09:58:34 +02:00
pyzhou
3086f9be45 feat(TDI-45463):Add Delta Lake SQL Template (#4009)
* feat(TDI-45463):Add Delta Lake SQL Template

* correct sqltemplate

* wrong place of using delta
2021-02-02 17:41:24 +08:00
jiezhang-tlnd
8dc5f853fd fix(TUP-28519):Update org.talend.libraries.apache.google jars (#3631) (#4033)
remove org.talend.libraries.apache.google plugin
https://jira.talendforge.org/browse/TUP-28519

Conflicts:
	main/plugins/org.talend.libraries.apache.google/META-INF/MANIFEST.MF
	main/plugins/org.talend.libraries.apache.google/pom.xml

Co-authored-by: Jane Ding <jding@talend.com>
2021-02-02 16:16:37 +08:00
Laurent BOURGEOIS
dfae595cbe feat(TBD-10921):Add Spark local 3.0.x (#3932) 2021-01-29 18:15:57 +01:00
kjwang
b3271f70e0 Fix TUP-29885 ERROR: Some patches are not compatible with current product (#3970)
* Fix TUP-29885 ERROR: Some patches are not compatible with current
product
https://jira.talendforge.org/browse/TUP-29885
2021-01-29 17:29:36 +08:00
Jane Ding
486650da91 fix(TUP-23738):The couchbase icon is not correct when import (#3971)
https://jira.talendforge.org/browse/TUP-23738

Signed-off-by: jding-tlnd <jding@talend.com>
2021-01-29 10:05:00 +08:00
zyuan-talend
2885482d6f fix(TUP-23477):fix TreeToTable connection line issue on Mac with BigSur. (#4023) 2021-01-29 09:53:28 +08:00
zyuan-talend
e35338ca0a fix(TUP-29835):avoid the password autofill dialog in Big Sur. (#4013) 2021-01-28 16:36:27 +08:00
vdrokov
76452e3799 TESB-31563: Microservice: ClassNotFoundException: org.eclipse.jetty.client.HttpClientTransport (#3945) 2021-01-21 16:55:44 +02:00
bkatiukhov
4b0c75070d TESB-30620 Add constants (#3984)
Co-authored-by: Bohdan Katiukhov <bohdan.katiukhov@synapse.com>
2021-01-20 07:54:32 +01:00
bhe-talendbj
1ac63975c1 feat(TUP-29700): move preference settings to libraries page (#3990) 2021-01-15 10:29:28 +08:00
397 changed files with 8284 additions and 1690 deletions

View File

@@ -29,7 +29,7 @@
<import plugin="org.eclipse.jdt.launching" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.eclipse.jdt.ui" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.hamcrest.core" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="4.13.2" match="greaterOrEqual"/>
</requires>
<plugin id="org.eclipse.jdt.launching.macosx" os="macosx" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.eclipse.jdt.launching.ui.macosx" os="macosx" download-size="0" install-size="0" version="0.0.0" unpack="false"/>

View File

@@ -6,7 +6,6 @@
<license url="http://www.example.com/license">[Enter License Description here.]</license>
<plugin id="org.talend.libraries.jdbc.access" download-size="0" install-size="0" version="0.0.0"/>
<plugin id="org.talend.libraries.jdbc.as400" download-size="0" install-size="0" version="0.0.0"/>
<plugin id="org.talend.libraries.jdbc.derby" download-size="0" install-size="0" version="0.0.0"/>
<plugin id="org.talend.libraries.jdbc.exasol" download-size="0" install-size="0" version="0.0.0"/>
<plugin id="org.talend.libraries.jdbc.h2" download-size="0" install-size="0" version="0.0.0"/>
<plugin id="org.talend.libraries.jdbc.hsql" download-size="0" install-size="0" version="0.0.0"/>

View File

@@ -12,13 +12,13 @@
<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"/>
<import plugin="org.apache.commons.codec" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.codec" version="1.14.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.compress" version="1.10.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.lang" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.lang3" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.log4j" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.servicemix.bundles.avro" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.junit" version="4.13.2" match="greaterOrEqual"/>
<import plugin="org.slf4j.api" version="0.0.0" match="greaterOrEqual"/>
<import plugin="org.apache.commons.configuration" version="2.0.0" match="greaterOrEqual"/>
</requires>

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

View File

@@ -77,6 +77,7 @@ public enum ECoreImage implements IImage {
ROUTES_ICON("/icons1/routes_icon.png"), //$NON-NLS-1$
ROUTINE_ICON("/icons1/routine.png"), //$NON-NLS-1$
ROUTINE_EDITOR_ICON("/icons1/routine_editor.png"), //$NON-NLS-1$
ROUTINESJAR_ICON("/icons1/routinesjar.png"), //$NON-NLS-1$
JOB_SCRIPTS_ICON("/icons1/job_scripts.png"), //$NON-NLS-1$
JOB_SCRIPTS_TOOLBAR_ICON("/icons1/job_script_toolbar.png"), //$NON-NLS-1$
FTP_ICON("/icons1/ftp.png"), //$NON-NLS-1$

View File

@@ -92,7 +92,7 @@
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>

View File

@@ -13,13 +13,13 @@
package org.talend.commons.utils.time;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.Properties;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@@ -82,7 +82,7 @@ public class PerformanceStatisticUtil {
public static void recordStartupEpapsedTime(double elapsedTimeInSeconds) {
File file = getRecordingFile();
Properties props = read(file, true);
Properties props = PropertiesFileUtil.read(file, true);
String propCount = props.getProperty(StatisticKeys.STARTUP_COUNT.get(), "0");
String propMax = props.getProperty(StatisticKeys.STARTUP_MAX.get(), "0");
String propAverage = props.getProperty(StatisticKeys.STARTUP_AVERAGE.get(), "0");
@@ -99,7 +99,7 @@ public class PerformanceStatisticUtil {
props.setProperty(StatisticKeys.STARTUP_MAX.get(), "" + iPropMax);
props.setProperty(StatisticKeys.STARTUP_AVERAGE.get(), "" + iPropAverage);
store(file, props);
PropertiesFileUtil.store(file, props);
}
public static File getRecordingFile() {
@@ -108,75 +108,41 @@ public class PerformanceStatisticUtil {
}
String configurationLocation = Platform.getConfigurationLocation().getURL().getPath();
File file = new File(configurationLocation + "/" + recordingFileName);
File file = new File(configurationLocation + "/data_collector/" + recordingFileName);
File oldFile = new File(configurationLocation + "/" + recordingFileName);
if(oldFile.exists()) {
if(!file.exists()) {
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
try {
Files.move(Paths.get(oldFile.toURI()), Paths.get(file.toURI()), StandardCopyOption.ATOMIC_MOVE);
} catch (IOException e) {
CommonExceptionHandler.log(e.getMessage());
}
}
try {
Files.deleteIfExists(Paths.get(oldFile.toURI()));
} catch (IOException e) {
CommonExceptionHandler.log(e.getMessage());
}
}
return file;
}
public static void setRecordingFile(File _recordingFile) {
recordingFile = _recordingFile;
}
public static synchronized Properties read(File recordFile, boolean createIfNotExist) {
Properties props = new Properties();
if (recordFile != null && exist(recordFile, createIfNotExist)) {
FileInputStream inStream = null;
try {
inStream = new FileInputStream(recordFile);
props.load(inStream);
} catch (Exception e) {
CommonExceptionHandler.log(e.getMessage());
} finally {
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {//
}
}
}
public static void reset() {
File _recordingFile = getRecordingFile();
try {
Files.deleteIfExists(Paths.get(_recordingFile.toURI()));
} catch (IOException e) {
CommonExceptionHandler.log(e.getMessage());
}
return props;
}
public static synchronized void store(File recordFile, Properties props) {
if (props == null) {
return;
}
if (recordFile != null && exist(recordFile, true)) {
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(recordFile);
props.store(outputStream, "");
} catch (IOException e) {
CommonExceptionHandler.log(e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
//
}
}
}
}
}
private static boolean exist(File recordFile, boolean createIfNotExist) {
boolean exists = recordFile.exists();
if (!exists && createIfNotExist) {
try {
exists = recordFile.createNewFile();
if (!exists) {
throw new FileNotFoundException(recordFile.getName());
}
} catch (Exception e) {
CommonExceptionHandler.log(e.getMessage());
return false;
}
}
return exists;
}
private static Lock lock = new ReentrantLock();
@@ -210,7 +176,7 @@ public class PerformanceStatisticUtil {
private static void _measureIO() {
File file = getRecordingFile();
Properties props = read(file, true);
Properties props = PropertiesFileUtil.read(file, true);
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
File workspace = root.getLocation().makeAbsolute().toFile();
@@ -221,7 +187,7 @@ public class PerformanceStatisticUtil {
measureWrite(props, testFile);
measureRead(props, testFile);
store(file, props);
PropertiesFileUtil.store(file, props);
}
}

View File

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

View File

@@ -0,0 +1,93 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.commons.utils.time;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.talend.commons.exception.CommonExceptionHandler;
/**
* DOC sbliu class global comment. Detailled comment
*/
public class PropertiesFileUtil {
public static synchronized Properties read(File recordFile, boolean createIfNotExist) {
Properties props = new Properties();
if (recordFile != null && exist(recordFile, createIfNotExist)) {
FileInputStream inStream = null;
try {
inStream = new FileInputStream(recordFile);
props.load(inStream);
} catch (Exception e) {
CommonExceptionHandler.log(e.getMessage());
} finally {
if (inStream != null) {
try {
inStream.close();
} catch (IOException e) {//
}
}
}
}
return props;
}
public static synchronized void store(File recordFile, Properties props) {
if (props == null) {
return;
}
if (recordFile != null && exist(recordFile, true)) {
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(recordFile);
props.store(outputStream, "");
} catch (IOException e) {
CommonExceptionHandler.log(e.getMessage());
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
//
}
}
}
}
}
public static boolean exist(File recordFile, boolean createIfNotExist) {
boolean exists = recordFile.exists();
if (!exists && createIfNotExist) {
try {
if(!recordFile.getParentFile().exists()) {
recordFile.getParentFile().mkdirs();
}
exists = recordFile.createNewFile();
if (!exists) {
throw new FileNotFoundException(recordFile.getName());
}
} catch (Exception e) {
CommonExceptionHandler.log(e.getMessage());
return false;
}
}
return exists;
}
}

View File

@@ -26,6 +26,7 @@ import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.talend.commons.ui.runtime.ws.WindowSystem;
/**
* Create a Label and a Text.
@@ -153,7 +154,14 @@ public class LabelledText {
});
GridDataFactory.swtDefaults().applyTo(label);
text = new Text(composite, styleField);
// For Big Sur, to avoid the password autofill dialog.
if (WindowSystem.isBigSurOrLater() && ((styleField & SWT.PASSWORD) != 0)) {
styleField ^= SWT.PASSWORD;
text = new Text(composite, styleField);
text.setEchoChar('*');
} else {
text = new Text(composite, styleField);
}
text.selectAll(); // enable fast erase use
int gridDataStyle = SWT.NONE;
if (isFill) {

View File

@@ -15,6 +15,7 @@ package org.talend.commons.ui.swt.linking;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -77,6 +78,8 @@ public class TreeToTablesLinker<D1, D2> extends BgDrawableComposite implements I
private List<LinkableTable> linkableTableList;
private HashMap<Table, Point> tableToCommonPointMap = new HashMap<Table, Point>();
/**
* DOC amaumont TreeToTableLinker constructor comment.
*
@@ -258,8 +261,34 @@ public class TreeToTablesLinker<D1, D2> extends BgDrawableComposite implements I
Point offset = getOffset();
gc.drawLine(pointStartStraight.x + offset.x, pointStartStraight.y + offset.y, pointEndStraight.x + offset.x,
pointEndStraight.y + offset.y);
if (WindowSystem.isBigSurOrLater()) {
if (yStraight < tree.getBounds().y + treeItemHeight) {
yStraight = tree.getBounds().y + treeItemHeight;
}
if (yStraight > tree.getBounds().height + tree.getBounds().y + treeItemHeight) {
yStraight = tree.getBounds().height + tree.getBounds().y + treeItemHeight;
}
pointEndStraight = new Point(treeToCommonPoint.x + tree.getClientArea().width, yStraight);
if (tableToCommonPointMap.get(table) == null) {
tableToCommonPointMap.put(table, display.map(table, getBgDrawableComposite(), new Point(0, 0)));
}
// scroll issue for table
if (tableToCommonPoint.y != tableToCommonPointMap.get(table).y) {
pointEndCentralCurve.y = tableToCommonPoint.y + tableItemBounds.y
+ table.getItemHeight() / 2;
}
if (pointEndCentralCurve.y < tableToCommonPointMap.get(table).y) {
pointEndCentralCurve.y = tableToCommonPointMap.get(table).y;
}
if (pointEndCentralCurve.y > tableToCommonPointMap.get(table).y + tableBounds.height - table.getBorderWidth()
- table.getHeaderHeight()) {
pointEndCentralCurve.y = tableToCommonPointMap.get(table).y + tableBounds.height - table.getBorderWidth()
- table.getHeaderHeight();
}
} else {
gc.drawLine(pointStartStraight.x + offset.x, pointStartStraight.y + offset.y, pointEndStraight.x + offset.x,
pointEndStraight.y + offset.y);
}
pointEndStraight.x += offset.x;
pointEndStraight.y += offset.y;

View File

@@ -109,4 +109,8 @@ public interface FileConstants {
String SPRING_FOLDER_NAME = "META-INF/spring"; //$NON-NLS-1$
String TALEND_FOLDER_NAME = "TALEND-INF"; //$NON-NLS-1$
String MAVEN_FOLDER_NAME = "MAVEN-INF";
}

View File

@@ -21,6 +21,7 @@ import org.talend.core.model.properties.Item;
import org.talend.core.model.relationship.AbstractJobItemRelationshipHandler;
import org.talend.core.model.relationship.Relation;
import org.talend.core.model.relationship.RelationshipItemBuilder;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
import org.talend.designer.core.model.utils.emf.talendfile.RoutinesParameterType;
@@ -47,14 +48,24 @@ public class JobRoutinesItemRelationshipHandler extends AbstractJobItemRelations
Map<String, String> currentSystemRoutinesMap = RelationshipItemBuilder.getInstance().getCurrentSystemRoutinesMap();
for (Object o : processType.getParameters().getRoutinesParameter()) {
RoutinesParameterType itemInfor = (RoutinesParameterType) o;
if (currentSystemRoutinesMap.containsValue(itemInfor.getName())) {
if (itemInfor.getName() != null && currentSystemRoutinesMap.containsValue(itemInfor.getName())) {
// exclude system routines relation
continue;
}
Relation addedRelation = new Relation();
addedRelation.setId(itemInfor.getName());
addedRelation.setType(RelationshipItemBuilder.ROUTINE_RELATION);
if (ERepositoryObjectType.ROUTINESJAR != null
&& ERepositoryObjectType.ROUTINESJAR.getType().equals(itemInfor.getType())) {
addedRelation.setId(itemInfor.getId());
addedRelation.setType(RelationshipItemBuilder.ROUTINES_JAR_RELATION);
} else if (ERepositoryObjectType.BEANSJAR != null
&& ERepositoryObjectType.BEANSJAR.getType().equals(itemInfor.getType())) {
addedRelation.setId(itemInfor.getId());
addedRelation.setType(RelationshipItemBuilder.BEANS_JAR_RELATION);
} else {
addedRelation.setId(itemInfor.getName());
addedRelation.setType(RelationshipItemBuilder.ROUTINE_RELATION);
}
addedRelation.setVersion(RelationshipItemBuilder.LATEST_VERSION);
relationSet.add(addedRelation);

View File

@@ -15,6 +15,7 @@ package org.talend.core.repository.model;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -186,7 +187,7 @@ public interface IRepositoryFactory {
* @throws PersistenceException
*/
public List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted,
boolean allVersions) throws PersistenceException;
boolean allVersions, IFolder... folders) throws PersistenceException;
/**
* Deletes logically the given object. <code>isDeleted</code> on this object will now returned <code>true</code>.

View File

@@ -20,6 +20,7 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import org.apache.commons.lang.ArrayUtils;
@@ -675,6 +676,9 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
}
}
List<IRepositoryViewObject> codeObjectList = new ArrayList<IRepositoryViewObject>();
Map<String, List<RepositoryNode>> labelCodeJarMap = new HashMap<String, List<RepositoryNode>>();
for (IRepositoryViewObject currentObject : elements) {
RepositoryNode parent = getFolder(currentObject.getRepositoryObjectType(), currentObject.getPath(), rootNodes);
RepositoryNode parentNode = parent;
@@ -682,20 +686,69 @@ public class ProjectRepositoryNode extends RepositoryNode implements IProjectRep
parentNode = rootNode;
}
if (currentObject.isDeleted()) {
boolean isCodeJarType = false;
ERepositoryObjectType repositoryObjectType = currentObject.getRepositoryObjectType();
if (ERepositoryObjectType.getAllTypesOfCodes().contains(repositoryObjectType)) {
codeObjectList.add(currentObject);
continue;
} else if (ERepositoryObjectType.getAllTypesOfCodesJar().contains(repositoryObjectType)) {
isCodeJarType = true;
}
RepositoryNode repNode = new RepositoryNode(new RepositoryViewObject(currentObject.getProperty()), parentNode,
ENodeType.REPOSITORY_ELEMENT);
repNode.setProperties(EProperties.CONTENT_TYPE, currentObject.getRepositoryObjectType());
repNode.setProperties(EProperties.LABEL, currentObject.getLabel());
parentNode.getChildren().add(repNode);
repNode.setParent(parentNode);
if (isCodeJarType) {
String label = currentObject.getProperty().getLabel();
if (labelCodeJarMap.get(label) == null) {
labelCodeJarMap.put(label, new ArrayList<RepositoryNode>());
}
labelCodeJarMap.get(label).add(repNode);
}
} else {
addDeletedSubItems(currentObject.getProperty().getItem(), parentNode);
}
}
addDeletedCode(rootNode, codeObjectList, labelCodeJarMap);
objects.removeAll(elements);
addDeletedTestCases(rootNode, objects);
}
private void addDeletedCode(RepositoryNode rootNode, List<IRepositoryViewObject> codeObjectList, Map<String, List<RepositoryNode>> labelCodeJarMap) {
List<IRepositoryNode> rootNodes = rootNode.getChildren();
for (IRepositoryViewObject codeObject : codeObjectList) {
ERepositoryObjectType objectType = codeObject.getRepositoryObjectType();
RepositoryNode parent = getFolder(codeObject.getRepositoryObjectType(), codeObject.getPath(), rootNodes);
RepositoryNode parentNode = parent;
if (parentNode == null) {
parentNode = rootNode;
}
Item parentItem = (Item) codeObject.getProperty().getItem().getParent();
String folderItemLabel = parentItem.getProperty().getLabel();
if (labelCodeJarMap.get(folderItemLabel) != null) {
Optional node = labelCodeJarMap.get(folderItemLabel).stream()
.filter(n -> ERepositoryObjectType.CodeTypeEnum.isCodeRepositoryObjectTypeMatch(n.getObjectType(),
objectType))
.findFirst();
if (node.isPresent()) {
parentNode = (RepositoryNode) node.get();
}
}
RepositoryNode repNode = new RepositoryNode(new RepositoryViewObject(codeObject.getProperty()), parentNode,
ENodeType.REPOSITORY_ELEMENT);
repNode.setProperties(EProperties.CONTENT_TYPE, objectType);
repNode.setProperties(EProperties.LABEL, codeObject.getLabel());
parentNode.getChildren().add(repNode);
repNode.setParent(parentNode);
}
}
/**
* DOC nrousseau Comment method "addDeletedElements".
*

View File

@@ -25,6 +25,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
@@ -106,6 +107,7 @@ import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.ProjectReference;
import org.talend.core.model.properties.PropertiesPackage;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.properties.SpagoBiServer;
import org.talend.core.model.properties.Status;
import org.talend.core.model.properties.User;
@@ -121,6 +123,7 @@ import org.talend.core.model.repository.LockInfo;
import org.talend.core.model.repository.RepositoryContentManager;
import org.talend.core.model.repository.RepositoryObject;
import org.talend.core.model.repository.RepositoryViewObject;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.repository.CoreRepositoryPlugin;
import org.talend.core.repository.constants.Constant;
import org.talend.core.repository.constants.FileConstants;
@@ -138,6 +141,7 @@ import org.talend.core.runtime.util.ItemDateParser;
import org.talend.core.runtime.util.SharedStudioUtils;
import org.talend.core.service.ICoreUIService;
import org.talend.core.service.IUpdateService;
import org.talend.core.utils.CodesJarResourceCache;
import org.talend.cwm.helper.SubItemHelper;
import org.talend.cwm.helper.TableHelper;
import org.talend.designer.runprocess.IRunProcessService;
@@ -1348,6 +1352,35 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
return this.repositoryFactoryFromProvider.getAll(projectManager.getCurrentProject(), type, withDeleted, allVersions);
}
@Override
public List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted,
boolean allVersions, IFolder... folders) throws PersistenceException {
return this.repositoryFactoryFromProvider.getAll(project, type, withDeleted, allVersions, folders);
}
@Override
public List<IRepositoryViewObject> getAllCodesJars(ERepositoryObjectType type) throws PersistenceException {
return getAllCodesJars(projectManager.getCurrentProject(), type);
}
@Override
public List<IRepositoryViewObject> getAllCodesJars(Project project, ERepositoryObjectType type) throws PersistenceException {
return getAll(project, type).stream().filter(obj -> !(obj.getProperty().getItem() instanceof RoutineItem))
.collect(Collectors.toList());
}
@Override
public List<IRepositoryViewObject> getAllInnerCodes(CodesJarInfo info) throws PersistenceException {
Project project = ProjectManager.getInstance().getProjectFromProjectTechLabel(info.getProjectTechName());
// empty folder won't be commit in git, create if not exist
IFolder folder = ResourceUtils.getProject(project).getFolder(ERepositoryObjectType.getFolderName(info.getType()))
.getFolder(info.getLabel());
if (!folder.exists()) {
ResourceUtils.createFolder(folder);
}
return repositoryFactoryFromProvider.getAll(project, info.getType(), false, false, folder);
}
@Override
public List<String> getFolders(ERepositoryObjectType type) throws PersistenceException {
return getFolders(projectManager.getCurrentProject(), type);
@@ -2213,6 +2246,8 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
ExceptionHandler.process(e);
}
CodesJarResourceCache.initCodesJarCache();
currentMonitor = subMonitor.newChild(1, SubMonitor.SUPPRESS_NONE);
currentMonitor.beginTask("Execute before logon migrations tasks", 1); //$NON-NLS-1$
ProjectManager.getInstance().getMigrationRecords().clear();

View File

@@ -36,7 +36,6 @@ import org.eclipse.swt.widgets.Display;
import org.talend.commons.exception.BusinessException;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.exception.SystemException;
import org.talend.commons.runtime.model.repository.ERepositoryStatus;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.core.GlobalServiceRegister;
@@ -54,11 +53,16 @@ import org.talend.core.model.properties.SQLPatternItem;
import org.talend.core.model.relationship.RelationshipItemBuilder;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.repository.ui.dialog.PastSelectorDialog;
import org.talend.core.repository.utils.RoutineUtils;
import org.talend.core.runtime.services.IDesignerMavenService;
import org.talend.core.runtime.services.IGenericDBService;
import org.talend.core.ui.ICDCProviderService;
import org.talend.core.ui.ITestContainerProviderService;
import org.talend.core.utils.CodesJarResourceCache;
import org.talend.designer.codegen.ICodeGeneratorService;
import org.talend.repository.RepositoryWorkUnit;
import org.talend.repository.model.IProxyRepositoryFactory;
@@ -125,6 +129,44 @@ public class CopyObjectAction {
// return false;
// }
// disable copy for codejar
ERepositoryObjectType sourceObjectType = objectToCopy.getRepositoryObjectType();
if (ERepositoryObjectType.getAllTypesOfCodesJar().contains(sourceObjectType)) {
return false;
}
// disable paste between global code and custom code
if (ERepositoryObjectType.getAllTypesOfCodes().contains(sourceObjectType) && targetNode != null) {
IRepositoryViewObject targetObject = targetNode.getObject();
boolean isInnerCodeSourceNode = RoutinesUtil.isInnerCodes(objectToCopy.getProperty());
if (targetObject != null) {
if (sourceObjectType.equals(targetObject.getRepositoryObjectType())) {
return isInnerCodeSourceNode && RoutinesUtil.isInnerCodes(targetObject.getProperty());
}
if (isInnerCodeSourceNode
&& !ERepositoryObjectType.getAllTypesOfCodesJar().contains(targetObject.getRepositoryObjectType())) {
return false;
}
if (!isInnerCodeSourceNode
&& ERepositoryObjectType.getAllTypesOfCodesJar().contains(targetObject.getRepositoryObjectType())) {
return false;
}
} else {
// system folder node
if (isInnerCodeSourceNode) {
return false;
} else {
ERepositoryObjectType targetType = ((ERepositoryObjectType) targetNode
.getProperties(EProperties.CONTENT_TYPE));
if (ERepositoryObjectType.getAllTypesOfCodesJar().contains(targetType)) {
return false;
}
}
}
}
// Cannot copy system routines:
if (objectToCopy.getRepositoryObjectType() == ERepositoryObjectType.ROUTINES) {
Property property = objectToCopy.getProperty();
@@ -193,7 +235,8 @@ public class CopyObjectAction {
}
// for bug 0005454: Copy paste with keyboard in the repository view doesn't work.
if (targetNode.getType() == ENodeType.REPOSITORY_ELEMENT) {
if (targetNode.getType() == ENodeType.REPOSITORY_ELEMENT
&& !ERepositoryObjectType.getAllTypesOfCodesJar().contains(targetNode.getObjectType())) {
targetNode = targetNode.getParent();
}
@@ -471,9 +514,23 @@ public class CopyObjectAction {
ICodeGeneratorService.class);
if (codeGenService != null) {
codeGenService.createRoutineSynchronizer().renameRoutineClass(item);
boolean isInnerCode = RoutinesUtil.isInnerCodes(item.getProperty());
if (isInnerCode) {
RoutineUtils.changeInnerCodePackage(item, true);
}
try {
codeGenService.createRoutineSynchronizer().syncRoutine(item, true);
} catch (SystemException e) {
if (isInnerCode) {
CodesJarInfo info = CodesJarResourceCache.getCodesJarByInnerCode(item);
if (info != null) {
IDesignerMavenService designerMavenService = IDesignerMavenService.get();
if (designerMavenService != null) {
designerMavenService.updateCodeJarMavenProject(info, false);
}
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}

View File

@@ -111,7 +111,8 @@ public class CreateFolderAction extends AContextualAction {
|| property.equals(ERepositoryObjectType.JOB_DOC) || property.equals(ERepositoryObjectType.JOBLET_DOC)
|| ERepositoryObjectType.SQLPATTERNS.equals(property)
|| ERepositoryObjectType.REFERENCED_PROJECTS.equals(property)
|| ERepositoryObjectType.SVN_ROOT.equals(property)) {
|| ERepositoryObjectType.SVN_ROOT.equals(property) || ERepositoryObjectType.ROUTINESJAR.equals(property)
|| property.equals(ERepositoryObjectType.BEANSJAR)) {
canWork = false;
} else if (property != null
&& GlobalServiceRegister.getDefault().isServiceRegistered(ICamelDesignerCoreService.class)) {

View File

@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Set;
import org.apache.commons.collections.map.MultiKeyMap;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -54,6 +55,7 @@ import org.talend.commons.ui.runtime.exception.MessageBoxExceptionHandler;
import org.talend.commons.ui.runtime.image.EImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.utils.data.container.RootContainer;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IESBService;
import org.talend.core.ITDQRepositoryService;
@@ -714,6 +716,7 @@ public class DeleteAction extends AContextualAction {
removeConnFromSQLExplorer(repositoryNode);
List<IRepositoryViewObject> batchDeleteObjectList = new ArrayList<IRepositoryViewObject>();
deleteTestCases(factory, deleteActionCache, repositoryNode, null, batchDeleteObjectList);
deleteCodeSubItem(factory, deleteActionCache, repositoryNode, null, true);
return true;
}
@@ -1456,10 +1459,11 @@ public class DeleteAction extends AContextualAction {
ITestContainerProviderService testService = (ITestContainerProviderService) GlobalServiceRegister.getDefault()
.getService(ITestContainerProviderService.class);
if(testService != null){
testService.deleteDataFiles(objToDelete);
}
testService.deleteDataFiles(objToDelete);
}
// delete codejar forever need to delete subitem also
deleteCodeSubItem(factory, deleteActionCache, currentJobNode, confirm, false);
if (!ProjectManager.getInstance().getCurrentProject().isLocal()) {
// if remote,batch delete later
@@ -1482,14 +1486,47 @@ public class DeleteAction extends AContextualAction {
factory.deleteObjectLogical(objToDelete);
updateRelatedViews();
removeConnFromSQLExplorer(currentJobNode);
List<IRepositoryViewObject> deleteObjectList = new ArrayList<IRepositoryViewObject>();
deleteTestCases(factory, deleteActionCache, currentJobNode, confirm, null);
deleteCodeSubItem(factory, deleteActionCache, currentJobNode, confirm, true);
}
}
return needReturn;
}
private void deleteCodeSubItem(IProxyRepositoryFactory factory, DeleteActionCache deleteActionCache,
final IRepositoryNode currentJobNode, Boolean confirm, boolean logicalDelete)
throws PersistenceException, BusinessException {
if (!ERepositoryObjectType.getAllTypesOfCodesJar().contains(currentJobNode.getObjectType())) {
return;
}
if (!currentJobNode.getChildren().isEmpty()) {
List<IRepositoryViewObject> deleteObjectList = new ArrayList<IRepositoryViewObject>();
for (IRepositoryNode child : currentJobNode.getChildren()) {
deleteElements(factory, deleteActionCache, (RepositoryNode) child, confirm, deleteObjectList);
}
if (deleteObjectList != null && deleteObjectList.size() > 0) {
factory.batchDeleteObjectPhysical4Remote(ProjectManager.getInstance().getCurrentProject(), deleteObjectList);
}
}
// delete forever to delete codeJar folder
if (!logicalDelete) {
IFolder folder = ResourceUtils
.getFolder(ResourceUtils.getProject(ProjectManager.getInstance().getCurrentProject()),
ERepositoryObjectType.getFolderName(currentJobNode.getObjectType()), true)
.getFolder(currentJobNode.getObject().getProperty().getLabel());
if (folder != null) {
try {
folder.delete(false, null);
} catch (CoreException e) {
throw new PersistenceException(e);
}
}
}
}
private void deleteTestCases(IProxyRepositoryFactory factory, DeleteActionCache deleteActionCache,
final IRepositoryNode currentJobNode, Boolean confirm, List<IRepositoryViewObject> batchDeleteObjectList)
throws PersistenceException, BusinessException {

View File

@@ -74,6 +74,7 @@ import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryContentHandler;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.RepositoryContentManager;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.repository.i18n.Messages;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.repository.ui.dialog.DuplicateDialog;
@@ -145,8 +146,14 @@ public class DuplicateAction extends AContextualAction {
canWork = false;
} else if (((StructuredSelection) selection).toArray().length == 1) {
Object obj = ((StructuredSelection) selection).toList().get(0);
RepositoryNode sourceNode = (RepositoryNode) obj;
// disable duplicate for codejar / innercode now
if (ERepositoryObjectType.getAllTypesOfCodesJar().contains(sourceNode.getObjectType())
|| sourceNode.getObject() != null && sourceNode.getObject().getProperty() != null
&& RoutinesUtil.isInnerCodes(sourceNode.getObject().getProperty())) {
canWork = false;
}
if (canWork) {
RepositoryNode sourceNode = (RepositoryNode) obj;
if (!CopyObjectAction.getInstance().validateAction(sourceNode, null)) {
canWork = false;
} else if (node.getProperties(EProperties.CONTENT_TYPE) == ERepositoryObjectType.JOB_DOC

View File

@@ -16,6 +16,7 @@ import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -45,6 +46,7 @@ import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.exception.MessageBoxExceptionHandler;
import org.talend.commons.ui.runtime.image.ECoreImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.ITDQRepositoryService;
import org.talend.core.model.properties.ConnectionItem;
@@ -343,6 +345,7 @@ public class EmptyRecycleBinAction extends AContextualAction {
testService.deleteDataFiles(objToDelete);
}
}
deleteCodeSubItem(factory, currentNode);
if (!ProjectManager.getInstance().getCurrentProject().isLocal()) {
// if remote, batch delete later
batchDeleteObjectList.add(objToDelete);
@@ -355,6 +358,36 @@ public class EmptyRecycleBinAction extends AContextualAction {
}
}
private void deleteCodeSubItem(IProxyRepositoryFactory factory, final IRepositoryNode currentNode)
throws PersistenceException, BusinessException {
if (!ERepositoryObjectType.getAllTypesOfCodesJar().contains(currentNode.getObjectType())) {
return;
}
if (!currentNode.getChildren().isEmpty()) {
List<IRepositoryViewObject> deleteObjectList = new ArrayList<IRepositoryViewObject>();
for (IRepositoryNode child : currentNode.getChildren()) {
deleteElements(factory, (RepositoryNode) child, deleteObjectList);
}
if (deleteObjectList != null && deleteObjectList.size() > 0) {
factory.batchDeleteObjectPhysical4Remote(ProjectManager.getInstance().getCurrentProject(), deleteObjectList);
}
}
// delete forever to delete codeJar folder
IFolder folder = ResourceUtils
.getFolder(ResourceUtils.getProject(ProjectManager.getInstance().getCurrentProject()),
ERepositoryObjectType.getFolderName(currentNode.getObjectType()), true)
.getFolder(currentNode.getObject().getProperty().getLabel());
if (folder != null) {
try {
folder.delete(false, null);
} catch (CoreException e) {
throw new PersistenceException(e);
}
}
}
protected boolean isRelation(IEditorInput editorInput, String repoNodeProjectLabel, String repoNodeId) {
IRepoViewLinker[] allRepoViewLinkers = RepoViewLinkerRegistryReader.getInstance().getAllRepoViewLinkers();
for (IRepoViewLinker linker : allRepoViewLinkers) {

View File

@@ -193,7 +193,8 @@ public class RestoreAction extends AContextualAction {
node = node.getParent();
if ((node.getObject().getProperty().getItem() instanceof FolderItem)) {
node.getObject().getProperty().getItem().getState().setDeleted(false);
} else if (isTestcase) {
} else if (isTestcase
|| ERepositoryObjectType.getAllTypesOfCodesJar().contains(node.getObjectType())) {
restoreNode(node);
}
}

View File

@@ -389,6 +389,14 @@ public class RepositoryLabelProvider extends LabelProvider implements IColorProv
case STABLE_SYSTEM_FOLDER:
case SYSTEM_FOLDER:
ERepositoryObjectType contentType = node.getContentType();
if (contentType != null) {
// special setting for system codeJar node
if (contentType.equals(ERepositoryObjectType.ROUTINESJAR)) {
nodeIcon = RepositoryImageProvider.getIcon(ERepositoryObjectType.ROUTINES);
} else if (contentType.equals(ERepositoryObjectType.BEANSJAR)) {
nodeIcon = RepositoryImageProvider.getIcon(ERepositoryObjectType.BEANS);
}
}
if (nodeIcon == null || EImage.DEFAULT_IMAGE.equals(nodeIcon)) {
Image image = getImageFromFramework(contentType);
if (image != null) {

View File

@@ -22,6 +22,7 @@ import org.talend.core.model.properties.ByteArray;
import org.talend.core.model.properties.FileItem;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.RoutinesJarItem;
import org.talend.core.model.repository.AbstractRepositoryContentHandler;
import org.talend.core.model.repository.ERepositoryObjectType;
@@ -66,6 +67,13 @@ public abstract class AbstractResourceRepositoryContentHandler extends AbstractR
return itemResource;
}
protected Resource save(RoutinesJarItem item) {
final Resource itemResource = getXmiResourceManager().getItemResource(item);
itemResource.getContents().clear();
itemResource.getContents().add(item.getRoutinesJarType());
return itemResource;
}
protected Resource saveScreenShots(ProcessItem item) throws PersistenceException {
Resource itemResource = getXmiResourceManager().getScreenshotResource(item, true, true);
EMap screenshots = item.getProcess().getScreenshots();
@@ -76,7 +84,7 @@ public abstract class AbstractResourceRepositoryContentHandler extends AbstractR
return itemResource;
}
private XmiResourceManager getXmiResourceManager() {
protected XmiResourceManager getXmiResourceManager() {
if (null == xmiResourceManager) {
xmiResourceManager = new XmiResourceManager();
}

View File

@@ -81,6 +81,12 @@ public class ProjectDataJsonProvider {
return strBuilder.toString();
}
public static String getMigrationTaskIndexPath() {
StringBuilder strBuilder = new StringBuilder();
strBuilder.append(FileConstants.SETTINGS_FOLDER_NAME).append("/").append(FileConstants.MIGRATION_TASK_FILE_NAME); //$NON-NLS-1$
return strBuilder.toString();
}
public static void saveProjectData(Project project) throws PersistenceException {
saveProjectData(project, CONTENT_ALL);
}

View File

@@ -12,6 +12,10 @@
// ============================================================================
package org.talend.core.repository.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
@@ -26,37 +30,65 @@ import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.services.IDesignerMavenService;
/**
* DOC nrousseau class global comment. Detailled comment
*/
public final class RoutineUtils {
private static final String DEFAULT_PACKAGE_REGEX = "package(\\s)+" + JavaUtils.JAVA_ROUTINES_DIRECTORY //$NON-NLS-1$
+ "\\.((\\w)+)(\\s)*;"; //$NON-NLS-1$
private static final String DEFAULT_PACKAGE_STRING = "package " + JavaUtils.JAVA_ROUTINES_DIRECTORY + ";"; //$NON-NLS-1$ //$NON-NLS-2$
private static final String INNER_ROUTINES_PACKAGE_REGEX = "package\\s+([^;]+);";
public static void changeRoutinesPackage(Item item) {
List<ERepositoryObjectType> allowedTypes = new ArrayList<ERepositoryObjectType>();
allowedTypes.add(ERepositoryObjectType.ROUTINES);
doChangeRoutinesPackage(item, DEFAULT_PACKAGE_REGEX, DEFAULT_PACKAGE_STRING, allowedTypes, false, true);
}
public static void changeInnerCodePackage(Item item, boolean avoidSave) {
changeInnerCodePackage(item, avoidSave, true);
}
public static void changeInnerCodePackage(Item item, boolean avoidSave, boolean commitMode) {
IDesignerMavenService service = IDesignerMavenService.get();
if (service != null && item instanceof RoutineItem) {
RoutineItem routineItem = (RoutineItem) item;
String codesJarPackageByInnerCode = service.getCodesJarPackageByInnerCode(routineItem);
if (StringUtils.isNotBlank(codesJarPackageByInnerCode)) {
String newPackageString = "package " + StringUtils.replace(codesJarPackageByInnerCode, "/", ".") + ";";
if (!routineItem.isBuiltIn()) {
String routineContent = new String(routineItem.getContent().getInnerContent());
if (routineContent != null && routineContent.contains(newPackageString)) {
return;
}
}
doChangeRoutinesPackage(item, INNER_ROUTINES_PACKAGE_REGEX, newPackageString,
ERepositoryObjectType.getAllTypesOfCodes(), avoidSave, commitMode);
}
}
}
public static void doChangeRoutinesPackage(Item item, String packageRegex, String newPackage,
List<ERepositoryObjectType> allowedTypes, boolean avoidSave, boolean commitMode) {
if (item == null) {
return;
}
ERepositoryObjectType itemType = ERepositoryObjectType.getItemType(item);
if (ERepositoryObjectType.ROUTINES.equals(itemType) && item instanceof RoutineItem) {
if (allowedTypes != null && allowedTypes.contains(itemType) && item instanceof RoutineItem) {
RoutineItem rItem = (RoutineItem) item;
if (!rItem.isBuiltIn()) {
//
String routineContent = new String(rItem.getContent().getInnerContent());
//
// String curProjectName =
// currentProject.getTechnicalLabel().toLowerCase();
String oldPackage = "package(\\s)+" + JavaUtils.JAVA_ROUTINES_DIRECTORY + "\\.((\\w)+)(\\s)*;"; //$NON-NLS-1$ //$NON-NLS-2$
// String newPackage = "package " +
// JavaUtils.JAVA_ROUTINES_DIRECTORY + "." + curProjectName +
// ";";
String newPackage = "package " + JavaUtils.JAVA_ROUTINES_DIRECTORY + ";"; //$NON-NLS-1$ //$NON-NLS-2$
try {
PatternCompiler compiler = new Perl5Compiler();
Perl5Matcher matcher = new Perl5Matcher();
matcher.setMultiline(true);
Pattern pattern = compiler.compile(oldPackage);
Pattern pattern = compiler.compile(packageRegex);
if (matcher.contains(routineContent, pattern)) {
// String group = matcher.getMatch().group(2);
@@ -67,7 +99,14 @@ public final class RoutineUtils {
rItem.getContent().setInnerContent(routineContent.getBytes());
ProxyRepositoryFactory repFactory = ProxyRepositoryFactory.getInstance();
repFactory.save(rItem);
if (!avoidSave) {
if (commitMode) {
repFactory.save(rItem);
} else {
// avoid deadlock in git pull event listener
new XmiResourceManager().saveResource(rItem.eResource());
}
}
// }
}
} catch (MalformedPatternException e) {

View File

@@ -205,6 +205,27 @@ public class StandaloneConnectionContextUtils {
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_ADDITIONAL_JDBC_SETTINGS,
getOriginalValue(contextProperties, additionalJDBCSettings));
String dataprocProjectId = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_PROJECT_ID);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_PROJECT_ID,
getOriginalValue(contextProperties, dataprocProjectId));
String dataprocClusterId = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_CLUSTER_ID);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_CLUSTER_ID,
getOriginalValue(contextProperties, dataprocClusterId));
String dataprocRegion = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_REGION);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_REGION,
getOriginalValue(contextProperties, dataprocRegion));
String dataprocJarsBucket = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_JARS_BUCKET);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_JARS_BUCKET,
getOriginalValue(contextProperties, dataprocJarsBucket));
String dataprocPathToCredentials = cloneConn.getParameters()
.get(ConnParameterKeys.CONN_PARA_KEY_HIVE_AUTHENTICATION_PATH_TO_GOOGLE_CREDENTIALS);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_AUTHENTICATION_PATH_TO_GOOGLE_CREDENTIALS,
getOriginalValue(contextProperties, dataprocPathToCredentials));
String hiveEnableHa = cloneConn.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_ENABLE_HA);
cloneConn.getParameters().put(ConnParameterKeys.CONN_PARA_KEY_HIVE_ENABLE_HA,
getOriginalValue(contextProperties, hiveEnableHa));

View File

@@ -70,6 +70,7 @@ import org.talend.core.model.properties.TDQItem;
import org.talend.core.model.properties.ValidationRulesConnectionItem;
import org.talend.core.model.properties.helper.ByteArrayResource;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.repository.constants.FileConstants;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.repository.utils.ResourceFilenameHelper.FileName;
@@ -209,7 +210,7 @@ public class XmiResourceManager {
* @return
* @throws PersistenceException
*/
private IPath getFolderPath(IProject project, ERepositoryObjectType repositoryObjectType, IPath relativePath)
private IPath getFolderPath(IProject project, ERepositoryObjectType repositoryObjectType, IPath relativePath, Item item)
throws PersistenceException {
ERepositoryObjectType type = repositoryObjectType;
if (ERepositoryObjectType.TDQ_SYSTEM_INDICATORS.equals(repositoryObjectType)
@@ -218,6 +219,10 @@ public class XmiResourceManager {
} else if (ERepositoryObjectType.TDQ_PATTERN_REGEX.equals(repositoryObjectType)
|| ERepositoryObjectType.TDQ_PATTERN_SQL.equals(repositoryObjectType)) {
type = ERepositoryObjectType.TDQ_PATTERN_ELEMENT;
} else if (type == ERepositoryObjectType.ROUTINES && RoutinesUtil.isInnerCodes(item.getProperty())) {
type = ERepositoryObjectType.ROUTINESJAR;
} else if (type == ERepositoryObjectType.BEANS && RoutinesUtil.isInnerCodes(item.getProperty())) {
type = ERepositoryObjectType.BEANSJAR;
}
IFolder folder = project.getFolder(ERepositoryObjectType.getFolderName(type)).getFolder(relativePath);
return folder.getFullPath();
@@ -704,7 +709,7 @@ public class XmiResourceManager {
// MOD mzhao 2010-11-22, suppport TDQ item file extensions.(.ana, .rep, etc)
private URI getItemResourceURI(IProject project, ERepositoryObjectType repositoryObjectType, IPath path, Item item)
throws PersistenceException {
IPath folderPath = getFolderPath(project, repositoryObjectType, path);
IPath folderPath = getFolderPath(project, repositoryObjectType, path, item);
FileName fileName = ResourceFilenameHelper.create(item.getProperty());
IPath resourcePath = null;
if (item.getFileExtension() == null) {
@@ -720,7 +725,7 @@ public class XmiResourceManager {
@Deprecated
private URI getItemResourceURI(IProject project, ERepositoryObjectType repositoryObjectType, IPath path, Item item,
String fileExtension) throws PersistenceException {
IPath folderPath = getFolderPath(project, repositoryObjectType, path);
IPath folderPath = getFolderPath(project, repositoryObjectType, path, item);
FileName fileName = ResourceFilenameHelper.create(item.getProperty());
IPath resourcePath = ResourceFilenameHelper
.getExpectedFilePath(fileName, folderPath, fileExtension, item.isNeedVersion());
@@ -730,7 +735,7 @@ public class XmiResourceManager {
// added by dlin 2011-7-14 to create the uri of file of .screenshot
private URI getScreenshotResourceURI(IProject project, ERepositoryObjectType repositoryObjectType, IPath path, Item item,
String... fileExtension) throws PersistenceException {
IPath folderPath = getFolderPath(project, repositoryObjectType, path);
IPath folderPath = getFolderPath(project, repositoryObjectType, path, item);
FileName fileName = ResourceFilenameHelper.create(item.getProperty());
IPath resourcePath = ResourceFilenameHelper.getExpectedFilePath(fileName, folderPath, FileConstants.SCREENSHOT_EXTENSION,
item.isNeedVersion());

View File

@@ -95,6 +95,7 @@ Export-Package: org.talend.commons.utils.generation,
org.talend.repository.documentation.generation,
org.talend.repository.model,
org.talend.repository.model.nodes,
org.talend.repository.token,
org.talend.repository.ui.actions,
org.talend.repository.ui.dialog,
org.talend.repository.ui.login.connections,

View File

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

View File

@@ -89,6 +89,10 @@ public final class JavaUtils {
/** Java Routines Directory. */
public static final String JAVA_ROUTINES_DIRECTORY = "routines"; //$NON-NLS-1$
// TODO check refrerences of JAVA_ROUTINES_DIRECTORY
/** Java Routines Jar Directory. */
public static final String JAVA_ROUTINESJAR_DIRECTORY = "routinesjar"; //$NON-NLS-1$
/** Java Pig Directory. */
public static final String JAVA_PIG_DIRECTORY = "pig"; //$NON-NLS-1$
@@ -98,6 +102,9 @@ public final class JavaUtils {
/** Java Beans Directory. */
public static final String JAVA_BEANS_DIRECTORY = "beans"; //$NON-NLS-1$
/** Java Beans Jar Directory. */
public static final String JAVA_BEANSJAR_DIRECTORY = "beansjar"; //$NON-NLS-1$
/** Java SQLTemplate Directory. */
public static final String JAVA_SQLPATTERNS_DIRECTORY = "sqltemplates"; //$NON-NLS-1$

View File

@@ -138,6 +138,10 @@ public class PluginChecker {
public static final String HELP_PLUGIN_ID = "org.talend.help"; //$NON-NLS-1$
public static final String APACHE_CXF_PLUGIN_ID = "org.talend.libraries.apache.cxf"; //$NON-NLS-1$
public static final String SWTBOT_PLUGIN_ID = "org.eclipse.swtbot.eclipse.core"; //$NON-NLS-1$
/**
* Check if specific plug-in is loaded.
*
@@ -370,6 +374,10 @@ public class PluginChecker {
return isPluginLoaded(BD_ROUTINE_PLUGIN_ID);
}
public static boolean isSWTBotLoaded() {
return isPluginLoaded(SWTBOT_PLUGIN_ID);
}
public static String getBundlePath(String bundleName) {
String bundlePath = ""; //$NON-NLS-1$
Bundle refBundle = Platform.getBundle(bundleName);

View File

@@ -67,8 +67,8 @@ public enum EDatabase4DriverClassName {
// if change the order, it might break the audit for PSQL.
PSQL(EDatabaseTypeName.PSQL, "org.postgresql.Driver"), //$NON-NLS-1$
PLUSPSQL(EDatabaseTypeName.PLUSPSQL, "org.postgresql.Driver"), //$NON-NLS-1$
GREENPLUM(EDatabaseTypeName.GREENPLUM, "org.postgresql.Driver"), //$NON-NLS-1$
GREENPLUM(EDatabaseTypeName.GREENPLUM, "com.pivotal.jdbc.GreenplumDriver"), //$NON-NLS-1$
GREENPLUM_PSQL(EDatabaseTypeName.GREENPLUM, "org.postgresql.Driver"), //$NON-NLS-1$
SAS(EDatabaseTypeName.SAS, "com.sas.rio.MVADriver"), //$NON-NLS-1$
SAPHana(EDatabaseTypeName.SAPHana, "com.sap.db.jdbc.Driver"), //$NON-NLS-1$
SQLITE(EDatabaseTypeName.SQLITE, "org.sqlite.JDBC"), //$NON-NLS-1$

View File

@@ -114,7 +114,10 @@ public enum EDatabaseTypeName {
"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$
/**
* @deprecated
*/
SAS("SAS", "SAS (Deprecated)", 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$

View File

@@ -22,14 +22,14 @@ import org.talend.core.runtime.hd.hive.HiveMetadataHelper;
*/
public enum EImpalaDriver {
HIVE2("HIVE2", "HIVE2", "org.apache.hive.jdbc.HiveDriver"),
IMPALA40("IMPALA40", "IMPALA40", "com.cloudera.impala.jdbc4.Driver"),
IMPALA41("IMPALA41", "IMPALA41", "com.cloudera.impala.jdbc41.Driver");
HIVE2("HIVE2", "HIVE2", "org.apache.hive.jdbc.HiveDriver", "doSupportHive2"),
IMPALA("IMPALA", "IMPALA", "com.cloudera.impala.jdbc.Driver", "doSupportImpalaConnector");
EImpalaDriver(String displayName, String name, String driver) {
EImpalaDriver(String displayName, String name, String driver, String supportDriverMethodName) {
this.displayName = displayName;
this.name = name;
this.driver = driver;
this.supportDriverMethodName = supportDriverMethodName;
}
private String displayName;
@@ -38,6 +38,8 @@ public enum EImpalaDriver {
private String driver;
private String supportDriverMethodName;
public String getDisplayName() {
return displayName;
}
@@ -50,6 +52,10 @@ public enum EImpalaDriver {
return driver;
}
public String getSupportDriverMethodName() {
return supportDriverMethodName;
}
public static boolean isSupport(String distribution, String version, boolean byDisplay, String supportMethodName) {
return HiveMetadataHelper.doSupportMethod(distribution, version, byDisplay, supportMethodName);
}
@@ -57,7 +63,7 @@ public enum EImpalaDriver {
public static String[] getImpalaDriverDisplay(String distribution, String version, boolean byDisplay) {
List<String> list = new ArrayList<>(0);
for (EImpalaDriver driver : EImpalaDriver.values()) {
if (isSupport(distribution, version, byDisplay, "doSupportImpalaConnector")) {
if (isSupport(distribution, version, byDisplay, driver.getSupportDriverMethodName())) {
list.add(driver.getDisplayName());
}
}

View File

@@ -163,6 +163,18 @@ public class ConnParameterKeys {
public static final String CONN_PARA_KEY_HIVE_AUTHENTICATION_MAPRTICKET_DURATION = "CONN_PARA_KEY_HIVE_AUTHENTICATION_MAPRTICKET_DURATION";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_GOOGLE_PROJECT_ID = "CONN_PARA_KEY_HIVE_GOOGLE_PROJECT_ID";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_GOOGLE_CLUSTER_ID = "CONN_PARA_KEY_HIVE_GOOGLE_CLUSTER_ID";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_GOOGLE_REGION = "CONN_PARA_KEY_HIVE_GOOGLE_REGION";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_GOOGLE_JARS_BUCKET = "CONN_PARA_KEY_HIVE_GOOGLE_JARS_BUCKET";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_AUTHENTICATION_DEFINE_PATH_TO_GOOGLE_CREDENTIALS = "CONN_PARA_KEY_HIVE_AUTHENTICATION_DEFINE_PATH_TO_GOOGLE_CREDENTIALS";//$NON-NLS-1$
public static final String CONN_PARA_KEY_HIVE_AUTHENTICATION_PATH_TO_GOOGLE_CREDENTIALS = "CONN_PARA_KEY_HIVE_AUTHENTICATION_PATH_TO_GOOGLE_CREDENTIALS";//$NON-NLS-1$
/**
* The key is for metastore server.
*/

View File

@@ -114,6 +114,13 @@ public class DatabaseConnStrUtil {
&& EDatabaseVersion4Drivers.SYBASEIQ_16_SA.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.SYBASEASE_16_SA;
}
if (EDatabaseTypeName.GREENPLUM.getDisplayName().equals(dbType)) {
if (EDatabaseVersion4Drivers.GREENPLUM.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.GREENPLUM;
}else if(EDatabaseVersion4Drivers.GREENPLUM_PSQL.getVersionValue().equals(dbVersion)) {
connStr = EDatabaseConnTemplate.GREENPLUM_PSQL;
}
}
EDatabaseVersion4Drivers version = EDatabaseVersion4Drivers.indexOfByVersion(dbVersion);
if (connStr != null) {
String s = connStr.getUrlTemplate(version);
@@ -221,8 +228,10 @@ public class DatabaseConnStrUtil {
.get(ConnParameterKeys.IMPALA_AUTHENTICATION_PRINCIPLA));
}
String url = null;
if (template.startsWith(DbConnStrForHive.URL_HIVE_2_TEMPLATE)) {
url = getImpalaURLString(false, server, port, sidOrDatabase, impalaPrincipal);
String driver = dbConn.getParameters().get(ConnParameterKeys.IMPALA_DRIVER);
if (template.startsWith(DbConnStrForHive.URL_HIVE_2_TEMPLATE)
|| template.startsWith(DbConnStrForHive.URL_IMPALA_TEMPLATE)) {
url = getImpalaURLString(false, server, port, sidOrDatabase, impalaPrincipal, driver);
}
url = attachAdditionalHiveParameters(url, dbConn, false);
return url;
@@ -369,9 +378,13 @@ public class DatabaseConnStrUtil {
return s;
}
private static String getImpalaURLString(boolean supportContext, String server, String port, String sid, String Principal) {
String s = EDatabaseConnTemplate.IMPALA.getUrlTemplate(null);
String standardURlString = getImpalaURlString(s, supportContext, server, port, sid);
private static String getImpalaURLString(boolean supportContext, String server, String port, String sid, String Principal,
String driver) {
String template = EDatabaseConnTemplate.IMPALA.getUrlTemplate(null);
if (EDatabaseTypeName.IMPALA.getDbType().equals(driver)) {
template = EDatabaseConnTemplate.IMPALA_IMPALA_DRIVER.getUrlTemplate(null);
}
String standardURlString = getImpalaURlString(template, supportContext, server, port, sid);
String principalSuffix = "principal="; //$NON-NLS-1$
boolean hasPrinc = false;
String[] urlArray = standardURlString.split(SEMICOLON);

View File

@@ -30,6 +30,8 @@ public class DbConnStrForHive extends DbConnStr {
public static final String URL_HIVE_2_TEMPLATE = "jdbc:hive2://";//$NON-NLS-1$
public static final String URL_IMPALA_TEMPLATE = "jdbc:impala://";//$NON-NLS-1$
/**
* DOC Marvin DbConnStrForHive constructor comment.
*

View File

@@ -54,6 +54,11 @@ public enum EDatabaseConnTemplate {
"5432")), //$NON-NLS-1$
GREENPLUM(new DbConnStr(EDatabaseTypeName.GREENPLUM, //
"jdbc:pivotal:greenplum://<host>:<port>;;DatabaseName=<sid>;<property>", //$NON-NLS-1$
"5432")), //$NON-NLS-1$
GREENPLUM_PSQL(new DbConnStr(EDatabaseTypeName.GREENPLUM, //
"jdbc:postgresql://<host>:<port>/<sid>?<property>", //$NON-NLS-1$
"5432")), //$NON-NLS-1$
@@ -209,6 +214,9 @@ public enum EDatabaseConnTemplate {
IMPALA(new DbConnStr(EDatabaseTypeName.IMPALA, "jdbc:hive2://<host>:<port>/<sid>;auth=noSasl", //$NON-NLS-1$
"21050", null, null, "localhost", "default")), //$NON-NLS-1$
IMPALA_IMPALA_DRIVER(new DbConnStr(EDatabaseTypeName.IMPALA, "jdbc:impala://<host>:<port>/<sid>;auth=noSasl", //$NON-NLS-1$
"21050", null, null, "localhost", "default")), //$NON-NLS-1$
HBASE(new DbConnStr(EDatabaseTypeName.HBASE, "127.0.0.1", //$NON-NLS-1$
"2181")), //$NON-NLS-1$

View File

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

View File

@@ -20,6 +20,8 @@ package org.talend.core.hadoop;
public class HadoopConstants {
public static final String SPARK_LOCAL_MODE = "SPARK_LOCAL_MODE";
public static final String SPARK_LOCAL_VERSION = "SPARK_LOCAL_VERSION";
public static final String SPARK_MODE = "SPARK_MODE";

View File

@@ -28,6 +28,7 @@ import org.talend.core.model.process.INode;
import org.talend.core.model.process.IProcess;
import org.talend.core.model.process.Problem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.designer.codegen.PigTemplate;
/**
@@ -117,6 +118,10 @@ public interface ILibrariesService extends IService {
Set<ModuleNeeded> getCodesModuleNeededs(ERepositoryObjectType type);
Set<ModuleNeeded> getAllCodesJarModuleNeededs();
Set<ModuleNeeded> getCodesJarModuleNeededs(CodesJarInfo info);
List<ModuleNeeded> getModuleNeeded(String id, boolean isGroup);
public void deployProjectLibrary(File source) throws IOException;

View File

@@ -125,6 +125,10 @@ public interface IMetadataColumn {
public void setCustom(boolean custom);
public boolean isIgnoreCustomSort();
public void setIgnoreCustomSort(boolean ignoreCustomSort);
public void setCustomId(int customId); // only for custom columns to sort them
public int getCustomId(); // only for custom columns to sort them

View File

@@ -53,6 +53,8 @@ public class MetadataColumn implements IMetadataColumn, Cloneable {
private boolean custom = false;
private boolean ignoreCustomSort = false;
private boolean readOnly = false;
private int customId = 0;
@@ -574,6 +576,24 @@ public class MetadataColumn implements IMetadataColumn, Cloneable {
this.custom = custom;
}
/**
* Getter for ignoreCustomSort.
*
* @return the ignoreCustomSort
*/
public boolean isIgnoreCustomSort() {
return ignoreCustomSort;
}
/**
* Sets the ignoreCustomSort.
*
* @param ignoreCustomSort the ignoreCustomSort to set
*/
public void setIgnoreCustomSort(boolean ignoreCustomSort) {
this.ignoreCustomSort = ignoreCustomSort;
}
/**
* Getter for readOnly.
*

View File

@@ -360,7 +360,7 @@ public class MetadataTable implements IMetadataTable, Cloneable {
for (int i = 0; i < listColumns.size(); i++) {
IMetadataColumn column = listColumns.get(i);
if (column.isCustom()) {
if (column.isCustom() && !column.isIgnoreCustomSort()) {
customColumns.add(column);
}
}

View File

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

View File

@@ -25,8 +25,10 @@ import org.apache.avro.SchemaBuilder.FieldAssembler;
import org.apache.avro.SchemaBuilder.FieldBuilder;
import org.apache.avro.SchemaBuilder.PropBuilder;
import org.apache.avro.SchemaBuilder.RecordBuilder;
import org.apache.avro.SchemaParseException;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.EList;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.GlobalServiceRegister;
@@ -49,6 +51,11 @@ import orgomg.cwm.objectmodel.core.TaggedValue;
*/
public final class MetadataToolAvroHelper {
private static Logger LOGGER = Logger.getLogger(MetadataToolAvroHelper.class);
private static final String COLUMN = "Column";
private static final String TALEND_DB_COLUMN_NAME = "talend.field.dbColumnName";
/**
* @return An Avro schema with enriched properties from the incoming metadata table.
*/
@@ -65,7 +72,7 @@ public final class MetadataToolAvroHelper {
dynamicPosition = i;
dynColumn = column;
} else {
fa = convertToAvro(fa, column);
fa = convertToAvro(fa, column, i);
}
i++;
}
@@ -136,7 +143,7 @@ public final class MetadataToolAvroHelper {
* Build a field into a schema using enriched properties from the incoming column.
*/
private static FieldAssembler<Schema> convertToAvro(FieldAssembler<Schema> fa,
org.talend.core.model.metadata.builder.connection.MetadataColumn in) {
org.talend.core.model.metadata.builder.connection.MetadataColumn in, int i) {
ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class);
String label = in.getLabel();
if (label != null && coreService != null) {
@@ -236,7 +243,27 @@ public final class MetadataToolAvroHelper {
}
type = in.isNullable() ? AvroUtils.wrapAsNullable(type) : type;
return defaultValue == null ? fb.type(type).noDefault() : fb.type(type).withDefault(defaultValue);
FieldAssembler<Schema> returnResult = null;
try {
if (defaultValue == null) {
returnResult = fb.type(type).noDefault();
} else {
returnResult = fb.type(type).withDefault(defaultValue);
}
} catch (SchemaParseException e) {
// if validation not pass from avro ,then generate a new name like Column0 to pass the validation, but
// actually the display name of schema and the column name is using TALEND_DB_COLUMN_NAME
String genColumn = COLUMN + i;
FieldBuilder<Schema> fbNew = fa.name(genColumn);
copyColumnProperties(fbNew, in);
if (defaultValue == null) {
returnResult = fbNew.type(type).noDefault();
} else {
returnResult = fbNew.type(type).withDefault(defaultValue);
}
LOGGER.info(e.getMessage() + ", use " + genColumn + " instead");
}
return returnResult;
}
private static Schema getLogicalTypeSchema(org.talend.core.model.metadata.builder.connection.MetadataColumn column) {
@@ -451,19 +478,16 @@ public final class MetadataToolAvroHelper {
table.setTableType(prop);
}
// Add the columns.
List<org.talend.core.model.metadata.builder.connection.MetadataColumn> columns = new ArrayList<>(in.getFields().size());
for (Schema.Field f : in.getFields()) {
columns.add(convertFromAvro(f, table));
table.getColumns().add(convertFromAvro(f, table));
}
boolean isDynamic = AvroUtils.isIncludeAllFields(in);
if (isDynamic) {
org.talend.core.model.metadata.builder.connection.MetadataColumn col = convertFromAvroForDynamic(in);
// get dynamic position
int dynPosition = Integer.valueOf(in.getProp(DiSchemaConstants.TALEND6_DYNAMIC_COLUMN_POSITION));
columns.add(dynPosition, col);
table.getColumns().add(dynPosition, col);
}
table.getColumns().addAll(columns);
return table;
}
@@ -574,7 +598,12 @@ public final class MetadataToolAvroHelper {
// Set the defaults values to the name (the only information guaranteed to be available in every field).
col.setId(field.name());
col.setLabel(field.name());
String dbColumnlable = null;
if (MetadataToolHelper.isAllowSpecificCharacters() && null != (dbColumnlable = field.getProp(TALEND_DB_COLUMN_NAME))) {
col.setLabel(dbColumnlable);
} else {
col.setLabel(field.name());
}
col.setName(field.name());
Schema nonnullable = AvroUtils.unwrapIfNullable(in);
LogicalType logicalType = LogicalTypes.fromSchemaIgnoreInvalid(nonnullable);

View File

@@ -280,7 +280,7 @@ public final class MetadataToolHelper {
return isAllowSpecificCharacters() || Pattern.matches(RepositoryConstants.COLUMN_NAME_PATTERN, name);
}
private static boolean isAllowSpecificCharacters() {
public static boolean isAllowSpecificCharacters() {
IEclipsePreferences coreUIPluginNode = new InstanceScope().getNode(ITalendCorePrefConstants.CoreUIPlugin_ID);
return coreUIPluginNode
.getBoolean(IRepositoryPrefConstants.ALLOW_SPECIFIC_CHARACTERS_FOR_SCHEMA_COLUMNS, false);
@@ -614,6 +614,7 @@ public final class MetadataToolHelper {
target.getListColumns().remove(targetColumn);
newTargetColumn.setCustom(targetColumn.isCustom());
newTargetColumn.setCustomId(targetColumn.getCustomId());
newTargetColumn.setIgnoreCustomSort(targetColumn.isIgnoreCustomSort());
columnsTAdd.add(newTargetColumn);
}
}
@@ -773,6 +774,7 @@ public final class MetadataToolHelper {
target.getListColumns().remove(targetColumn);
newTargetColumn.setCustom(targetColumn.isCustom());
newTargetColumn.setCustomId(targetColumn.getCustomId());
newTargetColumn.setIgnoreCustomSort(targetColumn.isIgnoreCustomSort());
columnsTAdd.add(newTargetColumn);
}
}

View File

@@ -1071,7 +1071,10 @@ public class RepositoryToComponentProperty {
return dbVersionString;
} else if (EDatabaseTypeName.SYBASEASE.getDisplayName().equals(databaseType)) {
return dbVersionString;
} else {
} else if (EDatabaseTypeName.GREENPLUM.getDisplayName().equals(databaseType)) {
return dbVersionString;
}else {
String driverValue = EDatabaseVersion4Drivers.getDriversStr(databaseType, dbVersionString);
if (EDatabaseConnTemplate.ORACLE_OCI.getDBDisplayName().equals(databaseType)
|| EDatabaseConnTemplate.ORACLE_CUSTOM.getDBDisplayName().equals(databaseType)
@@ -1769,6 +1772,38 @@ public class RepositoryToComponentProperty {
if ("IMPALA_DRIVER".equals(value)) {
return connection.getParameters().get(ConnParameterKeys.IMPALA_DRIVER);
}
if (value.equals("GOOGLE_PROJECT_ID")) {
String projectId = connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_PROJECT_ID);
return getAppropriateValue(connection, projectId);
}
if (value.equals("GOOGLE_CLUSTER_ID")) {
String clusterId = connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_CLUSTER_ID);
return getAppropriateValue(connection, clusterId);
}
if (value.equals("GOOGLE_REGION")) {
String region = connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_REGION);
return getAppropriateValue(connection, region);
}
if (value.equals("GOOGLE_JARS_BUCKET")) {
String jarsBucket = connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_HIVE_GOOGLE_JARS_BUCKET);
return getAppropriateValue(connection, jarsBucket);
}
if (value.equals("DEFINE_PATH_TO_GOOGLE_CREDENTIALS")) {
String usePathToCredentials = connection.getParameters()
.get(ConnParameterKeys.CONN_PARA_KEY_HIVE_AUTHENTICATION_DEFINE_PATH_TO_GOOGLE_CREDENTIALS);
return Boolean.parseBoolean(usePathToCredentials);
}
if (value.equals("PATH_TO_GOOGLE_CREDENTIALS")) {
String pathToCredentials = connection.getParameters()
.get(ConnParameterKeys.CONN_PARA_KEY_HIVE_AUTHENTICATION_PATH_TO_GOOGLE_CREDENTIALS);
return getAppropriateValue(connection, pathToCredentials);
}
return null;
}

View File

@@ -146,7 +146,7 @@ public abstract class AbstractItemMigrationTask extends AbstractMigrationTask im
* this returns all type handled by this migration task even the extended type that could benefit from this
* migrations
* */
List<ERepositoryObjectType> getAllTypes() {
protected List<ERepositoryObjectType> getAllTypes() {
List<ERepositoryObjectType> declaredTypes = getTypes();
ArrayList<ERepositoryObjectType> allTypes = new ArrayList<ERepositoryObjectType>(declaredTypes.size());
allTypes.addAll(declaredTypes);

View File

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

View File

@@ -232,4 +232,6 @@ public interface IElementParameter {
public boolean isSerialized();
public void setSerialized(boolean isSerialized);
public boolean isSelectedFromItemValue();
}

View File

@@ -131,4 +131,6 @@ public interface IProcess extends IElement {
public void checkStartNodes();
public String getComponentsType();
public INode getNodeByUniqueName(String uniqueName);
}

View File

@@ -21,6 +21,7 @@ import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.common.util.EList;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.utils.VersionUtils;
@@ -53,6 +54,7 @@ import org.talend.core.utils.BitwiseOptionUtils;
import org.talend.designer.core.IDesignerCoreService;
import org.talend.designer.core.model.utils.emf.talendfile.ContextParameterType;
import org.talend.designer.core.model.utils.emf.talendfile.ContextType;
import org.talend.designer.core.model.utils.emf.talendfile.ElementParameterType;
import org.talend.designer.core.model.utils.emf.talendfile.MetadataType;
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
@@ -1004,7 +1006,7 @@ public final class ProcessUtils {
}
return false;
}
public static boolean isChildRouteProcess(IProcess process) {
if (process != null) {
for (INode node : process.getGraphicalNodes()) {
@@ -1021,4 +1023,32 @@ public final class ProcessUtils {
return StringEscapeUtils.escapeJava(input);
}
public static boolean hasJettyEndpoint(ProcessType process) {
EList<NodeType> nodesList = process.getNode();
boolean hasJettyEndpoint = hasJettyEndpoint(nodesList);
return hasJettyEndpoint;
}
private static boolean hasJettyEndpoint(EList<NodeType> nodesList) {
for (NodeType node : nodesList) {
if ("cMessagingEndpoint".equals(node.getComponentName())) {
for (Object elementParameter : node.getElementParameter()) {
ElementParameterType elementParameterType = (ElementParameterType)elementParameter;
String name = elementParameterType.getName();
String value = elementParameterType.getValue();
if ("URI".equals(name) && (value != null && StringUtils.startsWith(value.trim(), "\"jetty:"))) {
return true;
}
}
}
}
return false;
}
}

View File

@@ -51,7 +51,6 @@ import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IProxyRepositoryFactory;
import org.talend.repository.model.IRepositoryNode;
/**
* This class store all relationships between jobs/joblets and other items from the repository. Be sure to update the
@@ -102,6 +101,10 @@ public class RelationshipItemBuilder {
public static final String ROUTINE_RELATION = "routine"; //$NON-NLS-1$
public static final String ROUTINES_JAR_RELATION = "routinesJar"; //$NON-NLS-1$
public static final String BEANS_JAR_RELATION = "beansJar"; //$NON-NLS-1$
public static final String MAPPER_RELATION = "mapper"; //$NON-NLS-1$
public static final String SURVIVOR_RELATION = "survivorshipRuleRelation"; //$NON-NLS-1$

View File

@@ -61,6 +61,7 @@ import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RegExFileConnectionItem;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.properties.RoutinesJarItem;
import org.talend.core.model.properties.RulesItem;
import org.talend.core.model.properties.SAPConnectionItem;
import org.talend.core.model.properties.SQLPatternItem;
@@ -443,8 +444,19 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
public final static ERepositoryObjectType ROUTINES = ERepositoryObjectType.valueOf("ROUTINES"); //$NON-NLS-1$
public final static ERepositoryObjectType ROUTINESJAR = ERepositoryObjectType.valueOf("ROUTINESJAR"); //$NON-NLS-1$
/**
* <font color="red">This value may be <b>null</b> in some licenses, <b>should add NPE check</b></font>
*/
public final static ERepositoryObjectType BEANS = ERepositoryObjectType.valueOf("BEANS"); //$NON-NLS-1$
/**
* <font color="red">This value may be <b>null</b> in some licenses, <b>should add NPE check</b></font>
*/
// TODO need and register it in extension or not?
public final static ERepositoryObjectType BEANSJAR = ERepositoryObjectType.valueOf("BEANSJAR"); //$NON-NLS-1$
public final static ERepositoryObjectType METADATA_HEADER_FOOTER = ERepositoryObjectType.valueOf("METADATA_HEADER_FOOTER"); //$NON-NLS-1$
public final static ERepositoryObjectType JOB_SCRIPT = ERepositoryObjectType.valueOf("JOB_SCRIPT"); //$NON-NLS-1$
@@ -936,7 +948,7 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
* @return
*/
public static ERepositoryObjectType getItemType(Item item) {
// FIXME update all inner codes related callers
ERepositoryObjectType repObjType = getTDQRepObjType(item);
if (repObjType != null) {
return repObjType;
@@ -1003,6 +1015,11 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
// return BEANS;
// }
@Override
public Object caseRoutinesJarItem(RoutinesJarItem object) {
return ROUTINESJAR;
}
@Override
public Object caseJobScriptItem(JobScriptItem object) {
return JOB_SCRIPT;
@@ -1505,11 +1522,66 @@ public class ERepositoryObjectType extends DynaEnum<ERepositoryObjectType> {
if (ERepositoryObjectType.ROUTINES != null) {
allTypes.add(ERepositoryObjectType.ROUTINES);
}
ERepositoryObjectType beansType = ERepositoryObjectType.valueOf("BEANS"); //$NON-NLS-1$
if (beansType != null) {
allTypes.add(beansType);
if (ERepositoryObjectType.BEANS != null) {
allTypes.add(ERepositoryObjectType.BEANS);
}
return allTypes;
}
public static List<ERepositoryObjectType> getAllTypesOfCodesJar() {
List<ERepositoryObjectType> allTypes = new ArrayList<ERepositoryObjectType>();
if (ERepositoryObjectType.ROUTINESJAR != null) {
allTypes.add(ERepositoryObjectType.ROUTINESJAR);
}
if (ERepositoryObjectType.BEANSJAR != null) {
allTypes.add(ERepositoryObjectType.BEANSJAR);
}
return allTypes;
}
public enum CodeTypeEnum {
Routines("ROUTINESJAR", "ROUTINES"),
Beans("BEANSJAR", "BEANS");
private String codeJarType;
private String codeType;
private CodeTypeEnum(String codeJarType, String codeType) {
this.codeJarType = codeJarType;
this.codeType = codeType;
}
public static boolean isCodeRepositoryObjectTypeMatch(ERepositoryObjectType jarType, ERepositoryObjectType codeType) {
if (jarType == null || codeType == null) {
return false;
}
for (CodeTypeEnum cType : CodeTypeEnum.values()) {
if (cType.getCodeJarType().equals(jarType.getType())) {
return cType.getCodeType().equals(codeType.getType());
}
}
return false;
}
/**
* Getter for codeJarType.
*
* @return the codeJarType
*/
public String getCodeJarType() {
return codeJarType;
}
/**
* Getter for codeType.
*
* @return the codeType
*/
public String getCodeType() {
return codeType;
}
}
}

View File

@@ -0,0 +1,169 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.model.routines;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.core.runtime.Assert;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutinesJarItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.runtime.repository.item.ItemProductKeys;
import org.talend.cwm.helper.ResourceHelper;
import org.talend.designer.core.model.utils.emf.component.IMPORTType;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IProxyRepositoryService;
/**
* Could get most of codesjar's attribute in EMF model but some are lost when model is unloaded. Store those attributes
* in this bean.
*/
public class CodesJarInfo {
private static final String EMPTY_DATE;
private String projectTechName;
private String id;
private String label;
private String version;
private ERepositoryObjectType type;
private List<IMPORTType> imports;
private String modifiedDate;
static {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(0);
EMPTY_DATE = ResourceHelper.dateFormat().format(c.getTime());
}
private CodesJarInfo() {
imports = new ArrayList<>();
}
public static CodesJarInfo create(Property property) {
Assert.isTrue(property.getItem() instanceof RoutinesJarItem);
CodesJarInfo info = new CodesJarInfo();
info.projectTechName = ProjectManager.getInstance().getProject(property).getTechnicalLabel();
info.id = property.getId();
info.label = property.getLabel();
info.version = property.getVersion();
info.type = ERepositoryObjectType.getItemType(property.getItem());
if (((RoutinesJarItem) property.getItem()).getRoutinesJarType() != null) {
info.imports.addAll(((RoutinesJarItem) property.getItem()).getRoutinesJarType().getImports());
}
String modifiedDate = (String) property.getAdditionalProperties().get(ItemProductKeys.DATE.getModifiedKey());
info.modifiedDate = StringUtils.isNotBlank(modifiedDate) ? modifiedDate : EMPTY_DATE;
return info;
}
public Property getProperty() {
try {
IRepositoryViewObject obj = IProxyRepositoryService.get().getProxyRepositoryFactory().getLastVersion(id);
if (obj != null) {
return obj.getProperty();
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
return null;
}
public String getProjectTechName() {
return projectTechName;
}
public String getId() {
return id;
}
public String getLabel() {
return label;
}
public String getVersion() {
return version;
}
public ERepositoryObjectType getType() {
return type;
}
public List<IMPORTType> getImports() {
return imports;
}
public String getModifiedDate() {
return modifiedDate;
}
public boolean isInCurrentMainProject() {
return projectTechName.equals(ProjectManager.getInstance().getCurrentProject().getTechnicalLabel());
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((label == null) ? 0 : label.hashCode());
result = prime * result + ((type == null) ? 0 : type.hashCode());
result = prime * result + ((version == null) ? 0 : version.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CodesJarInfo other = (CodesJarInfo) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (label == null) {
if (other.label != null)
return false;
} else if (!label.equals(other.label))
return false;
if (type == null) {
if (other.type != null)
return false;
} else if (!type.equals(other.type))
return false;
if (version == null) {
if (other.version != null)
return false;
} else if (!version.equals(other.version))
return false;
return true;
}
}

View File

@@ -12,11 +12,9 @@
// ============================================================================
package org.talend.core.model.routines;
import java.util.Set;
import java.util.Vector;
import org.talend.core.IService;
import org.talend.core.model.general.ModuleNeeded;
/**
*
@@ -26,5 +24,4 @@ public interface IRoutinesService extends IService {
public Vector getAccents();
Set<ModuleNeeded> getRunningModules();
}

View File

@@ -120,8 +120,12 @@ public class RoutineLibraryMananger {
initialized = true;
}
}
public boolean needDeploy(URL fileUrl) throws IOException, Exception{
return needDeploy(fileUrl, null);
}
public boolean needDeploy(URL fileUrl) throws IOException, Exception {
public boolean needDeploy(URL fileUrl, String mvnUrl) throws IOException, Exception {
File file = new File(fileUrl.getFile());
ILibraryManagerService libManagerService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(ILibraryManagerService.class)) {
@@ -129,19 +133,21 @@ public class RoutineLibraryMananger {
.getService(ILibraryManagerService.class);
}
if (libManagerService != null) {
Map<String, String> sourceAndMavenUri = new HashMap<>();
libManagerService.guessMavenRUIFromIndex(file, sourceAndMavenUri);
String mavUri = null;
boolean isSnapshot = false;
for (String key : sourceAndMavenUri.keySet()) {
if (sourceAndMavenUri.get(key).equals(file.getPath())) {
mavUri = key;
break;
String mavUri = mvnUrl;
if (StringUtils.isBlank(mvnUrl)) {
Map<String, String> sourceAndMavenUri = new HashMap<>();
libManagerService.guessMavenRUIFromIndex(file, sourceAndMavenUri);
for (String key : sourceAndMavenUri.keySet()) {
if (sourceAndMavenUri.get(key).equals(file.getPath())) {
mavUri = key;
break;
}
}
if (mavUri == null) {
return true;
}
}
if (mavUri == null) {
return true;
}
boolean isSnapshot = false;
final MavenArtifact parseMvnUrl = MavenUrlHelper.parseMvnUrl(mavUri);
if (parseMvnUrl != null) {
if (parseMvnUrl.getVersion() != null && parseMvnUrl.getVersion().endsWith(MavenConstants.SNAPSHOT)) {

View File

@@ -13,6 +13,7 @@
package org.talend.core.model.routines;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -20,12 +21,16 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.exception.SystemException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.general.Project;
import org.talend.core.model.process.JobInfo;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.JobletProcessItem;
import org.talend.core.model.properties.ProcessItem;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
@@ -204,6 +209,7 @@ public final class RoutinesUtil {
}
private static RoutinesParameterType createItemInforType(RoutineItem routineItem) {
// no need to update
Property property = routineItem.getProperty();
RoutinesParameterType itemRecordType = TalendFileFactory.eINSTANCE.createRoutinesParameterType();
@@ -353,4 +359,54 @@ public final class RoutinesUtil {
}
}
}
@SuppressWarnings("unchecked")
public static void setInnerCodes(Property property, ERepositoryObjectType type) {
if (type == null) {
property.getAdditionalProperties().removeKey("JAR_TYPE");
} else {
property.getAdditionalProperties().put("JAR_TYPE", type.name()); //$NON-NLS-1$
}
}
public static ERepositoryObjectType getInnerCodeType(Property property) {
Object type = property.getAdditionalProperties().get("JAR_TYPE"); //$NON-NLS-1$
if (type != null) {
return ERepositoryObjectType.getAllTypesOfCodesJar().stream().filter(t -> t.name().equals(type)).findFirst().get();
}
return null;
}
public static boolean isInnerCodes(Property property) {
Object isInnerCodes = property.getAdditionalProperties().get("JAR_TYPE"); //$NON-NLS-1$
return isInnerCodes != null;
}
public static String getCodesJarLabelByInnerCode(Item innerCodeItem) {
return new Path(innerCodeItem.getState().getPath()).segment(0);
}
public static List<RoutinesParameterType> getRoutinesParametersFromJobInfo(JobInfo info) {
Item item = null;
if (info.getJobletProperty() != null) {
item = info.getJobletProperty().getItem();
} else if (info.getProcessItem() != null) {
item = info.getProcessItem();
}
return getRoutinesParametersFromItem(item);
}
public static List<RoutinesParameterType> getRoutinesParametersFromItem(Item item) {
List<RoutinesParameterType> routinesParameters = null;
if (item == null) {
routinesParameters = Collections.emptyList();
}
if (item instanceof JobletProcessItem) {
routinesParameters = ((JobletProcessItem) item).getJobletProcess().getParameters().getRoutinesParameter();
} else if (item instanceof ProcessItem) {
routinesParameters = ((ProcessItem) item).getProcess().getParameters().getRoutinesParameter();
}
return routinesParameters;
}
}

View File

@@ -207,6 +207,10 @@ public final class ContextParameterUtils {
}
private static ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
public static ScriptEngine getScriptEngine() {
return engine;
}
public static String convertContext2Literal4AnyVar(final String code, final IContext context) {
if (code == null) {

View File

@@ -27,6 +27,9 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.components.ComponentCategory;
import org.talend.core.model.components.IComponent;
@@ -415,6 +418,52 @@ public class NodeUtil {
return conns;
}
/**
* DOC
* <p>
* The method searches for the incoming node connections of type
* on a processing path and returns the first ones only
* </p>
*
* @param node
* @param type - node type to look for
* @return
*/
public static List<? extends IConnection> getFirstIncomingLineConnectionsOfType(INode node, String type) {
if (type == null)
return new ArrayList<IConnection>();
Set<String> uniqueNamesDone = new HashSet<String>();
List<? extends IConnection> allIncomingConnections = getFirstIncomingLineConnectionsOfType(node, uniqueNamesDone, type);
return allIncomingConnections;
}
private static List<? extends IConnection> getFirstIncomingLineConnectionsOfType(INode node, Set<String> uniqueNamesDone, String type) {
List<IConnection> conns = new ArrayList<IConnection>();
List<? extends IConnection> incomingConnections = node.getIncomingConnections();
if (incomingConnections != null) {
for (int i = 0; i < incomingConnections.size(); i++) {
IConnection connection = incomingConnections.get(i);
INode nextNode = connection.getSource();
if (!uniqueNamesDone.contains(nextNode.getUniqueName())) {
uniqueNamesDone.add(nextNode.getUniqueName());
if (type.equals((String)nextNode.getElementParameter("COMPONENT_NAME").getValue())) {
conns.add(connection);
} else {
conns.addAll(getFirstIncomingLineConnectionsOfType(nextNode, uniqueNamesDone, type)); // follow this way
}
}
}
}
return conns;
}
public static INode getFirstMergeNode(INode node) {
INode mergeNode = null;
for (IConnection connection : node.getOutgoingConnections()) {
@@ -1005,6 +1054,15 @@ public class NodeUtil {
//suppose all memo fields are processed well already, no need to go though this with dangerous
if (!isMemo && !org.talend.core.model.utils.ContextParameterUtils.isDynamic(value)) {
//https://jira.talendforge.org/browse/TDI-45563
//now can't get the var real value for "out1.A" in code generation time, so need to ignore it for runtime value log
//here consider the performance, only do it for some special case
if(itemFromTable && "VALUE".equals(ep.getName())) {
if(!isValidLiteralValue(value)) {
return "\"\"";//return empty string as can't get the real runtime value
}
}
if(value.length() > 1 && value.startsWith("\"") && value.endsWith("\"")) {
if(itemFromTable && "ARGS".equals(ep.getName())) {
value = value.substring(1, value.length());
@@ -1015,7 +1073,7 @@ public class NodeUtil {
return value;
}
} else {
return "\"" + checkStringQuotationMarks(value) + "\"";
return "\"" + checkStringQuotationMarks(value) + "\"";
}
}
@@ -1027,6 +1085,17 @@ public class NodeUtil {
return value;
}
private static boolean isValidLiteralValue(String value) {
ScriptEngine se = ContextParameterUtils.getScriptEngine();
if(se==null) return true;
try {
se.eval(value);
return true;
} catch (ScriptException e) {
return false;
}
}
private static String checkStringQuotationMarks(String str) {
String result = str;
if (result.contains("\"")) {

View File

@@ -114,7 +114,7 @@ public interface ITalendCorePrefConstants {
public static final String DATA_COLLECTOR_PREVIEW = "data_collector_preview"; //$NON-NLS-1$
public static final String DATA_COLLECTOR = "data_collector"; //$NON-NLS-1$
public static final String EXCHANGE_CHECK_TIS_VERSION = "exchange_check_tis_version"; //$NON-NLS-1$
public static final String EXCHANGE_DOWNLOADED_CHECK_UPDATES = "exchange_downloaded_check_updates"; //$NON-NLS-1$

View File

@@ -30,5 +30,7 @@ public interface IHDistribution {
IHDistributionVersion getHDVersion(String v, boolean byDisplay);
boolean useCustom();
boolean isSparkLocal();
}

View File

@@ -46,6 +46,8 @@ public interface MavenConstants {
static final String EXCLUDE_DELETED_ITEMS = "EXCLUDE_DELETED_ITEMS";
static final String SKIP_FOLDERS = "SKIP_FOLDERS";
/*
* for lib
*/

View File

@@ -390,4 +390,34 @@ public class MavenUrlHelper {
}
return rVersion;
}
public static String getCoordinate(String mavenUri) {
if (!isMvnUrl(mavenUri)) {
mavenUri = generateMvnUrlForJarName(mavenUri);
}
MavenArtifact artifact = parseMvnUrl(mavenUri);
String groupId = artifact.getGroupId();
String artifactId = artifact.getArtifactId();
String type = artifact.getType();
String version = artifact.getVersion();
String classifier = artifact.getClassifier();
String separator = ":"; //$NON-NLS-1$
String coordinate = groupId + separator + artifactId;
if (StringUtils.isNotBlank(type)) {
coordinate += separator + type;
}
if (StringUtils.isNotBlank(classifier)) {
coordinate += separator + classifier;
}
if (StringUtils.isNotBlank(version)) {
if (version.endsWith("-SNAPSHOT")) {
version = version.substring(0, version.indexOf("-SNAPSHOT"));
}
coordinate += separator + version;
}
return coordinate;
}
}

View File

@@ -30,6 +30,8 @@ public interface ITalendProcessJavaProject {
IJavaProject getJavaProject();
boolean exists();
IProject getProject();
Property getPropery();

View File

@@ -28,9 +28,15 @@ public class LastGenerationInfo {
private HashMap<String, Set<ModuleNeeded>> modulesNeededPerJob;
private HashMap<String, Set<ModuleNeeded>> modulesNeededWithSubjobPerJob;
private HashMap<String, Set<String>> routinesNeededPerJob;
private HashMap<String, Set<ModuleNeeded>> modulesNeededWithSubjobPerJob;
private HashMap<String, Set<String>> routinesNeededWithSubjobPerJob;
private HashMap<String, Set<ModuleNeeded>> codesJarModulesNeededPerJob;
private HashMap<String, Set<ModuleNeeded>> codesJarModulesNeededWithSubjobPerJob;
private HashMap<String, Set<ModuleNeeded>> highPriorityModuleNeededPerJob;
@@ -38,8 +44,6 @@ public class LastGenerationInfo {
private HashMap<String, Set<ModuleNeeded>> testcaseModuleNeeded;
private HashMap<String, Set<String>> routinesNeededWithSubjobPerJob;
private HashMap<String, Set<String>> contextPerJob;
private HashMap<String, Boolean> useDynamic, useRules;
@@ -54,16 +58,18 @@ public class LastGenerationInfo {
private LastGenerationInfo() {
modulesNeededPerJob = new HashMap<String, Set<ModuleNeeded>>();
contextPerJob = new HashMap<String, Set<String>>();
modulesNeededWithSubjobPerJob = new HashMap<String, Set<ModuleNeeded>>();
contextPerJob = new HashMap<>();
modulesNeededWithSubjobPerJob = new HashMap<>();
highPriorityModuleNeededPerJob = new HashMap<>();
highPriorityModuleNeeded = new HashMap<>();
testcaseModuleNeeded = new HashMap<>();
lastGeneratedjobs = new HashSet<JobInfo>();
routinesNeededPerJob = new HashMap<String, Set<String>>();
routinesNeededWithSubjobPerJob = new HashMap<String, Set<String>>();
useDynamic = new HashMap<String, Boolean>();
useRules = new HashMap<String, Boolean>();
lastGeneratedjobs = new HashSet<>();
routinesNeededPerJob = new HashMap<>();
routinesNeededWithSubjobPerJob = new HashMap<>();
codesJarModulesNeededPerJob = new HashMap<>();
codesJarModulesNeededWithSubjobPerJob = new HashMap<>();
useDynamic = new HashMap<>();
useRules = new HashMap<>();
}
public static LastGenerationInfo getInstance() {
@@ -74,10 +80,11 @@ public class LastGenerationInfo {
}
/**
*
* @return the modulesNeededPerJob
*/
// TODO check callers to see if need to add operations for codejars
public Set<ModuleNeeded> getModulesNeededWithSubjobPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!modulesNeededWithSubjobPerJob.containsKey(key)) {
modulesNeededWithSubjobPerJob.put(key, new HashSet<ModuleNeeded>());
@@ -85,6 +92,20 @@ public class LastGenerationInfo {
return modulesNeededWithSubjobPerJob.get(key);
}
/**
* Sets the modulesNeededWithSubjobPerJob.
*
* @param modulesNeededWithSubjobPerJob the modulesNeededWithSubjobPerJob to set
*/
public void setModulesNeededWithSubjobPerJob(String jobId, String jobVersion, Set<ModuleNeeded> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
if (modulesNeeded == null) {
modulesNeededWithSubjobPerJob.put(key, null);
} else {
modulesNeededWithSubjobPerJob.put(key, new HashSet<ModuleNeeded>(modulesNeeded));
}
}
/**
*
* @return the modulesNeededPerJob
@@ -97,19 +118,6 @@ public class LastGenerationInfo {
return modulesNeededPerJob.get(key);
}
/**
* Getter for contextPerJob.
*
* @return the contextPerJob
*/
public Set<String> getContextPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!contextPerJob.containsKey(key)) {
contextPerJob.put(key, new HashSet<String>());
}
return contextPerJob.get(key);
}
/**
* Sets the modulesNeededPerJob.
*
@@ -121,17 +129,16 @@ public class LastGenerationInfo {
}
/**
* Sets the modulesNeededWithSubjobPerJob.
* Getter for contextPerJob.
*
* @param modulesNeededWithSubjobPerJob the modulesNeededWithSubjobPerJob to set
* @return the contextPerJob
*/
public void setModulesNeededWithSubjobPerJob(String jobId, String jobVersion, Set<ModuleNeeded> modulesNeeded) {
public Set<String> getContextPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (modulesNeeded == null) {
modulesNeededWithSubjobPerJob.put(key, null);
} else {
modulesNeededWithSubjobPerJob.put(key, new HashSet<ModuleNeeded>(modulesNeeded));
if (!contextPerJob.containsKey(key)) {
contextPerJob.put(key, new HashSet<String>());
}
return contextPerJob.get(key);
}
/**
@@ -241,6 +248,64 @@ public class LastGenerationInfo {
return routinesNeededPerJob.get(key);
}
/**
* Sets the routinesNeededPerJob.
*
* @param modulesNeededPerJob the modulesNeededPerJob to set
*/
public void setRoutinesNeededPerJob(String jobId, String jobVersion, Set<String> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
routinesNeededPerJob.put(key, new HashSet<String>(modulesNeeded));
}
/**
*
* @return the modulesNeededPerJob
*/
public Set<String> getRoutinesNeededWithSubjobPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!routinesNeededWithSubjobPerJob.containsKey(key)) {
routinesNeededWithSubjobPerJob.put(key, new HashSet<String>());
}
return routinesNeededWithSubjobPerJob.get(key);
}
/**
* Sets the routinesNeededPerJob.
*
* @param modulesNeededPerJob the modulesNeededPerJob to set
*/
public void setRoutinesNeededWithSubjobPerJob(String jobId, String jobVersion, Set<String> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
routinesNeededWithSubjobPerJob.put(key, new HashSet<String>(modulesNeeded));
}
public Set<ModuleNeeded> getCodesJarModulesNeededPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!codesJarModulesNeededPerJob.containsKey(key)) {
codesJarModulesNeededPerJob.put(key, new HashSet<>());
}
return codesJarModulesNeededPerJob.get(key);
}
public void setCodesJarModulesNeededPerJob(String jobId, String jobVersion, Set<ModuleNeeded> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
codesJarModulesNeededPerJob.put(key, new HashSet<>(modulesNeeded));
}
public Set<ModuleNeeded> getCodesJarModulesNeededWithSubjobPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!codesJarModulesNeededWithSubjobPerJob.containsKey(key)) {
codesJarModulesNeededWithSubjobPerJob.put(key, new HashSet<>());
}
return codesJarModulesNeededWithSubjobPerJob.get(key);
}
public void setCodesJarModulesNeededWithSubjobPerJob(String jobId, String jobVersion, Set<ModuleNeeded> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
codesJarModulesNeededWithSubjobPerJob.put(key, new HashSet<>(modulesNeeded));
}
public Set<ModuleNeeded> getHighPriorityModuleNeededPerJob(String jobId, String jobVersion) {
String key = getProcessKey(jobId, jobVersion);
if (!highPriorityModuleNeededPerJob.containsKey(key)) {
@@ -295,38 +360,6 @@ public class LastGenerationInfo {
return pureJobId + "_" + jobVersion; //$NON-NLS-1$
}
/**
* Sets the routinesNeededPerJob.
*
* @param modulesNeededPerJob the modulesNeededPerJob to set
*/
public void setRoutinesNeededPerJob(String jobId, String jobVersion, Set<String> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
routinesNeededPerJob.put(key, new HashSet<String>(modulesNeeded));
}
/**
*
* @return the modulesNeededPerJob
*/
public Set<String> getRoutinesNeededWithSubjobPerJob(String jobId, String jobVersion) {
String key = this.getProcessKey(jobId, jobVersion);
if (!routinesNeededWithSubjobPerJob.containsKey(key)) {
routinesNeededWithSubjobPerJob.put(key, new HashSet<String>());
}
return routinesNeededWithSubjobPerJob.get(key);
}
/**
* Sets the routinesNeededPerJob.
*
* @param modulesNeededPerJob the modulesNeededPerJob to set
*/
public void setRoutinesNeededWithSubjobPerJob(String jobId, String jobVersion, Set<String> modulesNeeded) {
String key = this.getProcessKey(jobId, jobVersion);
routinesNeededWithSubjobPerJob.put(key, new HashSet<String>(modulesNeeded));
}
public void clearCaches() {
clearHighPriorityModuleNeeded();
modulesNeededPerJob.clear();

View File

@@ -51,6 +51,8 @@ public interface TalendProcessArgumentConstant {
static final String ARG_NEED_XMLMAPPINGS = "NEED_XMLMAPPINGS";
static final String ARG_NEED_RULES = "NEED_RULES";
static final String ARG_NEED_JETTY_SERVER = "NEED_JETTY_SERVER";
static final String ARG_ENABLE_WATCH = "ENABLE_WATCH";

View File

@@ -74,4 +74,10 @@ public interface TalendProcessOptionConstants {
public static final int MODULES_EXCLUDE_SHADED = 1 << 5;
/**
* NOTE with this option, still won't get codesjar modules of related joblet TODO check all callers to find a way to
* include those
*/
public static final int MODULES_WITH_CODESJAR = 1 << 6;
}

View File

@@ -0,0 +1,35 @@
// ============================================================================
//
// Copyright (C) 2006-2019 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.services;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.routines.CodesJarInfo;
public interface IDesignerMavenService extends IService {
String getCodesJarPackageByInnerCode(RoutineItem innerCodeItem);
String getImportGAVPackageForCodesJar(CodesJarInfo info);
void updateCodeJarMavenProject(CodesJarInfo info, boolean needReSync) throws Exception;
public static IDesignerMavenService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMavenService.class)) {
return GlobalServiceRegister.getDefault().getService(IDesignerMavenService.class);
}
return null;
}
}

View File

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

View File

@@ -17,9 +17,11 @@ import java.nio.file.Path;
import java.util.Set;
import java.util.stream.Stream;
import org.eclipse.swt.graphics.Image;
import org.talend.core.IService;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.properties.Item;
import org.talend.core.model.repository.ERepositoryObjectType;
/**
* For documentation, see implementation in org.talend.sdk.component.studio-integration plugin
@@ -33,4 +35,6 @@ public interface ITaCoKitDependencyService extends IService {
Stream<IComponent> getJobComponents(Item item);
Path findM2Path();
Image getTaCoKitImageByRepositoryType(ERepositoryObjectType repObjType);
}

View File

@@ -22,6 +22,7 @@ import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.ui.IEditorPart;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.general.ModuleNeeded;
@@ -135,4 +136,11 @@ public interface ITestContainerProviderService extends IService {
public List<NodeType> getOriginalNodes(ProcessType process);
public static ITestContainerProviderService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(ITestContainerProviderService.class)) {
return GlobalServiceRegister.getDefault().getService(ITestContainerProviderService.class);
}
return null;
}
}

View File

@@ -0,0 +1,158 @@
package org.talend.core.utils;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.general.Project;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IProxyRepositoryFactory;
import org.talend.repository.model.IProxyRepositoryService;
public class CodesJarResourceCache {
private static final Set<CodesJarInfo> CACHE = new LinkedHashSet<>();
private static final Object LOCK = new Object();
private static boolean isListenerAdded;
private static PropertyChangeListener listener;
public static void initCodesJarCache() {
synchronized (LOCK) {
CACHE.clear();
List<Project> allProjects = new ArrayList<>();
allProjects.addAll(ProjectManager.getInstance().getAllReferencedProjects(true));
allProjects.add(ProjectManager.getInstance().getCurrentProject());
IProxyRepositoryFactory factory = IProxyRepositoryService.get().getProxyRepositoryFactory();
try {
for (Project project : allProjects) {
for (ERepositoryObjectType codesJarType : ERepositoryObjectType.getAllTypesOfCodesJar()) {
List<IRepositoryViewObject> objects = factory.getAllCodesJars(project, codesJarType);
for (IRepositoryViewObject obj : objects) {
CACHE.add(CodesJarInfo.create(obj.getProperty()));
}
}
}
addCodesJarChangeListener();
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
}
}
public static Set<CodesJarInfo> getAllCodesJars() {
synchronized (LOCK) {
return new LinkedHashSet<>(CACHE);
}
}
public static CodesJarInfo getCodesJarById(String id) {
synchronized (LOCK) {
Optional<CodesJarInfo> optional = CACHE.stream().filter(info -> info.getId().equals(id)).findFirst();
if (optional.isPresent()) {
return optional.get();
}
ExceptionHandler.process(new Exception("Codes jar id [" + id + "] is not found!")); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
}
public static CodesJarInfo getCodesJarByLabel(ERepositoryObjectType type, String projectTechName, String label) {
synchronized (LOCK) {
Optional<CodesJarInfo> optional = CACHE.stream().filter(info -> info.getType() == type
&& info.getLabel().equals(label) && info.getProjectTechName().equals(projectTechName)).findFirst();
if (optional.isPresent()) {
return optional.get();
}
ExceptionHandler.process(new Exception("Codes jar [" + label + "] is not found!")); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
}
public static CodesJarInfo getCodesJarByInnerCode(RoutineItem routineItem) throws PersistenceException {
String codesJarName = RoutinesUtil.getCodesJarLabelByInnerCode(routineItem);
String projectTechName = ProjectManager.getInstance().getProject(routineItem).getTechnicalLabel();
Optional<CodesJarInfo> optional = getAllCodesJars().stream()
.filter(info -> info.getLabel().equals(codesJarName) && info.getProjectTechName().equals(projectTechName))
.findFirst();
if (optional.isPresent()) {
return optional.get();
}
ExceptionHandler.process(new Exception("Codes jar [" + routineItem.getProperty().getLabel() + "] is not found!")); //$NON-NLS-1$ //$NON-NLS-2$
return null;
}
public static void addToCache(Property newProperty) {
synchronized (LOCK) {
Iterator<CodesJarInfo> iterator = CACHE.iterator();
while (iterator.hasNext()) {
CodesJarInfo oldInfo = iterator.next();
if (newProperty.getId().equals(oldInfo.getId()) && newProperty.getLabel().equals(oldInfo.getLabel())
&& newProperty.getVersion().equals(oldInfo.getVersion())) {
iterator.remove();
}
}
CACHE.add(CodesJarInfo.create(newProperty));
}
}
public static void updateCache(String oldId, String oldLabel, String oldVersion, Property newProperty) {
synchronized (LOCK) {
Iterator<CodesJarInfo> iterator = CACHE.iterator();
while (iterator.hasNext()) {
CodesJarInfo oldInfo = iterator.next();
if ((oldId == null || (oldId != null && oldId.equals(oldInfo.getId()))) && oldLabel.equals(oldInfo.getLabel())
&& oldVersion.equals(oldInfo.getVersion())) {
iterator.remove();
}
}
CACHE.add(CodesJarInfo.create(newProperty));
}
}
public static void removeCache(Property property) {
synchronized (LOCK) {
Iterator<CodesJarInfo> iterator = CACHE.iterator();
while (iterator.hasNext()) {
CodesJarInfo oldInfo = iterator.next();
if (oldInfo.getId().equals(property.getId()) && oldInfo.getLabel().equals(property.getLabel())
&& oldInfo.getVersion().equals(property.getVersion())) {
iterator.remove();
}
}
}
}
public static void addCodesJarChangeListener() {
if (!isListenerAdded) {
synchronized (LOCK) {
if (!isListenerAdded) {
if (listener == null) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IRunProcessService.class)) {
IRunProcessService service = GlobalServiceRegister.getDefault().getService(IRunProcessService.class);
listener = service.addCodesJarChangeListener();
isListenerAdded = true;
}
}
}
}
}
}
}

View File

@@ -20,6 +20,7 @@ import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -36,6 +37,7 @@ import org.talend.commons.utils.VersionUtils;
import org.talend.commons.utils.encoding.CharsetToolkit;
import org.talend.commons.utils.generation.JavaUtils;
import org.talend.commons.utils.resource.FileExtensions;
import org.talend.commons.utils.workbench.resources.ResourceUtils;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.general.Project;
@@ -46,14 +48,19 @@ import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.model.utils.JavaResourcesHelper;
import org.talend.core.runtime.process.ITalendProcessJavaProject;
import org.talend.core.runtime.repository.item.ItemProductKeys;
import org.talend.core.runtime.services.IDesignerMavenService;
import org.talend.core.runtime.util.ItemDateParser;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.core.utils.CodesJarResourceCache;
import org.talend.designer.core.ICamelDesignerCoreService;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IProxyRepositoryFactory;
import org.talend.repository.model.IRepositoryService;
import org.talend.repository.model.RepositoryNodeUtilities;
@@ -141,6 +148,9 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
}
protected IFile getRoutineFile(RoutineItem routineItem, String projectTechName) throws SystemException {
if (RoutinesUtil.isInnerCodes(routineItem.getProperty())) {
return getInnerCodeFile(routineItem);
}
ITalendProcessJavaProject talendProcessJavaProject = getRunProcessService()
.getTalendCodeJavaProject(ERepositoryObjectType.getItemType(routineItem), projectTechName);
if (talendProcessJavaProject == null) {
@@ -150,6 +160,24 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
return routineFolder.getFile(routineItem.getProperty().getLabel() + JavaUtils.JAVA_EXTENSION);
}
protected IFile getInnerCodeFile(RoutineItem routineItem) throws SystemException {
CodesJarInfo info = CodesJarResourceCache.getCodesJarByInnerCode(routineItem);
ITalendProcessJavaProject talendProcessJavaProject = getRunProcessService().getTalendCodesJarJavaProject(info);
if (talendProcessJavaProject == null) {
return null;
}
IFolder routineFolder = talendProcessJavaProject.getSrcSubFolder(null, getInnerCodePackage(routineItem));
return routineFolder.getFile(routineItem.getProperty().getLabel() + JavaUtils.JAVA_EXTENSION);
}
private String getInnerCodePackage(RoutineItem innerCodeItem) {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IDesignerMavenService.class)) {
IDesignerMavenService service = GlobalServiceRegister.getDefault().getService(IDesignerMavenService.class);
return service.getCodesJarPackageByInnerCode(innerCodeItem);
}
return null;
}
private IFile getProcessFile(ProcessItem item) throws SystemException {
final ITalendProcessJavaProject talendProcessJavaProject = getRunProcessService().getTalendJobJavaProject(item.getProperty());
if (talendProcessJavaProject == null) {
@@ -173,15 +201,23 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
@Override
public IFile getRoutinesFile(Item item) throws SystemException {
// from talend project
if (item instanceof RoutineItem) {
final RoutineItem routineItem = (RoutineItem) item;
final IProject project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(ProjectManager.getInstance().getProject(routineItem).getTechnicalLabel());
IFolder folder = project
.getFolder(ERepositoryObjectType.getFolderName(ERepositoryObjectType.getItemType(routineItem)));
ERepositoryObjectType type;
ERepositoryObjectType innerCodeType = RoutinesUtil.getInnerCodeType(item.getProperty());
if (innerCodeType != null) {
type = innerCodeType;
} else {
type = ERepositoryObjectType.getItemType(routineItem);
}
IFolder folder = project.getFolder(ERepositoryObjectType.getFolderName(type));
IPath ipath = RepositoryNodeUtilities.getPath(routineItem.getProperty().getId());
if (ipath == null)
if (ipath == null) {
return null;
}
final String folderPath = ipath.toString();
if (folderPath != null && !folderPath.trim().isEmpty()) {
folder = folder.getFolder(folderPath);
@@ -232,14 +268,39 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
}
}
protected void syncInnerCodeItems(boolean forceUpdate) throws SystemException {
IProxyRepositoryFactory factory = getRepositoryService().getProxyRepositoryFactory();
for (CodesJarInfo info : CodesJarResourceCache.getAllCodesJars()) {
List<IRepositoryViewObject> innerCodesObjects = factory.getAllInnerCodes(info);
for (IRepositoryViewObject codesObj : innerCodesObjects) {
RoutineItem codeItem = (RoutineItem) codesObj.getProperty().getItem();
syncRoutine(codeItem, info.getProjectTechName(), true, forceUpdate);
}
}
}
private void doSyncRoutine(RoutineItem routineItem, String projectTechName, boolean copyToTemp) throws SystemException {
try {
IFile file = getRoutineFile(routineItem, projectTechName);
if (file == null) {
return;
}
File itemFile = null;
if (routineItem.eResource() == null) {
return;
if (!RoutinesUtil.isInnerCodes(routineItem.getProperty())) {
return;
}
CodesJarInfo info = CodesJarResourceCache.getCodesJarByInnerCode(routineItem);
IFolder innerCodeFolder = ResourceUtils.getFolder(ResourceUtils.getProject(info.getProjectTechName()),
ERepositoryObjectType.getFolderName(info.getType()) + "/" + info.getLabel(), true);
IFile innerCodeFile = innerCodeFolder
.getFile(routineItem.getProperty().getLabel() + "_" + routineItem.getProperty().getVersion() + ".item");
if (innerCodeFile.exists()) {
itemFile = innerCodeFile.getLocation().toFile();
}
if (itemFile == null) {
return;
}
}
Property property = routineItem.getProperty();
Date modifiedDate = ItemDateParser.parseAdditionalDate(property, ItemProductKeys.DATE.getModifiedKey());
@@ -252,9 +313,11 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
}
if (copyToTemp) {
String uri = routineItem.eResource().getURI().trimFileExtension()
.appendFileExtension(FileExtensions.ITEM_EXTENSION).toPlatformString(false);
File itemFile = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(uri).toFile();
if (itemFile == null) {
String uri = routineItem.eResource().getURI().trimFileExtension()
.appendFileExtension(FileExtensions.ITEM_EXTENSION).toPlatformString(false);
itemFile = ResourcesPlugin.getWorkspace().getRoot().getLocation().append(uri).toFile();
}
byte[] buf = routineItem.getContent().getInnerContent();
String charset = null;
if (itemFile.exists()) {
@@ -292,8 +355,13 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
@Override
public void deleteRoutinefile(IRepositoryViewObject objToDelete) {
Item item = objToDelete.getProperty().getItem();
if (RoutinesUtil.isInnerCodes(item.getProperty())) {
deleteInnerCodeFile(item);
return;
}
try {
ITalendProcessJavaProject talendProcessJavaProject = getRunProcessService().getTalendCodeJavaProject(ERepositoryObjectType.getItemType(item));
ITalendProcessJavaProject talendProcessJavaProject = getRunProcessService()
.getTalendCodeJavaProject(ERepositoryObjectType.getItemType(item));
if (talendProcessJavaProject == null) {
return;
}
@@ -306,6 +374,15 @@ public abstract class AbstractRoutineSynchronizer implements ITalendSynchronizer
}
}
private void deleteInnerCodeFile(Item item) {
try {
IFile file = getInnerCodeFile((RoutineItem) item);
file.delete(true, null);
} catch (CoreException | SystemException e) {
ExceptionHandler.process(e);
}
}
protected boolean isRoutineUptodate(RoutineItem routineItem) {
Date refDate = getRefDate(routineItem);
if (refDate == null) {

View File

@@ -53,4 +53,8 @@ public interface ITalendSynchronizer {
void deleteRoutinefile(IRepositoryViewObject objToDelete);
void syncAllInnerCodes() throws SystemException;
void syncAllInnerCodesForLogOn() throws SystemException;
}

View File

@@ -43,6 +43,8 @@ public interface ICamelDesignerCoreService extends IService {
public boolean isInstanceofCamelBeans(Item item);
boolean isInstanceofCamelBeansJar(Item item);
/**
* Synchronized Route resource
*

View File

@@ -157,7 +157,9 @@ public interface IDesignerCoreService extends IService {
public void reloadParamFromProjectSettings(ParametersType processType, String paramName);
public Set<ModuleNeeded> getNeededLibrariesForProcess(IProcess process, boolean withChildrens);
public Set<ModuleNeeded> getNeededLibrariesForProcess(IProcess process, int options);
public Set<ModuleNeeded> getCodesJarNeededLibrariesForProcess(Item item);
public Set<ModuleNeeded> getNeededModules(INode node, boolean withChildrens);

View File

@@ -299,6 +299,8 @@ public interface IProcessor {
String[] getJVMArgs();
Set<ModuleNeeded> getNeededModules(int options);
Set<ModuleNeeded> getCodesJarModulesNeededOfJoblets();
public void updateModulesAfterSetLog4j(Collection<ModuleNeeded> modulesNeeded);
@@ -306,6 +308,8 @@ public interface IProcessor {
Set<JobInfo> getBuildFirstChildrenJobs();
Set<JobInfo> getBuildChildrenJobsAndJoblets();
/**
* used for old build job system. after maven build, can be removed.
*/

View File

@@ -12,6 +12,7 @@
// ============================================================================
package org.talend.designer.runprocess;
import java.beans.PropertyChangeListener;
import java.util.List;
import java.util.Set;
@@ -37,8 +38,8 @@ import org.talend.core.model.process.IProcess2;
import org.talend.core.model.process.JobInfo;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.RoutineItem;
import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.runtime.process.ITalendProcessJavaProject;
import org.talend.core.runtime.projectsetting.ProjectPreferenceManager;
@@ -131,7 +132,7 @@ public interface IRunProcessService extends IService {
public void updateLibraries(Set<ModuleNeeded> jobModuleList, IProcess process, Set<ModuleNeeded> alreadyRetrievedModules)
throws ProcessorException;
public void updateLibraries(RoutineItem routineItem);
public void updateLibraries(Item routineItem);
public void refreshView();
@@ -191,7 +192,7 @@ public interface IRunProcessService extends IService {
@Deprecated
public void buildJavaProject();
public void buildCodesJavaProject(IProgressMonitor monitor);
public void buildCodesJavaProject(IProgressMonitor monitor, Set<CodesJarInfo> toUpdate);
/**
* @deprecated use {@link IRunProcessService#getTalendJobJavaProject(Property)} instead
@@ -201,6 +202,7 @@ public interface IRunProcessService extends IService {
ProjectPreferenceManager getProjectPreferenceManager();
@Deprecated
Set<String> getLibJarsForBD(IProcess process);
void updateProjectPomWithTemplate();
@@ -215,8 +217,16 @@ public interface IRunProcessService extends IService {
ITalendProcessJavaProject getTalendCodeJavaProject(ERepositoryObjectType type, String projectTechName);
ITalendProcessJavaProject getTalendCodesJarJavaProject(CodesJarInfo info);
ITalendProcessJavaProject getTalendJobJavaProject(Property property);
ITalendProcessJavaProject getExistingTalendJobProject(Property property);
ITalendProcessJavaProject getExistingTalendCodesJarProject(CodesJarInfo info);
PropertyChangeListener addCodesJarChangeListener();
IFolder getCodeSrcFolder(ERepositoryObjectType type, String projectTechName);
ITalendProcessJavaProject getTempJavaProject();
@@ -255,4 +265,9 @@ public interface IRunProcessService extends IService {
return null;
}
void deleteTalendCodesJarProject(CodesJarInfo info, boolean deleteContent);
void deleteTalendCodesJarProject(ERepositoryObjectType type, String projectTechName, String codesJarName,
boolean deleteContent);
}

View File

@@ -186,7 +186,7 @@ public final class ProjectManager {
Set<String> resolvedProjectLabels, boolean force) {
if (p != null) {
String parentBranch = ProjectManager.getInstance().getMainProjectBranch(p);
if (parentBranch != null || force) {
if ((!p.isLocal() || parentBranch != null) || force) {
resolvedProjectLabels.add(p.getTechnicalLabel());
for (ProjectReference pr : new Project(p).getProjectReferenceList()) {
if (ProjectManager.validReferenceProject(p, pr)
@@ -427,6 +427,18 @@ public final class ProjectManager {
return isInMainProject(getCurrentProject(), object);
}
/**
* could get the right comparing result if resource is unloaded
*/
public boolean isResourceInCurrentMainProject(EObject object) {
org.talend.core.model.properties.Project project = getProject(object);
Project mainProject = getCurrentProject();
if (project != null && mainProject != null) {
return project.getTechnicalLabel().equals(mainProject.getEmfProject().getTechnicalLabel());
}
return false;
}
public boolean isInMainProject(Project mainProject, EObject object) {
if (object != null) {
org.talend.core.model.properties.Project project = getProject(mainProject, object);

View File

@@ -12,6 +12,8 @@
// ============================================================================
package org.talend.repository;
import java.util.Set;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.model.general.Project;
@@ -45,6 +47,8 @@ public abstract class RepositoryWorkUnit<T> {
private boolean refreshRepository = true; // added for TDI-27085
private Set<String> specifiedCommitFiles;
/**
* Usefull for some save only actions, where we're sure everything is up to date.
*/
@@ -194,6 +198,13 @@ public abstract class RepositoryWorkUnit<T> {
this.refreshRepository = refreshRepository;
}
public Set<String> getSpecifiedCommitFiles() {
return specifiedCommitFiles;
}
public void setSpecifiedCommitFiles(Set<String> specifiedCommitFiles) {
this.specifiedCommitFiles = specifiedCommitFiles;
}
/**
* Getter for avoidUpdateLocks.

View File

@@ -17,6 +17,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.IPath;
import org.talend.commons.exception.BusinessException;
import org.talend.commons.exception.LoginException;
@@ -42,6 +43,7 @@ import org.talend.core.model.repository.Folder;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.IRepositoryWorkUnitListener;
import org.talend.core.model.repository.LockInfo;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.repository.RepositoryWorkUnit;
/**
@@ -206,6 +208,8 @@ public interface IProxyRepositoryFactory {
*/
public abstract void deleteObjectLogical(IRepositoryViewObject objToDelete) throws PersistenceException, BusinessException;
// TODO need to remove codesjar and related routine node to bin, or just show codesjar node?
// if delete inner routine, show node itself only
public abstract void deleteObjectLogical(Project project, IRepositoryViewObject objToDelete) throws PersistenceException,
BusinessException;
@@ -213,6 +217,7 @@ public interface IProxyRepositoryFactory {
throws PersistenceException, BusinessException;
public abstract void deleteObjectPhysical(IRepositoryViewObject objToDelete) throws PersistenceException;
// TODO if delete codesjar item should delete all related routines
public abstract void deleteObjectPhysical(IRepositoryViewObject objToDelete, String version) throws PersistenceException;
@@ -305,6 +310,16 @@ public interface IProxyRepositoryFactory {
public abstract List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted,
boolean allVersions) throws PersistenceException;
public abstract List<IRepositoryViewObject> getAll(Project project, ERepositoryObjectType type, boolean withDeleted,
boolean allVersions, IFolder... folders) throws PersistenceException;
public abstract List<IRepositoryViewObject> getAllCodesJars(ERepositoryObjectType type) throws PersistenceException;
public abstract List<IRepositoryViewObject> getAllCodesJars(Project project, ERepositoryObjectType type)
throws PersistenceException;
public abstract List<IRepositoryViewObject> getAllInnerCodes(CodesJarInfo info) throws PersistenceException;
public abstract List<String> getFolders(ERepositoryObjectType type) throws PersistenceException;
/**

View File

@@ -12,6 +12,7 @@
// ============================================================================
package org.talend.repository.model;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
/**
@@ -20,4 +21,11 @@ import org.talend.core.IService;
public interface IProxyRepositoryService extends IService {
public IProxyRepositoryFactory getProxyRepositoryFactory();
public static IProxyRepositoryService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IProxyRepositoryService.class)) {
return GlobalServiceRegister.getDefault().getService(IProxyRepositoryService.class);
}
return null;
}
}

View File

@@ -128,7 +128,8 @@ public class RepositoryConstants {
|| type == ERepositoryObjectType.JOB_SCRIPT) {
return CODE_ITEM_PATTERN;
} else if (type == ERepositoryObjectType.ROUTINES
|| "BEANS".equals(type.getType())) {
|| "BEANS".equals(type.getType()) || type == ERepositoryObjectType.ROUTINESJAR
|| (type != null && type == ERepositoryObjectType.BEANSJAR)) {
// for bug 10356
return ROUTINES_ITEM_PATTERN;
} else if (type == ERepositoryObjectType.TDQ_JRAXML_ELEMENT || type == ERepositoryObjectType.TDQ_DATA_PROFILING

View File

@@ -46,6 +46,7 @@ import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryPrefConstants;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.ISubRepositoryObject;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.model.utils.RepositoryManagerHelper;
import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.runtime.i18n.Messages;
@@ -108,6 +109,11 @@ public class RepositoryNodeUtilities {
} else {
if (/* !isMetadataLabel(label) && */node.getType() != ENodeType.REPOSITORY_ELEMENT) {
return getPath(node.getParent()).append(label);
} else if (ERepositoryObjectType.getAllTypesOfCodesJar().contains(node.getContentType())) {
if (RoutinesUtil.isInnerCodes(node.getObject().getProperty())) {
return new Path(node.getObject().getProperty().getItem().getState().getPath());
}
return new Path(node.getObject().getLabel());
} else {
return getPath(node.getParent());
}

View File

@@ -0,0 +1,57 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository.token;
import java.io.File;
import java.util.Properties;
import org.eclipse.core.runtime.Platform;
import org.talend.commons.utils.time.PropertiesFileUtil;
/**
* DOC sbliu class global comment. Detailled comment
*/
public class RepositoryActionLogger {
private static String recordingFileName = "actions";
private static File recordingFile;
public static final String PREFIX_PERSPECITVE = "perspective.";
public static final String PREFIX_ACTION = "action.";
public static File getRecordingFile() {
if (recordingFile == null) {
String configurationLocation = Platform.getConfigurationLocation().getURL().getPath();
recordingFile = new File(configurationLocation + "/data_collector/" + recordingFileName);
}
return recordingFile;
}
private static void log(String action) {
new Thread(() -> {
Properties props = PropertiesFileUtil.read(getRecordingFile(), false);
int count = Integer.parseInt(props.getProperty(action, "0"));
props.put(action, count + 1 + "");
PropertiesFileUtil.store(getRecordingFile(), props);
}).start();
}
public static void logPerspective(String perspective) {
log(PREFIX_PERSPECITVE + perspective);
}
public static void logAction(String action) {
log(PREFIX_ACTION + action);
}
}

View File

@@ -65,6 +65,7 @@ import org.talend.repository.model.IRepositoryNode.ENodeType;
import org.talend.repository.model.IRepositoryNode.EProperties;
import org.talend.repository.model.RepositoryConstants;
import org.talend.repository.model.RepositoryNode;
import org.talend.repository.token.RepositoryActionLogger;
import org.talend.repository.ui.views.IJobSettingsView;
import org.talend.repository.ui.views.IRepositoryView;
@@ -638,6 +639,7 @@ public abstract class AContextualAction extends Action implements ITreeContextua
@Override
public void run() {
String name = "User action : " + getText(); //$NON-NLS-1$
RepositoryActionLogger.logAction(getClass().getName());
oldItem = null;
// if (node == null) {

View File

@@ -30,6 +30,18 @@
id="org.talend.core.ui.token.PerformanceProvider"
name="performance">
</provider>
<provider
collector="org.talend.core.ui.token.RepositroyActionsTokenCollector"
description="collect DI/DQ actions/numbers of action done, also collect perspective switch"
id="org.talend.core.ui.token.RepositroyActionsTokenCollector"
name="actions">
</provider>
<provider
collector="org.talend.core.ui.token.AdditionalPackagesTokenCollector"
description="installed addtional package, old iems, amc"
id="org.talend.core.ui.token.AdditionalPackageTokenCollector"
name="addtional package">
</provider>
</extension>
<extension

View File

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

View File

@@ -260,7 +260,6 @@ public class ExtendedContextColumnPropertyAccessor<R> implements IColumnProperty
return;
}
String newType = getRealType((String) newValue);
contextPara.setType(newType);
Command cmd = new SetContextTypeCommand(manager, contextPara, newType);
runCommand(cmd, manager);
@@ -460,6 +459,9 @@ public class ExtendedContextColumnPropertyAccessor<R> implements IColumnProperty
for (IContext context : modelManager.getContextManager().getListContext()) {
for (IContextParameter contextParameter : context.getContextParameterList()) {
if (param.getName().equals(contextParameter.getName())) {
if(!param.getType().equals(newValue) ) {
modified = true;
}
oldValue = param.getType();
contextParameter.setType(newValue);
}

View File

@@ -31,8 +31,7 @@ public class TalendDataCollectorPreferenceInitializer extends AbstractPreference
public void initializeDefaultPreferences() {
IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
preferenceStore.setDefault(ITalendCorePrefConstants.DATA_COLLECTOR_ENABLED, true);
preferenceStore.setDefault(ITalendCorePrefConstants.DATA_COLLECTOR_UPLOAD_PERIOD, 10);
preferenceStore.setDefault(ITalendCorePrefConstants.DATA_COLLECTOR_UPLOAD_PERIOD, 5);
}
}

View File

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

View File

@@ -34,4 +34,9 @@ public interface ITokenCollector {
* collect the values from different provider.
*/
public JSONObject collect() throws Exception;
/**
* reset cached collected data
*/
public default void reset() {}
}

View File

@@ -17,6 +17,7 @@ import java.util.Properties;
import org.talend.commons.exception.CommonExceptionHandler;
import org.talend.commons.utils.time.PerformanceStatisticUtil;
import org.talend.commons.utils.time.PerformanceStatisticUtil.StatisticKeys;
import org.talend.commons.utils.time.PropertiesFileUtil;
import oshi.SystemInfo;
import oshi.hardware.Baseboard;
@@ -60,7 +61,7 @@ public class PerformanceTokenCollector extends AbstractTokenCollector {
//
JSONObject jsonObjectIOInfo = new JSONObject();
Properties props = PerformanceStatisticUtil.read(PerformanceStatisticUtil.getRecordingFile(),false);
Properties props = PropertiesFileUtil.read(PerformanceStatisticUtil.getRecordingFile(),false);
jsonObjectIOInfo.put(StatisticKeys.STARTUP_AVERAGE.get(), props.getProperty(StatisticKeys.STARTUP_AVERAGE.get()));
jsonObjectIOInfo.put(StatisticKeys.STARTUP_MAX.get(), props.getProperty(StatisticKeys.STARTUP_MAX.get()));
jsonObjectIOInfo.put(StatisticKeys.IO_R_MB_SEC.get(), props.getProperty(StatisticKeys.IO_R_MB_SEC.get()));
@@ -79,5 +80,10 @@ public class PerformanceTokenCollector extends AbstractTokenCollector {
CommonExceptionHandler.log(e.getMessage());
}
}
@Override
public void reset() {
PerformanceStatisticUtil.reset();
}
}

View File

@@ -0,0 +1,52 @@
// ============================================================================
//
// Copyright (C) 2006-2020 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.ui.token;
import java.util.Map.Entry;
import java.util.Properties;
import org.talend.commons.utils.time.PropertiesFileUtil;
import org.talend.repository.token.RepositoryActionLogger;
import us.monoid.json.JSONObject;
/**
* DOC sbliu class global comment. Detailled comment
*/
public class RepositroyActionsTokenCollector extends AbstractTokenCollector {
@Override
public JSONObject collect() throws Exception {
JSONObject tokenStudioObject = new JSONObject();
//
JSONObject jsonObjectActionInfo = new JSONObject();
JSONObject jsonObjectPerspectiveInfo = new JSONObject();
Properties props = PropertiesFileUtil.read(RepositoryActionLogger.getRecordingFile(), false);
if(!props.isEmpty()) {
for(Entry<Object, Object> entry: props.entrySet()) {
String key = (String)entry.getKey();
if(key.startsWith(RepositoryActionLogger.PREFIX_ACTION)) {
key = key.substring(RepositoryActionLogger.PREFIX_ACTION.length());
jsonObjectActionInfo.put(key, entry.getValue());
} else if(key.startsWith(RepositoryActionLogger.PREFIX_PERSPECITVE)) {
key = key.substring(RepositoryActionLogger.PREFIX_PERSPECITVE.length());
jsonObjectPerspectiveInfo.put(key, entry.getValue());
}
}
}
tokenStudioObject.put("actions", jsonObjectActionInfo);
tokenStudioObject.put("perspectives", jsonObjectPerspectiveInfo);
return tokenStudioObject;
}
}

View File

@@ -28,6 +28,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.zip.GZIPOutputStream;
import org.apache.commons.lang3.StringUtils;
@@ -63,6 +64,7 @@ import org.talend.commons.utils.network.NetworkUtil;
import org.talend.commons.utils.network.TalendProxySelector;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.ui.CoreUIPlugin;
import org.talend.core.ui.branding.IBrandingService;
@@ -109,7 +111,7 @@ public final class TokenCollectorFactory {
idWithPluginMap.put(id, pluginName);
} else {
log.log(Priority.WARN, "there is id: " + id + " to have been existed in plugin:" + idWithPluginMap.get(id) //$NON-NLS-1$ //$NON-NLS-2$
+ " current plugin is:" + pluginName + " will ignore this extension."); //$NON-NLS-1$ //$NON-NLS-2$
+ " (current plugin is:" + pluginName + "), will ignore this extension."); //$NON-NLS-1$ //$NON-NLS-2$
}
}
@@ -125,7 +127,72 @@ public final class TokenCollectorFactory {
public TokenInforProvider[] getProviders() {
return providers.values().toArray(new TokenInforProvider[0]);
}
private final int magic_mainthreadStackTraceNum = 28;
private Thread monitorSendThread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
long millis = 12 * 60 * 60 * 1000L;//check every half day
millis = Long.getLong("studio.token.send", millis);
if (dataCollectorEnabled()) {
if (isTimeToSend()) {//need send
if(studioInIdle()) {
//if free, send in background
send(true);
} else {
Thread.sleep(10000L);
continue;
}
}
}
Thread.sleep(millis);
} catch (InterruptedException e) {
ExceptionHandler.process(e);
} catch(Exception e) {
ExceptionHandler.process(e);
}
}
}
});
private boolean studioInIdle() {
ProxyRepositoryFactory repoFactory = ProxyRepositoryFactory.getInstance();
boolean repositoryBusy = repoFactory.isRepositoryBusy();
boolean threadIdle = false;
Map<Thread, StackTraceElement[]> allStackTraces = Thread.getAllStackTraces();
if (allStackTraces != null) {
Optional<Thread> mainThread = allStackTraces.keySet().stream()
.filter(t -> t.isAlive() && !t.isDaemon() && t.getName().equalsIgnoreCase("main")).findFirst();
if (mainThread.isPresent()) {
threadIdle = (magic_mainthreadStackTraceNum >= mainThread.get().getStackTrace().length);
}
}
return !repositoryBusy && threadIdle;
}
private boolean isTimeToSend() {
Date lastDate = lastSendDate();
final IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
int days = preferenceStore.getInt(ITalendCorePrefConstants.DATA_COLLECTOR_UPLOAD_PERIOD);
Date curDate = new Date();
Date expectedSendDate = curDate;
if (days > 0 && lastDate != null) {
expectedSendDate = TokenInforUtil.getDateAfter(lastDate, days);
}
if (expectedSendDate.compareTo(curDate) < 0) {
return true;
}
return false;
}
public void monitor() {
monitorSendThread.start();
}
public void priorCollect() throws Exception {
if (isActiveAndValid(false)) { //
for (TokenInforProvider tip : getProviders()) {
@@ -161,31 +228,22 @@ public final class TokenCollectorFactory {
}
private boolean isActiveAndValid(boolean timeExpired) {
final IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
if (preferenceStore.getBoolean(ITalendCorePrefConstants.DATA_COLLECTOR_ENABLED)) {
String last = preferenceStore.getString(ITalendCorePrefConstants.DATA_COLLECTOR_LAST_TIME);
int days = preferenceStore.getInt(ITalendCorePrefConstants.DATA_COLLECTOR_UPLOAD_PERIOD);
long syncNb = preferenceStore.getLong(DefaultTokenCollector.COLLECTOR_SYNC_NB);
if (syncNb < 15) {
days = 2;
}
Date lastDate = null;
if (last != null && !"".equals(last.trim())) { //$NON-NLS-1$
// parse the last date;
try {
lastDate = DATE_FORMAT.parse(last);
} catch (ParseException ee) {
//
}
}
Date curDate = new Date();
Date addedDate = curDate;
if (days > 0 && lastDate != null) {
addedDate = TokenInforUtil.getDateAfter(lastDate, days);
}
if (dataCollectorEnabled()) {
//
if (timeExpired) {
Date lastDate = lastSendDate();
final IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
int days = preferenceStore.getInt(ITalendCorePrefConstants.DATA_COLLECTOR_UPLOAD_PERIOD);
long syncNb = preferenceStore.getLong(DefaultTokenCollector.COLLECTOR_SYNC_NB);
if (syncNb < 15) {
days = 2;
}
Date curDate = new Date();
Date addedDate = curDate;
if (days > 0 && lastDate != null) {
addedDate = TokenInforUtil.getDateAfter(lastDate, days);
}
if (addedDate.compareTo(curDate) <= 0) {
return true;
}
@@ -196,6 +254,26 @@ public final class TokenCollectorFactory {
return false;
}
private boolean dataCollectorEnabled() {
final IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
return preferenceStore.getBoolean(ITalendCorePrefConstants.DATA_COLLECTOR_ENABLED);
}
private Date lastSendDate() {
final IPreferenceStore preferenceStore = CoreUIPlugin.getDefault().getPreferenceStore();
String last = preferenceStore.getString(ITalendCorePrefConstants.DATA_COLLECTOR_LAST_TIME);
Date lastDate = null;
if (last != null && !"".equals(last.trim())) { //$NON-NLS-1$
// parse the last date;
try {
lastDate = DATE_FORMAT.parse(last);
} catch (ParseException ee) {
//
}
}
return lastDate;
}
public boolean process() {
boolean result = false;
@@ -364,5 +442,18 @@ public final class TokenCollectorFactory {
}
}
}
public void reset() {
for (TokenInforProvider tip : getProviders()) {
ITokenCollector collector = tip.getCollector();
if (collector != null) {
try {
collector.reset();
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
}
}
}

View File

@@ -279,7 +279,9 @@ public class CoreService implements ICoreService {
if (GlobalServiceRegister.getDefault().isServiceRegistered(ICodeGeneratorService.class)) {
ICodeGeneratorService codeGenService = (ICodeGeneratorService) GlobalServiceRegister.getDefault().getService(
ICodeGeneratorService.class);
codeGenService.createRoutineSynchronizer().syncAllRoutinesForLogOn();
ITalendSynchronizer talendSynchronizer = codeGenService.createRoutineSynchronizer();
talendSynchronizer.syncAllRoutinesForLogOn();
talendSynchronizer.syncAllInnerCodesForLogOn();
}
}

View File

@@ -1046,4 +1046,10 @@ public class ObjectElementParameter implements IElementParameter {
public void setSerialized(boolean isSerialized) {
// TODO Auto-generated method stub
}
@Override
public boolean isSelectedFromItemValue() {
// TODO Auto-generated method stub
return false;
}
}

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