Compare commits
233 Commits
nrousseau/
...
dochkas/ti
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
36c32b6437 | ||
|
|
b5f96496f4 | ||
|
|
d0fbe0defa | ||
|
|
d9454a11ef | ||
|
|
bca8dd8802 | ||
|
|
45c4e32c2a | ||
|
|
e637d53155 | ||
|
|
537bd1b73a | ||
|
|
2fcf4be1e2 | ||
|
|
86ee3f4ad1 | ||
|
|
106c010d53 | ||
|
|
80917277a5 | ||
|
|
f0fe150ec0 | ||
|
|
46523080d3 | ||
|
|
68b5e9e7c4 | ||
|
|
c3b1df17a0 | ||
|
|
d7af0fc449 | ||
|
|
c2408e4223 | ||
|
|
2ec3561107 | ||
|
|
acc3c15744 | ||
|
|
fd2c8b365b | ||
|
|
cb369968e9 | ||
|
|
70f018b26f | ||
|
|
f6a4d9022f | ||
|
|
616815d794 | ||
|
|
8767e96bcd | ||
|
|
26dcedadef | ||
|
|
58a39c8fb8 | ||
|
|
7cf738b911 | ||
|
|
42b7a46dee | ||
|
|
70314bd2b4 | ||
|
|
d42dc6e42e | ||
|
|
b824673188 | ||
|
|
c34725bbef | ||
|
|
f517e56b83 | ||
|
|
9ed98d4f9d | ||
|
|
7a9ff69e14 | ||
|
|
8acb79fbd4 | ||
|
|
04b7d3251e | ||
|
|
e64b5d2e23 | ||
|
|
ed74850972 | ||
|
|
caed4cf474 | ||
|
|
971e661a0e | ||
|
|
8a87f281f9 | ||
|
|
c54b8ed321 | ||
|
|
62301ff268 | ||
|
|
1f2d1e0820 | ||
|
|
9eb840b026 | ||
|
|
bc5d868c62 | ||
|
|
72c11045a9 | ||
|
|
cc84dfffb6 | ||
|
|
249f91b6de | ||
|
|
8c1a8995d9 | ||
|
|
7398af81c7 | ||
|
|
6a546b134a | ||
|
|
49b47b16a8 | ||
|
|
9cc26cd33a | ||
|
|
e418bd6510 | ||
|
|
2734f706d5 | ||
|
|
4c96ffc367 | ||
|
|
66fbcde8d2 | ||
|
|
be625ab3ee | ||
|
|
e4958bb494 | ||
|
|
487dcf08d6 | ||
|
|
0e3b5eb9d9 | ||
|
|
123ce87273 | ||
|
|
b32f6ec697 | ||
|
|
35171da7d9 | ||
|
|
04efc3ada0 | ||
|
|
bb67871008 | ||
|
|
6af9c4ee98 | ||
|
|
13e096e752 | ||
|
|
47268fad44 | ||
|
|
8115399b97 | ||
|
|
721b3de01e | ||
|
|
f6ab592562 | ||
|
|
2751229fbe | ||
|
|
e8f5139248 | ||
|
|
a5c0992356 | ||
|
|
708091be96 | ||
|
|
4a43182f39 | ||
|
|
3a31923c97 | ||
|
|
cd69df6ca7 | ||
|
|
ef25314bba | ||
|
|
d1214eddb3 | ||
|
|
829ba7a572 | ||
|
|
d9f1c04b07 | ||
|
|
b62353969a | ||
|
|
c4a60de7dd | ||
|
|
b8bd877a97 | ||
|
|
32cbc40ffc | ||
|
|
9b530b68b3 | ||
|
|
f8790d0597 | ||
|
|
843cccff2d | ||
|
|
249d40f4be | ||
|
|
93a5a1842d | ||
|
|
4465b7539e | ||
|
|
05fe5ebd78 | ||
|
|
35ba1c7dec | ||
|
|
cd025ab26c | ||
|
|
96823a247b | ||
|
|
d4ef464d10 | ||
|
|
5629a19ec1 | ||
|
|
5bc4f7e536 | ||
|
|
de34ef2e0f | ||
|
|
513a0026e9 | ||
|
|
42e24269e7 | ||
|
|
7da74ee9ce | ||
|
|
92a8bae40d | ||
|
|
8dc29d227c | ||
|
|
fc3ccf48fd | ||
|
|
065859a00a | ||
|
|
2c20ddcf20 | ||
|
|
8cef3416ca | ||
|
|
36cda8c80f | ||
|
|
fee8c502a6 | ||
|
|
36d4eaa32b | ||
|
|
aff0f14066 | ||
|
|
223b173995 | ||
|
|
57c80b2474 | ||
|
|
0098757eea | ||
|
|
abe8279842 | ||
|
|
75eef3b4f4 | ||
|
|
572d3f7442 | ||
|
|
07b105e021 | ||
|
|
f1252fb198 | ||
|
|
7022e89faa | ||
|
|
6be7f102dd | ||
|
|
59bd368ae4 | ||
|
|
a9b8d1e085 | ||
|
|
2ea31df991 | ||
|
|
e44378bd76 | ||
|
|
419adb67e9 | ||
|
|
6ec03713a3 | ||
|
|
2d9904378b | ||
|
|
e541c3a75d | ||
|
|
feaf9e516b | ||
|
|
3aa3e21582 | ||
|
|
a640f1a0e3 | ||
|
|
36f228c840 | ||
|
|
2b40550ff4 | ||
|
|
96a75df148 | ||
|
|
ed960cbf8a | ||
|
|
83fa4543c4 | ||
|
|
80da90a14f | ||
|
|
4adc7f0354 | ||
|
|
57e9574e9d | ||
|
|
c30c1109e4 | ||
|
|
79472b4e32 | ||
|
|
2dfae00169 | ||
|
|
f4f1bf3fb6 | ||
|
|
8f5d517779 | ||
|
|
5c9a80937a | ||
|
|
2f3f5ee9b2 | ||
|
|
4f362f4423 | ||
|
|
057c9d9276 | ||
|
|
bb14c4fdaf | ||
|
|
29638dc7aa | ||
|
|
72830bf1f7 | ||
|
|
5a28729481 | ||
|
|
67508cca0d | ||
|
|
6d75380549 | ||
|
|
5b06de4df9 | ||
|
|
48d1297a8b | ||
|
|
7b5b26f325 | ||
|
|
d866f8a853 | ||
|
|
17a2e919fc | ||
|
|
d760cbd25e | ||
|
|
7e6bab7819 | ||
|
|
35a9fead7e | ||
|
|
2a67ced722 | ||
|
|
576d7e63f9 | ||
|
|
7b9f8948df | ||
|
|
c5fd7d97d4 | ||
|
|
8321757d44 | ||
|
|
9892e8a86d | ||
|
|
afb2687746 | ||
|
|
14c248bc10 | ||
|
|
af0b7a2d3b | ||
|
|
84a5fa74db | ||
|
|
21f53c14c2 | ||
|
|
3c3ddcf4f3 | ||
|
|
0e63ab14c7 | ||
|
|
50a6c0096c | ||
|
|
152e672b12 | ||
|
|
5bff796d45 | ||
|
|
ecb8c2d693 | ||
|
|
e2ac795f4c | ||
|
|
78d977871b | ||
|
|
3bf8e16503 | ||
|
|
118731263c | ||
|
|
72232409b8 | ||
|
|
43ea3e1628 | ||
|
|
b832982551 | ||
|
|
d35f3d2589 | ||
|
|
7d2f9c40eb | ||
|
|
791ced6856 | ||
|
|
cbe2bb000d | ||
|
|
3dba3ac322 | ||
|
|
97502bfae4 | ||
|
|
e4d56a9c76 | ||
|
|
2d8a6ad376 | ||
|
|
d6faaab7d5 | ||
|
|
77a502e480 | ||
|
|
f2980de168 | ||
|
|
a999d64f4c | ||
|
|
9173316f02 | ||
|
|
a080f9ff63 | ||
|
|
6f1190ee4d | ||
|
|
545b864bfd | ||
|
|
eca54ac7ca | ||
|
|
4218e443c4 | ||
|
|
63a0a09d99 | ||
|
|
3e0973ff19 | ||
|
|
5391b48920 | ||
|
|
112625f8f7 | ||
|
|
1732c6f9b5 | ||
|
|
9e4f5bb1dc | ||
|
|
d6431794d7 | ||
|
|
7ba8c9a37a | ||
|
|
13f391bc87 | ||
|
|
b5469fb531 | ||
|
|
31b8b5467c | ||
|
|
c6901ce17d | ||
|
|
a613d635d7 | ||
|
|
1deaf892c8 | ||
|
|
27540097e4 | ||
|
|
e7d0282538 | ||
|
|
6541771b5c | ||
|
|
22a24f13be | ||
|
|
3861eeaa7a | ||
|
|
a54e0e72a3 | ||
|
|
2c25ae3771 |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -48,6 +48,7 @@
|
||||
<plugin id="org.talend.repository.localprovider.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.repository.metadata.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.repository.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.sqlbuilder.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.repository.view.di.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.repository.view.test" download-size="0" install-size="0" version="0.0.0" fragment="true" unpack="false"/>
|
||||
<plugin id="org.talend.testutils" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
prefs.configuration.LINK_STYLE.AUTO=Auto
|
||||
prefs.configuration.title=Map components preferences :
|
||||
prefs.configuration.LINK_STYLE.LINE=Lines (fast)
|
||||
prefs.configuration.LINK_STYLE.BEZIER_CURVE=Curves
|
||||
prefs.configuration.LINK_STYLE=Default mapping links display as :
|
||||
DraggingInfosPopup.draggingEntry=Dragging {0} entry.
|
||||
DraggingInfosPopup.dropInvalid=\n<< Drop invalid >>\n
|
||||
DraggingInfosPopup.draggingEntries=Dragging {0} entries.
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<< Drop invalid >>\nPress both Shift and Ctrl keys to map one to one and overwrite
|
||||
DraggingInfosPopup.overwriteMode=\ > Overwrite mode
|
||||
DraggingInfosPopup.appendMode=\ > Append mode
|
||||
DraggingInfosPopup.appendModeToOverwrite=\ > Append mode (Ctrl key to overwrite)
|
||||
DraggingInfosPopup.insertAllSelectedEntries=\ > Insert all selected entries
|
||||
DraggingInfosPopup.insertRemainingEntries=\ > Insert remaining entries
|
||||
DraggingInfosPopup.eachSourceEntryExpressionToEachTargetExpression=> Each source entry expression to each target expression
|
||||
DraggingInfosPopup.eachSourceEntryToEachTargetExpression=> Each source entry to each target expression
|
||||
DraggingInfosPopup.allSourceEntriesExpressionToASingleOneTargetExpressionShiftKey=> All source entries expression to a single one target expression (Shift key to change mapping)
|
||||
DraggingInfosPopup.allSourceEntriesExpressionToASingleOneTargetExpression=> All source entries expression to a single one target expression
|
||||
DraggingInfosPopup.allSourceEntriesToASingleOneTargetExpressionShiftKey=> All source entries to a single one target expression (Shift key to change mapping)
|
||||
DraggingInfosPopup.allSourceEntriesToASingleOneTargetExpression=> All source entries to a single one target expression
|
||||
@@ -6,7 +6,7 @@ prefs.configuration.LINK_STYLE.LINE=Lignes (rapide)
|
||||
DraggingInfosPopup.draggingEntry=Glissement de {0} entr\u00E9e(s).
|
||||
DraggingInfosPopup.dropInvalid=\n<< D\u00E9p\u00F4t impossible >>\n
|
||||
DraggingInfosPopup.draggingEntries=Glissement de {0} entr\u00E9es.
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<<D\u00E9p\u00F4t impossible>>\n : appuyez sur Maj et Ctrl pour mapper en un pour un et \u00E9craser
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<< D\u00E9p\u00F4t impossible >>\nAppuyez sur Maj et Ctrl pour mapper en un pour un et \u00E9craser
|
||||
DraggingInfosPopup.overwriteMode= > Mode \u00E9crasement
|
||||
DraggingInfosPopup.appendMode= > Mode \u00E9criture \u00E0 la suite
|
||||
DraggingInfosPopup.appendModeToOverwrite= > Mode \u00E9criture \u00E0 la suite (Ctrl pour \u00E9craser)
|
||||
|
||||
@@ -6,7 +6,7 @@ prefs.configuration.LINK_STYLE.LINE=\u76F4\u7DDA\uFF08\u9AD8\u901F\uFF09
|
||||
DraggingInfosPopup.draggingEntry={0}\u30A8\u30F3\u30C8\u30EA\u30FC\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u3044\u307E\u3059\u3002
|
||||
DraggingInfosPopup.dropInvalid=\n<< \u7121\u52B9\u306A\u30C9\u30ED\u30C3\u30D7 >>\n
|
||||
DraggingInfosPopup.draggingEntries={0}\u30A8\u30F3\u30C8\u30EA\u30FC\u3092\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u3044\u307E\u3059\u3002
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<< \u7121\u52B9\u306A\u30C9\u30ED\u30C3\u30D7 >>\n\u4E00\u5BFE\u4E00\u30DE\u30C3\u30D4\u30F3\u30B0\u3057\u3001\u4E0A\u66F8\u304D\u3059\u308B\u5834\u5408\u306F\u3001Shift\u30AD\u30FC\u3068Ctrl\u30AD\u30FC\u3092\u540C\u6642\u306B\u62BC\u3057\u307E\u3059
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<< \u7121\u52B9\u306A\u30C9\u30ED\u30C3\u30D7 >>\nShift\u30AD\u30FC\u3068Ctrl\u30AD\u30FC\u3092\u540C\u6642\u306B\u62BC\u3059\u3068\u30011\u5BFE1\u3067\u30DE\u30C3\u30D4\u30F3\u30B0\u3055\u308C\u3066\u4E0A\u66F8\u304D\u3055\u308C\u307E\u3059
|
||||
DraggingInfosPopup.overwriteMode= > \u4E0A\u66F8\u304D\u30E2\u30FC\u30C9
|
||||
DraggingInfosPopup.appendMode= > \u8FFD\u52A0\u30E2\u30FC\u30C9
|
||||
DraggingInfosPopup.appendModeToOverwrite= > \u8FFD\u52A0\u30E2\u30FC\u30C9(\u4E0A\u66F8\u304D\u3059\u308B\u306B\u306F[Ctrl]\u30AD\u30FC)
|
||||
|
||||
@@ -6,7 +6,7 @@ prefs.configuration.LINK_STYLE.LINE=\u76F4\u7EBF (\u5FEB)
|
||||
DraggingInfosPopup.draggingEntry=\u62D6\u52A8 {0} \u6761\u76EE
|
||||
DraggingInfosPopup.dropInvalid=\n<< \u65E0\u6548\u91CA\u653E >>\n
|
||||
DraggingInfosPopup.draggingEntries=\u62D6\u52A8 {0} \u4E2A\u6761\u76EE\u3002
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<<\u65E0\u6548\u653E\u7F6E>>\n\u6309\u4F4F Shift \u548C Ctrl \u952E\u4EE5\u8FDB\u884C\u4E00\u5BF9\u4E00\u6620\u5C04\u5E76\u6539\u5199
|
||||
DraggingInfosPopup.dropInvalidWithKey=\n<< \u65E0\u6548\u653E\u7F6E >>\n\u6309\u4F4F Shift \u548C Ctrl \u952E\u4EE5\u8FDB\u884C\u4E00\u5BF9\u4E00\u6620\u5C04\u5E76\u6539\u5199
|
||||
DraggingInfosPopup.overwriteMode= > \u91CD\u5199\u6A21\u5F0F
|
||||
DraggingInfosPopup.appendMode= >\u9644\u52A0\u6A21\u5F0F
|
||||
DraggingInfosPopup.appendModeToOverwrite= > \u8FFD\u52A0\u6A21\u5F0F (Ctrl \u952E\u6765\u6539\u5199)
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
AlfrescoModelDialog.missingAspectDefinitions.msg=The chosen aspects refer to unknown Alfresco aspect(s) : ${0}.\nPlease provide the alfresco model files that define them.
|
||||
AlfrescoModelDialog.modelTable.title=Title
|
||||
AlfrescoModelDialog.availableAspects=Available Aspects
|
||||
AlfrescoModelDialog.missingAspectDefinitions.title=Missing aspect definitions
|
||||
AlfrescoOutputManager.schemaError.title=Error in schema
|
||||
AlfrescoModelDialog.missingTypeDefinitions.msg=The chosen type refers to unknown Alfresco type(s) or aspect(s) : ${0}.\nPlease provide the alfresco model files that define them.
|
||||
AlfrescoModelDialog.missingTypeDefinitions.title=Missing type definitions
|
||||
AlfrescoModelDialog.add=Add...
|
||||
AlfrescoOutputModelManager.errorReadingModel=Error reading Alfresco model file
|
||||
AlfrescoModelDialog.aspects=Aspects
|
||||
AlfrescoOutputManager.schemaError.msg=Please synchronize schema first
|
||||
AlfrescoOutputModelManager.alreadyAdded=This model has already been added
|
||||
AlfrescoModelDialog.removeModelFailed=Failed to remove model
|
||||
AlfrescoOutputModelManager.prefixConflict=Unable to add the model, prefix conflict with previously added model for
|
||||
AlfrescoOutputModelManager.notYetAdded=This model has not yet been added
|
||||
AlfrescoModelDialog.type=Type
|
||||
AlfrescoModelDialog.addModelFailed=Failed to add model
|
||||
AlfrescoModelDialog.modelTable.name=Name
|
||||
AlfrescoModelDialog.remove=Remove
|
||||
AlfrescoOutputManager.failedLoadModel=Failed to load model from component metadata, reinitializing
|
||||
@@ -13,8 +13,8 @@ AlfrescoModelDialog.addModelFailed=\u30E2\u30C7\u30EB\u8FFD\u52A0\u306B\u5931\u6
|
||||
AlfrescoModelDialog.remove=\u524A\u9664
|
||||
AlfrescoModelDialog.removeModelFailed=\u30E2\u30C7\u30EB\u306E\u524A\u9664\u306B\u5931\u6557\u3057\u307E\u3057\u305F
|
||||
AlfrescoModelDialog.missingTypeDefinitions.title=\u578B\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093
|
||||
AlfrescoModelDialog.missingTypeDefinitions.msg=\u9078\u629E\u3057\u305F\u65B9\u306F\u4E0D\u660E\u306EAlfresco\u578B\u3082\u3057\u304F\u306F\u30A2\u30B9\u30DA\u30AF\u30C8: ${0}\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\n\u305D\u308C\u3089\u3092\u5B9A\u7FA9\u3057\u305FAlfresco\u30E2\u30C7\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u63D0\u4F9B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
AlfrescoModelDialog.missingTypeDefinitions.msg=\u9078\u629E\u3055\u308C\u305F\u30BF\u30A4\u30D7\u306F\u3001Alfresco\u306E\u4E0D\u660E\u306A\u30BF\u30A4\u30D7\u307E\u305F\u306F\u30A2\u30B9\u30DA\u30AF\u30C8: ${0}\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\n\u305D\u308C\u3089\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308Balfresco\u306E\u30E2\u30C7\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
AlfrescoModelDialog.missingAspectDefinitions.title=\u30A2\u30B9\u30DA\u30AF\u30C8\u5B9A\u7FA9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
AlfrescoModelDialog.missingAspectDefinitions.msg=\u9078\u629E\u3055\u308C\u305F\u30A2\u30B9\u30DA\u30AF\u30C8\u306F\u4E0D\u660E\u306EAlfresco\u30A2\u30B9\u30DA\u30AF\u30C8: ${0}\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\n\u305D\u308C\u3089\u3092\u5B9A\u7FA9\u3057\u305FAlfresco\u30E2\u30C7\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u63D0\u4F9B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
AlfrescoModelDialog.missingAspectDefinitions.msg=\u9078\u629E\u3055\u308C\u305F\u30A2\u30B9\u30DA\u30AF\u30C8\u306F\u3001Alfresco\u306E\u4E0D\u660E\u306A\u30A2\u30B9\u30DA\u30AF\u30C8: ${0}\u3092\u53C2\u7167\u3057\u3066\u3044\u307E\u3059\u3002\n\u305D\u308C\u3089\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u308Balfresco\u306E\u30E2\u30C7\u30EB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
AlfrescoModelDialog.modelTable.title=\u30BF\u30A4\u30C8\u30EB
|
||||
AlfrescoModelDialog.modelTable.name=\u540D\u524D
|
||||
|
||||
@@ -13,8 +13,8 @@ AlfrescoModelDialog.addModelFailed=\u6DFB\u52A0\u6A21\u578B\u5931\u8D25
|
||||
AlfrescoModelDialog.remove=\u79FB\u9664
|
||||
AlfrescoModelDialog.removeModelFailed=\u79FB\u9664\u6A21\u578B\u5931\u8D25
|
||||
AlfrescoModelDialog.missingTypeDefinitions.title=\u7F3A\u7701\u7C7B\u578B\u5B9A\u4E49
|
||||
AlfrescoModelDialog.missingTypeDefinitions.msg=\u6240\u9009\u62E9\u7684\u7C7B\u578B\u6D89\u53CA\u4E00\u4E2A\u6216\u591A\u4E2A\u672A\u77E5\u7684 Alfresco \u7C7B\u578B\u6216asepct: ${0}.\n \u8BF7\u63D0\u4F9B\u5B9A\u4E49\u8FD9\u4E9B \u7C7B\u578B\u6216 aspect \u7684 Alfresco \u6A21\u578B\u6587\u4EF6\u3002
|
||||
AlfrescoModelDialog.missingTypeDefinitions.msg=\u6240\u9009\u62E9\u7684\u7C7B\u578B\u6D89\u53CA\u672A\u77E5\u7684 Alfresco \u7C7B\u578B\u6216\u65B9\u9762: ${0}\u3002\n\u8BF7\u63D0\u4F9B\u5B9A\u4E49\u8FD9\u4E9B aspect \u7684 Alfresco \u6A21\u578B\u6587\u4EF6\u3002
|
||||
AlfrescoModelDialog.missingAspectDefinitions.title=\u7F3A\u7701\u65B9\u9762\u5B9A\u4E49
|
||||
AlfrescoModelDialog.missingAspectDefinitions.msg=\u6240\u9009\u62E9\u7684\u65B9\u9762\u6D89\u53CA\u4E00\u4E2A\u6216\u591A\u4E2A\u672A\u77E5\u7684 Alfresco aspect: ${0}.\n \u8BF7\u63D0\u4F9B\u5B9A\u4E49\u8FD9\u4E9B aspect \u7684 Alfresco \u6A21\u578B\u6587\u4EF6\u3002
|
||||
AlfrescoModelDialog.missingAspectDefinitions.msg=\u6240\u9009\u62E9\u7684\u65B9\u9762\u6D89\u53CA\u672A\u77E5\u7684Alfresco\u65B9\u9762: ${0}.\n\u8BF7\u63D0\u4F9B\u5B9A\u4E49\u8FD9\u4E9B aspect \u7684 Alfresco \u6A21\u578B\u6587\u4EF6\u3002
|
||||
AlfrescoModelDialog.modelTable.title=\u6807\u9898
|
||||
AlfrescoModelDialog.modelTable.name=\u540D\u79F0
|
||||
|
||||
@@ -91,13 +91,14 @@ if((codePart.equals(ECodePart.END))&&(stat || logstashCurrent)){
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
for (INode jobStructureCatcher : jobCatcherNodes) {
|
||||
%>
|
||||
if(runStat.updateStatAndLog(execStat,enableLogStash,resourceMap,iterateId,"<%=con.getUniqueName()%>",2,0,
|
||||
"<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>","<%="REJECT".equals(con.getConnectorName()) ? "reject" : "output"%>")) {
|
||||
"<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>","<%="REJECT".equals(con.getConnectorName()) ? "reject" : "output"%>")) {
|
||||
<%=jobStructureCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
|
||||
}
|
||||
<%
|
||||
@@ -122,13 +123,14 @@ if((codePart.equals(ECodePart.END))&&(stat || logstashCurrent)){
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
for (INode jobStructureCatcher : jobCatcherNodes) {
|
||||
%>
|
||||
if(runStat.log(resourceMap,iterateId,"<%=con.getUniqueName()%>",2,0,
|
||||
"<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>","<%="REJECT".equals(con.getConnectorName()) ? "reject" : "output"%>")) {
|
||||
"<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>","<%="REJECT".equals(con.getConnectorName()) ? "reject" : "output"%>")) {
|
||||
<%=jobStructureCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
|
||||
}
|
||||
<%
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
}
|
||||
%>
|
||||
currentComponent="<%=node.getUniqueName() %>";
|
||||
|
||||
|
||||
<%
|
||||
connSet = new HashSet<IConnection>();
|
||||
connSet.addAll(node.getIncomingConnections(EConnectionType.FLOW_MAIN));
|
||||
@@ -155,6 +155,17 @@
|
||||
//about performance monitor, no way to support more than one job catcher component, also that is not necessary
|
||||
final String subprocessName4Catcher = logstashCurrent ? jobCatcherNodes.get(0).getDesignSubjobStartNode().getUniqueName() : null;
|
||||
|
||||
if(logstashCurrent) {
|
||||
String currentLabel = ElementParameterParser.getValue(node, "__LABEL__");
|
||||
if(currentLabel==null || "".equals(currentLabel) || "__UNIQUE_NAME__".equals(currentLabel) || cid.endsWith(NodeUtil.getLabel(node))) {
|
||||
//not generate the unnecessary statement if label is default one
|
||||
} else {
|
||||
%>
|
||||
cLabel="<%=NodeUtil.getLabel(node)%>";
|
||||
<%
|
||||
}
|
||||
}
|
||||
|
||||
if ((codePart.equals(ECodePart.BEGIN))&&(stat || logstashCurrent)&&connSet.size()>0) {
|
||||
if(containsTPartitioner) {
|
||||
%>
|
||||
@@ -197,11 +208,12 @@
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
%>
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>"
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>"
|
||||
<%}%>
|
||||
)) {
|
||||
<%=subprocessName4Catcher %>Process(globalMap);
|
||||
@@ -230,11 +242,12 @@
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
%>
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>"
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>"
|
||||
<%}%>
|
||||
)) {
|
||||
<%=subprocessName4Catcher %>Process(globalMap);
|
||||
@@ -254,12 +267,13 @@
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
|
||||
if(con.getUniqueName().equals((String)codeGenArgument.getIncomingName())){%>
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>"
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>"
|
||||
<%}
|
||||
}%>
|
||||
)) {
|
||||
@@ -287,12 +301,13 @@
|
||||
String sourceNodeId = source.getUniqueName();
|
||||
|
||||
String sourceNodeLabel = NodeUtil.getLabel(source);
|
||||
|
||||
String targetNodeLabel = NodeUtil.getLabel(node);
|
||||
|
||||
String sourceNodeComponent = source.getComponent().getName();
|
||||
|
||||
if(con.getUniqueName().equals((String)codeGenArgument.getIncomingName())){%>
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>",<%=sourceNodeLabel%>,"<%=sourceNodeComponent%>","<%=node.getUniqueName()%>",<%=targetNodeLabel%>,"<%=node.getComponent().getName()%>"
|
||||
,"<%=con.getUniqueName()%>","<%=sourceNodeId%>","<%=sourceNodeLabel%>","<%=sourceNodeComponent%>","<%=node.getUniqueName()%>","<%=targetNodeLabel%>","<%=node.getComponent().getName()%>"
|
||||
<%}
|
||||
}%>
|
||||
)) {
|
||||
@@ -425,7 +440,7 @@
|
||||
String nodeLabel = NodeUtil.getLabel(node);
|
||||
%>
|
||||
if(enableLogStash) {
|
||||
<%=jobStructureCatcher.getUniqueName() %>.addCM("<%=node.getUniqueName()%>", <%=nodeLabel%>, "<%=node.getComponent().getName()%>");
|
||||
<%=jobStructureCatcher.getUniqueName() %>.addCM("<%=node.getUniqueName()%>", "<%=nodeLabel%>", "<%=node.getComponent().getName()%>");
|
||||
<%=jobStructureCatcher.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
|
||||
}
|
||||
<%
|
||||
|
||||
@@ -223,7 +223,7 @@
|
||||
public boolean useDatastax(INode node){
|
||||
String dbVersion = ElementParameterParser.getValue(node, "__DB_VERSION__");
|
||||
String apiType = ElementParameterParser.getValue(node, "__API_TYPE__");
|
||||
return "CASSANDRA_2_2".equals(dbVersion) || "CASSANDRA_3_0".equals(dbVersion) || ("CASSANDRA_2_0_0".equals(dbVersion) && "DATASTAX".equals(apiType));
|
||||
return "CASSANDRA_2_2".equals(dbVersion) || "CASSANDRA_3_0".equals(dbVersion) || "CASSANDRA_4_0".equals(dbVersion) || ("CASSANDRA_2_0_0".equals(dbVersion) && "DATASTAX".equals(apiType));
|
||||
}
|
||||
}
|
||||
%>
|
||||
@@ -514,17 +514,35 @@
|
||||
}
|
||||
org.apache.logging.log4j.core.config.Configurator.setLevel(org.apache.logging.log4j.LogManager.getRootLogger().getName(), log.getLevel());
|
||||
<%}%>
|
||||
}
|
||||
log.info("TalendJob: '<%=codeGenArgument.getJobName()%>' - Start.");
|
||||
<%}%>
|
||||
|
||||
<%
|
||||
INode jobCatcherNode = null;
|
||||
}
|
||||
log.info("TalendJob: '<%=codeGenArgument.getJobName()%>' - Start.");
|
||||
<%}%>
|
||||
|
||||
<%
|
||||
INode jobCatcherNode = null;
|
||||
|
||||
int threadPoolSize = 0;
|
||||
boolean tRESTRequestLoopExists = false;
|
||||
for (INode nodeInProcess : process.getGeneratingNodes()) {
|
||||
String componentName = nodeInProcess.getComponent().getName();
|
||||
if("tJobStructureCatcher".equals(componentName)) {
|
||||
|
||||
if(jobCatcherNode==null && "tJobStructureCatcher".equals(componentName)) {
|
||||
jobCatcherNode = nodeInProcess;
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!nodeInProcess.isActivate()) continue;
|
||||
|
||||
if("tRESTRequestLoop".equals(componentName)) {
|
||||
tRESTRequestLoopExists = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if("tWriteXMLFieldOut".equals(componentName)) {
|
||||
IConnection nextMergeConn = NodeUtil.getNextMergeConnection(nodeInProcess);
|
||||
if(nextMergeConn == null || nextMergeConn.getInputId()==1){
|
||||
threadPoolSize++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -651,15 +669,15 @@
|
||||
%>
|
||||
boolean inOSGi = routines.system.BundleUtils.inOSGi();
|
||||
|
||||
if (inOSGi) {
|
||||
java.util.Dictionary<String, Object> jobProperties = routines.system.BundleUtils.getJobProperties(jobName);
|
||||
|
||||
if (jobProperties != null && jobProperties.get("context") != null) {
|
||||
contextStr = (String)jobProperties.get("context");
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
java.util.Dictionary<String, Object> jobProperties = null;
|
||||
if (inOSGi) {
|
||||
jobProperties = routines.system.BundleUtils.getJobProperties(jobName);
|
||||
|
||||
if (jobProperties != null && jobProperties.get("context") != null) {
|
||||
contextStr = (String)jobProperties.get("context");
|
||||
}
|
||||
}
|
||||
//call job/subjob with an existing context, like: --context=production. if without this parameter, there will use the default context instead.
|
||||
java.io.InputStream inContext = <%=className%>.class.getClassLoader().getResourceAsStream("<%=jobClassPackageFolder%>/contexts/" + contextStr + ".properties");
|
||||
if (inContext == null) {
|
||||
@@ -669,8 +687,17 @@
|
||||
try {
|
||||
//defaultProps is in order to keep the original context value
|
||||
if(context != null && context.isEmpty()) {
|
||||
defaultProps.load(inContext);
|
||||
context = new ContextProperties(defaultProps);
|
||||
defaultProps.load(inContext);
|
||||
if (inOSGi && jobProperties != null) {
|
||||
java.util.Enumeration<String> keys = jobProperties.keys();
|
||||
while (keys.hasMoreElements()) {
|
||||
String propKey = keys.nextElement();
|
||||
if (defaultProps.containsKey(propKey)) {
|
||||
defaultProps.put(propKey, (String) jobProperties.get(propKey));
|
||||
}
|
||||
}
|
||||
}
|
||||
context = new ContextProperties(defaultProps);
|
||||
}
|
||||
} finally {
|
||||
inContext.close();
|
||||
@@ -1189,6 +1216,26 @@ this.globalResumeTicket = true;//to run tPostJob
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
<%
|
||||
}
|
||||
|
||||
//tRESTRequest may appear in microservice, the code may be called before call submit(task) method, so can't shutdown it here
|
||||
if(!tRESTRequestLoopExists && threadPoolSize>0) {
|
||||
%>
|
||||
es.shutdown();
|
||||
<%//shutdownNow should never be executed, only for safe%>
|
||||
try {
|
||||
if(!es.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS)) {
|
||||
es.shutdownNow();
|
||||
if(!es.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS)) {
|
||||
|
||||
}
|
||||
}
|
||||
} catch (java.lang.InterruptedException ie) {
|
||||
es.shutdownNow();
|
||||
} catch (java.lang.Exception e) {
|
||||
|
||||
}
|
||||
<%
|
||||
}
|
||||
%>
|
||||
@@ -1360,16 +1407,27 @@ if (execStat) {
|
||||
Object obj_cluster;
|
||||
Object obj_conn;
|
||||
<% for (INode cassandraDbNode : cassandraComponentsList) {
|
||||
if((new API_selector()).useDatastax(cassandraDbNode)) { %>
|
||||
obj_cluster = globalMap.remove("cluster_<%=cassandraDbNode.getUniqueName()%>");
|
||||
obj_conn = globalMap.remove("connection_<%=cassandraDbNode.getUniqueName()%>");
|
||||
if(obj_conn != null) {
|
||||
((com.datastax.driver.core.Session) obj_conn).close();
|
||||
}
|
||||
if(obj_cluster != null) {
|
||||
((com.datastax.driver.core.Cluster) obj_cluster).close();
|
||||
}
|
||||
<% } else { %>
|
||||
String dbVersionCassandra = ElementParameterParser.getValue(cassandraDbNode, "__DB_VERSION__");
|
||||
if((new API_selector()).useDatastax(cassandraDbNode)) {
|
||||
if("CASSANDRA_4_0".equals(dbVersionCassandra)) {
|
||||
%>
|
||||
obj_conn = globalMap.remove("connection_<%=cassandraDbNode.getUniqueName()%>");if(obj_conn != null) {
|
||||
((com.datastax.oss.driver.api.core.CqlSession) obj_conn).close();
|
||||
}
|
||||
<%
|
||||
} else {
|
||||
%>
|
||||
obj_cluster = globalMap.remove("cluster_<%=cassandraDbNode.getUniqueName()%>");
|
||||
obj_conn = globalMap.remove("connection_<%=cassandraDbNode.getUniqueName()%>");
|
||||
if(obj_conn != null) {
|
||||
((com.datastax.driver.core.Session) obj_conn).close();
|
||||
}
|
||||
if(obj_cluster != null) {
|
||||
((com.datastax.driver.core.Cluster) obj_cluster).close();
|
||||
}
|
||||
<%
|
||||
}
|
||||
} else { %>
|
||||
obj_conn = globalMap.remove("cluster_<%=cassandraDbNode.getUniqueName()%>");
|
||||
if(obj_conn!=null) {
|
||||
((me.prettyprint.hector.api.Cluster) obj_conn).getConnectionManager().shutdown();
|
||||
|
||||
@@ -170,16 +170,8 @@ class IndexedRecordToRowStructGenerator {
|
||||
if (columnName.equals(dynamicColName)) {
|
||||
%>
|
||||
java.util.Map<String, Object> dynamicValue_<%=cid%> = (java.util.Map<String, Object>) <%=codeVarSchemaEnforcer%>.get(<%=i%>);
|
||||
org.apache.avro.Schema dynSchema_<%=cid%> = ((org.talend.codegen.enforcer.OutgoingDynamicSchemaEnforcer) <%=codeVarSchemaEnforcer%>).getDynamicFieldsSchema();
|
||||
for (org.apache.avro.Schema.Field dynamicField_<%=cid%> : dynSchema_<%=cid%>.getFields()){
|
||||
String name = dynamicField_<%=cid%>.name();
|
||||
if("true".equals(dynamicField_<%=cid%>.getProp("ENABLE_SPECIAL_TABLENAME"))){
|
||||
dynamicValue_<%=cid%>.put(dynamicField_<%=cid%>.getProp("talend.field.dbColumnName"), dynamicValue_<%=cid%>.get(name));
|
||||
dynamicValue_<%=cid%>.remove(name);
|
||||
}
|
||||
}
|
||||
for (java.util.Map.Entry<String, Object> dynamicValueEntry_<%=cid%> : dynamicValue_<%=cid%>.entrySet()) {
|
||||
<%=codeVarDynamic%>.setColumnValue(<%=codeVarDynamic%>.getIndex(dynamicValueEntry_<%=cid%>.getKey()), dynamicValueEntry_<%=cid%>.getValue());
|
||||
<%=codeVarDynamic%>.addColumnValue(dynamicValueEntry_<%=cid%>.getValue());
|
||||
}
|
||||
<%=codeVarRowStruct%>.<%=dynamicColName%> = <%=codeVarDynamic%>;
|
||||
<%
|
||||
|
||||
@@ -343,6 +343,10 @@ public <%=JavaTypesManager.getTypeToGenerate(ctxParam.getType(),true)%> get<%=Ch
|
||||
public Integer errorCode = null;
|
||||
private String currentComponent = "";
|
||||
<%
|
||||
// is necessary? avoid some compiler issue as var name not found? TODO consider remove it, also the currentComponent above
|
||||
%>
|
||||
private String cLabel = null;
|
||||
<%
|
||||
//tParallelize will wrap globalMap with synchronizedMap
|
||||
if(isRunInMultiThread || NodeUtil.containsMultiThreadComponent(process)){
|
||||
%>
|
||||
@@ -385,11 +389,101 @@ public <%=JavaTypesManager.getTypeToGenerate(ctxParam.getType(),true)%> get<%=Ch
|
||||
|
||||
<%
|
||||
INode jobCatcherNode = null;
|
||||
|
||||
//one matched component or part, one thread
|
||||
//why not computed by cpu or resource : please image this case :
|
||||
//loop==>(input==>(twritexmlfield A)==>(twritexmlfield B)==>(twritexmlfield C)==>output), dead lock as cycle dependency and only one thead in thread pool
|
||||
//maybe newCachedThreadPool is a better idea, but that have risk for creating more threads, then more memory for TDI-47230
|
||||
//why not generate thread pool object in subprocess scope :
|
||||
// 1: major reason : difficult to control the var scope, somewhere can't access it, then compiler issue
|
||||
// 2: we may need this thread pool for bigger scope, not only for twritexmlfield/twritejsonfield in future
|
||||
// 3: we don't suppose this thread pool cost big resource after all tasks done, so we can shutdown it more later,
|
||||
// for example, most time, user will use less than 3 twritexmlfield in one job, then 3 threads thread pool, we can close them in job finish code part,
|
||||
// not a big cost to keep that. And of course, we best to start&clean it in subprocess finish, but that's risk of 1 above.
|
||||
int threadPoolSize = 0;
|
||||
boolean tHMapExists = false;
|
||||
boolean tHMapOutExists = false;
|
||||
boolean tRESTRequestLoopExists = false;
|
||||
for (INode nodeInProcess : processNodes) {
|
||||
String componentName = nodeInProcess.getComponent().getName();
|
||||
if("tJobStructureCatcher".equals(componentName)) {
|
||||
|
||||
if(jobCatcherNode==null && "tJobStructureCatcher".equals(componentName)) {
|
||||
jobCatcherNode = nodeInProcess;
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!nodeInProcess.isActivate()) continue;
|
||||
|
||||
if("tHMap".equals(componentName)) {
|
||||
tHMapExists = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if("tHMapOut".equals(componentName)) {
|
||||
tHMapOutExists = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if("tRESTRequestLoop".equals(componentName)) {
|
||||
tRESTRequestLoopExists = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if("tWriteXMLFieldOut".equals(componentName)) {
|
||||
IConnection nextMergeConn = NodeUtil.getNextMergeConnection(nodeInProcess);
|
||||
if(nextMergeConn == null || nextMergeConn.getInputId()==1){
|
||||
threadPoolSize++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(threadPoolSize>0) {
|
||||
if(tRESTRequestLoopExists) {//miscroservice
|
||||
%>
|
||||
private class DaemonThreadFactory implements java.util.concurrent.ThreadFactory {
|
||||
java.util.concurrent.ThreadFactory factory = java.util.concurrent.Executors.defaultThreadFactory();
|
||||
|
||||
public java.lang.Thread newThread(java.lang.Runnable r) {
|
||||
java.lang.Thread t = factory.newThread(r);
|
||||
t.setDaemon(true);
|
||||
return t;
|
||||
}
|
||||
}
|
||||
<%
|
||||
}
|
||||
|
||||
if(tHMapExists || tHMapOutExists) {
|
||||
%>
|
||||
private final java.util.concurrent.ExecutorService es = java.util.concurrent.Executors.newFixedThreadPool(<%=threadPoolSize%> <%if(tRESTRequestLoopExists) {%>,new DaemonThreadFactory()<%}%>);
|
||||
<%
|
||||
} else {
|
||||
%>
|
||||
private final java.util.concurrent.ExecutorService es = java.util.concurrent.Executors.newCachedThreadPool(<%if(tRESTRequestLoopExists) {%>new DaemonThreadFactory()<%}%>);
|
||||
<%
|
||||
}
|
||||
|
||||
if(tRESTRequestLoopExists) {//miscroservice
|
||||
%>
|
||||
{
|
||||
java.lang.Runtime.getRuntime().addShutdownHook(new java.lang.Thread() {
|
||||
public void run() {
|
||||
es.shutdown();
|
||||
try {
|
||||
if(!es.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS)) {
|
||||
es.shutdownNow();
|
||||
if(!es.awaitTermination(60, java.util.concurrent.TimeUnit.SECONDS)) {
|
||||
|
||||
}
|
||||
}
|
||||
} catch (java.lang.InterruptedException ie) {
|
||||
es.shutdownNow();
|
||||
} catch (java.lang.Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
<%
|
||||
}
|
||||
}
|
||||
|
||||
@@ -507,7 +601,10 @@ private class TalendException extends Exception {
|
||||
|
||||
private java.util.Map<String, Object> globalMap = null;
|
||||
private Exception e = null;
|
||||
|
||||
private String currentComponent = null;
|
||||
private String cLabel = null;
|
||||
|
||||
private String virtualComponentName = null;
|
||||
|
||||
public void setVirtualComponentName (String virtualComponentName){
|
||||
@@ -519,6 +616,11 @@ private class TalendException extends Exception {
|
||||
this.globalMap = globalMap;
|
||||
this.e = e;
|
||||
}
|
||||
|
||||
private TalendException(Exception e, String errorComponent, String errorComponentLabel, final java.util.Map<String, Object> globalMap) {
|
||||
this(e, errorComponent, globalMap);
|
||||
this.cLabel = errorComponentLabel;
|
||||
}
|
||||
|
||||
public Exception getException() {
|
||||
return this.e;
|
||||
@@ -578,6 +680,15 @@ private class TalendException extends Exception {
|
||||
<%
|
||||
boolean needCatchTalendException = false;
|
||||
|
||||
if(enableLogStash) {
|
||||
%>
|
||||
if(enableLogStash) {
|
||||
<%=jobCatcherNode.getUniqueName() %>.addJobExceptionMessage(currentComponent, cLabel, null, e);
|
||||
<%=jobCatcherNode.getDesignSubjobStartNode().getUniqueName() %>Process(globalMap);
|
||||
}
|
||||
<%
|
||||
}
|
||||
|
||||
if (process.getNodesOfType("tLogCatcher").size() > 0) {
|
||||
List<INode> logCatchers = (List<INode>)process.getNodesOfType("tLogCatcher");
|
||||
for (INode logCatcher : logCatchers) {
|
||||
@@ -588,7 +699,7 @@ private class TalendException extends Exception {
|
||||
<%
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INode virtualNCatchNode = null;
|
||||
boolean hasRealCatchNode = false;
|
||||
for (INode logCatcher : logCatchers) {
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
TalendException te = new TalendException(e, currentComponent, globalMap);
|
||||
TalendException te = new TalendException(e, currentComponent, cLabel, globalMap);
|
||||
<%
|
||||
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
|
||||
%>
|
||||
|
||||
@@ -200,6 +200,7 @@ for (IConnection iterateConn : iterateConnSet) { //1
|
||||
|
||||
this.isRunning = true;
|
||||
String currentComponent = "";
|
||||
String cLabel = null;
|
||||
java.util.Map<String, Object> resourceMap = new java.util.HashMap<String, Object>();
|
||||
<%
|
||||
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
this.errorCode = localErrorCode;
|
||||
}
|
||||
}
|
||||
pool.setErrorThread(this, new TalendException(e, currentComponent, globalMap));
|
||||
pool.setErrorThread(this, new TalendException(e, currentComponent, cLabel, globalMap));
|
||||
//pool.setErrorThread(this,e);
|
||||
pool.stopAllThreads();
|
||||
}finally{
|
||||
@@ -117,7 +117,7 @@
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (java.lang.Exception te) {
|
||||
throw new TalendException(te, currentComponent, globalMap);
|
||||
throw new TalendException(te, currentComponent, cLabel, globalMap);
|
||||
}
|
||||
<%
|
||||
}else{
|
||||
@@ -228,7 +228,7 @@
|
||||
<%
|
||||
}
|
||||
%>
|
||||
TalendException te = new TalendException(e, currentComponent, globalMap);
|
||||
TalendException te = new TalendException(e, currentComponent, cLabel, globalMap);
|
||||
<%
|
||||
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
|
||||
%>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
org.talend.core.model.process.IHashConfiguration
|
||||
org.talend.core.model.process.IHashableColumn
|
||||
org.talend.core.model.utils.NodeUtil
|
||||
org.talend.core.model.utils.TalendTextUtils
|
||||
"
|
||||
class="SubProcessHeader"
|
||||
skeleton="subprocess_header_java.skeleton"
|
||||
@@ -183,6 +184,48 @@ public static class <%=conn.getName() %>Struct<%=templateOrigin %> implements ro
|
||||
public <%= typeToGenerate %> get<%=column.getLabel().substring(0, 1).toUpperCase()%><%=column.getLabel().substring(1)%> () {
|
||||
return this.<%=column.getLabel()%>;
|
||||
}
|
||||
|
||||
public Boolean <%=column.getLabel()%>IsNullable(){
|
||||
return <%=column.isNullable()%>;
|
||||
}
|
||||
public Boolean <%=column.getLabel()%>IsKey(){
|
||||
return <%=column.isKey()%>;
|
||||
}
|
||||
public Integer <%=column.getLabel()%>Length(){
|
||||
return <%=column.getLength()%>;
|
||||
}
|
||||
public Integer <%=column.getLabel()%>Precision(){
|
||||
return <%=column.getPrecision()%>;
|
||||
}
|
||||
public String <%=column.getLabel()%>Default(){
|
||||
<% if (column.getDefault() == null) { %>
|
||||
return null;
|
||||
<% } else { %>
|
||||
return "<%=TalendTextUtils.escapeJavaText(TalendTextUtils.removeQuotes(column.getDefault()))%>";
|
||||
<% } %>
|
||||
}
|
||||
public String <%=column.getLabel()%>Comment(){
|
||||
<% if (column.getComment() == null) { %>
|
||||
return null;
|
||||
<% } else { %>
|
||||
return "<%=TalendTextUtils.escapeJavaText(TalendTextUtils.removeQuotes(column.getComment()))%>";
|
||||
<% } %>
|
||||
}
|
||||
public String <%=column.getLabel()%>Pattern(){
|
||||
<% if (column.getPattern() == null) { %>
|
||||
return null;
|
||||
<% } else { %>
|
||||
return "<%=TalendTextUtils.escapeJavaText(TalendTextUtils.removeQuotes(column.getPattern()))%>";
|
||||
<% } %>
|
||||
}
|
||||
public String <%=column.getLabel()%>OriginalDbColumnName(){
|
||||
<% if (column.getOriginalDbColumnName() == null) { %>
|
||||
return null;
|
||||
<% } else { %>
|
||||
return "<%=TalendTextUtils.escapeJavaText(TalendTextUtils.removeQuotes(column.getOriginalDbColumnName()))%>";
|
||||
<% } %>
|
||||
}
|
||||
|
||||
<%
|
||||
if((conn.getLineStyle() == EConnectionType.FLOW_REF) && conn.getTarget().getUniqueName().startsWith("tXMLMap") && "id_Document".equals(javaType.getId())) {
|
||||
%>
|
||||
@@ -1598,6 +1641,7 @@ public void <%=subTree.getName() %>Process(final java.util.Map<String, Object> g
|
||||
|
||||
this.isRunning = true;
|
||||
String currentComponent = "";
|
||||
String cLabel = null;
|
||||
<%
|
||||
if(NodeUtil.hasVirtualComponent(subTree.getNodes())){
|
||||
%>
|
||||
@@ -1631,6 +1675,7 @@ public void <%=subTree.getName() %>Process(final java.util.Map<String, Object> g
|
||||
int iterateLoop = 0;
|
||||
<%}%>
|
||||
String currentComponent = "";
|
||||
String cLabel = null;
|
||||
java.util.Map<String, Object> resourceMap = new java.util.HashMap<String, Object>();
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
providerName=www.example.org
|
||||
pluginName=EmittersPool Model
|
||||
components=Components
|
||||
trunjob=tRunJob
|
||||
format=Format
|
||||
@@ -10,6 +10,7 @@ CodeGenerator.getGraphicalNode2=------process.getGeneratingNodes()------
|
||||
CodeGenerator.JET.TimeOut=JET initialisation Time Out
|
||||
CodeGenerator.newLine=\n\n\n\n
|
||||
CodeGenerator.Node.NotFound=Node not found in current process
|
||||
CodeGenerator.Components.NotFound={0}: Component is missing: {1}; use -D{2}=false in your studio or commandline to skip this check, and a warning message will be logged.
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=method not implemented: org.talend.designer.codegen.JavaRoutineSynchronizer line:49
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=method not implemented: org.talend.designer.codegen.JavaRoutineSynchronizer line:58
|
||||
JetSkeletonManager.unableLoad=unable to load skeleton update cache file
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=method not implemented: org.talend.designer.codegen.JavaRoutineSynchronizer line:49
|
||||
CodeGeneratorEmittersPoolFactory.JETEmitters.NoPresent=JETEmitters Project not present, full reinitialize is needed
|
||||
generatedcode.footerprocess.nbcharsgenerated={0} characters generated by {1}
|
||||
CodeGeneratorEmittersPoolFactory.Class.NotFound=Template still present, but class {0} has disapeared from workspace. This unit needs to be recompiled.
|
||||
CodeGeneratorEmittersPoolFactory.PersitentData.Error=Persitent data cannot be saved :
|
||||
generatedcode.copyright.title=Copyright (c) 2005-2011, Talend Inc.
|
||||
CodeGeneratorEmittersPoolFactory.initMessage=Generation Engine Initialization in progress...
|
||||
generatedcode.copyright.body5=(http://www.gnu.org/licenses/lgpl.html).
|
||||
EmfEmittersPersistence.CodeGen.DataMissing=Missing code generation data. Starting full code generation.
|
||||
CodeGenerator.JET.TimeOut=JET initialisation Time Out
|
||||
generatedcode.copyright.body4=You may distribute this code under the terms of the GNU LGPL license
|
||||
CodeGenerator.Node.NotFound=Node not found in current process
|
||||
generatedcode.copyright.body3=You can find more information about Talend products at www.talend.com.
|
||||
EmittersPoolFactoryImpl.Class.IllegalArg=The class ' {0}' is not a valid classifier
|
||||
generatedcode.copyright.body2=/ JobDesigner (CodeGenerator version {0}).
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=method not implemented: org.talend.designer.codegen.JavaRoutineSynchronizer line:58
|
||||
CodeGenerator.getGraphicalNode1=------process.getGraphicalNodes()------
|
||||
CodeGenerator.getGraphicalNode2=------process.getGeneratingNodes()------
|
||||
CodeGenerator.newLine=\n\n\n\n
|
||||
JetSkeletonManager.unableLoad=unable to load skeleton update cache file
|
||||
JetSkeletonManager.unableSave=unable to save skeleton update cache file
|
||||
JetSkeletonManager.updateProblem=when update skeleton persistence data, there have some problems
|
||||
CodeGeneratorEmittersPoolFactory.codeThread=Code generation background thread
|
||||
CodeGeneratorEmittersPoolFactory.componentCompiled=Components compiled in {0} ms
|
||||
CodeGeneratorEmittersPoolFactory.failCompail=Components compile fail : \r\n
|
||||
CodeGeneratorEmittersPoolFactory.initialException=Exception during Initialization
|
||||
CodeGeneratorEmittersPoolFactory.jetEmitterInitialException=Error during JetEmitter initalization
|
||||
CodeGeneratorService.invalidLanguage1=invalid language type.
|
||||
CodeGeneratorService.invalidLanguage2=invalid language type.
|
||||
CodeGenInit.addMarkers=Adding markers to workspace
|
||||
CodeGenInit.createProject=create {0} project
|
||||
CodeGenInit.deleteProject=delete {0} project
|
||||
CodeGenInit.initTemplate=init Templates
|
||||
CodeGenInit.removeLink=Remove linked resources
|
||||
CodeGenInit.saveWorkspace=Saving workspace
|
||||
DocumentRootImpl.mixed=\ (mixed:
|
||||
NodesSubTree.enableParallel=__ENABLE_PARALLEL__
|
||||
PoolTypeImpl.persistentPool= \ (persistentPool:
|
||||
TalendJetEmitter.compileFail=\ compile fail : {0} : {1}
|
||||
TalendJetEmitter.exception=Exception on
|
||||
JetFilesProviderManager.unableLoad=Unable to load {0}JetFilesProviderManager.unableLoad
|
||||
CodeGeneratorEmittersPoolFactory.dialogContent=JetEmitter Generation is canceled,to avoid problems cause by this, please press Ctrl+Shift+F3 to generate again\!
|
||||
CodeGeneratorEmittersPoolFactory.operationCanceled=Operation Canceled
|
||||
ComponentsFactory.afterSystemComponent=after system component
|
||||
ComponentsFactory.componentNotFound=Component folder not found\:
|
||||
ComponentsFactory.load.components=Load Components...
|
||||
ComponentsFactory.parentNotRecompiled=Warning\: parents of *.inc.javajet are not recompiled \!
|
||||
ComponentsLocalProviderService.componentLoadError=Component load error
|
||||
ComponentsLocalProviderService.talendExchangeError=Talend Exchange Error
|
||||
ComponentsPreferencePage.ButtonLabel0=Ok
|
||||
ComponentsPreferencePage.configuration.LINK_STYLE=Default mapping links display as :
|
||||
ComponentsPreferencePage.rowLimit=Row limit
|
||||
ComponentsPreferencePage.WarningMsg=You need to restart Talend Open Studio to load extra components.
|
||||
ComponentsPreferencePage.WarningTitle=Warning
|
||||
ComponentsPreferencePage.directoryFieldLabel=User component folder\:
|
||||
ComponentsProviderManager.unableLoad=unable to load component provider
|
||||
ComponenttRunJobPreferencePage.label=Don't show corresponding job after double click on a tRunJob Component.
|
||||
ComponentJobletPreferencePage.label=Don't show corresponding job after double click on a Joblet Component.
|
||||
ComponenttRunJobPreferencePage.showCorrespondingJob=Show corresponding job after double click on a tRunJob Component.
|
||||
XsdValidationCacheManager.unableLoadxsd=unable to load xsd validation cache file
|
||||
XsdValidationCacheManager.unableSavexsd=unable to save xsd validation cache file
|
||||
prefs.configuration.LINK_STYLE.AUTO=Auto
|
||||
prefs.configuration.LINK_STYLE.BEZIER_CURVE=Curves
|
||||
prefs.configuration.LINK_STYLE.LINE=Lines (fast)
|
||||
FAMILY.AS400=AS400
|
||||
FAMILY.Access=Access
|
||||
FAMILY.Alfresco=Alfresco
|
||||
FAMILY.Business=Business
|
||||
FAMILY.Business_Intelligence=Business Intelligence
|
||||
FAMILY.CentricCRM=CentricCRM
|
||||
FAMILY.Charts=Charts
|
||||
FAMILY.Connections=Connections
|
||||
FAMILY.Custom_Code=Custom Code
|
||||
FAMILY.DB2=DB2
|
||||
FAMILY.DB_Generic=DB Generic
|
||||
FAMILY.DB_JDBC=DB JDBC
|
||||
FAMILY.DB_SCD=DB SCD
|
||||
FAMILY.Data_Quality=Data Quality
|
||||
FAMILY.Databases=Databases
|
||||
FAMILY.ELT=ELT
|
||||
FAMILY.ESB=ESB
|
||||
FAMILY.EXASolution=EXASolution
|
||||
FAMILY.eXist=eXist
|
||||
FAMILY.FTP=FTP
|
||||
FAMILY.Fields=Fields
|
||||
FAMILY.File=File
|
||||
FAMILY.FireBird=FireBird
|
||||
FAMILY.Greenplum=Greenplum
|
||||
FAMILY.HSQLDb=HSQLDb
|
||||
FAMILY.Healthcare=Healthcare
|
||||
FAMILY.Hive=Hive
|
||||
FAMILY.Informix=Informix
|
||||
FAMILY.Ingres=Ingres
|
||||
FAMILY.Input=Input
|
||||
FAMILY.Interbase=Interbase
|
||||
FAMILY.Internet=Internet
|
||||
FAMILY.Jasper=Jasper
|
||||
FAMILY.JavaDB=JavaDB
|
||||
FAMILY.JDBC=JDBC
|
||||
FAMILY.LDAP=LDAP
|
||||
FAMILY.Logs_Errors=Logs & Errors
|
||||
FAMILY.MS_SQL_Server=MS SQL Server
|
||||
FAMILY.MSSql=MSSql
|
||||
FAMILY.Management=Management
|
||||
FAMILY.MaxDB=MaxDB
|
||||
FAMILY.Microsoft_AX=Microsoft AX
|
||||
FAMILY.Microsoft_CRM=Microsoft CRM
|
||||
FAMILY.Misc=Misc
|
||||
FAMILY.MySQL=MySQL
|
||||
FAMILY.Netezza=Netezza
|
||||
FAMILY.OLAP_Cube=OLAP Cube
|
||||
FAMILY.Oracle=Oracle
|
||||
FAMILY.Orchestration=Orchestration
|
||||
FAMILY.Output=Output
|
||||
FAMILY.ParAccel=ParAccel
|
||||
FAMILY.PostgreSQL=PostgreSQL
|
||||
FAMILY.PostgresPlus=PostgresPlus
|
||||
FAMILY.Processing=Processing
|
||||
FAMILY.SAP=SAP
|
||||
FAMILY.Sas=Sas
|
||||
FAMILY.SCD=SCD
|
||||
FAMILY.SCP=SCP
|
||||
FAMILY.SPSS=SPSS
|
||||
FAMILY.SQLite=SQLite
|
||||
FAMILY.Salesforce=Salesforce
|
||||
FAMILY.SugarCRM=SugarCRM
|
||||
FAMILY.Sybase=Sybase
|
||||
FAMILY.System=System
|
||||
FAMILY.Technical=Technical
|
||||
FAMILY.Teradata=Teradata
|
||||
FAMILY.Vertica=Vertica
|
||||
FAMILY.VtigerCRM=VtigerCRM
|
||||
FAMILY.XML=XML
|
||||
CodeGeneratorEmittersPoolFactory.updatePaletteForEditors=Update the palette for editors
|
||||
ComponentsPreferencePage.componentAssist=Enable Component Creation Assistant
|
||||
ComponentsPreferencePage.notValidDirectory=Your selection will result in folder nesting, which is not recommended. Do you want to continue anyway?
|
||||
ComponentsFactory.loadComponents.missingFolder=The folder "{0}" is missing in the plugin "{1}".
|
||||
ComponentsPreferencePage_SuccessTitle=Success
|
||||
ComponentsPreferencePage_SuccessMessage1=Need restart studio to load the new components. Else, will be loaded in next time when start.
|
||||
ComponentsPreferencePage_SuccessMessage2=Do you want to restart right now?
|
||||
ComponentsPreferencePage.installComponentsFailure=Install components failure
|
||||
generatedcode.copyright.body1=This source code has been automatically generated by {0}
|
||||
ComponentsFactory.init.waitForFinish.timeout=Can't initialise ComponentsFactory, please try again.
|
||||
FAMILY.Data_Privacy=Data Privacy
|
||||
ComponentsPreferencePage.enableOnLineHelp=Enable online help for components
|
||||
ComponentsPreferencePage.titleInstallHelp=Install offline help feature?
|
||||
ComponentsPreferencePage.msgInstallHelp=This will open additional packages dialog to install offline help feature, do you want to continue?
|
||||
ComponentsPreferencePage.grpHelp=Help
|
||||
@@ -10,6 +10,7 @@ CodeGenerator.getGraphicalNode2=------process.getGeneratingNodes()------
|
||||
CodeGenerator.JET.TimeOut=D\u00E9lai d'initialisation JET d\u00E9pass\u00E9
|
||||
CodeGenerator.newLine=\n\n\n\n
|
||||
CodeGenerator.Node.NotFound=N\u0153ud introuvable dans le processus courant
|
||||
CodeGenerator.Components.NotFound={0}\u00A0: Le composant est manquant\u00A0: {1}; utilisez -D{2}=false dans votre Studio ou CommandLine pour ignorer cette v\u00E9rification. Un message d'avertissement sera enregistr\u00E9 dans les logs.
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=M\u00E9thode non impl\u00E9ment\u00E9e : org.talend.designer.codegen.JavaRoutineSynchronizer line:49
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=M\u00E9thode non impl\u00E9ment\u00E9e : org.talend.designer.codegen.JavaRoutineSynchronizer line:58
|
||||
JetSkeletonManager.unableLoad=Impossible de charger le fichier de cache de la mise \u00E0 jour du squelette
|
||||
|
||||
@@ -10,11 +10,12 @@ CodeGenerator.getGraphicalNode2=------process.getGeneratingNodes()------
|
||||
CodeGenerator.JET.TimeOut=JET\u306E\u521D\u671F\u5316\u51E6\u7406\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F
|
||||
CodeGenerator.newLine=\n\n\n\n
|
||||
CodeGenerator.Node.NotFound=\u73FE\u5728\u306E\u30D7\u30ED\u30BB\u30B9\u306B\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
|
||||
CodeGenerator.Components.NotFound={0}: \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u6B20\u843D\u3057\u3066\u3044\u307E\u3059: {1}\u3002Studio\u3067 -D{2}=false\u3092\u4F7F\u3046\u3068\u3053\u306E\u30C1\u30A7\u30C3\u30AF\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u3001\u8B66\u544A\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u30ED\u30B0\u30D5\u30A1\u30A4\u30EB\u306B\u8A18\u9332\u3055\u308C\u307E\u3059\u3002
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=\u30E1\u30BD\u30C3\u30C9\u304C\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\\: org.talend.designer.codegen.JavaRoutineSynchronizer line\\:49
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=\u30E1\u30BD\u30C3\u30C9\u304C\u5B9F\u88C5\u3055\u308C\u3066\u3044\u307E\u305B\u3093\\: org.talend.designer.codegen.JavaRoutineSynchronizer line\\:58
|
||||
JetSkeletonManager.unableLoad=\u30B9\u30B1\u30EB\u30C8\u30F3\u66F4\u65B0\u30AD\u30E3\u30C3\u30B7\u30E5\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093
|
||||
JetSkeletonManager.unableSave=\u30B9\u30B1\u30EB\u30C8\u30F3\u66F4\u65B0\u30AD\u30E3\u30C3\u30B7\u30E5\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093
|
||||
JetSkeletonManager.updateProblem=\u30B9\u30B1\u30EB\u30C8\u30F3\u6C38\u7D9A\u30C7\u30FC\u30BF\u66F4\u65B0\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F,
|
||||
JetSkeletonManager.unableLoad=\u30B9\u30B1\u30EB\u30C8\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30AD\u30E3\u30C3\u30B7\u30E5\u30D5\u30A1\u30A4\u30EB\u3092\u30ED\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093
|
||||
JetSkeletonManager.unableSave=\u30B9\u30B1\u30EB\u30C8\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30AD\u30E3\u30C3\u30B7\u30E5\u30D5\u30A1\u30A4\u30EB\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093
|
||||
JetSkeletonManager.updateProblem=\u30B9\u30B1\u30EB\u30C8\u30F3\u6C38\u7D9A\u30C7\u30FC\u30BF\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u6642\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F,
|
||||
EmfEmittersPersistence.CodeGen.DataMissing=\u30B3\u30FC\u30C9\u751F\u6210\u306E\u30C7\u30FC\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u5B8C\u5168\u306A\u30B3\u30FC\u30C9\u751F\u6210\u3092\u958B\u59CB\u3057\u3066\u3044\u307E\u3059\u3002
|
||||
CodeGeneratorEmittersPoolFactory.PersitentData.Error=\u6301\u7D9A\u30C7\u30FC\u30BF\u3092\u4FDD\u5B58\u3067\u304D\u307E\u305B\u3093:
|
||||
CodeGeneratorEmittersPoolFactory.JETEmitters.NoPresent=JETEmitter \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3001\u5168\u4F53\u306E\u518D\u521D\u671F\u5316\u304C\u5FC5\u8981\u3067\u3059\u3002
|
||||
@@ -28,7 +29,7 @@ CodeGeneratorEmittersPoolFactory.initialException=\u521D\u671F\u5316\u4E2D\u306B
|
||||
CodeGeneratorEmittersPoolFactory.initMessage=\u751F\u6210\u30A8\u30F3\u30B8\u30F3\u306E\u521D\u671F\u5316\u4E2D...
|
||||
CodeGeneratorEmittersPoolFactory.jetEmitterInitialException=JetEmitter\u306E\u521D\u671F\u5316\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
CodeGeneratorEmittersPoolFactory.operationCanceled=\u64CD\u4F5C\u306F\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F
|
||||
CodeGeneratorEmittersPoolFactory.updatePaletteForEditors=\u30D1\u30EC\u30C3\u30C8\u3092\u66F4\u65B0
|
||||
CodeGeneratorEmittersPoolFactory.updatePaletteForEditors=\u30D1\u30EC\u30C3\u30C8\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
CodeGeneratorService.invalidLanguage1=\u7121\u52B9\u306A\u8A00\u8A9E\u30BF\u30A4\u30D7\u3067\u3059\u3002
|
||||
CodeGeneratorService.invalidLanguage2=\u7121\u52B9\u306A\u8A00\u8A9E\u30BF\u30A4\u30D7\u3067\u3059\u3002
|
||||
CodeGenInit.addMarkers=\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306B\u30DE\u30FC\u30AB\u30FC\u3092\u8FFD\u52A0\u4E2D
|
||||
@@ -65,7 +66,7 @@ ComponenttRunJobPreferencePage.label=tRunJob\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3
|
||||
ComponentJobletPreferencePage.label=Joblet\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30C0\u30D6\u30EB\u30AF\u30EA\u30C3\u30AF\u5F8C\u3001\u5BFE\u5FDC\u30B8\u30E7\u30D6\u3092\u8868\u793A\u3057\u306A\u3044\u3002
|
||||
ComponentsPreferencePage_SuccessTitle=\u6210\u529F
|
||||
ComponentsPreferencePage_SuccessMessage1=\u65B0\u898F\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30ED\u30FC\u30C9\u3059\u308B\u305F\u3081\u306B\u306F\u3001Studio\u3092\u518D\u8D77\u52D5\u3057\u307E\u3059\u3002\u307E\u305F\u306F\u6B21\u56DE\u306E\u958B\u59CB\u6642\u306B\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3059\u3002
|
||||
ComponentsPreferencePage_SuccessMessage2=\u518D\u8D77\u52D5\u3057\u307E\u3059\u304B\uFF1F
|
||||
ComponentsPreferencePage_SuccessMessage2=\u518D\u8D77\u52D5\u3057\u307E\u3059\u304B?
|
||||
ComponentsPreferencePage.enableOnLineHelp=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30AA\u30F3\u30E9\u30A4\u30F3\u30D8\u30EB\u30D7\u3092\u6709\u52B9\u5316
|
||||
ComponentsPreferencePage.titleInstallHelp=\u30AA\u30D5\u30E9\u30A4\u30F3\u30D8\u30EB\u30D7\u6A5F\u80FD\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B?
|
||||
ComponentsPreferencePage.msgInstallHelp=\u3053\u308C\u306B\u3088\u3063\u3066\u8FFD\u52A0\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u304C\u958B\u304D\u3001\u30AA\u30D5\u30E9\u30A4\u30F3\u30D8\u30EB\u30D7\u6A5F\u80FD\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u307E\u3059\u3002\u7D9A\u884C\u3057\u307E\u3059\u304B?
|
||||
|
||||
@@ -10,6 +10,7 @@ CodeGenerator.getGraphicalNode2=\u8FDB\u7A0B\u5F97\u5230\u751F\u6210\u8282\u70B9
|
||||
CodeGenerator.JET.TimeOut=JET \u521D\u59CB\u5316\u8D85\u65F6
|
||||
CodeGenerator.newLine=\n\n\n\n
|
||||
CodeGenerator.Node.NotFound=\u5728\u5F53\u524D
|
||||
CodeGenerator.Components.NotFound={0}: \u7EC4\u4EF6\u7F3A\u5931: {1}; \u5728 Studio \u6216\u547D\u4EE4\u884C\u4E2D\u4F7F\u7528 -D{2}=false \u53EF\u8DF3\u8FC7\u6B64\u9879\u68C0\u67E5\uFF0C\u540C\u65F6\u89E6\u53D1\u8B66\u544A\u6D88\u606F\u3002
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception1=\u65B9\u6CD5\u672A\u5B9E\u65BD\uFF1Aorg.talend.designer.codegen.JavaRoutineSynchronizer line:49
|
||||
JavaRoutineSynchronizer.UnsupportedOperation.Exception2=\u65B9\u6CD5\u672A\u5B9E\u65BD\uFF1Aorg.talend.designer.codegen.JavaRoutineSynchronizer line:58
|
||||
JetSkeletonManager.unableLoad=\u65E0\u6CD5\u52A0\u8F7D\u4E3B\u5E72\u66F4\u65B0\u7F13\u5B58\u6587\u4EF6
|
||||
|
||||
@@ -66,6 +66,7 @@ import org.talend.designer.codegen.model.CodeGeneratorEmittersPoolFactory;
|
||||
import org.talend.designer.codegen.model.CodeGeneratorInternalTemplatesFactoryProvider;
|
||||
import org.talend.designer.codegen.proxy.JetProxy;
|
||||
import org.talend.designer.core.generic.model.Component;
|
||||
import org.talend.designer.core.model.components.DummyComponent;
|
||||
import org.talend.designer.runprocess.ProcessorUtilities;
|
||||
|
||||
/**
|
||||
@@ -845,6 +846,25 @@ public class CodeGenerator implements ICodeGenerator {
|
||||
IComponentFileNaming componentFileNaming = ComponentsFactoryProvider.getFileNamingInstance();
|
||||
|
||||
IComponent component = node.getComponent();
|
||||
if (component instanceof DummyComponent) {
|
||||
if (((DummyComponent) component).isMissingComponent()) {
|
||||
String processName = "";
|
||||
try {
|
||||
IProcess proc = node.getProcess();
|
||||
processName = proc.getName() + " " + proc.getVersion();
|
||||
} catch (Exception e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
if (IProcess.ERR_ON_COMPONENT_MISSING) {
|
||||
throw new CodeGeneratorException(Messages.getString("CodeGenerator.Components.NotFound", processName,
|
||||
component.getName(), IProcess.PROP_ERR_ON_COMPONENT_MISSING));
|
||||
}
|
||||
if (ECodePart.BEGIN.equals(part)) {
|
||||
log.warn(Messages.getString("CodeGenerator.Components.NotFound", processName, component.getName(),
|
||||
IProcess.PROP_ERR_ON_COMPONENT_MISSING));
|
||||
}
|
||||
}
|
||||
}
|
||||
// some code unification to handle all component types the same way.
|
||||
String templateURI = component.getTemplateFolder() + TemplateUtil.DIR_SEP
|
||||
+ componentFileNaming.getJetFileName(component.getTemplateNamePrefix(), language.getExtension(), part);
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Exchange=Exchange
|
||||
DownloadComponenentsAction.Label=Download Selected Components
|
||||
RefreshComponenentsAction.Label=Refresh Components List
|
||||
providerName=www.example.org
|
||||
pluginName=Exchange Model
|
||||
@@ -1,101 +0,0 @@
|
||||
ExchangeView.Exchange=Exchange
|
||||
AvailableExtensionsComposite.ExtensionName=Extension Name
|
||||
AvailableExtensionsComposite.Version=Version
|
||||
AvailableExtensionsComposite.Rating=Rating
|
||||
AvailableExtensionsComposite.Author=Author
|
||||
AvailableExtensionsComposite.FilterTitle=Filter
|
||||
AvailableExtensionsComposite.ViewDetail.installOperateStatus=Install
|
||||
AvailableExtensionsComposite.ViewDetail.WriteReview=Write a review
|
||||
AvailableExtensionsComposite.ViewDetail.InsertionReviewFailure=Insertion Review failure.
|
||||
AvailableExtensionsComposite.ViewDetail.InsertionReviewFailureTip=You should check it.
|
||||
DownloadedExtensionsComposite.ExtensionName=Extension Name
|
||||
DownloadedExtensionsComposite.DownloadedVersion=Downloaded Version
|
||||
DownloadedExtensionsComposite.DownloadDate=Download Date
|
||||
DownloadedExtensionsComposite.OperateStatus=Operate Status
|
||||
DownloadedExtensionsComposite.installOperateStatus=Install
|
||||
DownloadedExtensionsComposite.installedOperateStatus=Installed
|
||||
DownloadedExtensionsComposite.updateOperateStatus=Update
|
||||
MyExtensionsComposite.ExtensionName=Extension Name
|
||||
MyExtensionsComposite.Version=Version
|
||||
MyExtensionsComposite.UploadDate=Upload Date
|
||||
MyExtensionsComposite.AddNewExtensionTitle=Add New Extension
|
||||
MyExtensionsComposite.UpLoadNewVersionOperateStatus=Upload New Version
|
||||
MyExtensionsComposite.UpdateOperateStatus=Update
|
||||
MyExtensionsComposite.ModifyOperateStatus=Modify
|
||||
MyExtensionsComposite.DeleteOperateStatus=Delete
|
||||
MyExtensionsComposite.Form.Return=Return
|
||||
MyExtensionsComposite.Form.ExtensionTitle=Extension Title
|
||||
MyExtensionsComposite.Form.InitialVersion=Initial Version
|
||||
MyExtensionsComposite.Form.Compatibility=Compatibility
|
||||
MyExtensionsComposite.Form.Compatibility.AllVersions=All versions
|
||||
MyExtensionsComposite.Form.Compatibility.Version=Version
|
||||
MyExtensionsComposite.Form.Compatibility.AndOlder=and older
|
||||
MyExtensionsComposite.Form.Compatibility.AndNewer=and newer
|
||||
MyExtensionsComposite.Form.Compatibility.AllVersionsExcept=All versions except:
|
||||
MyExtensionsComposite.Form.Compatibility.OnlyTheseVersions=Only these versions:
|
||||
MyExtensionsComposite.Form.Description=Description
|
||||
MyExtensionsComposite.Form.Visibility=Visibility
|
||||
MyExtensionsComposite.Form.Visibility.Public=Public(visible by all)
|
||||
MyExtensionsComposite.Form.Visibility.Private=Private(visible by me)
|
||||
MyExtensionsComposite.Form.Upload=Upload
|
||||
MyExtensionsComposite.Form.Upload.SelectAnItem=Select an item from the currently open project
|
||||
MyExtensionsComposite.Form.Upload.File=File:
|
||||
MyExtensionsComposite.Form.Upload.Browse=Browse...
|
||||
MyExtensionsComposite.Form.Upload.Browse.SelectFile=Select a File of the extension to upload
|
||||
MyExtensionsComposite.Form.DeleteExtensionTile=Delete Extension
|
||||
MyExtensionsComposite.Form.DeleteExtensionMessage=Are you sure you want to delete this Extension?
|
||||
MyExtensionsComposite.Form.UploadExtension=Upload Extension
|
||||
MyExtensionsComposite.Form.UpdateExtension=Update Extension
|
||||
MyExtensionsComposite.Form.ModifyExtension=Modify Extension
|
||||
RefreshJob.FindExtensions.Title=Finding available extensions
|
||||
RefreshJob.FindExtensions.Message=Finding extensions from exchange...
|
||||
ShowContributedExtensionsJob.ShowContributedExtensions.Title=Finding contributed extensions
|
||||
ShowContributedExtensionsJob.ShowContributedExtensions.Message=Finding contributed extensions from exchange...
|
||||
ShowInstalledExtensionsJob.ShowInstalledExtensions.Title=Finding installed extensions
|
||||
ShowInstalledExtensionsJob.ShowInstalledExtensions.Message=Finding installed extensions from exchange...
|
||||
DeleteExtensionJob.DeleteExtensionJob.Title=Delete an extension...
|
||||
DeleteExtensionJob.DeleteExtensionJob.Message=Delete an extension...
|
||||
DeleteExtensionJob.DeleteFailure=Delete failure.
|
||||
DeleteExtensionJob.DeleteFailureTip=You should check it.
|
||||
ModifyExtensionJob.Title=Modify an extension...
|
||||
ModifyExtensionJob.Message=Modify an extension...
|
||||
ModifyExtensionJob.ModifyFailure=Modify failure.
|
||||
ModifyExtensionJob.ModifyFailureTip=You should check it.
|
||||
InstalledExtensionJob.Title=Installed an extension...
|
||||
InstalledExtensionJob.Message=Installed an extension...
|
||||
InsertionExtensionAction.InstalledFailure=Installed failure.
|
||||
InsertionExtensionAction.InstalledFailureTip=You should check it.
|
||||
UploadRevisionJob.Title=Upload Revision...
|
||||
UploadRevisionJob.Message=Upload Revision...
|
||||
UploadRevisionAction.InstalledFailure=Upload Revision failure.
|
||||
UploadRevisionAction.InstalledFailureTip=You should check it.
|
||||
DownloadComponenentsAction.installExchange=Install Exchange Components
|
||||
DownloadComponenentsAction.DownloadTaskTitle=Downloading files from Exchange
|
||||
DownloadComponenentsAction.DownloadTaskName=Downloading file from url:
|
||||
DownloadComponenentsAction.ReloadPalette=Reloading palette...
|
||||
DownloadComponenentsAction.DownloadFailure=Download failure.
|
||||
DownloadComponenentsAction.DownloadFailureTip=You must change the Download Settings.
|
||||
ExchangeWebService.insertionExtensionSuccessful=Insertion Extension successful.
|
||||
ExchangeWebService.downloadingExtensionSuccessful=Downloaded Extension successful.
|
||||
ExchangeWebService.deleteExtensionSuccessful=Deleted Extension successful.
|
||||
ExchangeWebService.insertReviewSuccessful=Insertion Review successful.
|
||||
ExchangeWebService.updateRevisionSuccessful=Update Revision successful.
|
||||
ExchangeWebService.insertionRevisionSuccessful=Insertion Revision successful.
|
||||
ImportExchangeDialog.dialogTitle=Select an item from Talend Exchange
|
||||
ImportExchangeDialog.WARNING=WARNING
|
||||
ImportExchangeDialog.NOTSELECTWARNING=Please select one item from table.
|
||||
ImportExchangeDialog.downloadProgressBar=Download Item,Please Wait\!
|
||||
ImportExchangeDialog.EXTENSION_NAME=Extension Name
|
||||
ImportExchangeDialog.AUTHOR_NAME=Author Name
|
||||
ImportExchangeDialog.LATEST_REVISION=Latest Revision
|
||||
ImportExchangeDialog.EXTENSION_DESCRIPTION=Extension Description
|
||||
ImportExchangeDialog.REFRESH_BUTTON=Refresh
|
||||
ImportExchangeDialog.REFRESHING_PROGRESSBAR=Refreshing\! Please Wait.....
|
||||
ImportExchangeDialog.OPERATION_CANCELLED=Operation was cancelled
|
||||
Exchange.logon.error=Exchange user have not been registered, please register using the preferences .
|
||||
ImportExchangeDialog.download.extensions=Download extensions\! Please Wait\!
|
||||
DownloadComponenentsAction_restartMessage=Install the new component successfully, but need to restart studio to load it, do you want to restart now?
|
||||
DownloadComponenentsAction_restartTitle=Need restart
|
||||
DownloadComponenentsAction_failureTitle=Failure
|
||||
DownloadComponenentsAction_failureMessage=Fail to install the component {0}, need check the component is valid or not.
|
||||
DownloadComponenentsAction.installComponentsTitle=Install components
|
||||
@@ -14,13 +14,13 @@ DownloadedExtensionsComposite.DownloadDate=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\
|
||||
DownloadedExtensionsComposite.OperateStatus=\u30B9\u30C6\u30FC\u30BF\u30B9\u64CD\u4F5C
|
||||
DownloadedExtensionsComposite.installOperateStatus=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB
|
||||
DownloadedExtensionsComposite.installedOperateStatus=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F
|
||||
DownloadedExtensionsComposite.updateOperateStatus=\u66F4\u65B0
|
||||
DownloadedExtensionsComposite.updateOperateStatus=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
MyExtensionsComposite.ExtensionName=Extension\u540D
|
||||
MyExtensionsComposite.Version=\u30D0\u30FC\u30B8\u30E7\u30F3
|
||||
MyExtensionsComposite.UploadDate=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u65E5\u4ED8
|
||||
MyExtensionsComposite.AddNewExtensionTitle=\u65B0\u898FExtension\u8FFD\u52A0
|
||||
MyExtensionsComposite.UpLoadNewVersionOperateStatus=\u65B0\u30D0\u30FC\u30B8\u30E7\u30F3\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9
|
||||
MyExtensionsComposite.UpdateOperateStatus=\u66F4\u65B0
|
||||
MyExtensionsComposite.UpdateOperateStatus=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
MyExtensionsComposite.ModifyOperateStatus=\u5909\u66F4
|
||||
MyExtensionsComposite.DeleteOperateStatus=\u524A\u9664
|
||||
MyExtensionsComposite.Form.Return=\u623B\u308A\u5024
|
||||
@@ -45,7 +45,7 @@ MyExtensionsComposite.Form.Upload.Browse.SelectFile=\u30A2\u30C3\u30D7\u30ED\u30
|
||||
MyExtensionsComposite.Form.DeleteExtensionTile=Extension\u524A\u9664
|
||||
MyExtensionsComposite.Form.DeleteExtensionMessage=\u3053\u306E\u62E1\u5F35\u5B50\u3092\u524A\u9664\u3057\u307E\u3059\u304B?
|
||||
MyExtensionsComposite.Form.UploadExtension=Extension\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9
|
||||
MyExtensionsComposite.Form.UpdateExtension=Extension\u66F4\u65B0
|
||||
MyExtensionsComposite.Form.UpdateExtension=Extension\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
MyExtensionsComposite.Form.ModifyExtension=Extension\u4FEE\u6B63
|
||||
Exchange.logon.error=Exchange\u30E6\u30FC\u30B6\u30FC\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u521D\u671F\u8A2D\u5B9A\u3092\u4F7F\u7528\u3057\u3066\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
RefreshJob.FindExtensions.Title=\u53D6\u5F97\u53EF\u80FD\u306Aextensions
|
||||
@@ -77,7 +77,7 @@ DownloadComponenentsAction_failureMessage=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u
|
||||
DownloadComponenentsAction.installExchange=Exchange\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB
|
||||
DownloadComponenentsAction.DownloadTaskTitle=Exchange\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9
|
||||
DownloadComponenentsAction.DownloadTaskName=\u30D5\u30A1\u30A4\u30EB\u306E\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D URL \\:
|
||||
DownloadComponenentsAction.ReloadPalette=\u30D1\u30EC\u30C3\u30C8\u306E\u66F4\u65B0...
|
||||
DownloadComponenentsAction.ReloadPalette=\u30D1\u30EC\u30C3\u30C8\u306E\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8...
|
||||
DownloadComponenentsAction.DownloadFailure=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u5931\u6557\u3002
|
||||
DownloadComponenentsAction.DownloadFailureTip=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u8A2D\u5B9A\u3092\u5909\u66F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
DownloadComponenentsAction.installComponentsTitle=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306E\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB
|
||||
@@ -85,7 +85,7 @@ ExchangeWebService.insertionExtensionSuccessful=Extension\u306E\u30A4\u30F3\u30B
|
||||
ExchangeWebService.downloadingExtensionSuccessful=Extension\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u6210\u529F\u3002
|
||||
ExchangeWebService.deleteExtensionSuccessful=Extension\u524A\u9664\u6210\u529F\u3002
|
||||
ExchangeWebService.insertReviewSuccessful=Review\u633F\u5165\u6210\u529F\u3002
|
||||
ExchangeWebService.updateRevisionSuccessful=\u30EA\u30D3\u30B8\u30E7\u30F3\u66F4\u65B0\u6210\u529F\u3002
|
||||
ExchangeWebService.updateRevisionSuccessful=\u30EA\u30D3\u30B8\u30E7\u30F3\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u6210\u529F\u3002
|
||||
ExchangeWebService.insertionRevisionSuccessful=\u30EA\u30D3\u30B8\u30E7\u30F3\u633F\u5165\u6210\u529F\u3002
|
||||
ImportExchangeDialog.dialogTitle=Talend Exchange \u304B\u3089\u9805\u76EE\u306E\u9078\u629E
|
||||
ImportExchangeDialog.WARNING=\u8B66\u544A
|
||||
@@ -97,5 +97,5 @@ ImportExchangeDialog.LATEST_REVISION=\u6700\u65B0\u30EA\u30D3\u30B8\u30E7\u30F3
|
||||
ImportExchangeDialog.EXTENSION_DESCRIPTION=\u62E1\u5F35\u306E\u8AAC\u660E
|
||||
ImportExchangeDialog.download.extensions=\u62E1\u5F35\u6A5F\u80FD\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u4E2D\u3067\u3059\u3002\u66AB\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002
|
||||
ImportExchangeDialog.REFRESH_BUTTON=\u66F4\u65B0
|
||||
ImportExchangeDialog.REFRESHING_PROGRESSBAR=\u30EA\u30D5\u30EC\u30C3\u30B7\u30E5\u4E2D\u3067\u3059\u3002\u66AB\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002
|
||||
ImportExchangeDialog.REFRESHING_PROGRESSBAR=\u66F4\u65B0\u4E2D\u3067\u3059\u3002\u66AB\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u3002
|
||||
ImportExchangeDialog.OPERATION_CANCELLED=\u64CD\u4F5C\u306F\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F
|
||||
|
||||
@@ -37,7 +37,18 @@
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
<version>1.7.5</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
<!-- Spring 3 dependencies -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>checkArchive</artifactId>
|
||||
<version>1.2-20210901</version>
|
||||
<name>checkArchive</name>
|
||||
<description>Dependence for tFileArchive and tFileUnAchive</description>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>Apache License, Version 2.0</name>
|
||||
<url>https://www.talendforge.org/modules/licenses/APACHE_v2.txt</url>
|
||||
<distribution>may be downloaded from the Maven repository</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<talend.nexus.url>https://artifacts-oss.talend.com</talend.nexus.url>
|
||||
<java.source.version>1.8</java.source.version>
|
||||
</properties>
|
||||
|
||||
<distributionManagement>
|
||||
<snapshotRepository>
|
||||
<id>talend_nexus_deployment</id>
|
||||
<url>${talend.nexus.url}/nexus/content/repositories/TalendOpenSourceSnapshot/</url>
|
||||
<snapshots>
|
||||
<enabled>true</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>false</enabled>
|
||||
</releases>
|
||||
</snapshotRepository>
|
||||
<repository>
|
||||
<id>talend_nexus_deployment</id>
|
||||
<url>${talend.nexus.url}/nexus/content/repositories/TalendOpenSourceRelease/</url>
|
||||
<snapshots>
|
||||
<enabled>false</enabled>
|
||||
</snapshots>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
</releases>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
<dependencies>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-compress</artifactId>
|
||||
<version>1.21</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/java</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>2.3.2</version>
|
||||
<configuration>
|
||||
<source>${java.source.version}</source>
|
||||
<target>${java.source.version}</target>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
<showWarnings>true</showWarnings>
|
||||
<compilerArgument>-XDignore.symbol.file</compilerArgument>
|
||||
<fork>true</fork>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -7,7 +7,7 @@
|
||||
<groupId>net.sf.json-lib</groupId>
|
||||
<artifactId>json-lib</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>2.4.6-talend</version>
|
||||
<version>2.4.7-talend</version>
|
||||
<name>json-lib</name>
|
||||
|
||||
<properties>
|
||||
@@ -230,9 +230,9 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
@@ -48,6 +48,7 @@ import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@@ -172,6 +173,11 @@ public class XMLSerializer {
|
||||
* flag for if parse empty elements as empty strings
|
||||
*/
|
||||
private boolean useEmptyStrings;
|
||||
|
||||
/**
|
||||
* flag to use scientific notation while working with Float values.
|
||||
*/
|
||||
private boolean useScientificNotation;
|
||||
|
||||
/**
|
||||
* Creates a new XMLSerializer with default options.<br>
|
||||
@@ -205,6 +211,7 @@ public class XMLSerializer {
|
||||
setKeepCData( false );
|
||||
setEscapeLowerChars( false );
|
||||
setKeepArrayName( false );
|
||||
setUseScientificNotation( false );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -360,7 +367,15 @@ public class XMLSerializer {
|
||||
return typeHintsEnabled;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the useScientificNotation value
|
||||
*/
|
||||
public boolean isUseScientificNotation() {
|
||||
return useScientificNotation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a JSON value from a XML string.
|
||||
*
|
||||
* @param xml A well-formed xml document in a String
|
||||
@@ -652,6 +667,15 @@ public class XMLSerializer {
|
||||
this.typeHintsCompatibility = typeHintsCompatibility;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets whether to use scientific notation while working with Float values.
|
||||
* @param useScientificNotation Value of the useScientificNotation to set.
|
||||
*/
|
||||
public void setUseScientificNotation(boolean useScientificNotation) {
|
||||
this.useScientificNotation = useScientificNotation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets wether JSON types will be included as attributes.
|
||||
*/
|
||||
@@ -1335,12 +1359,12 @@ public class XMLSerializer {
|
||||
jsonArray.element(Integer.valueOf(element.getValue()));
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
jsonArray.element(Double.valueOf(element.getValue()));
|
||||
jsonArray.element(processFloatValues(element));
|
||||
}
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.INTEGER) == 0) {
|
||||
jsonArray.element(Integer.valueOf(element.getValue()));
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.FLOAT) == 0) {
|
||||
jsonArray.element(Double.valueOf(element.getValue()));
|
||||
jsonArray.element(processFloatValues(element));
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.FUNCTION) == 0) {
|
||||
String[] params = null;
|
||||
String text = element.getValue();
|
||||
@@ -1371,6 +1395,14 @@ public class XMLSerializer {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Object processFloatValues(Element element) {
|
||||
if (!isUseScientificNotation()) {
|
||||
return new BigDecimal(element.getValue());
|
||||
} else {
|
||||
return Double.valueOf(element.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
private void setValue( JSONObject jsonObject, Element element, String defaultType ) {
|
||||
String clazz = getClass( element );
|
||||
@@ -1423,12 +1455,12 @@ public class XMLSerializer {
|
||||
setOrAccumulate(jsonObject, key, Integer.valueOf(element.getValue()));
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
setOrAccumulate(jsonObject, key, Double.valueOf(element.getValue()));
|
||||
setOrAccumulate(jsonObject, key, processFloatValues(element));
|
||||
}
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.INTEGER) == 0) {
|
||||
setOrAccumulate(jsonObject, key, Integer.valueOf(element.getValue()));
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.FLOAT) == 0) {
|
||||
setOrAccumulate(jsonObject, key, Double.valueOf(element.getValue()));
|
||||
setOrAccumulate(jsonObject, key, processFloatValues(element));
|
||||
} else if (type.compareToIgnoreCase(JSONTypes.FUNCTION) == 0) {
|
||||
String[] params = null;
|
||||
String text = element.getValue();
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.talend</groupId>
|
||||
<artifactId>talendMQRFH2</artifactId>
|
||||
<version>1.0.1-20190206</version>
|
||||
<version>1.1.0-20220307</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<licenses>
|
||||
@@ -44,20 +44,10 @@
|
||||
</distributionManagement>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.ibm.mq</groupId>
|
||||
<artifactId>com.ibm.mq</artifactId>
|
||||
<version>8.0.0.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.mq</groupId>
|
||||
<artifactId>com.ibm.mqjms</artifactId>
|
||||
<version>8.0.0.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.mq</groupId>
|
||||
<artifactId>com.ibm.mq.allclient</artifactId>
|
||||
<version>8.0.0.9</version>
|
||||
<version>9.2.4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.talend.libraries</groupId>
|
||||
@@ -75,9 +65,9 @@
|
||||
<version>6.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -113,9 +113,9 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- JUnit -->
|
||||
|
||||
@@ -72,9 +72,9 @@
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
|
||||
<!--test-->
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<groupId>org.talend</groupId>
|
||||
<artifactId>talend-httputil</artifactId>
|
||||
<name>talend-httputil</name>
|
||||
<version>1.0.6</version>
|
||||
<version>1.0.7</version>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
@@ -28,7 +28,7 @@
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.11.4</version>
|
||||
<version>2.13.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -36,14 +36,6 @@
|
||||
<artifactId>json-lib</artifactId>
|
||||
<version>2.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.0</version>
|
||||
<type>jar</type>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<distributionManagement>
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
package org.talend.http;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.apache.http.entity.ContentType;
|
||||
|
||||
import net.sf.json.JSONObject;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
public class HttpUtil {
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>org.talend.components.lib</groupId>
|
||||
<artifactId>job-audit</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>1.5</version>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
|
||||
@@ -30,5 +30,8 @@ public interface JobAuditLogger extends EventAuditLogger {
|
||||
|
||||
@AuditEvent(category = "schema", message = "{connection_name} : {schema} from {source_id} to {target_id}", level = LogLevel.INFO)
|
||||
void schema(Context context);
|
||||
|
||||
@AuditEvent(category = "exception", message = "Exception", level = LogLevel.INFO)
|
||||
void exception(Context context);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>talend-mscrm</artifactId>
|
||||
<version>3.10-20211021</version>
|
||||
<version>3.12-20220513</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>talend-mscrm</name>
|
||||
@@ -27,13 +27,14 @@
|
||||
<httpcore.version>4.4.13</httpcore.version>
|
||||
<junit.version>4.13.2</junit.version>
|
||||
<adal4j.version>1.6.4-20211021</adal4j.version>
|
||||
<jackson.version>2.11.4</jackson.version>
|
||||
<jackson.version>2.13.2</jackson.version>
|
||||
<jackson-databind.version>2.13.2.2</jackson-databind.version>
|
||||
|
||||
<!-- plugin's versions -->
|
||||
<maven-jar-plugin.version>3.2.0</maven-jar-plugin.version>
|
||||
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
|
||||
</properties>
|
||||
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>talend_nexus_deployment</id>
|
||||
@@ -68,7 +69,7 @@
|
||||
</releases>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.axis2</groupId>
|
||||
@@ -76,9 +77,9 @@
|
||||
<version>${axis2.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.5</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
@@ -101,7 +102,7 @@
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.olingo</groupId>
|
||||
<artifactId>odata-client-core</artifactId>
|
||||
@@ -143,11 +144,6 @@
|
||||
<version>${junit.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.microsoft.azure</groupId>
|
||||
<artifactId>adal4j</artifactId>
|
||||
<version>${adal4j.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
@@ -156,13 +152,24 @@
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
<version>${jackson-databind.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>${jackson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.microsoft.azure</groupId>
|
||||
<artifactId>msal4j</artifactId>
|
||||
<version>1.11.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.gson</groupId>
|
||||
<artifactId>gson</artifactId>
|
||||
<version>2.9.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
<build>
|
||||
<resources>
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
package com.microsoft.aad.msal4j;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import com.nimbusds.oauth2.sdk.ParseException;
|
||||
import com.nimbusds.oauth2.sdk.auth.ClientAuthentication;
|
||||
import com.nimbusds.oauth2.sdk.auth.ClientAuthenticationMethod;
|
||||
import com.nimbusds.oauth2.sdk.auth.ClientSecretPost;
|
||||
import com.nimbusds.oauth2.sdk.auth.PrivateKeyJWT;
|
||||
import com.nimbusds.oauth2.sdk.auth.Secret;
|
||||
import com.nimbusds.oauth2.sdk.id.ClientID;
|
||||
import static com.microsoft.aad.msal4j.ParameterValidationUtils.validateNotNull;
|
||||
|
||||
public class OauthClientApplication extends AbstractClientApplicationBase implements IConfidentialClientApplication {
|
||||
|
||||
private ClientAuthentication clientAuthentication;
|
||||
private CustomJWTAuthentication customJWTAuthentication;
|
||||
private boolean clientCertAuthentication = false;
|
||||
private ClientCertificate clientCertificate;
|
||||
private boolean sendX5c;
|
||||
private final String username;
|
||||
private final String password;
|
||||
|
||||
private OauthClientApplication(OauthClientApplication.Builder builder) {
|
||||
super(builder);
|
||||
validateNotNull("username", builder.username);
|
||||
validateNotNull("password", builder.password);
|
||||
sendX5c = builder.sendX5c;
|
||||
log = LoggerFactory.getLogger(ConfidentialClientApplication.class);
|
||||
initClientAuthentication(builder.clientCredential);
|
||||
this.username = builder.username;
|
||||
this.password = builder.password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<IAuthenticationResult> acquireToken(ClientCredentialParameters parameters) {
|
||||
validateNotNull("parameters", parameters);
|
||||
|
||||
RequestContext context = new RequestContext(this, PublicApi.ACQUIRE_TOKEN_FOR_CLIENT, parameters);
|
||||
OauthCredentialRequest clientCredentialRequest = new OauthCredentialRequest(parameters,
|
||||
username, password,this, context);
|
||||
|
||||
return this.executeRequest(clientCredentialRequest);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<IAuthenticationResult> acquireToken(OnBehalfOfParameters parameters) {
|
||||
throw new IllegalStateException("Use ConfidentialClientApplication instead");
|
||||
}
|
||||
|
||||
private void initClientAuthentication(IClientCredential clientCredential) {
|
||||
validateNotNull("clientCredential", clientCredential);
|
||||
if (clientCredential instanceof ClientSecret) {
|
||||
clientAuthentication = new ClientSecretPost(new ClientID(clientId()), new Secret(((ClientSecret) clientCredential).clientSecret()));
|
||||
} else if (clientCredential instanceof ClientCertificate) {
|
||||
this.clientCertAuthentication = true;
|
||||
this.clientCertificate = (ClientCertificate) clientCredential;
|
||||
clientAuthentication = buildValidClientCertificateAuthority();
|
||||
} else if (clientCredential instanceof ClientAssertion) {
|
||||
clientAuthentication = createClientAuthFromClientAssertion((ClientAssertion) clientCredential);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unsupported client credential");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ClientAuthentication clientAuthentication() {
|
||||
if (clientCertAuthentication) {
|
||||
final Date currentDateTime = new Date(System.currentTimeMillis());
|
||||
final Date expirationTime = ((PrivateKeyJWT) clientAuthentication).getJWTAuthenticationClaimsSet().getExpirationTime();
|
||||
if (expirationTime.before(currentDateTime)) {
|
||||
//The asserted private jwt with the client certificate can expire so rebuild it when the
|
||||
clientAuthentication = buildValidClientCertificateAuthority();
|
||||
}
|
||||
}
|
||||
return clientAuthentication;
|
||||
}
|
||||
|
||||
private ClientAuthentication buildValidClientCertificateAuthority() {
|
||||
ClientAssertion clientAssertion = JwtHelper.buildJwt(clientId(), clientCertificate, this.authenticationAuthority.selfSignedJwtAudience(), sendX5c);
|
||||
return createClientAuthFromClientAssertion(clientAssertion);
|
||||
}
|
||||
|
||||
private ClientAuthentication createClientAuthFromClientAssertion(final ClientAssertion clientAssertion) {
|
||||
final Map<String, List<String>> map = new HashMap<>();
|
||||
try {
|
||||
map.put("client_assertion_type", Collections.singletonList(ClientAssertion.assertionType));
|
||||
map.put("client_assertion", Collections.singletonList(clientAssertion.assertion()));
|
||||
return PrivateKeyJWT.parse(map);
|
||||
} catch (final ParseException e) {
|
||||
//This library is not supposed to validate Issuer and subject values.
|
||||
//The next lines of code ensures that exception is not thrown.
|
||||
if (e.getMessage().contains("Issuer and subject in client JWT assertion must designate the same client identifier")) {
|
||||
return new CustomJWTAuthentication(ClientAuthenticationMethod.PRIVATE_KEY_JWT, clientAssertion, new ClientID(clientId()));
|
||||
}
|
||||
throw new MsalClientException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates instance of Builder of ConfidentialClientApplication
|
||||
|
||||
*
|
||||
|
||||
* @param clientId Client ID (Application ID) of the application as registered
|
||||
|
||||
* in the application registration portal (portal.azure.com)
|
||||
|
||||
* @param clientCredential The client credential to use for token acquisition.
|
||||
|
||||
* @return instance of Builder of ConfidentialClientApplication
|
||||
*/
|
||||
public static OauthClientApplication.Builder builder(String clientId, IClientCredential clientCredential, String username, String password) {
|
||||
return new OauthClientApplication.Builder(clientId, clientCredential, username, password);
|
||||
}
|
||||
|
||||
|
||||
public static class Builder extends AbstractClientApplicationBase.Builder<OauthClientApplication.Builder> {
|
||||
|
||||
private IClientCredential clientCredential;
|
||||
private final String username;
|
||||
private final String password;
|
||||
private boolean sendX5c = true;
|
||||
|
||||
private Builder(String clientId, IClientCredential clientCredential, String username, String password) {
|
||||
super(clientId);
|
||||
this.clientCredential = clientCredential;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specifies if the x5c claim (public key of the certificate) should be sent to the STS.
|
||||
* Default value is true
|
||||
*
|
||||
* @param val true if the x5c should be sent. Otherwise false
|
||||
* @return instance of the Builder on which method was called
|
||||
*/
|
||||
public OauthClientApplication.Builder sendX5c(boolean val) {
|
||||
this.sendX5c = val;
|
||||
return self();
|
||||
}
|
||||
|
||||
@Override
|
||||
public OauthClientApplication build() {
|
||||
return new OauthClientApplication(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected OauthClientApplication.Builder self() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
@java.lang.SuppressWarnings("all")
|
||||
public boolean sendX5c() {
|
||||
return this.sendX5c;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.microsoft.aad.msal4j;
|
||||
|
||||
import com.nimbusds.oauth2.sdk.ResourceOwnerPasswordCredentialsGrant;
|
||||
import com.nimbusds.oauth2.sdk.auth.Secret;
|
||||
|
||||
class OauthCredentialRequest extends MsalRequest {
|
||||
ClientCredentialParameters parameters;
|
||||
OauthCredentialRequest(ClientCredentialParameters parameters, String username, String password,
|
||||
OauthClientApplication application, RequestContext requestContext) {
|
||||
super(application, createMsalGrant(parameters, username, password), requestContext);
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
private static OAuthAuthorizationGrant createMsalGrant(ClientCredentialParameters parameters,
|
||||
String username, String password) {
|
||||
return new OAuthAuthorizationGrant(new ResourceOwnerPasswordCredentialsGrant(username, new Secret(
|
||||
password)), parameters.scopes(), parameters.claims());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -60,12 +60,13 @@ public class ClientConfigurationFactory {
|
||||
}
|
||||
|
||||
public final static ClientConfiguration buildOAuthPremiseClientConfiguration(String userName, String password, String authoryEndpoint,
|
||||
String serviceAPI, String clientId, String redirectUrl, String forcedResource) {
|
||||
String serviceAPI, String clientId, String clientSecret, String redirectUrl, String forcedResource) {
|
||||
ClientConfiguration clientConfiguration = new ClientConfiguration(AuthStrategyEnum.OAUTH_PREMISE);
|
||||
clientConfiguration.setUserName(userName);
|
||||
clientConfiguration.setPassword(password);
|
||||
clientConfiguration.setAuthoryEndpoint(authoryEndpoint);
|
||||
clientConfiguration.setClientId(clientId);
|
||||
clientConfiguration.setClientSecret(clientSecret);
|
||||
clientConfiguration.setRedirectURL(redirectUrl);
|
||||
clientConfiguration.setServiceAPI(serviceAPI);
|
||||
clientConfiguration.setForceResource(forcedResource);
|
||||
|
||||
@@ -146,6 +146,9 @@ public class OAuthPremiseStrategyImpl implements IAuthStrategy {
|
||||
body.put("redirect_uri", conf.getRedirectURL());
|
||||
body.put("client_id", conf.getClientId());
|
||||
|
||||
if(conf.getClientSecret() != null && !"".equals(conf.getClientSecret().trim())){
|
||||
body.put("client_secret", conf.getClientSecret());
|
||||
}
|
||||
RequestHttpContext queryContext = new RequestHttpContext("POST",
|
||||
computeTokenUrl(conf.getAuthoryEndpoint()),
|
||||
Collections.emptyMap(),
|
||||
|
||||
@@ -13,14 +13,12 @@
|
||||
package org.talend.ms.crm.odata.authentication;
|
||||
|
||||
import java.net.Proxy;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
import javax.naming.AuthenticationException;
|
||||
import javax.naming.ServiceUnavailableException;
|
||||
|
||||
import com.microsoft.aad.adal4j.ClientCredential;
|
||||
import org.apache.http.client.methods.HttpRequestBase;
|
||||
import org.apache.olingo.client.api.communication.request.ODataRequest;
|
||||
import org.apache.olingo.commons.api.http.HttpHeader;
|
||||
@@ -28,15 +26,19 @@ import org.talend.ms.crm.odata.ClientConfiguration;
|
||||
import org.talend.ms.crm.odata.ProxyProvider;
|
||||
import org.talend.ms.crm.odata.httpclientfactory.IHttpclientFactoryObservable;
|
||||
import org.talend.ms.crm.odata.httpclientfactory.OAuthHttpClientFactory;
|
||||
|
||||
import com.microsoft.aad.adal4j.AuthenticationContext;
|
||||
import com.microsoft.aad.adal4j.AuthenticationResult;
|
||||
import com.microsoft.aad.msal4j.ClientCredentialFactory;
|
||||
import com.microsoft.aad.msal4j.ClientCredentialParameters;
|
||||
import com.microsoft.aad.msal4j.ConfidentialClientApplication;
|
||||
import com.microsoft.aad.msal4j.IAuthenticationResult;
|
||||
import com.microsoft.aad.msal4j.OauthClientApplication;
|
||||
import com.microsoft.aad.msal4j.PublicClientApplication;
|
||||
import com.microsoft.aad.msal4j.UserNamePasswordParameters;
|
||||
|
||||
public class OAuthStrategyImpl implements IAuthStrategy {
|
||||
|
||||
private ClientConfiguration conf;
|
||||
|
||||
private AuthenticationResult authResult;
|
||||
private IAuthenticationResult authResult;
|
||||
|
||||
private IHttpclientFactoryObservable httpClientFactory;
|
||||
|
||||
@@ -71,12 +73,12 @@ public class OAuthStrategyImpl implements IAuthStrategy {
|
||||
|
||||
@Override
|
||||
public void configureRequest(ODataRequest request) {
|
||||
request.addCustomHeader(HttpHeader.AUTHORIZATION, "Bearer " + authResult.getAccessToken());
|
||||
request.addCustomHeader(HttpHeader.AUTHORIZATION, "Bearer " + authResult.accessToken());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configureRequest(HttpRequestBase request) {
|
||||
request.addHeader(HttpHeader.AUTHORIZATION, "Bearer " + authResult.getAccessToken());
|
||||
request.addHeader(HttpHeader.AUTHORIZATION, "Bearer " + authResult.accessToken());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -115,34 +117,71 @@ public class OAuthStrategyImpl implements IAuthStrategy {
|
||||
}
|
||||
}
|
||||
|
||||
private Future<AuthenticationResult> acquireToken(AuthenticationContext context) throws Exception {
|
||||
Future<AuthenticationResult> future;
|
||||
private Future<IAuthenticationResult> acquireToken(PublicClientApplication context) throws Exception {
|
||||
Future<IAuthenticationResult> future;
|
||||
UserNamePasswordParameters parameters = UserNamePasswordParameters.builder(
|
||||
Collections.singleton(conf.getResource() + "/.default"), conf.getUserName(), conf.getPassword().toCharArray()).build();
|
||||
future = context.acquireToken(parameters);
|
||||
return future;
|
||||
|
||||
if(conf.getAppRegisteredType() == ClientConfiguration.AppRegisteredType.NATIVE_APP){
|
||||
future = context.acquireToken(conf.getResource(), conf.getClientId(), conf.getUserName(), conf.getPassword(), null);
|
||||
}
|
||||
else if(conf.getAppRegisteredType() == ClientConfiguration.AppRegisteredType.WEB_APP && conf.getWebAppPermission() == ClientConfiguration.WebAppPermission.DELEGATED){
|
||||
future = context.acquireToken(conf.getResource(), new ClientCredential(conf.getClientId(), conf.getClientSecret()), conf.getUserName(), conf.getPassword(), null);
|
||||
}
|
||||
else{
|
||||
throw new Exception("Can't retrieve token with this configuration : registered application type: "+conf.getAppRegisteredType()+", Web application permission: "+conf.getWebAppPermission());
|
||||
}
|
||||
|
||||
return future;
|
||||
}
|
||||
private Future<IAuthenticationResult> acquireToken(OauthClientApplication context) throws Exception {
|
||||
ClientCredentialParameters parameters = ClientCredentialParameters.builder(
|
||||
Collections.singleton(conf.getResource() + "/.default")).build();
|
||||
return context.acquireToken(parameters);
|
||||
}
|
||||
|
||||
private AuthenticationResult getAccessToken() throws ServiceUnavailableException {
|
||||
AuthenticationContext context = null;
|
||||
AuthenticationResult result = null;
|
||||
private IAuthenticationResult getAccessToken() throws ServiceUnavailableException {
|
||||
if(conf.getAppRegisteredType() == ClientConfiguration.AppRegisteredType.NATIVE_APP){
|
||||
return getAccessTokenNative();
|
||||
} if(conf.getAppRegisteredType() == ClientConfiguration.AppRegisteredType.WEB_APP && conf.getWebAppPermission() == ClientConfiguration.WebAppPermission.DELEGATED){
|
||||
return getAccessTokenWebApp();
|
||||
} else {
|
||||
throw new RuntimeException("Can't retrieve token with this configuration : registered application type: "+conf.getAppRegisteredType()+", Web application permission: "+conf.getWebAppPermission());
|
||||
}
|
||||
}
|
||||
|
||||
private IAuthenticationResult getAccessTokenNative() throws ServiceUnavailableException {
|
||||
PublicClientApplication context = null;
|
||||
IAuthenticationResult result = null;
|
||||
ExecutorService service = null;
|
||||
try {
|
||||
service = Executors.newFixedThreadPool(1);
|
||||
context = new AuthenticationContext(conf.getAuthoryEndpoint(), false, service);
|
||||
Proxy proxy = ProxyProvider.getProxy();
|
||||
PublicClientApplication.Builder contextBuilder = PublicClientApplication.builder(conf.getClientId()).authority("https://login.microsoftonline.com/organizations");
|
||||
if (proxy != null) {
|
||||
contextBuilder = contextBuilder.proxy(proxy);
|
||||
}
|
||||
context = contextBuilder.build();
|
||||
Future<IAuthenticationResult> future = this.acquireToken(context);
|
||||
result = future.get();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceUnavailableException(e.getMessage());
|
||||
} finally {
|
||||
service.shutdown();
|
||||
}
|
||||
|
||||
if (result == null) {
|
||||
throw new ServiceUnavailableException("Authenticated failed! Please check your configuration!");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private IAuthenticationResult getAccessTokenWebApp() throws ServiceUnavailableException {
|
||||
OauthClientApplication context = null;
|
||||
IAuthenticationResult result = null;
|
||||
ExecutorService service = null;
|
||||
try {
|
||||
service = Executors.newFixedThreadPool(1);
|
||||
OauthClientApplication.Builder contextBuilder = OauthClientApplication.builder(conf.getClientId(),
|
||||
ClientCredentialFactory.createFromSecret(conf.getClientSecret()), conf.getUserName(), conf.getPassword())
|
||||
.authority(conf.getAuthoryEndpoint());
|
||||
Proxy proxy = ProxyProvider.getProxy();
|
||||
if (proxy != null) {
|
||||
context.setProxy(proxy);
|
||||
contextBuilder.proxy(proxy);
|
||||
}
|
||||
Future<AuthenticationResult> future = this.acquireToken(context);
|
||||
context = contextBuilder.build();
|
||||
Future<IAuthenticationResult> future = this.acquireToken(context);
|
||||
result = future.get();
|
||||
} catch (Exception e) {
|
||||
throw new ServiceUnavailableException(e.getMessage());
|
||||
|
||||
@@ -60,7 +60,6 @@ public final class HttpClient {
|
||||
}
|
||||
|
||||
|
||||
//final HttpHeaders headers = resp.headers();
|
||||
final Optional<String> location = response.getFirstValueHeader("location");
|
||||
|
||||
|
||||
@@ -127,4 +126,4 @@ public final class HttpClient {
|
||||
public RequestHttpContext getRequestHttpContext() {
|
||||
return requestHttpContext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ public final class HttpResponse {
|
||||
private Map<String, List<String>> headers;
|
||||
private String body;
|
||||
|
||||
private Optional<String> code = null;//Optional.empty();
|
||||
private Optional<String> code = null;
|
||||
|
||||
public static HttpResponse fromHttpUrlConnection(HttpURLConnection conn) throws IOException {
|
||||
final int status = conn.getResponseCode();
|
||||
@@ -82,12 +82,12 @@ public final class HttpResponse {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
final List<String> ss = values.get();
|
||||
if(ss.size() <= 0){
|
||||
final List<String> v = values.get();
|
||||
if (v.size() <= 0) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
return Optional.ofNullable(ss.get(0));
|
||||
return Optional.ofNullable(v.get(0));
|
||||
}
|
||||
|
||||
public String getBody() {
|
||||
@@ -107,11 +107,13 @@ public final class HttpResponse {
|
||||
if (!optLocation.isPresent()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
final String[] split = optLocation.get().split("&|\\?");
|
||||
final Optional<String> optCode = Arrays.stream(split).filter(e -> e.startsWith("code=")).findFirst();
|
||||
final String optLocationValue = optLocation.get();
|
||||
final String[] split = optLocationValue.split("&|\\?");
|
||||
|
||||
final Optional<String> optCode = Arrays.stream(split).filter(e -> e.startsWith("code=")).findFirst();
|
||||
if (optCode.isPresent()) {
|
||||
String code = optCode.get().substring(5);
|
||||
final String optCodeValue = optCode.get();
|
||||
String code = optCodeValue.substring(5);
|
||||
return Optional.ofNullable(code);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>talend-scp-helper</artifactId>
|
||||
<version>1.0</version>
|
||||
<version>1.1</version>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
@@ -19,7 +19,7 @@
|
||||
<properties>
|
||||
<maven.compiler.source>8</maven.compiler.source>
|
||||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<ssd.version>2.5.1</ssd.version>
|
||||
<ssd.version>2.8.0</ssd.version>
|
||||
<talend.nexus.url>https://artifacts-oss.talend.com</talend.nexus.url>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
package org.talend.components.talendscp;
|
||||
|
||||
import org.apache.sshd.client.channel.ChannelExec;
|
||||
import org.apache.sshd.scp.client.AbstractScpClient;
|
||||
import org.apache.sshd.scp.client.DefaultScpClient;
|
||||
import org.apache.sshd.scp.client.DefaultScpStreamResolver;
|
||||
import org.apache.sshd.scp.client.ScpClient;
|
||||
import org.apache.sshd.client.session.ClientSession;
|
||||
import org.apache.sshd.common.FactoryManager;
|
||||
import org.apache.sshd.common.file.FileSystemFactory;
|
||||
import org.apache.sshd.common.file.util.MockFileSystem;
|
||||
import org.apache.sshd.common.file.util.MockPath;
|
||||
import org.apache.sshd.scp.common.ScpFileOpener;
|
||||
import org.apache.sshd.scp.common.ScpHelper;
|
||||
import org.apache.sshd.common.util.ValidateUtils;
|
||||
import org.apache.sshd.scp.common.ScpTransferEventListener;
|
||||
import org.apache.sshd.scp.common.helpers.ScpTimestampCommandDetails;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.FileSystem;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.attribute.FileTime;
|
||||
import java.nio.file.attribute.PosixFilePermission;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import org.apache.sshd.client.channel.ChannelExec;
|
||||
import org.apache.sshd.client.scp.AbstractScpClient;
|
||||
import org.apache.sshd.client.scp.DefaultScpClient;
|
||||
import org.apache.sshd.client.scp.DefaultScpStreamResolver;
|
||||
import org.apache.sshd.client.scp.ScpClient;
|
||||
import org.apache.sshd.client.session.ClientSession;
|
||||
import org.apache.sshd.common.FactoryManager;
|
||||
import org.apache.sshd.common.file.FileSystemFactory;
|
||||
import org.apache.sshd.common.file.util.MockFileSystem;
|
||||
import org.apache.sshd.common.file.util.MockPath;
|
||||
import org.apache.sshd.common.scp.ScpFileOpener;
|
||||
import org.apache.sshd.common.scp.ScpHelper;
|
||||
import org.apache.sshd.common.scp.ScpTimestamp;
|
||||
import org.apache.sshd.common.scp.ScpTransferEventListener;
|
||||
import org.apache.sshd.common.util.ValidateUtils;
|
||||
|
||||
|
||||
/*
|
||||
What we do here is just overwrite the ScpHelper to throw Exception when scp return status 1
|
||||
@@ -40,7 +41,8 @@ public class TalendScpClient extends DefaultScpClient {
|
||||
}
|
||||
|
||||
@Override public void upload(InputStream local, String remote, long size, Collection<PosixFilePermission> perms,
|
||||
ScpTimestamp time) throws IOException {
|
||||
ScpTimestampCommandDetails time) throws IOException {
|
||||
|
||||
int namePos = ValidateUtils.checkNotNullAndNotEmpty(remote, "No remote location specified").lastIndexOf('/');
|
||||
String name = (namePos < 0) ?
|
||||
remote :
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.talend.components.talendscp;
|
||||
|
||||
import org.apache.sshd.client.scp.AbstractScpClientCreator;
|
||||
import org.apache.sshd.client.scp.ScpClient;
|
||||
import org.apache.sshd.client.scp.ScpClientCreator;
|
||||
import org.apache.sshd.scp.client.AbstractScpClientCreator;
|
||||
import org.apache.sshd.scp.client.ScpClient;
|
||||
import org.apache.sshd.scp.client.ScpClientCreator;
|
||||
import org.apache.sshd.client.session.ClientSession;
|
||||
import org.apache.sshd.common.scp.ScpFileOpener;
|
||||
import org.apache.sshd.common.scp.ScpTransferEventListener;
|
||||
import org.apache.sshd.scp.common.ScpFileOpener;
|
||||
import org.apache.sshd.scp.common.ScpTransferEventListener;
|
||||
|
||||
public class TalendScpClientCreator extends AbstractScpClientCreator implements ScpClientCreator {
|
||||
public static final TalendScpClientCreator INSTANCE = new TalendScpClientCreator();
|
||||
|
||||
@@ -6,11 +6,12 @@ import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.file.FileSystem;
|
||||
|
||||
import org.apache.sshd.common.scp.ScpException;
|
||||
import org.apache.sshd.common.scp.ScpFileOpener;
|
||||
import org.apache.sshd.common.scp.ScpHelper;
|
||||
import org.apache.sshd.common.scp.ScpTransferEventListener;
|
||||
import org.apache.sshd.scp.common.ScpException;
|
||||
import org.apache.sshd.scp.common.ScpFileOpener;
|
||||
import org.apache.sshd.scp.common.ScpHelper;
|
||||
import org.apache.sshd.scp.common.ScpTransferEventListener;
|
||||
import org.apache.sshd.common.session.Session;
|
||||
import org.apache.sshd.scp.common.helpers.ScpAckInfo;
|
||||
|
||||
public class TalendScpHelper extends ScpHelper {
|
||||
|
||||
@@ -20,8 +21,9 @@ public class TalendScpHelper extends ScpHelper {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int readAck(boolean canEof) throws IOException {
|
||||
int c = in.read();
|
||||
public ScpAckInfo readAck(boolean canEof) throws IOException {
|
||||
final ScpAckInfo scpAckInfo = ScpAckInfo.readAck(this.in, this.csIn, canEof);
|
||||
int c = scpAckInfo == null ? -1 : scpAckInfo.getStatusCode();
|
||||
switch (c) {
|
||||
case -1:
|
||||
if (log.isDebugEnabled()) {
|
||||
@@ -31,12 +33,12 @@ public class TalendScpHelper extends ScpHelper {
|
||||
throw new EOFException("readAck - EOF before ACK");
|
||||
}
|
||||
break;
|
||||
case OK:
|
||||
case ScpAckInfo.OK:
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("readAck({})[EOF={}] read OK", this, canEof);
|
||||
}
|
||||
break;
|
||||
case WARNING: {
|
||||
case ScpAckInfo.WARNING: {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("readAck({})[EOF={}] read warning message", this, canEof);
|
||||
}
|
||||
@@ -45,7 +47,7 @@ public class TalendScpHelper extends ScpHelper {
|
||||
log.warn("readAck({})[EOF={}] - Received warning: {}", this, canEof, line);
|
||||
throw new ScpException("received error: " + line, c);
|
||||
}
|
||||
case ERROR: {
|
||||
case ScpAckInfo.ERROR: {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("readAck({})[EOF={}] read error message", this, canEof);
|
||||
}
|
||||
@@ -58,6 +60,6 @@ public class TalendScpHelper extends ScpHelper {
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return c;
|
||||
return scpAckInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,9 +60,9 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>talend-ws</artifactId>
|
||||
<version>1.0.5-20210629</version>
|
||||
<version>1.0.6-20220304</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<licenses>
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<talend.nexus.url>https://artifacts-oss.talend.com</talend.nexus.url>
|
||||
|
||||
<cxf.version>3.3.10</cxf.version>
|
||||
<cxf.version>3.4.4</cxf.version>
|
||||
<odata.version>4.3.0</odata.version>
|
||||
<slf4j.version>1.7.12</slf4j.version>
|
||||
<httpclient.version>4.5.13</httpclient.version>
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
org.talend.ws.exception.IllegalPropertyAccessException=Unable to access property {0} which is not accessible for type {1}
|
||||
org.talend.ws.exception.NoSuchPropertyException=Property {0} does not exist for type {1}
|
||||
org.talend.ws.exception.Instantiation=Unable to instantiate class of type {0}
|
||||
org.talend.ws.exception.InvocationTargetPropertyAccessor=A property accessor has thrown an exception : property {0} of class {1}
|
||||
org.talend.ws.exception.illegalAccessValueOf=Unable to call method valueOf for enum type {0}
|
||||
org.talend.ws.exception.Unknown=An unknown exception has been thrown
|
||||
org.talend.ws.exception.InvalidEnumValueException=Value {0} is not valid for enum {1}
|
||||
org.talend.ws.exception.InvalidParameterAnyType=You must specify a map like this for anyTypes : {anyType: value, anyType_type: qname} pour les anyType
|
||||
@@ -1,7 +1,7 @@
|
||||
org.talend.ws.exception.IllegalPropertyAccessException={0} \u30D7\u30ED\u30D1\u30C6\u30A3\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002\u3053\u308C\u306F {1} \u578B\u306E\u305F\u3081\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
org.talend.ws.exception.NoSuchPropertyException=\u30BF\u30A4\u30D7{1}\u306E\u30D7\u30ED\u30D1\u30C6\u30A3{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
|
||||
org.talend.ws.exception.Instantiation={0} \u578B\u306E\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
org.talend.ws.exception.InvocationTargetPropertyAccessor=\u30D7\u30ED\u30D1\u30C6\u30A3\u30A2\u30AF\u30BB\u30B9\u306B\u3088\u308A\u3001\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F\uFF1A\u30AF\u30E9\u30B9 {1} \u306E\u30D7\u30ED\u30D1\u30C6\u30A3 {0}
|
||||
org.talend.ws.exception.InvocationTargetPropertyAccessor=\u30D7\u30ED\u30D1\u30C6\u30A3\u30A2\u30AF\u30BB\u30C3\u30B5\u30FC\u304C\u4F8B\u5916\u3092\u8FD4\u3057\u307E\u3057\u305F: \u30AF\u30E9\u30B9 {1} \u306E\u30D7\u30ED\u30D1\u30C6\u30A3 {0}
|
||||
org.talend.ws.exception.illegalAccessValueOf=\u5217\u6319\u578B {0} \u306EvalueOf\u30E1\u30BD\u30C3\u30C9\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093
|
||||
org.talend.ws.exception.Unknown=\u4E0D\u660E\u306A\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F
|
||||
org.talend.ws.exception.InvalidEnumValueException=\u5024 {0} \u306Fenum\u578B {1} \u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
|
||||
@@ -83,9 +83,9 @@
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
|
||||
<dependency>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>org.talend</groupId>
|
||||
<artifactId>talendMQConnectionUtil</artifactId>
|
||||
<version>1.0.1-20190215</version>
|
||||
<version>1.1.0-20220307</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>talendMQConnectionUtil</name>
|
||||
@@ -63,13 +63,8 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.mq</groupId>
|
||||
<artifactId>com.ibm.mq</artifactId>
|
||||
<version>8.0.0.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.ibm.mq</groupId>
|
||||
<artifactId>com.ibm.mqjms</artifactId>
|
||||
<version>8.0.0.9</version>
|
||||
<artifactId>com.ibm.mq.allclient</artifactId>
|
||||
<version>9.2.4.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.resource</groupId>
|
||||
@@ -79,7 +74,7 @@
|
||||
<dependency>
|
||||
<groupId>org.talend</groupId>
|
||||
<artifactId>talendMQRFH2</artifactId>
|
||||
<version>1.0.1-20190206</version>
|
||||
<version>1.1.0-20220307</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.17</version>
|
||||
<groupId>ch.qos.reload4j</groupId>
|
||||
<artifactId>reload4j</artifactId>
|
||||
<version>1.2.19</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>talendzip</artifactId>
|
||||
<version>1.2-20210901</version>
|
||||
<version>1.3</version>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
@@ -61,7 +61,7 @@
|
||||
<dependency>
|
||||
<groupId>net.lingala.zip4j</groupId>
|
||||
<artifactId>zip4j</artifactId>
|
||||
<version>1.3.3</version>
|
||||
<version>2.10.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -70,10 +70,5 @@
|
||||
<version>1.21</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.talend.components</groupId>
|
||||
<artifactId>checkArchive</artifactId>
|
||||
<version>1.2-20210901</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -1,184 +1,183 @@
|
||||
package org.talend.archive;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.CipherInputStream;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.SecretKeyFactory;
|
||||
import javax.crypto.spec.PBEKeySpec;
|
||||
import javax.crypto.spec.PBEParameterSpec;
|
||||
|
||||
import org.apache.commons.compress.archivers.ArchiveEntry;
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
|
||||
import org.apache.commons.compress.archivers.zip.ZipFile;
|
||||
|
||||
// import javax.crypto.Cipher;
|
||||
|
||||
public class IntegrityUtil {
|
||||
|
||||
/**
|
||||
* Is used to check if the zip file is corrupted/destroyed
|
||||
*
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
public static boolean isZipValid(final File file) {
|
||||
ZipFile zipFile = null;
|
||||
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
} finally {
|
||||
try {
|
||||
if (zipFile != null) {
|
||||
zipFile.close();
|
||||
zipFile = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void validate(final File file) {
|
||||
ZipFile zipFile = null;
|
||||
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
|
||||
} catch (IOException e) {
|
||||
} finally {
|
||||
try {
|
||||
if (zipFile != null) {
|
||||
zipFile.close();
|
||||
zipFile = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* To check if the encrpted zip file is corrupted or not
|
||||
*
|
||||
* @param file
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
public static boolean isEncryptedZipValid(final File file, String password) {
|
||||
ZipArchiveInputStream input = null;
|
||||
InputStream target = null;
|
||||
try {
|
||||
target = new FileInputStream(file);
|
||||
target = new CipherInputStream(target, createCipher(Cipher.DECRYPT_MODE, password));
|
||||
input = new ZipArchiveInputStream(target);
|
||||
ArchiveEntry entry = input.getNextEntry();
|
||||
return true;
|
||||
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
} finally {
|
||||
try {
|
||||
if (input != null) {
|
||||
input.close();
|
||||
input = null;
|
||||
}
|
||||
if (target != null) {
|
||||
target.close();
|
||||
target = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to check tar.gz/.tgz/.gz file is corrupted/destroyed
|
||||
*
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public static boolean isGZIPValid(final String fileName) {
|
||||
GZIPInputStream inputStream = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(new File(fileName));
|
||||
inputStream = new GZIPInputStream(is);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}finally {
|
||||
try {
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
} else if(is != null) {
|
||||
is.close();
|
||||
is = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to check tar.tar file is corrupted/destroyed
|
||||
*
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public static boolean isTarValid(final String fileName) {
|
||||
TarArchiveInputStream inputStream = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(new File(fileName));
|
||||
inputStream = new TarArchiveInputStream(is);
|
||||
return inputStream.canReadEntryData(inputStream.getNextEntry());
|
||||
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}finally {
|
||||
try {
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
} else if(is != null) {
|
||||
is.close();
|
||||
is = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param mode
|
||||
* @param password
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static Cipher createCipher(int mode, String password) throws Exception {
|
||||
String alg = "PBEWithSHA1AndDESede"; // BouncyCastle has better algorithms
|
||||
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
|
||||
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(alg);
|
||||
SecretKey secretKey = keyFactory.generateSecret(keySpec);
|
||||
|
||||
Cipher cipher = Cipher.getInstance("PBEWithSHA1AndDESede");
|
||||
cipher.init(mode, secretKey, new PBEParameterSpec("saltsalt".getBytes(), 2000));
|
||||
|
||||
return cipher;
|
||||
}
|
||||
}
|
||||
package com.talend.compress.zip;
|
||||
|
||||
import org.apache.commons.compress.archivers.ArchiveEntry;
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
|
||||
import org.apache.commons.compress.archivers.zip.ZipFile;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.CipherInputStream;
|
||||
import javax.crypto.SecretKey;
|
||||
import javax.crypto.SecretKeyFactory;
|
||||
import javax.crypto.spec.PBEKeySpec;
|
||||
import javax.crypto.spec.PBEParameterSpec;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
// import javax.crypto.Cipher;
|
||||
|
||||
public class IntegrityUtil {
|
||||
|
||||
/**
|
||||
* Is used to check if the zip file is corrupted/destroyed
|
||||
*
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
public static boolean isZipValid(final File file) {
|
||||
ZipFile zipFile = null;
|
||||
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
} finally {
|
||||
try {
|
||||
if (zipFile != null) {
|
||||
zipFile.close();
|
||||
zipFile = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void validate(final File file) {
|
||||
ZipFile zipFile = null;
|
||||
|
||||
try {
|
||||
zipFile = new ZipFile(file);
|
||||
|
||||
} catch (IOException e) {
|
||||
} finally {
|
||||
try {
|
||||
if (zipFile != null) {
|
||||
zipFile.close();
|
||||
zipFile = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* To check if the encrpted zip file is corrupted or not
|
||||
*
|
||||
* @param file
|
||||
* @param password
|
||||
* @return
|
||||
*/
|
||||
public static boolean isEncryptedZipValid(final File file, String password) {
|
||||
ZipArchiveInputStream input = null;
|
||||
InputStream target = null;
|
||||
try {
|
||||
target = new FileInputStream(file);
|
||||
target = new CipherInputStream(target, createCipher(Cipher.DECRYPT_MODE, password));
|
||||
input = new ZipArchiveInputStream(target);
|
||||
ArchiveEntry entry = input.getNextEntry();
|
||||
return true;
|
||||
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
} finally {
|
||||
try {
|
||||
if (input != null) {
|
||||
input.close();
|
||||
input = null;
|
||||
}
|
||||
if (target != null) {
|
||||
target.close();
|
||||
target = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to check tar.gz/.tgz/.gz file is corrupted/destroyed
|
||||
*
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public static boolean isGZIPValid(final String fileName) {
|
||||
GZIPInputStream inputStream = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(new File(fileName));
|
||||
inputStream = new GZIPInputStream(is);
|
||||
return true;
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}finally {
|
||||
try {
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
} else if(is != null) {
|
||||
is.close();
|
||||
is = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to check tar.tar file is corrupted/destroyed
|
||||
*
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
public static boolean isTarValid(final String fileName) {
|
||||
TarArchiveInputStream inputStream = null;
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = new FileInputStream(new File(fileName));
|
||||
inputStream = new TarArchiveInputStream(is);
|
||||
return inputStream.canReadEntryData(inputStream.getNextEntry());
|
||||
|
||||
} catch (IOException e) {
|
||||
return false;
|
||||
}finally {
|
||||
try {
|
||||
if (inputStream != null) {
|
||||
inputStream.close();
|
||||
inputStream = null;
|
||||
} else if(is != null) {
|
||||
is.close();
|
||||
is = null;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param mode
|
||||
* @param password
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public static Cipher createCipher(int mode, String password) throws Exception {
|
||||
String alg = "PBEWithSHA1AndDESede"; // BouncyCastle has better algorithms
|
||||
PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
|
||||
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(alg);
|
||||
SecretKey secretKey = keyFactory.generateSecret(keySpec);
|
||||
|
||||
Cipher cipher = Cipher.getInstance("PBEWithSHA1AndDESede");
|
||||
cipher.init(mode, secretKey, new PBEParameterSpec("saltsalt".getBytes(), 2000));
|
||||
|
||||
return cipher;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
package com.talend.compress.zip;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import net.lingala.zip4j.core.ZipFile;
|
||||
import net.lingala.zip4j.ZipFile;
|
||||
import net.lingala.zip4j.model.FileHeader;
|
||||
|
||||
public class Unzip {
|
||||
@@ -96,9 +97,10 @@ public class Unzip {
|
||||
"Please enter the password and try again..");
|
||||
}
|
||||
|
||||
ZipFile zipFile = new ZipFile(sourceZip);
|
||||
ZipFile zipFile = new ZipFile(sourceZip,password.toCharArray());
|
||||
|
||||
if(encording != null){
|
||||
zipFile.setFileNameCharset(encording);
|
||||
zipFile.setCharset(Charset.forName(encording));
|
||||
}
|
||||
|
||||
if (checkArchive) {
|
||||
@@ -108,10 +110,6 @@ public class Unzip {
|
||||
}
|
||||
}
|
||||
|
||||
if (zipFile.isEncrypted()) {
|
||||
zipFile.setPassword(password);
|
||||
}
|
||||
|
||||
List fileHeaderList = zipFile.getFileHeaders();
|
||||
|
||||
if (fileHeaderList == null) {
|
||||
@@ -130,7 +128,7 @@ public class Unzip {
|
||||
filename = filename.substring(filename.lastIndexOf('/') + 1);
|
||||
}
|
||||
|
||||
zipFile.extractFile(fileHeader, targetDir, null, filename);
|
||||
zipFile.extractFile(fileHeader, targetDir, filename);
|
||||
util.addUnzippedFiles(targetDir, filename);
|
||||
}
|
||||
}
|
||||
@@ -147,7 +145,7 @@ public class Unzip {
|
||||
}
|
||||
|
||||
if (checkArchive) {
|
||||
if (!org.talend.archive.IntegrityUtil.isEncryptedZipValid(file,
|
||||
if (!IntegrityUtil.isEncryptedZipValid(file,
|
||||
password)) {
|
||||
throw new RuntimeException("The file " + sourceZip
|
||||
+ " is corrupted, process terminated...");
|
||||
@@ -158,7 +156,7 @@ public class Unzip {
|
||||
try {
|
||||
is = new java.io.FileInputStream(sourceZip);
|
||||
is = new javax.crypto.CipherInputStream(is,
|
||||
org.talend.archive.IntegrityUtil.createCipher(
|
||||
IntegrityUtil.createCipher(
|
||||
javax.crypto.Cipher.DECRYPT_MODE, password));
|
||||
org.apache.commons.compress.archivers.zip.ZipArchiveInputStream input = new org.apache.commons.compress.archivers.zip.ZipArchiveInputStream(
|
||||
new java.io.BufferedInputStream(is),Optional.ofNullable(encording).orElse("UTF8"));
|
||||
@@ -184,7 +182,7 @@ public class Unzip {
|
||||
// apache common compress impl
|
||||
public void doUnzipWithoutDecryption() throws Exception {
|
||||
if (checkArchive
|
||||
&& !org.talend.archive.IntegrityUtil
|
||||
&& !IntegrityUtil
|
||||
.isZipValid(new java.io.File(sourceZip))) {
|
||||
Thread.sleep(1000); // To make the process terminated after the
|
||||
// System.out.println
|
||||
|
||||
@@ -5,16 +5,20 @@ import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import net.lingala.zip4j.core.ZipFile;
|
||||
import net.lingala.zip4j.ZipFile;
|
||||
import net.lingala.zip4j.model.ZipParameters;
|
||||
import net.lingala.zip4j.util.Zip4jConstants;
|
||||
|
||||
import net.lingala.zip4j.model.enums.AesKeyStrength;
|
||||
import net.lingala.zip4j.model.enums.CompressionLevel;
|
||||
import net.lingala.zip4j.model.enums.CompressionMethod;
|
||||
import net.lingala.zip4j.model.enums.EncryptionMethod;
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
|
||||
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
|
||||
import org.apache.commons.compress.compressors.gzip.GzipUtils;
|
||||
@@ -26,7 +30,7 @@ public class Zip {
|
||||
private String targetZip;
|
||||
private boolean overwriteExistTargetZip = true;
|
||||
private boolean makeTargetDir = false;
|
||||
private int compressLevel = 4;
|
||||
private CompressionLevel compressLevel = CompressionLevel.MEDIUM_FAST;
|
||||
private String encoding = "ISO-8859-15";
|
||||
|
||||
private boolean allFiles = true;
|
||||
@@ -40,8 +44,8 @@ public class Zip {
|
||||
|
||||
private boolean useZip4jEncryption = false;
|
||||
|
||||
private int encryptionMethod = Zip4jConstants.ENC_METHOD_AES;
|
||||
private int aesKeyStrength = Zip4jConstants.AES_STRENGTH_256;
|
||||
private EncryptionMethod encryptionMethod = EncryptionMethod.AES;
|
||||
private AesKeyStrength aesKeyStrength = AesKeyStrength.KEY_STRENGTH_256;
|
||||
|
||||
private String archiveFormat = "zip";
|
||||
private boolean syncFlush;
|
||||
@@ -79,19 +83,29 @@ public class Zip {
|
||||
}
|
||||
|
||||
public void setCompressLevel(int compressLevel) {
|
||||
this.compressLevel = compressLevel;
|
||||
switch (compressLevel){
|
||||
case 0:
|
||||
this.compressLevel = CompressionLevel.NO_COMPRESSION;
|
||||
break;
|
||||
case 4:
|
||||
this.compressLevel = CompressionLevel.MEDIUM_FAST;
|
||||
break;
|
||||
case 9:
|
||||
this.compressLevel = CompressionLevel.ULTRA;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void setMakeTargetDir(boolean makeTargetDir) {
|
||||
this.makeTargetDir = makeTargetDir;
|
||||
}
|
||||
|
||||
public void setEncryptionMethod(int encryptionMethod) {
|
||||
this.encryptionMethod = encryptionMethod;
|
||||
public void setEncryptionMethod(String encryptionMethod) {
|
||||
this.encryptionMethod = EncryptionMethod.valueOf(encryptionMethod);
|
||||
}
|
||||
|
||||
public void setAesKeyStrength(int aesKeyStrength) {
|
||||
this.aesKeyStrength = aesKeyStrength;
|
||||
this.aesKeyStrength = AesKeyStrength.getAesKeyStrengthFromRawCode(aesKeyStrength);
|
||||
}
|
||||
|
||||
public String getArchiveFormat() {
|
||||
@@ -185,7 +199,7 @@ public class Zip {
|
||||
targetFile.setLastModified(System.currentTimeMillis());
|
||||
FileOutputStream fos = new FileOutputStream(targetFile);
|
||||
final boolean syncFlush = this.syncFlush;
|
||||
final int compressLevel = this.compressLevel;
|
||||
final int compressLevel = this.compressLevel.getLevel();
|
||||
TarArchiveOutputStream taos = new TarArchiveOutputStream(new GZIPOutputStream(fos, syncFlush) {
|
||||
{
|
||||
this.def.setLevel(compressLevel);
|
||||
@@ -222,7 +236,7 @@ public class Zip {
|
||||
OutputStream out = new FileOutputStream(tarFile);
|
||||
try {
|
||||
final boolean syncFlush = this.syncFlush;
|
||||
final int compressLevel = this.compressLevel;
|
||||
final int compressLevel = this.compressLevel.getLevel();
|
||||
GZIPOutputStream gcos = new GZIPOutputStream(out, syncFlush) {
|
||||
{
|
||||
this.def.setLevel(compressLevel);
|
||||
@@ -247,7 +261,7 @@ public class Zip {
|
||||
try {
|
||||
output_stream = new java.io.FileOutputStream(targetZip);
|
||||
if (isEncrypted && !"".equals(password)) {
|
||||
output_stream = new javax.crypto.CipherOutputStream(output_stream, org.talend.archive.IntegrityUtil.createCipher(
|
||||
output_stream = new javax.crypto.CipherOutputStream(output_stream, IntegrityUtil.createCipher(
|
||||
javax.crypto.Cipher.ENCRYPT_MODE, password));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -260,7 +274,7 @@ public class Zip {
|
||||
org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream out = null;
|
||||
out = new org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream(
|
||||
new java.io.BufferedOutputStream(output_stream));
|
||||
out.setLevel(compressLevel);
|
||||
out.setLevel(compressLevel.getLevel());
|
||||
// set filename & comment encoding
|
||||
out.setEncoding(encoding);
|
||||
if ("ALWAYS".equals(zip64Mode)) {
|
||||
@@ -302,26 +316,26 @@ public class Zip {
|
||||
// zip4j impl
|
||||
private void doZip2(final File source, final List<File> list) throws Exception {
|
||||
|
||||
ZipFile zipFile = new ZipFile(targetZip);
|
||||
ZipFile zipFile = new ZipFile(targetZip,password.toCharArray());
|
||||
if ("UTF-8".equalsIgnoreCase(encoding)) {
|
||||
encoding = "UTF8";
|
||||
}
|
||||
zipFile.setFileNameCharset(encoding);
|
||||
zipFile.setCharset(Charset.forName(encoding));
|
||||
|
||||
ZipParameters params = new ZipParameters();
|
||||
params.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
|
||||
params.setCompressionMethod(CompressionMethod.DEFLATE);
|
||||
params.setCompressionLevel(compressLevel);
|
||||
|
||||
if (isEncrypted && !"".equals(password)) {
|
||||
params.setEncryptFiles(true);
|
||||
params.setEncryptionMethod(encryptionMethod);
|
||||
if (Zip4jConstants.ENC_METHOD_AES == encryptionMethod) {
|
||||
if (encryptionMethod == EncryptionMethod.AES) {
|
||||
|
||||
params.setAesKeyStrength(aesKeyStrength);
|
||||
}
|
||||
params.setPassword(password);
|
||||
}
|
||||
|
||||
params.setDefaultFolderPath(source.getAbsoluteFile().getPath());
|
||||
zipFile.addFiles((ArrayList) list, params);
|
||||
zipFile.addFiles(list, params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,6 @@ bin.excludes = components/tAlfrescoOutput/wstx-lgpl-3.2.7.jar,\
|
||||
components/tRSSInput/nekohtml.jar,\
|
||||
components/tAlfrescoOutput/wstx-lgpl-3.2.7.jar,\
|
||||
components/tAdvancedXMLMapHash/trove.jar,\
|
||||
components/tCloudStart/logback-core-1.0.9.jar,\
|
||||
components/tCloudStart/logback-classic-1.0.9.jar,\
|
||||
components/tLineChart/jcommon-1.0.6.jar,\
|
||||
components/tMomInput/jnp-client.jar,\
|
||||
components/tMomInput/javassist.jar,\
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
LONG_NAME=\u039A\u03BB\u03B5\u03AF\u03BD\u03B5\u03B9 \u03BC\u03B9\u03B1 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 AS400.
|
||||
CONNECTION.NAME=\u039B\u03AF\u03C3\u03C4\u03B1 \u03A3\u03C5\u03C3\u03C4\u03B1\u03C4\u03B9\u03BA\u03CE\u03BD \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD
|
||||
@@ -1,3 +0,0 @@
|
||||
HELP=org.talend.help.tAS400Close
|
||||
LONG_NAME=Close a selected AS400 connection.
|
||||
CONNECTION.NAME=Component List
|
||||
@@ -1 +0,0 @@
|
||||
CONNECTION.NAME=\uCEF4\uD3EC\uB10C\uD2B8\uBAA9\uB85D
|
||||
@@ -1 +0,0 @@
|
||||
CONNECTION.NAME=Lista komponent\u00F3w
|
||||
@@ -1 +0,0 @@
|
||||
CONNECTION.NAME=Lista de componentes
|
||||
@@ -1,3 +0,0 @@
|
||||
CLOSE.NAME=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2
|
||||
LONG_NAME=\u039F\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03BD\u03B5\u03B9 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03C3\u03C5\u03BD\u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2 \u03C0\u03BF\u03C5 \u03B4\u03B5\u03BD \u03AD\u03C7\u03BF\u03C5\u03BD \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03B8\u03B5\u03AF \u03C3\u03C4\u03B7\u03BD \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 AS400
|
||||
CONNECTION.NAME=\u039B\u03AF\u03C3\u03C4\u03B1 \u03A3\u03C5\u03C3\u03C4\u03B1\u03C4\u03B9\u03BA\u03CE\u03BD \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD
|
||||
@@ -1,4 +0,0 @@
|
||||
CLOSE.NAME=Close Connection
|
||||
HELP=org.talend.help.tAS400Commit
|
||||
LONG_NAME=Commits all transactions not already commited in the selected AS400 connection
|
||||
CONNECTION.NAME=Component List
|
||||
@@ -1 +0,0 @@
|
||||
CLOSE.NAME=Zatvori konekciju
|
||||
@@ -1 +0,0 @@
|
||||
CONNECTION.NAME=\uCEF4\uD3EC\uB10C\uD2B8\uBAA9\uB85D
|
||||
@@ -1,2 +0,0 @@
|
||||
CLOSE.NAME=Zamknij po\u0142\u0105czenie
|
||||
CONNECTION.NAME=Lista komponent\u00F3w
|
||||
@@ -1,2 +0,0 @@
|
||||
CLOSE.NAME=Fechar conex\u00E3o
|
||||
CONNECTION.NAME=Lista de componentes
|
||||
@@ -1,4 +0,0 @@
|
||||
HOST.NAME=\u0627\u0644\u0645\u0636\u064A\u0641
|
||||
PASS.NAME=\u0631\u0645\u0632 \u0627\u0644\u0645\u0631\u0648\u0631
|
||||
AUTO_COMMIT.NAME=\u062A\u0623\u0643\u064A\u062F \u062D\u0641\u0638 \u0622\u0644\u064A
|
||||
DBNAME.NAME=\u0642\u0627\u0639\u062F\u0629 \u0628\u064A\u0627\u0646\u0627\u062A
|
||||
@@ -1,16 +0,0 @@
|
||||
ENCODING.NAME=\u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7
|
||||
HOST.NAME=\u039A\u03CC\u03BC\u03B2\u03BF\u03C2
|
||||
LONG_NAME=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03B5\u03AF \u03BC\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03B5 \u03BC\u03B9\u03B1 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD AS400
|
||||
NULL_CHAR.NAME=\u03A7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B1\u03C2 Null
|
||||
PASS.NAME=\u039A\u03C9\u03B4\u03B9\u03BA\u03AE \u03BB\u03AD\u03BE\u03B7
|
||||
PORT.NAME=\u0398\u03CD\u03C1\u03B1
|
||||
PROPERTIES.NAME=\u03A0\u03C1\u03CC\u03C3\u03B8\u03B5\u03C4\u03B5\u03C2 \u03A0\u03B1\u03C1\u03AC\u03BC\u03B5\u03C4\u03C1\u03BF\u03B9 JDBC
|
||||
USER.NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
DB_VERSION.NAME=\u0388\u03BA\u03B4\u03BF\u03C3\u03B7 \u0392\u03B4
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 \u03C3\u03B5 V5R4 (Deprecated)
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 \u03C3\u03B5 V6R1 (Deprecated)
|
||||
USE_SHARED_CONNECTION.NAME=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03AE \u039A\u03B1\u03C4\u03B1\u03C7\u03CE\u03C1\u03B7\u03C3\u03B7 \u03BC\u03B9\u03B1\u03C2 \u03B4\u03B9\u03B1\u03BC\u03BF\u03B9\u03C1\u03B1\u03B6\u03CC\u03BC\u03B5\u03BD\u03B7\u03C2 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2 \u0392\u0394
|
||||
SHARED_CONNECTION_NAME.NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u0394\u03B9\u03B1\u03BC\u03BF\u03B9\u03C1\u03B1\u03B6\u03CC\u03BC\u03B5\u03BD\u03B7\u03C2 \u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2 \u0392\u0394
|
||||
AUTO_COMMIT.NAME=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u0394\u03AD\u03C3\u03BC\u03B5\u03C5\u03C3\u03B7
|
||||
TYPE.NAME=\u039F\u03B4\u03B7\u03B3\u03CC\u03C2 \u0392\u03AC\u03C3\u03B7\u03C2 \u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||
PROPERTY.NAME=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0399\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2
|
||||
@@ -1,21 +0,0 @@
|
||||
ENCODING.NAME=Encoding
|
||||
HELP=org.talend.help.tAS400Connection
|
||||
HOST.NAME=Host
|
||||
LONG_NAME=Creates a connection to an AS400 database
|
||||
NULL_CHAR.NAME=Null Char
|
||||
PASS.NAME=Password
|
||||
PORT.NAME=Port
|
||||
PROPERTIES.NAME=Additional JDBC Parameters
|
||||
USER.NAME=Username
|
||||
DB_VERSION.NAME=DB Version
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 to V5R4 (Deprecated)
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 to V6R1 (Deprecated)
|
||||
USE_SHARED_CONNECTION.NAME=Use or register a shared DB Connection
|
||||
SHARED_CONNECTION_NAME.NAME=Shared DB Connection Name
|
||||
AUTO_COMMIT.NAME=Auto Commit
|
||||
TYPE.NAME=Database Driver
|
||||
PROPERTY.NAME=Property Type
|
||||
DB_VERSION.ITEM.V6R1_V7R2=V6R1 to V7R2
|
||||
DBNAME.NAME=Database
|
||||
NB_LINE.NAME=Number of line
|
||||
DB_VERSION.ITEM.V7R1_V7R3=V7R1 to V7R3
|
||||
@@ -1,8 +0,0 @@
|
||||
HOST.NAME=Host
|
||||
PASS.NAME=Lozinka
|
||||
PORT.NAME=Port
|
||||
PROPERTIES.NAME=Dodatni JDBC Parametri
|
||||
USER.NAME=Korisni\u010Dko ime
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 u V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 u V6R1
|
||||
PROPERTY.NAME=Tip svojstva
|
||||
@@ -1,2 +0,0 @@
|
||||
PASS.NAME=\uBE44\uBC00\uBC88\uD638
|
||||
USER.NAME=\uC0AC\uC6A9\uC790
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=Wachtwoord
|
||||
USER.NAME=Gebruikersnaam
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 to V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 to V6R1
|
||||
@@ -1,12 +0,0 @@
|
||||
ENCODING.NAME=Kodowanie
|
||||
HOST.NAME=Host
|
||||
NULL_CHAR.NAME=Znak Null
|
||||
PASS.NAME=Has\u0142o
|
||||
PORT.NAME=Port
|
||||
USER.NAME=Nazwa u\u017Cytkownika
|
||||
DB_VERSION.NAME=Wersja bazy danych
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 na V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 na V6R1
|
||||
AUTO_COMMIT.NAME=Auto Commit
|
||||
TYPE.NAME=Sterownik bazy danych
|
||||
PROPERTY.NAME=Typ w\u0142a\u015Bciwo\u015Bci
|
||||
@@ -1,5 +0,0 @@
|
||||
HOST.NAME=Host
|
||||
NULL_CHAR.NAME=Caracter nulo
|
||||
PASS.NAME=Senha
|
||||
PORT.NAME=Porta
|
||||
AUTO_COMMIT.NAME=Auto Commit
|
||||
@@ -1,6 +0,0 @@
|
||||
ENCODING.NAME=Incodare
|
||||
HOST.NAME=host
|
||||
PASS.NAME=parola
|
||||
PORT.NAME=port
|
||||
USER.NAME=Nume utilizator
|
||||
USE_SHARED_CONNECTION.NAME=Inregistreaz\u0103 sau folose\u015Fte legatur\u0103 DB partajat\u0103
|
||||
@@ -1,3 +0,0 @@
|
||||
PASS.NAME=\u015Eifre
|
||||
PORT.NAME=Port
|
||||
USER.NAME=Kullan\u0131c\u0131 Ad\u0131
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=\u0631\u0645\u0632 \u0627\u0644\u0645\u0631\u0648\u0631
|
||||
SCHEMA_DB.NAME=\u0645\u062E\u0637\u0637
|
||||
SCHEMA.NAME=\u0645\u062E\u0637\u0637
|
||||
DBNAME.NAME=\u0642\u0627\u0639\u062F\u0629 \u0628\u064A\u0627\u0646\u0627\u062A
|
||||
@@ -1,23 +0,0 @@
|
||||
HOST.NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u03BA\u03CC\u03BC\u03B2\u03BF\u03C5
|
||||
LONG_NAME=\u0394\u03B9\u03B1\u03B2\u03AC\u03B6\u03B5\u03B9 \u03AD\u03BD\u03B1\u03BD \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u03BA\u03B1\u03B9 \u03B5\u03BE\u03AC\u03B3\u03B5\u03B9 \u03C0\u03B5\u03B4\u03AF\u03B1 \u03B2\u03AC\u03C3\u03B5\u03B9 \u03B5\u03BD\u03CC\u03C2 \u03B5\u03C1\u03C9\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 SQL
|
||||
PASS.NAME=\u039A\u03C9\u03B4\u03B9\u03BA\u03AE \u03BB\u03AD\u03BE\u03B7
|
||||
PROPERTIES.NAME=\u03A0\u03C1\u03CC\u03C3\u03B8\u03B5\u03C4\u03B5\u03C2 \u03A0\u03B1\u03C1\u03AC\u03BC\u03B5\u03C4\u03C1\u03BF\u03B9 JDBC
|
||||
QUERY.NAME=\u0395\u03C1\u03CE\u03C4\u03B7\u03BC\u03B1
|
||||
QUERYSTORE.NAME=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0395\u03C1\u03C9\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
|
||||
SCHEMA_DB.NAME=\u03A3\u03C7\u03AE\u03BC\u03B1
|
||||
USER.NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7
|
||||
USE_EXISTING_CONNECTION.NAME=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03C3\u03B1\u03C2 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2
|
||||
TRIM_ALL_COLUMN.NAME=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BA\u03B5\u03BD\u03CE\u03BD \u03B1\u03C0\u03CC \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03C3\u03C4\u03AE\u03BB\u03B5\u03C2 String/Char
|
||||
TRIM_COLUMN.NAME=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03BA\u03B5\u03BD\u03CE\u03BD \u03B1\u03C0\u03CC \u03C3\u03C4\u03AE\u03BB\u03B7
|
||||
TRIM_COLUMN.ITEM.TRIM=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u039A\u03B5\u03BD\u03CE\u03BD
|
||||
TABLE.NAME=\u038C\u03BD\u03BF\u03BC\u03B1 \u03A0\u03AF\u03BD\u03B1\u03BA\u03B1
|
||||
DB_VERSION.NAME=\u0388\u03BA\u03B4\u03BF\u03C3\u03B7 \u0392\u03B4
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 \u03C3\u03B5 V5R4 (Deprecated)
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 \u03C3\u03B5 V6R1 (Deprecated)
|
||||
GUESS_SCHEMA.NAME=\u0395\u03B9\u03BA\u03B1\u03C3\u03AF\u03B1 \u03A3\u03C7\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2
|
||||
CONNECTION.NAME=\u039B\u03AF\u03C3\u03C4\u03B1 \u03A3\u03C5\u03C3\u03C4\u03B1\u03C4\u03B9\u03BA\u03CE\u03BD \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD
|
||||
PROPERTY.NAME=\u03A4\u03CD\u03C0\u03BF\u03C2 \u0399\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2
|
||||
TYPE.NAME=\u039F\u03B4\u03B7\u03B3\u03CC\u03C2 \u0392\u03AC\u03C3\u03B7\u03C2 \u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD
|
||||
SCHEMA.NAME=\u03A3\u03C7\u03AE\u03BC\u03B1
|
||||
ENCODING.NAME=\u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7
|
||||
MAPPING.NAME=\u03A7\u03B1\u03C1\u03C4\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7
|
||||
@@ -1,28 +0,0 @@
|
||||
HELP=org.talend.help.tAS400Input
|
||||
HOST.NAME=Host name
|
||||
LONG_NAME=Reads a table and extracts fields based on an SQL query
|
||||
PASS.NAME=Password
|
||||
PROPERTIES.NAME=Additional JDBC Parameters
|
||||
QUERY.NAME=Query
|
||||
QUERYSTORE.NAME=Query Type
|
||||
SCHEMA_DB.NAME=Schema
|
||||
USER.NAME=Username
|
||||
USE_EXISTING_CONNECTION.NAME=Using an existing connection
|
||||
TRIM_ALL_COLUMN.NAME=Trim all the String/Char columns
|
||||
TRIM_COLUMN.NAME=Trim column
|
||||
TRIM_COLUMN.ITEM.TRIM=Trim
|
||||
TABLE.NAME=Table Name
|
||||
DB_VERSION.NAME=DB Version
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 to V5R4 (Deprecated)
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 to V6R1 (Deprecated)
|
||||
GUESS_SCHEMA.NAME=Guess Schema
|
||||
CONNECTION.NAME=Component List
|
||||
PROPERTY.NAME=Property Type
|
||||
TYPE.NAME=Database Driver
|
||||
SCHEMA.NAME=Schema
|
||||
ENCODING.NAME=Encoding
|
||||
MAPPING.NAME=Mapping
|
||||
DB_VERSION.ITEM.V6R1_V7R2=V6R1 to V7R2
|
||||
DBNAME.NAME=Database
|
||||
NB_LINE.NAME=Number of line
|
||||
DB_VERSION.ITEM.V7R1_V7R3=V7R1 to V7R3
|
||||
@@ -1,10 +0,0 @@
|
||||
PASS.NAME=Lozinka
|
||||
PROPERTIES.NAME=Dodatni JDBC Parametri
|
||||
SCHEMA_DB.NAME=\n\n\t\n\nCollection\n\nSchema
|
||||
USER.NAME=Korisni\u010Dko ime
|
||||
USE_EXISTING_CONNECTION.NAME=Koristi postoje\u0107u konekciju
|
||||
TABLE.NAME=Naziv tablice
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 u V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 u V6R1
|
||||
PROPERTY.NAME=Tip svojstva
|
||||
SCHEMA.NAME=\n\n\t\n\nCollection\n\nSchema
|
||||
@@ -20,7 +20,7 @@ MAPPING.NAME=\u30DE\u30C3\u30D4\u30F3\u30B0
|
||||
SET_QUERY_TIMEOUT.NAME=\u30AF\u30A8\u30EA\u30FC\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3092\u8A2D\u5B9A
|
||||
QUERY_TIMEOUT_IN_SECONDS.NAME=\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u79D2\uFF09
|
||||
NB_LINE.NAME=\u884C\u6570
|
||||
GUESS_SCHEMA.NAME=\u30B9\u30AD\u30FC\u30DE\u306E\u63A8\u6E2C
|
||||
GUESS_SCHEMA.NAME=\u30B9\u30AD\u30FC\u30DE\u3092\u63A8\u6E2C
|
||||
CONNECTION.NAME=\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30EA\u30B9\u30C8
|
||||
PROPERTY.NAME=\u30D7\u30ED\u30D1\u30C6\u30A3\u30BF\u30A4\u30D7
|
||||
TYPE.NAME=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C9\u30E9\u30A4\u30D0\u30FC
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=\uBE44\uBC00\uBC88\uD638
|
||||
USER.NAME=\uC0AC\uC6A9\uC790
|
||||
TABLE.NAME=\uD14C\uC774\uBE14\uBA85
|
||||
CONNECTION.NAME=\uCEF4\uD3EC\uB10C\uD2B8\uBAA9\uB85D
|
||||
@@ -1,5 +0,0 @@
|
||||
PASS.NAME=Wachtwoord
|
||||
USER.NAME=Gebruikersnaam
|
||||
TABLE.NAME=Tabelnaam
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 to V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 to V6R1
|
||||
@@ -1,16 +0,0 @@
|
||||
PASS.NAME=Has\u0142o
|
||||
QUERY.NAME=Zapytanie
|
||||
QUERYSTORE.NAME=Typ zapytania
|
||||
SCHEMA_DB.NAME=Schemat
|
||||
USER.NAME=Nazwa u\u017Cytkownika
|
||||
TABLE.NAME=Nazwa tabeli
|
||||
DB_VERSION.NAME=Wersja bazy danych
|
||||
DB_VERSION.ITEM.V5R2_V5R4=V5R2 na V5R4
|
||||
DB_VERSION.ITEM.V5R3_V6R1=V5R3 na V6R1
|
||||
GUESS_SCHEMA.NAME=Podpowiedz schemat
|
||||
CONNECTION.NAME=Lista komponent\u00F3w
|
||||
PROPERTY.NAME=Typ w\u0142a\u015Bciwo\u015Bci
|
||||
TYPE.NAME=Sterownik bazy danych
|
||||
SCHEMA.NAME=Schemat
|
||||
ENCODING.NAME=Kodowanie
|
||||
MAPPING.NAME=Mapowanie
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=Senha
|
||||
QUERYSTORE.NAME=Tipo da consulta
|
||||
TABLE.NAME=Nome da Tabela
|
||||
CONNECTION.NAME=Lista de componentes
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=parola
|
||||
USER.NAME=Nume utilizator
|
||||
USE_EXISTING_CONNECTION.NAME=Folosire conexiune existent\u0103
|
||||
ENCODING.NAME=Incodare
|
||||
@@ -1,2 +0,0 @@
|
||||
SCHEMA_DB.NAME=Schema
|
||||
SCHEMA.NAME=Schema
|
||||
@@ -1,4 +0,0 @@
|
||||
PASS.NAME=\u015Eifre
|
||||
SCHEMA_DB.NAME=\u015Eema
|
||||
USER.NAME=Kullan\u0131c\u0131 Ad\u0131
|
||||
SCHEMA.NAME=\u015Eema
|
||||
@@ -1 +0,0 @@
|
||||
SCHEMA.NAME=\u0645\u062E\u0637\u0637
|
||||
@@ -1,2 +0,0 @@
|
||||
SCHEMA.NAME=\u03A3\u03C7\u03AE\u03BC\u03B1
|
||||
CONNECTION.NAME=\u039B\u03AF\u03C3\u03C4\u03B1 \u03A3\u03C5\u03C3\u03C4\u03B1\u03C4\u03B9\u03BA\u03CE\u03BD \u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user