Compare commits

...

43 Commits

Author SHA1 Message Date
Zhiwei Xue
68ae91573d feat(TUP-37353):Guess Schema for tBigQueryInput (#5953) 2023-02-09 17:05:13 +08:00
Zhiwei Xue
a9f5e42f6d fix(TUP-37971):Studio 8 failed to update using "NIGHTLY" Update URL if (#5973)
Studio was used before
2023-02-09 11:30:22 +08:00
zyuan-talend
e4250d1120 fix(TUP-37700):generate microservice dependencies into componentIndex (#5923)
file.
2023-02-07 15:14:37 +08:00
sbliu
7225c51654 fix(TUP-37692) XPath json use context can't get any data when running job (#5909)
* fix(TUP-37692) some change not finished

* to show tree node according to if add root or add root/object
2023-02-07 09:32:21 +08:00
bhe-talendbj
11bf826613 feat(TUP-37595): reintroduce ingres/vectorwise in metedata (#5902)
* feat(TUP-37595): add back ingres and vectorwise db

* feat(TUP-37595): add back ingres and vectorwise db

* feat(TUP-37595): enable ingres and vectorwise
2023-02-06 17:24:29 +08:00
bhe-talendbj
2039df6058 fix(TUP-37920): fix sqllite retrieve tables (#5959) 2023-02-06 17:22:22 +08:00
hcyi
59147d2bf3 fix(TUP-36823):Generated SQL Query for Teradata misses reserved word (#5915)
"TIME"
2023-02-06 15:29:54 +08:00
bhe-talendbj
a272ce7fe3 feat(TUP-37841): Generating jsonform for all of components automatically (#5947)
* feat(TUP-37841): add jsonform generator

* feat(TUP-37841): add jsonform generator

* feat(TUP-37841): correct class path

* feat(TUP-37841): correct class path

* feat(TUP-37841): refactor

* feat(TUP-37841): refactor
2023-02-06 10:00:19 +08:00
jiezhang-tlnd
d32d4c1c2c fix(TUP-37349)Data viewer for tCouchBaseInput get npe error (#5848)
* fix(TUP-37349)Data viewer for tCouchBaseInput get npe error
https://jira.talendforge.org/browse/TUP-37349

* Data viewer for tCouchBaseInput get npe error
2023-02-06 09:39:51 +08:00
Emmanuel GALLOIS
51ca13e2ee fix(TCOMP-2368): align log4j version (#5966) 2023-02-03 14:31:10 +01:00
Zhiwei Xue
3d697f472c fix(TUP-35407):project rootPom template not considered anymore. (#5917)
* fix(TUP-35407):project rootPom template not considered anymore.

* fix(TUP-35407):improve UI
2023-02-03 17:41:07 +08:00
kjwang
0dcd60f44b TUP-37344 If access token & refresh token change to invalid, can't show (#5835)
TUP-37344 If access token & refresh token change to invalid, can't show log in dialog when user selected auto login
https://jira.talendforge.org/browse/TUP-37344
2023-02-03 11:02:47 +08:00
Jane Ding
8f59c857d8 fix(TUP-37358):Adding org.ops4j.pax.url.mvn.useFallbackRepositories=false for studio ops4j (#5868)
* fix(TUP-37358):Adding
org.ops4j.pax.url.mvn.useFallbackRepositories=false for studio ops4j
https://jira.talendforge.org/browse/TUP-37358

* fix(TUP-37358):Adding
org.ops4j.pax.url.mvn.useFallbackRepositories=false for studio ops4j
https://jira.talendforge.org/browse/TUP-37358
2023-02-02 17:26:06 +08:00
Jane Ding
442631c61b fix(TUP-37253):Excel Metadata fails to set column names and results in (#5816)
IndexOutOfBounds for æ character
https://jira.talendforge.org/browse/TUP-37253
2023-02-02 17:25:45 +08:00
Emmanuel GALLOIS
31303fa608 feat(TDI-49275): bump component-runtime to 1.53.0 (#5943) 2023-02-01 11:21:34 +01:00
bhe-talendbj
fea26cbefa fix(TUP-37425): Performance: Not Responding while Retrieving schema and the database contains many tables (#5950)
* fix(TUP-37425): fix retrieve schema

* fix(TUP-37425): check NPE
2023-01-30 19:38:16 +08:00
Jane Ding
21254ffaca Add localized files (#5945) (#5946)
Co-authored-by: tsasada-talend <51699524+tsasada-talend@users.noreply.github.com>
Co-authored-by: build-talend-doc <build-talend-doc@talend.com>
2023-01-28 11:48:39 +08:00
bhe-talendbj
caa4b51cc4 chore(TUP-37660): upgrade sqlite-jdbc (#5899) 2023-01-18 14:37:10 +08:00
bhe-talendbj
b2fdccc3e7 chore: fix junit exe resolve (#5936)
* chore: fix exe resolve

* chore: revert unnecessay changes

* chore: remove exe dependency test
2023-01-17 17:55:34 +08:00
jiezhang-tlnd
da208c72f6 force update time stamp (#5934) 2023-01-17 16:11:39 +08:00
bhe-talendbj
bd6a271805 bugfix(TUP-37425): Performance: Not Responding while Retrieving schema and the database contains many tables (#5864)
* fix(TUP-37425): retrieve table comment once

* fix(TUP-37425): add busy indicator

* fix(TUP-37425): fix UI responsiveness
2023-01-16 19:26:43 +08:00
Zhiwei Xue
cd5af34395 fix(TUP-37751):Data view/Guess schema fail if set java interpreter to (#5924)
jdk 8
2023-01-11 21:15:09 +08:00
bhe-talendbj
ba71689fac feat(TUP-37030): Research: Enable signing GIT commits from GPG (#5767)
* feat(TUP-37030): enable git preference page

* feat(TUP-37030): enable egit preference page for standard mode
2023-01-11 10:29:30 +08:00
hzhao
f6a123ad2b feat(TUP-37472): Oracle version cleanup (#5895)
* feat(TUP-37472): Oracle version cleanup

* feat(TUP-37472): Oracle version cleanup

* feat(TUP-37472): Oracle version cleanup

* feat(TUP-37472): Oracle version cleanup
2023-01-11 10:10:58 +08:00
sbliu
14d9caec2e feat(TUP-36197) Remove git branch name in project setting (#5898)
* feat(TUP-36197) retrieve branch name for build/publish job

* set branch value from null to empty
2023-01-10 15:26:20 +08:00
hzhao
96f177cb95 chore(TUP-35265): upgrade 'crypto-utils' jar in low level (#5647)
* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level

* chore(TUP-35265): upgrade 'crypto-utils' jar in low level
2023-01-10 14:42:34 +08:00
kjwang
4a34141e6f TUP-30674 Support rename on custom jar and inner code. (#5831)
TUP-30674 Support rename on custom jar and inner code.
https://jira.talendforge.org/browse/TUP-30674
2023-01-10 11:51:31 +08:00
Wei Hua
9bf06c26bb APPINT-35260 CVE-2022-36033, jsoup:1.14.2 (#5892) 2023-01-09 18:15:17 +08:00
Jane Ding
51010064c7 fix(TUP-37012):Help Pane: Online Tools menu: (#5858)
* fix(TUP-37012):Help Pane: Online Tools menu:
Bugtracker/sources/exchange/forum menus
https://jira.talendforge.org/browse/TUP-37012

* fix(TUP-37012):Help Pane: Online Tools menu:
Bugtracker/sources/exchange/forum menus
https://jira.talendforge.org/browse/TUP-37012

* fix(TUP-37012):Help Pane: Online Tools menu:
Bugtracker/sources/exchange/forum menus
https://jira.talendforge.org/browse/TUP-37012
2023-01-09 10:36:43 +08:00
Zhiwei Xue
d0a5c76459 feat(TUP-36692):Modify Studio launcher ini for more --add-opens when apply monthly update (#5824)
* feat(TUP-36692):Modify Studio launcher ini for more --add-opens when
apply monthly update

* Revert "feat(TUP-36692):Modify Studio launcher ini for more --add-opens when apply monthly update"

This reverts commit 7ce834063440af5b87c9a35f1ecfbbdc67413829.

* feat(TUP-36692): include p2.inf for patch only
2023-01-06 16:25:16 +08:00
Emmanuel GALLOIS
4b308e1d34 feat(TCOMP-2235): bump cxf to 3.5.5 2023-01-05 12:02:14 +01:00
Emmanuel GALLOIS
b39332b706 feat(TCOMP-2235): bump component-runtime to 1.52.1 (#5908) 2023-01-05 11:58:17 +01:00
hcyi
556ab359d9 fix(TUP-37587):CVE : upgrade redshift-jdbc42 to 2.1.0.10 or latest (#5886) 2023-01-05 11:25:54 +08:00
jiezhang-tlnd
55f8537c15 chore(TUP-37524)CVE-2022-46364,org.apache.cxf:cxf-core:3.4.4,3.5.2 (#5878) 2023-01-04 16:36:08 +08:00
jiezhang-tlnd
98f0a248dc chore(TUP-37124)CVE-2022-36033,org.jsoup:jsoup:1.14.2 (#5793)
* chore(TUP-37124)CVE-2022-36033,org.jsoup:jsoup:1.14.2

* change verison to 1.15.3
2022-12-30 14:41:42 +08:00
Jane Ding
360c36b6bb fix(TUP-37467):[8.0.1&7.3.1] custom component are no more build as (#5876)
* fix(TUP-37467):[8.0.1&7.3.1] custom component are no more build as
snapshot but releases since june/july patch
https://jira.talendforge.org/browse/TUP-37467

* fix(TUP-37467):[8.0.1&7.3.1] custom component are no more build as
snapshot but releases since june/july patch
https://jira.talendforge.org/browse/TUP-37467

* fix(TUP-37467):[8.0.1&7.3.1] custom component are no more build as
snapshot but releases since june/july patch
https://jira.talendforge.org/browse/TUP-37467

* fix(TUP-37467):[8.0.1&7.3.1] custom component are no more build as
snapshot but releases since june/july patch
https://jira.talendforge.org/browse/TUP-37467
2022-12-28 17:41:01 +08:00
kjwang
c5e48b7e97 feat: TUP-37444 DI Repository view improvements (#5881) (#5897)
* feat: TUP-37444 DI Repository view improvements
https://jira.talendforge.org/browse/TUP-37444
2022-12-27 10:24:43 +08:00
Chao MENG
8b3040a4f6 feat(TUP-37052): dark theme support (#5849)
feat(TUP-37052): dark theme support
https://jira.talendforge.org/browse/TUP-37052
2022-12-26 15:27:53 +08:00
Jane Ding
fac09dcc63 Revert "fix(TUP-37227):Issue building when items names too long (#5828)" (#5889)
This reverts commit 00a777d477.
2022-12-23 11:43:18 +08:00
pyzhou
f97757fa8e fix(TDI-49103):bump up tck 1.52.0 (#5884) 2022-12-22 10:30:14 +08:00
wchen-talend
3a557a7658 feat(TUP-36415): fix tuj (#5879) 2022-12-20 09:58:37 +08:00
Jane Ding
00a777d477 fix(TUP-37227):Issue building when items names too long (#5828)
* fix(TUP-37227):Issue building when items names too long
https://jira.talendforge.org/browse/TUP-37227

* fix(TUP-37227):Issue building when items names too long
https://jira.talendforge.org/browse/TUP-37227
2022-12-19 12:02:00 +08:00
jiezhang-tlnd
eb661b81c5 80 loc ja jp 2022 12 15 08 15 (#5875)
* Add localized files (#5873)

Co-authored-by: jenkins-git <jenkins-git@talend.com>

* Add localized files (#5874)

Co-authored-by: jenkins-git <jenkins-git@talend.com>

Co-authored-by: tsasada-talend <51699524+tsasada-talend@users.noreply.github.com>
Co-authored-by: jenkins-git <jenkins-git@talend.com>
Co-authored-by: Alexiane Yvonet <ayvonet@talend.com>
2022-12-16 11:35:38 +08:00
132 changed files with 4796 additions and 704 deletions

View File

@@ -9,4 +9,7 @@
</parent>
<artifactId>org.talend.utils.feature</artifactId>
<packaging>eclipse-feature</packaging>
<properties>
<tycho.buildtimestamp.format>${timestamp}</tycho.buildtimestamp.format>
</properties>
</project>

View File

@@ -4,4 +4,6 @@ bin.includes = META-INF/,\
plugin.xml,\
icons/,\
icons1/,\
.
.,\
resources/

View File

@@ -1,5 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.e4.ui.css.swt.theme">
<stylesheet
uri="resources/theme/light_preferencestyle.css">
<themeid
refid="org.talend.themes.css.talend.default"></themeid>
</stylesheet>
<stylesheet
uri="resources/theme/dark_preferencestyle.css">
<themeid
refid="org.eclipse.e4.ui.css.theme.e4_dark"></themeid>
</stylesheet>
</extension>
</plugin>

View File

@@ -0,0 +1,8 @@
/* ############################## Eclipse UI properties ############################## */
IEclipsePreferences#org-talend-common-ui-runtime:org-talend-common-ui-runtime { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
preferences:
'table.background=#org-eclipse-ui-workbench-DARK_BACKGROUND'
'table.foreground=#org-eclipse-ui-workbench-DARK_FOREGROUND'
}

View File

@@ -0,0 +1,8 @@
/* ############################## Eclipse UI properties ############################## */
IEclipsePreferences#org-talend-common-ui-runtime:org-talend-common-ui-runtime { /* pseudo attribute added to allow contributions without replacing this node, see Bug 466075 */
preferences:
'table.background=COLOR-LIST-BACKGROUND'
'table.foreground=COLOR_LIST_FOREGROUND'
}

View File

@@ -12,14 +12,22 @@
// ============================================================================
package org.talend.commons.ui.runtime;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
/**
* DOC cmeng class global comment. Detailled comment
*/
public interface ColorConstants {
static final String BUNDLE_ID_COMMON_UI_RUNTIME = "org.talend.common.ui.runtime";
static final String KEY_TABLE_BACKGROUND = "table.background";
static final String KEY_TABLE_FOREGROUND = "table.foreground";
static final Color WHITE_COLOR = new Color(null, 255, 255, 255);
static final Color GREY_COLOR = new Color(null, 215, 215, 215);
@@ -45,4 +53,14 @@ public interface ColorConstants {
static final Color SUCCEED_COLOR = new Color(null, 221, 242, 217);
static Color getTableBackgroundColor() {
return ITalendThemeService.getColor(ColorConstants.BUNDLE_ID_COMMON_UI_RUNTIME, ColorConstants.KEY_TABLE_BACKGROUND)
.orElse(WHITE_COLOR);
}
static Color getTableForegroundColor() {
return ITalendThemeService.getColor(ColorConstants.BUNDLE_ID_COMMON_UI_RUNTIME, ColorConstants.KEY_TABLE_FOREGROUND)
.orElse(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
}
}

View File

@@ -23,6 +23,8 @@ import org.talend.commons.ui.runtime.exception.ExceptionServiceImpl;
public class CommonUIPlugin implements BundleActivator {
public static String BUNDLE_ID = "org.talend.common.ui.runtime";
private static Boolean fullyHeadless = null;
/*

View File

@@ -0,0 +1,149 @@
// ============================================================================
//
// Copyright (C) 2006-2022 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.commons.ui.runtime;
import java.util.Optional;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.swt.graphics.Color;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.ServiceReference;
import org.talend.commons.exception.ExceptionHandler;
/**
* DOC cmeng class global comment. Detailled comment
*/
public interface ITalendThemeService {
public static String DEFAULT_PREFERENCE_ID = "org.eclipse.ui.workbench";
/**
* Get color from instance scope preference of default bundleId, which managed by theme; the standard way eclipse
* uses
*
* @param prop
* @return the Color, <font color="red">please <b>DON'T</b> dispose it, it is managed by JFaceResources</font>
*/
static Optional<Color> getColor(String prop) {
return getColor(DEFAULT_PREFERENCE_ID, prop);
}
/**
* Get color from instance scope preference of bundleId, which managed by theme; the standard way eclipse uses
*
* @param bundleId the instance scope preference which stores the prop
* @param prop
* @return the Color, <font color="red">please <b>DON'T</b> dispose it, it is managed by JFaceResources</font>
*/
static Optional<Color> getColor(String bundleId, String prop) {
ITalendThemeService theme = get();
if (theme != null) {
return Optional.ofNullable(theme.getColorForTheme(bundleId, prop));
}
return Optional.ofNullable(null);
}
Color getColorForTheme(String bundleId, String prop);
/**
* Get property from instance scope preference of default bundleId, which managed by theme; the standard way eclipse
* uses
*
* @param key
* @return
*/
static Optional<String> getProperty(String key) {
return getProperty(DEFAULT_PREFERENCE_ID, key);
}
/**
* Get property from instance scope preference of bundleId, which managed by theme; the standard way eclipse uses
*
* @param bundleId the instance scope preference which stores the key
* @param key
* @return
*/
static Optional<String> getProperty(String bundleId, String key) {
ITalendThemeService theme = get();
String value = null;
if (theme != null) {
value = theme.getPropertyForTheme(bundleId, key);
}
if (StringUtils.isBlank(value)) {
return Optional.ofNullable(null);
} else {
return Optional.ofNullable(value);
}
}
String getPropertyForTheme(String bundleId, String key);
static void addPropertyChangeListener(IPropertyChangeListener listener) {
ITalendThemeService theme = get();
if (theme != null) {
theme.addPropertyChangeListenerFor(DEFAULT_PREFERENCE_ID, listener);
}
}
static void addPropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
ITalendThemeService theme = get();
if (theme != null) {
theme.addPropertyChangeListenerFor(bundleId, listener);
}
}
void addPropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
static boolean containsPropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
ITalendThemeService theme = get();
if (theme != null) {
return theme.containsPropertyChangeListenerFor(bundleId, listener);
}
return false;
}
boolean containsPropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
static void removePropertyChangeListener(IPropertyChangeListener listener) {
ITalendThemeService theme = get();
if (theme != null) {
theme.removePropertyChangeListenerFor(DEFAULT_PREFERENCE_ID, listener);
}
}
static void removePropertyChangeListener(String bundleId, IPropertyChangeListener listener) {
ITalendThemeService theme = get();
if (theme != null) {
theme.removePropertyChangeListenerFor(bundleId, listener);
}
}
void removePropertyChangeListenerFor(String bundleId, IPropertyChangeListener listener);
static ITalendThemeService get() {
try {
BundleContext bc = FrameworkUtil.getBundle(ITalendThemeService.class).getBundleContext();
ServiceReference<ITalendThemeService> serviceReference = bc.getServiceReference(ITalendThemeService.class);
if (serviceReference == null) {
return null;
}
return bc.getService(serviceReference);
} catch (Exception e) {
ExceptionHandler.process(e);
}
return null;
}
}

View File

@@ -57,6 +57,8 @@ import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.talend.commons.ui.runtime.ColorConstants;
import org.talend.commons.ui.runtime.ITalendThemeService;
import org.talend.commons.ui.runtime.i18n.Messages;
import org.talend.commons.ui.runtime.swt.proposal.IShowInvisibleCellEditorMethods;
import org.talend.commons.ui.runtime.swt.tableviewer.behavior.DefaultHeaderColumnSelectionListener;
@@ -291,7 +293,8 @@ public class TableViewerCreatorNotModifiable<B> {
public TableViewerCreatorNotModifiable(Composite compositeParent) {
super();
this.compositeParent = compositeParent;
this.emptyZoneColor = compositeParent.getDisplay().getSystemColor(SWT.COLOR_WHITE);
this.emptyZoneColor = ITalendThemeService.getColor("org.talend.commons.ui.BgColorForEmptyArea")
.orElse(compositeParent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
}
@@ -669,8 +672,22 @@ public class TableViewerCreatorNotModifiable<B> {
table.addListener(SWTFacade.Paint, paintListener);
}
setBackgroundColor(backgroundColor != null ? backgroundColor : table.getDisplay().getSystemColor(SWT.COLOR_WHITE));
setForegroundColor(foregroundColor != null ? foregroundColor : table.getDisplay().getSystemColor(SWT.COLOR_BLACK));
Color prefBackgroundColor = backgroundColor;
if (prefBackgroundColor == null) {
prefBackgroundColor = ColorConstants.getTableBackgroundColor();
if (prefBackgroundColor == null) {
prefBackgroundColor = table.getDisplay().getSystemColor(SWT.COLOR_WHITE);
}
}
Color prefForegroundColor = foregroundColor;
if (prefForegroundColor == null) {
prefForegroundColor = ColorConstants.getTableForegroundColor();
if (prefForegroundColor == null) {
prefForegroundColor = table.getDisplay().getSystemColor(SWT.COLOR_BLACK);
}
}
setBackgroundColor(prefBackgroundColor);
setForegroundColor(prefForegroundColor);
if (useCustomItemColoring) {
setUseCustomItemColoring(true);

View File

@@ -12,9 +12,14 @@
// ============================================================================
package org.talend.commons.ui.runtime.utils;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.DataFormatException;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.StringConverter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Device;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
/**
@@ -102,4 +107,16 @@ public class TalendColorPalette {
public static final java.awt.Color TERTIARY_ORANGE_AWT = new java.awt.Color(244, 175, 128);
public static final java.awt.Color TERTIARY_YELLOW_AWT = new java.awt.Color(255, 217, 143);
public static Color convertToColor(String rgbStr) throws DataFormatException {
ColorRegistry colorRegistry = JFaceResources.getColorRegistry();
Color color = colorRegistry.get(rgbStr);
if (color != null) {
return color;
}
RGB rgb = StringConverter.asRGB(rgbStr);
colorRegistry.put(rgbStr, rgb);
return colorRegistry.get(rgbStr);
}
}

View File

@@ -283,6 +283,7 @@
<KEYWORD1>smallint</KEYWORD1>
<KEYWORD1>smallmoney</KEYWORD1>
<KEYWORD1>text</KEYWORD1>
<KEYWORD1>TIME</KEYWORD1>
<KEYWORD1>timestamp</KEYWORD1>
<KEYWORD1>tinyint</KEYWORD1>
<KEYWORD1>uniqueidentifier</KEYWORD1>

View File

@@ -20,12 +20,14 @@ import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Table;
import org.talend.commons.ui.runtime.ITalendThemeService;
import org.talend.commons.ui.runtime.swt.tableviewer.TableViewerCreatorNotModifiable.LAYOUT_MODE;
import org.talend.commons.ui.runtime.swt.tableviewer.selection.ILineSelectionListener;
import org.talend.commons.ui.runtime.swt.tableviewer.selection.LineSelectionEvent;
@@ -156,6 +158,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
final Table table = getTableViewerCreator().getTable();
final ILineSelectionListener beforeLineSelectionListener = new ILineSelectionListener() {
@Override
public void handle(LineSelectionEvent e) {
if (e.selectionByMethod && !selectionHelper.isMouseSelectionning() && !forceExecuteSelectionEvent) {
executeSelectionEvent = false;
@@ -166,6 +169,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
};
final ILineSelectionListener afterLineSelectionListener = new ILineSelectionListener() {
@Override
public void handle(LineSelectionEvent e) {
executeSelectionEvent = true;
}
@@ -175,6 +179,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
DisposeListener disposeListener = new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
selectionHelper.removeBeforeSelectionListener(beforeLineSelectionListener);
selectionHelper.removeAfterSelectionListener(afterLineSelectionListener);
@@ -185,6 +190,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
table.addListener(SWT.KeyUp, new Listener() {
@Override
public void handleEvent(Event event) {
if (event.character == '\u0001') { // CTRL + A
@@ -251,7 +257,9 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
newTableViewerCreator.setLazyLoad(TableViewerCreator.getRecommandLazyLoad());
newTableViewerCreator.setFirstVisibleColumnIsSelection(false);
newTableViewerCreator.setCheckboxInFirstColumn(false);
newTableViewerCreator.setBgColorForEmptyArea(getParentComposite().getDisplay().getSystemColor(SWT.COLOR_WHITE));
Color bgColorForEmptyArea = ITalendThemeService.getColor("org.talend.commons.ui.BgColorForEmptyArea")
.orElse(getParentComposite().getDisplay().getSystemColor(SWT.COLOR_WHITE));
newTableViewerCreator.setBgColorForEmptyArea(bgColorForEmptyArea);
}
/**
@@ -271,6 +279,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
getExtendedTableModel().addBeforeOperationListListener(1, new IListenableListListener() {
@Override
public void handleEvent(ListenableListEvent event) {
handleBeforeListenableListOperationEvent(event);
}
@@ -279,6 +288,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
getExtendedTableModel().addAfterOperationListListener(1, new IListenableListListener() {
@Override
public void handleEvent(ListenableListEvent event) {
handleAfterListenableListOperationEvent(event);
}
@@ -287,6 +297,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
getExtendedTableModel().addAfterOperationListListener(100, new IListenableListListener<B>() {
@Override
public void handleEvent(ListenableListEvent<B> event) {
if (tableViewerCreator.getTable() != null && !tableViewerCreator.getTable().isDisposed()) {
// tableViewerCreator.getTable().forceFocus();
@@ -368,6 +379,7 @@ public abstract class AbstractExtendedTableViewer<B> extends AbstractExtendedCon
tableViewerCreator.setInputList(getBeansList());
new AsynchronousThreading(100, true, tableViewerCreator.getTable().getDisplay(), new Runnable() {
@Override
public void run() {
tableViewerCreator.layout();
}

View File

@@ -285,6 +285,30 @@
type="INFORMIX">
</DBType>
</RepositoryComponent>
<RepositoryComponent
name="INGRES"
withSchema="true"
input="tIngresInput"
output="tIngresOutput">
<Item
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
</Item>
<DBType
type="INGRES">
</DBType>
</RepositoryComponent>
<RepositoryComponent
name="VECTORWISE"
withSchema="true"
input="tVectorWiseInput"
output="tVectorWiseOutput">
<Item
clazz="org.talend.core.model.properties.DatabaseConnectionItem">
</Item>
<DBType
type="VECTORWISE">
</DBType>
</RepositoryComponent>
<RepositoryComponent
name="JAVADB"
withSchema="true"

View File

@@ -67,6 +67,7 @@ import org.talend.core.model.repository.Folder;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.LockInfo;
import org.talend.core.model.repository.RepositoryViewObject;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.repository.i18n.Messages;
import org.talend.core.repository.utils.XmiResourceManager;
import org.talend.core.runtime.CoreRuntimePlugin;
@@ -260,6 +261,7 @@ public abstract class AbstractEMFRepositoryFactory extends AbstractRepositoryFac
if (type == ERepositoryObjectType.METADATA_CON_TABLE) {
return false;
}
boolean isAllowMultipleName = (type == ERepositoryObjectType.SQLPATTERNS || type == ERepositoryObjectType.METADATA_FILE_XML);
String path = "";
if (item.getState() != null) {

View File

@@ -153,6 +153,7 @@ import org.talend.core.runtime.services.IMavenUIService;
import org.talend.core.runtime.util.ItemDateParser;
import org.talend.core.runtime.util.JavaHomeUtil;
import org.talend.core.runtime.util.SharedStudioUtils;
import org.talend.core.service.IComponentJsonformGeneratorService;
import org.talend.core.service.ICoreUIService;
import org.talend.core.service.IDetectCVEService;
import org.talend.core.utils.CodesJarResourceCache;
@@ -2379,6 +2380,15 @@ public final class ProxyRepositoryFactory implements IProxyRepositoryFactory {
}
String str[] = new String[] { getRepositoryContext().getUser() + "", projectManager.getCurrentProject() + "" }; //$NON-NLS-1$ //$NON-NLS-2$
log.info(Messages.getString("ProxyRepositoryFactory.log.loggedOn", str)); //$NON-NLS-1$
// no performance impact for studio or commandline
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentJsonformGeneratorService.class)) {
IComponentJsonformGeneratorService jsonformSvc = GlobalServiceRegister.getDefault().getService(IComponentJsonformGeneratorService.class);
if (jsonformSvc != null && IComponentJsonformGeneratorService.isEnabled()) {
jsonformSvc.generate(null);
}
}
} catch (LoginException e) {
if (!LoginException.RESTART.equals(e.getKey())) {
try {

View File

@@ -52,6 +52,8 @@ public interface IGitInfoService extends IService {
public Map<String, String> getGitInfo(Property property) throws Exception;
public boolean isPushedToRemote(Property property) throws Exception;
public String getProjectBranch(Project project)throws Exception;
public static IGitInfoService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGitInfoService.class)) {

View File

@@ -17,14 +17,20 @@ import java.util.Map;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.talend.commons.runtime.model.repository.ECDCStatus;
import org.talend.commons.runtime.model.repository.ERepositoryStatus;
import org.talend.commons.ui.runtime.ITalendThemeService;
import org.talend.commons.ui.runtime.image.ECoreImage;
import org.talend.commons.ui.runtime.image.EImage;
import org.talend.commons.ui.runtime.image.IImage;
@@ -77,13 +83,19 @@ import org.talend.utils.string.DigestUtil;
*/
public class RepositoryLabelProvider extends LabelProvider implements IColorProvider, IFontProvider {
private static final Color STABLE_SECONDARY_ENTRY_COLOR = new Color(null, 100, 100, 100);
private static final String MERGED_PREFERENCED_ITEMS = "org.talend.core.repository.REPO_MERGED_REFERENCED_ITEMS_COLOR";
private static final Color STABLE_PRIMARY_ENTRY_COLOR = new Color(null, 0, 0, 0);
private static final String LOCKED_ENTRY = "org.talend.core.repository.REPO_LOCKED_ENTRY";
private static final String STABLE_PRIMARY_ENTRY = "org.talend.core.repository.REPO_STABLE_PRIMARY_ENTRY_COLOR";
private static final String STABLE_SECONDARY_ENTRY = "org.talend.core.repository.REPO_STABLE_SECONDARY_ENTRY_COLOR";
private static final Color STABLE_SECONDARY_ENTRY_COLOR = new Color(null, 100, 100, 100);
protected static final Color INACTIVE_ENTRY_COLOR = new Color(null, 200, 200, 200);
private static final Color LOCKED_ENTRY = new Color(null, 200, 0, 0);
private static final Color LOCKED_ENTRY_COLOR = new Color(null, 200, 0, 0);
private static final Color MERGED_REFERENCED_ITEMS_COLOR = new Color(null, 120, 120, 120);
@@ -100,6 +112,18 @@ public class RepositoryLabelProvider extends LabelProvider implements IColorProv
return view;
}
private Color getStableSecondaryEntryColor() {
return ITalendThemeService.getColor(STABLE_SECONDARY_ENTRY).orElse(STABLE_SECONDARY_ENTRY_COLOR);
}
private Color getLockedEntryColor() {
return ITalendThemeService.getColor(LOCKED_ENTRY).orElse(LOCKED_ENTRY_COLOR);
}
private Color getMergedReferencedItemsColor() {
return ITalendThemeService.getColor(MERGED_PREFERENCED_ITEMS).orElse(MERGED_REFERENCED_ITEMS_COLOR);
}
public String getText(IRepositoryViewObject object) {
StringBuffer string = new StringBuffer();
string.append(object.getLabel());
@@ -482,23 +506,13 @@ public class RepositoryLabelProvider extends LabelProvider implements IColorProv
RepositoryNode node = (RepositoryNode) element;
switch (node.getType()) {
case REFERENCED_PROJECT:
return STABLE_PRIMARY_ENTRY_COLOR;
case STABLE_SYSTEM_FOLDER:
if (node.getLabel().equals(ERepositoryObjectType.SNIPPETS.toString())) {
return INACTIVE_ENTRY_COLOR;
}
if (node.getContentType() == ERepositoryObjectType.METADATA) {
return STABLE_PRIMARY_ENTRY_COLOR;
}
case SYSTEM_FOLDER:
if (node.getContentType() == ERepositoryObjectType.PROCESS) {
return STABLE_PRIMARY_ENTRY_COLOR;
}
return STABLE_SECONDARY_ENTRY_COLOR;
return getStableSecondaryEntryColor();
default:
ERepositoryStatus repositoryStatus = node.getObject().getRepositoryStatus();
if (repositoryStatus == ERepositoryStatus.LOCK_BY_OTHER) {
return LOCKED_ENTRY;
return getLockedEntryColor();
} else {
if (PluginChecker.isRefProjectLoaded()) {
IReferencedProjectService service = (IReferencedProjectService) GlobalServiceRegister.getDefault()
@@ -510,7 +524,7 @@ public class RepositoryLabelProvider extends LabelProvider implements IColorProv
.getCurrentProject().getEmfProject();
String projectLabel = object.getProjectLabel();
if (!mainProject.getLabel().equals(projectLabel)) {
return MERGED_REFERENCED_ITEMS_COLOR;
return getMergedReferencedItemsColor();
}
}
}
@@ -536,4 +550,43 @@ public class RepositoryLabelProvider extends LabelProvider implements IColorProv
refreshProperty = refresh;
}
public static IPropertyChangeListener createPropertyChangeListener(TreeViewer treeViewer) {
return new IPropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
if (property == null) {
return;
}
boolean changed = false;
switch (property) {
case RepositoryLabelProvider.STABLE_PRIMARY_ENTRY:
// case RepositoryLabelProvider.INACTIVE_ENTRY:
// case RepositoryLabelProvider.LOCKED_ENTRY:
// case RepositoryLabelProvider.MERGED_PREFERENCED_ITEMS:
// case RepositoryLabelProvider.STABLE_SECONDARY_ENTRY:
changed = true;
break;
default:
break;
}
if (changed) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
if (treeViewer != null) {
Control control = treeViewer.getControl();
if (!control.isDisposed()) {
treeViewer.refresh();
}
}
}
});
}
}
};
}
}

View File

@@ -0,0 +1,216 @@
<?xml version="1.0"?>
<mapping>
<dbms product="INGRES" id="ingres_id" label="Mapping Ingres"
default="true">
<dbTypes>
<dbType type="ANSIDATE" ignoreLen="true" ignorePre="true" />
<dbType type="BOOLEAN" ignoreLen="true" ignorePre="true" />
<dbType type="BIGINT" ignoreLen="true" ignorePre="true" />
<dbType type="BYTE" ignoreLen="true" ignorePre="true" />
<dbType type="BYTE VARYING" ignoreLen="true" ignorePre="true" />
<dbType type="C" ignoreLen="true" ignorePre="true" />
<dbType type="CHAR" ignorePre="true" />
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10" />
<dbType type="DATE" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT4" ignoreLen="true" ignorePre="true" />
<dbType type="INTEGER" ignoreLen="true" ignorePre="true" />
<dbType type="INGRESDATE" ignoreLen="true" ignorePre="true" />
<dbType type="INTERVAL" ignoreLen="true" ignorePre="true" />
<dbType type="LONG NVARCHAR" ignorePre="true" />
<dbType type="LONG VARCHAR" ignoreLen="true" ignorePre="true" />
<dbType type="MONEY" ignoreLen="true" ignorePre="true" />
<dbType type="NCHAR" ignorePre="true" defaultLength="10"/>
<dbType type="NVARCHAR" ignorePre="true" defaultLength="10"/>
<dbType type="OBJECT_KEY" ignoreLen="true" ignorePre="true"/>
<dbType type="SMALLINT" ignoreLen="true" ignorePre="true"/>
<dbType type="TEXT" ignoreLen="true" ignorePre="true" />
<dbType type="TINYINT" ignoreLen="true" ignorePre="true" />
<dbType type="TIME" ignoreLen="true" ignorePre="true" />
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="true"/>
<dbType type="TABLE_KEY" ignoreLen="true" ignorePre="true" />
<dbType type="VARCHAR" default="true" defaultLength="1200" ignorePre="true"/>
</dbTypes>
<language name="java">
<talendToDbTypes><!-- Adviced mappings -->
<talendType type="id_List"/>
<talendType type="id_Boolean">
<dbType type="BOOLEAN" default="true" />
</talendType>
<talendType type="id_Byte">
<dbType type="BYTE" default="true" />
<dbType type="BYTE VARYING" />
</talendType>
<talendType type="id_byte[]">
</talendType>
<talendType type="id_Character">
<dbType type="CHAR" default="true" />
<dbType type="VARCHAR"/>
<dbType type="C"/>
<dbType type="TEXT"/>
<dbType type="LONG VARCHAR"/>
<dbType type="NCHAR"/>
<dbType type="NVARCHAR"/>
<dbType type="LONG NVARCHAR"/>
</talendType>
<talendType type="id_Date">
<dbType type="DATE" default="true" />
<dbType type="ANSIDATE" />
<dbType type="INGRESDATE" />
<dbType type="TIME" />
<dbType type="TIMESTAMP" />
<dbType type="INTERVAL"/>
</talendType>
<talendType type="id_BigDecimal">
<dbType type="DECIMAL" default="true" />
<dbType type="FLOAT4" />
<dbType type="FLOAT"/>
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Double">
<dbType type="FLOAT" default="true" />
<dbType type="FLOAT4" />
<dbType type="DECIMAL"/>
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Float">
<dbType type="FLOAT4" default="true" />
<dbType type="FLOAT"/>
<dbType type="DECIMAL" />
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Integer">
<dbType type="INTEGER" default="true" />
<dbType type="BIGINT" />
<dbType type="SMALLINT"/>
<dbType type="TINYINT"/>
</talendType>
<talendType type="id_Long">
<dbType type="BIGINT" default="true" />
<dbType type="INTEGER"/>
<dbType type="SMALLINT"/>
<dbType type="TINYINT"/>
</talendType>
<talendType type="id_Object">
<dbType type="MONEY" default="true"/>
<dbType type="OBJECT_KEY" />
<dbType type="TABLE_KEY" />
</talendType>
<talendType type="id_Short">
<dbType type="SMALLINT" default="true" />
<dbType type="INTEGER" />
<dbType type="BIGINT"/>
<dbType type="TINYINT" />
</talendType>
<talendType type="id_String">
<dbType type="VARCHAR" default="true" />
<dbType type="LONG VARCHAR" />
<dbType type="NCHAR"/>
<dbType type="NVARCHAR" />
<dbType type="LONG NVARCHAR" />
<dbType type="TEXT" />
<dbType type="C"/>
<dbType type="CHAR"/>
</talendType>
</talendToDbTypes>
<dbToTalendTypes>
<dbType type="ANSIDATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="BOOLEAN">
<talendType type="id_Boolean" default="true" />
</dbType>
<dbType type="BIGINT">
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="BYTE">
<talendType type="id_Byte" default="true" />
</dbType>
<dbType type="BYTE VARYING">
<talendType type="id_Byte" default="true" />
</dbType>
<dbType type="C">
<talendType type="id_String" default="true" />
<talendType type="id_Character"/>
</dbType>
<dbType type="CHAR">
<talendType type="id_String" default="true" />
<talendType type="id_Character"/>
</dbType>
<dbType type="DECIMAL">
<talendType type="id_Float"/>
<talendType type="id_BigDecimal" default="true"/>
</dbType>
<dbType type="DATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="FLOAT">
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="FLOAT4">
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="INTEGER">
<talendType type="id_Integer" default="true" />
<talendType type="id_Long"/>
<talendType type="id_Short"/>
</dbType>
<dbType type="INGRESDATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="INTERVAL">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="LONG NVARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="LONG VARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="MONEY">
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="NCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="NVARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="OBJECT_KEY">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="SMALLINT">
<talendType type="id_Short" default="true" />
<talendType type="id_Integer" />
<talendType type="id_Long"/>
</dbType>
<dbType type="TEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="TINYINT">
<talendType type="id_Byte" default="true" />
<talendType type="id_Integer" />
<talendType type="id_Short"/>
<talendType type="id_Long" />
</dbType>
<dbType type="TIME">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TIMESTAMP">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TABLE_KEY">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="VARCHAR">
<talendType type="id_String" default="true" />
</dbType>
</dbToTalendTypes>
</language>
</dbms>
</mapping>

View File

@@ -0,0 +1,211 @@
<?xml version="1.0"?>
<mapping>
<dbms product="VECTORWISE" id="vectorwise_id" label="Mapping VectorWise"
default="true">
<dbTypes>
<dbType type="ANSIDATE" ignoreLen="true" ignorePre="true" />
<dbType type="BIGINT" ignoreLen="true" ignorePre="true" />
<dbType type="BYTE" ignoreLen="true" ignorePre="true" />
<dbType type="BYTE VARYING" ignoreLen="true" ignorePre="true" />
<dbType type="C" ignoreLen="true" ignorePre="true" />
<dbType type="CHAR" ignorePre="true" />
<dbType type="DECIMAL" defaultLength="20" defaultPrecision="10" />
<dbType type="DATE" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT" ignoreLen="true" ignorePre="true" />
<dbType type="FLOAT4" ignoreLen="true" ignorePre="true" />
<dbType type="INTEGER" ignoreLen="true" ignorePre="true" />
<dbType type="INGRESDATE" ignoreLen="true" ignorePre="true" />
<dbType type="INTERVAL" ignoreLen="true" ignorePre="true" />
<dbType type="LONG NVARCHAR" ignorePre="true" />
<dbType type="LONG VARCHAR" ignoreLen="true" ignorePre="true" />
<dbType type="MONEY" ignoreLen="true" ignorePre="true" />
<dbType type="NCHAR" ignorePre="true" defaultLength="10"/>
<dbType type="NVARCHAR" ignorePre="true" defaultLength="10"/>
<dbType type="OBJECT_KEY" ignoreLen="true" ignorePre="true"/>
<dbType type="SMALLINT" ignoreLen="true" ignorePre="true"/>
<dbType type="TEXT" ignoreLen="true" ignorePre="true" />
<dbType type="TINYINT" ignoreLen="true" ignorePre="true" />
<dbType type="TIME" ignoreLen="true" ignorePre="true" />
<dbType type="TIMESTAMP" ignoreLen="true" ignorePre="true"/>
<dbType type="TABLE_KEY" ignoreLen="true" ignorePre="true" />
<dbType type="VARCHAR" default="true" defaultLength="1200" ignorePre="true"/>
</dbTypes>
<language name="java">
<talendToDbTypes><!-- Adviced mappings -->
<talendType type="id_List"/>
<talendType type="id_Boolean">
</talendType>
<talendType type="id_Byte">
<dbType type="BYTE" default="true" />
<dbType type="BYTE VARYING" />
</talendType>
<talendType type="id_byte[]">
</talendType>
<talendType type="id_Character">
<dbType type="CHAR" default="true" />
<dbType type="VARCHAR"/>
<dbType type="C"/>
<dbType type="TEXT"/>
<dbType type="LONG VARCHAR"/>
<dbType type="NCHAR"/>
<dbType type="NVARCHAR"/>
<dbType type="LONG NVARCHAR"/>
</talendType>
<talendType type="id_Date">
<dbType type="ANSIDATE" default="true"/>
<dbType type="DATE"/>
<dbType type="INGRESDATE" />
<dbType type="TIME" />
<dbType type="TIMESTAMP" />
<dbType type="INTERVAL"/>
</talendType>
<talendType type="id_BigDecimal">
<dbType type="DECIMAL" default="true" />
<dbType type="FLOAT4" />
<dbType type="FLOAT"/>
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Double">
<dbType type="FLOAT" default="true" />
<dbType type="FLOAT4" />
<dbType type="DECIMAL"/>
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Float">
<dbType type="FLOAT4" default="true" />
<dbType type="FLOAT"/>
<dbType type="DECIMAL" />
<dbType type="MONEY"/>
</talendType>
<talendType type="id_Integer">
<dbType type="INTEGER" default="true" />
<dbType type="BIGINT" />
<dbType type="SMALLINT"/>
<dbType type="TINYINT"/>
</talendType>
<talendType type="id_Long">
<dbType type="BIGINT" default="true" />
<dbType type="INTEGER"/>
<dbType type="SMALLINT"/>
<dbType type="TINYINT"/>
</talendType>
<talendType type="id_Object">
<dbType type="MONEY" default="true"/>
<dbType type="OBJECT_KEY" />
<dbType type="TABLE_KEY" />
</talendType>
<talendType type="id_Short">
<dbType type="SMALLINT" default="true" />
<dbType type="INTEGER" />
<dbType type="BIGINT"/>
<dbType type="TINYINT" />
</talendType>
<talendType type="id_String">
<dbType type="VARCHAR" default="true" />
<dbType type="LONG VARCHAR" />
<dbType type="NCHAR"/>
<dbType type="NVARCHAR" />
<dbType type="LONG NVARCHAR" />
<dbType type="TEXT" />
<dbType type="C"/>
<dbType type="CHAR"/>
</talendType>
</talendToDbTypes>
<dbToTalendTypes>
<dbType type="ANSIDATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="BIGINT">
<talendType type="id_Long" default="true" />
</dbType>
<dbType type="BYTE">
<talendType type="id_Byte" default="true" />
</dbType>
<dbType type="BYTE VARYING">
<talendType type="id_Byte" default="true" />
</dbType>
<dbType type="C">
<talendType type="id_String" default="true" />
<talendType type="id_Character"/>
</dbType>
<dbType type="CHAR">
<talendType type="id_String" default="true" />
<talendType type="id_Character"/>
</dbType>
<dbType type="DECIMAL">
<talendType type="id_Float"/>
<talendType type="id_BigDecimal" default="true"/>
</dbType>
<dbType type="DATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="FLOAT">
<talendType type="id_Double" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="FLOAT4">
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="INTEGER">
<talendType type="id_Integer" default="true" />
<talendType type="id_Long"/>
<talendType type="id_Short"/>
</dbType>
<dbType type="INGRESDATE">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="INTERVAL">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="LONG NVARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="LONG VARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="MONEY">
<talendType type="id_Float" default="true" />
<talendType type="id_BigDecimal"/>
</dbType>
<dbType type="NCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="NVARCHAR">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="OBJECT_KEY">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="SMALLINT">
<talendType type="id_Short" default="true" />
<talendType type="id_Integer" />
<talendType type="id_Long"/>
</dbType>
<dbType type="TEXT">
<talendType type="id_String" default="true" />
</dbType>
<dbType type="TINYINT">
<talendType type="id_Byte" default="true" />
<talendType type="id_Integer" />
<talendType type="id_Short"/>
<talendType type="id_Long" />
</dbType>
<dbType type="TIME">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TIMESTAMP">
<talendType type="id_Date" default="true" />
</dbType>
<dbType type="TABLE_KEY">
<talendType type="id_Object" default="true" />
</dbType>
<dbType type="VARCHAR">
<talendType type="id_String" default="true" />
</dbType>
</dbToTalendTypes>
</language>
</dbms>
</mapping>

View File

@@ -16,6 +16,7 @@ import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -157,7 +158,7 @@ public interface ILibraryManagerService extends IService {
public void clearCache(boolean cleanIndex);
public void deployLibsFromCustomComponents();
public void deployLibsFromCustomComponents(File componentFolder, List<ModuleNeeded> modulesNeeded);
@Deprecated
public Set<String> list(boolean withComponent, IProgressMonitor... monitorWrap);

View File

@@ -34,6 +34,9 @@ public enum EDatabase4DriverClassName {
INFORMIX(EDatabaseTypeName.INFORMIX, "com.informix.jdbc.IfxDriver"), //$NON-NLS-1$
INGRES(EDatabaseTypeName.INGRES, "com.ingres.jdbc.IngresDriver"),
VECTORWISE(EDatabaseTypeName.VECTORWISE, "com.ingres.jdbc.IngresDriver"),
JAVADB_DERBYCLIENT(EDatabaseTypeName.JAVADB_DERBYCLIENT, "org.apache.derby.jdbc.ClientDriver"), //$NON-NLS-1$
JAVADB_EMBEDED(EDatabaseTypeName.JAVADB_EMBEDED, "org.apache.derby.jdbc.EmbeddedDriver"), //$NON-NLS-1$
JAVADB_JCCJDBC(EDatabaseTypeName.JAVADB_JCCJDBC, "com.ibm.db2.jcc.DB2Driver"), //$NON-NLS-1$

View File

@@ -347,8 +347,7 @@ public enum EDatabaseTypeName {
isSupport = isSupportODBC;
} else if (EDatabaseTypeName.SAS == this) {
isSupport = false;
} else if (EDatabaseTypeName.INGRES == this || EDatabaseTypeName.INTERBASE == this || EDatabaseTypeName.VECTORWISE == this
|| EDatabaseTypeName.PARACCEL == this) {
} else if (EDatabaseTypeName.INTERBASE == this || EDatabaseTypeName.PARACCEL == this) {
return false;
}

View File

@@ -24,7 +24,7 @@ import org.talend.core.database.conn.version.EDatabaseVersion4Drivers;
*/
public enum ERedshiftDriver {
DRIVER_V2("Driver v2", new String[] { "redshift-jdbc42-2.1.0.3.jar" }),
DRIVER_V2("Driver v2", new String[] { "redshift-jdbc42-2.1.0.10.jar" }),
DRIVER_V1("Driver v1", new String[] { "redshift-jdbc42-no-awssdk-1.2.55.1083.jar" });
private String displayName;

View File

@@ -112,6 +112,13 @@ public enum EDatabaseConnTemplate {
SQLITE(new DbConnStr(EDatabaseTypeName.SQLITE, //
"jdbc:sqlite:/<filename>")), //$NON-NLS-1$
INGRES(new DbConnStr(EDatabaseTypeName.INGRES, //
"jdbc:ingres://<host>:<port>/<sid>;<property>", //$NON-NLS-1$
"II7")), //$NON-NLS-1$
VECTORWISE(new DbConnStr(EDatabaseTypeName.VECTORWISE, //
"jdbc:ingres://<host>:<port>/<sid>;<property>", //$NON-NLS-1$
"II7")),
FIREBIRD(new DbConnStr(EDatabaseTypeName.FIREBIRD, //
"jdbc:firebirdsql:<host>/<port>:<filename>?<property>", //$NON-NLS-1$
"3050")), //$NON-NLS-1$
@@ -421,6 +428,8 @@ public enum EDatabaseConnTemplate {
case PSQL:
case PLUSPSQL:
case GREENPLUM:
case INGRES:
case VECTORWISE:
case FIREBIRD:
case JAVADB_EMBEDED:
case JAVADB_JCCJDBC:
@@ -447,6 +456,8 @@ public enum EDatabaseConnTemplate {
case SYBASEASE_16_SA:
case IBMDB2:
case IBMDB2_ZOS:
case INGRES:
case VECTORWISE:
case MSSQL:
case INFORMIX:
case TERADATA:

View File

@@ -35,17 +35,12 @@ public enum EDatabaseVersion4Drivers {
ORACLE_18(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN,
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 18 and above", "ORACLE_18", "ojdbc8-19.3.0.0.jar")),
ORACLE_12(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN,
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 12", "ORACLE_12", "ojdbc7.jar")),
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 12 (Deprecated)", "ORACLE_12",
"ojdbc7.jar")),
ORACLE_11(new DbVersion4DriversForOracle11(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID,
EDatabaseTypeName.ORACLESN, EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM },
"Oracle 11", "ORACLE_11", new String[] { DbVersion4DriversForOracle11.DRIVER_1_5, //$NON-NLS-1$ //$NON-NLS-2$
"Oracle 11 (Deprecated)", "ORACLE_11", new String[] { DbVersion4DriversForOracle11.DRIVER_1_5, //$NON-NLS-1$ //$NON-NLS-2$
DbVersion4DriversForOracle11.DRIVER_1_6 })),
ORACLE_10(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN,
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 10", "ORACLE_10", "ojdbc14.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ORACLE_9(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN,
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 9", "ORACLE_9", "ojdbc14-9i.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
ORACLE_8(new DbVersion4Drivers(new EDatabaseTypeName[] { EDatabaseTypeName.ORACLEFORSID, EDatabaseTypeName.ORACLESN,
EDatabaseTypeName.ORACLE_OCI, EDatabaseTypeName.ORACLE_CUSTOM }, "Oracle 8", "ORACLE_8", "ojdbc12.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// AS400
AS400_V7R1_V7R3(new DbVersion4Drivers(EDatabaseTypeName.AS400, "V7R1 to V7R3", "AS400_V7R1_V7R3", "jt400-9.8.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
AS400_V6R1_V7R2(new DbVersion4Drivers(EDatabaseTypeName.AS400, "V6R1 to V7R2", "AS400_V6R1_V7R2", "jt400_V6R1.jar")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -60,7 +55,7 @@ public enum EDatabaseVersion4Drivers {
//
JAVADB_EMBEDED(new DbVersion4Drivers(EDatabaseTypeName.JAVADB_EMBEDED, "derby.jar")), //$NON-NLS-1$
SQLITE(new DbVersion4Drivers(EDatabaseTypeName.SQLITE, "sqlitejdbc-v056.jar")), //$NON-NLS-1$
SQLITE(new DbVersion4Drivers(EDatabaseTypeName.SQLITE, "sqlite-jdbc-3.40.0.0.jar")), //$NON-NLS-1$
FIREBIRD(new DbVersion4Drivers(EDatabaseTypeName.FIREBIRD, "jaybird-full-2.1.1.jar")), //$NON-NLS-1$
TERADATA(new DbVersion4Drivers(EDatabaseTypeName.TERADATA,
new String[] { "terajdbc4-17.10.00.27.jar" })), //$NON-NLS-1$
@@ -113,6 +108,8 @@ public enum EDatabaseVersion4Drivers {
EXASOL(new DbVersion4Drivers(EDatabaseTypeName.EXASOL, "exajdbc-6.0.9302.jar")), //$NON-NLS-1$
MAXDB(new DbVersion4Drivers(EDatabaseTypeName.MAXDB, "sapdbc.jar")), //$NON-NLS-1$
INGRES(new DbVersion4Drivers(EDatabaseTypeName.INGRES, "iijdbc-10.2-4.1.10.jar")),
VECTORWISE(new DbVersion4Drivers(EDatabaseTypeName.VECTORWISE, "iijdbc-10.2-4.1.10.jar")),
// HIVE(new DbVersion4Drivers(EDatabaseTypeName.HIVE, "STANDALONE", "STANDALONE", new String[] {
// "hive-jdbc-0.8.1.jar",
// "hive-metastore-0.8.1.jar", "hive-exec-0.8.1.jar", "hive-service-0.8.1.jar", "libfb303_new.jar",

View File

@@ -293,7 +293,8 @@ public final class MetadataToolHelper {
boolean isKeyword = KeywordsValidator.isKeyword(originalColumnName);
StringBuilder sb = new StringBuilder();
int[] charBit = new int[columnName.length()];
// keep charBit length align with the length of originalColumnName (StringBuilder)
int[] charBit = new int[originalColumnName.length()];
if (!isKeyword) {
boolean isAllowSpecific = isAllowSpecificCharacters();

View File

@@ -433,6 +433,16 @@ public class ComponentToRepositoryProperty {
connection.setDatabaseType(EDatabaseTypeName.IBMDB2.getDisplayName());
connection.setProductId(EDatabaseTypeName.IBMDB2.getProduct());
}
// Ingres
else if (EDatabaseTypeName.INGRES.getProduct().equalsIgnoreCase((String) parameter.getValue())) {
connection.setDatabaseType(EDatabaseTypeName.INGRES.getDisplayName());
connection.setProductId(EDatabaseTypeName.INGRES.getProduct());
}
// VECTORWISE
else if (EDatabaseTypeName.VECTORWISE.getProduct().equalsIgnoreCase((String) parameter.getValue())) {
connection.setDatabaseType(EDatabaseTypeName.VECTORWISE.getDisplayName());
connection.setProductId(EDatabaseTypeName.VECTORWISE.getProduct());
}
// Sqlite
else if (EDatabaseTypeName.SQLITE.getProduct().equalsIgnoreCase((String) parameter.getValue())) {
connection.setDatabaseType(EDatabaseTypeName.SQLITE.getDisplayName());

View File

@@ -1115,7 +1115,9 @@ public class RepositoryToComponentProperty {
|| EDatabaseConnTemplate.SAPHana.getDBDisplayName().equals(databaseType)
|| EDatabaseConnTemplate.MSSQL.getDBDisplayName().equals(databaseType)) {
if (dbVersionString != null) {
driverValue = dbVersionString.toUpperCase();
if (EDatabaseVersion4Drivers.getDbVersionName(databaseType, dbVersionString) != null) {
driverValue = dbVersionString.toUpperCase();
}
}
}
if (isContextMode(connection, dbVersionString)) {

View File

@@ -18,6 +18,7 @@ import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import org.apache.commons.codec.binary.StringUtils;
import org.talend.components.api.properties.ComponentProperties;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IMultipleComponentManager;
@@ -509,7 +510,7 @@ public abstract class AbstractNode implements INode {
}
for (String key : childParameters.keySet()) {
IElementParameter param = childParameters.get(key);
if (param.getName().equals(name)) {
if (StringUtils.equals(name, param.getName())) {
return param;
}
}
@@ -676,7 +677,8 @@ public abstract class AbstractNode implements INode {
return null;
}
for (IMetadataTable table : metadataList) {
if (table.getAttachedConnector().equals(connector)) {
String attachedConnector = table.getAttachedConnector();
if (attachedConnector != null && attachedConnector.equals(connector)) {
return table;
}
}

View File

@@ -38,6 +38,7 @@ public enum EParameterFieldType {
SCHEMA_XPATH_QUERYS,
QUERYSTORE_TYPE,
GUESS_SCHEMA,
DYNAMIC_GUESS_SCHEMA,
PROPERTY_TYPE,
EXTERNAL,
FILE,

View File

@@ -655,4 +655,9 @@ ItemAnalysisReportManager.Warning.message=Can't run a new analysis now. Wait for
AnalysisReportAccessDialog.shellTitle=Project analysis
AnalysisReportAccessDialog.generateSuccess=Project analysis completed successfully.
AnalysisReportAccessDialog.completeReportAvailable=Check the report
AnalysisReportAccessDialog.accessReport=here
AnalysisReportAccessDialog.accessReport=here
AbstractPomTemplateProjectSettingPage.defaultTabLabel=Default
AbstractPomTemplateProjectSettingPage.customTabLabel=Custom
AbstractPomTemplateProjectSettingPage.previewButton=Preview
AbstractPomTemplateProjectSettingPage.previewButtonTip=Preview the complete customized project POM settings.
AbstractPomTemplateProjectSettingPage.learnMoreLink=Learn more

View File

@@ -0,0 +1,183 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.runtime.projectsetting;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.program.Program;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.runtime.i18n.Messages;
import org.talend.repository.model.IProxyRepositoryFactory;
public abstract class AbstractPomTemplateProjectSettingPage extends AbstractProjectSettingPage {
private static final Color COLOR_LINK = new Color(null, 0, 0, 255);
protected StyledText defaultText;
protected StyledText customText;
private boolean isDefaultPresentedForScriptTxt = false;
private boolean readonly;
public AbstractPomTemplateProjectSettingPage() {
super();
IProxyRepositoryFactory factory = CoreRuntimePlugin.getInstance().getProxyRepositoryFactory();
readonly = factory.isUserReadOnlyOnCurrentProject();
}
protected boolean isReadonly() {
return readonly;
}
public void setReadonly(boolean readonly) {
this.readonly = readonly;
}
protected abstract String getPreferenceKey();
protected StyledText getScriptTxt() {
return customText;
}
@Override
protected Control createContents(Composite p) {
Composite parent = (Composite) super.createContents(p);
Composite noteComposite = new Composite(parent, SWT.NONE);
noteComposite.setLayout(new GridLayout(2, false));
Label scriptLabel = new Label(noteComposite, SWT.NONE);
String headerMessages = getHeaderMessage();
scriptLabel.setText(headerMessages);
Hyperlink link = new Hyperlink(noteComposite, SWT.NONE);
link.setText(Messages.getString("AbstractPomTemplateProjectSettingPage.learnMoreLink")); //$NON-NLS-1$
link.setUnderlined(true);
link.setForeground(COLOR_LINK);
link.addHyperlinkListener(new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
Program.launch(getMoreInfoUrl());
}
});
CTabFolder tabFolder = new CTabFolder(parent, SWT.BORDER);
// tabFolder.setTabPosition(SWT.BOTTOM);
tabFolder.setSimple(false);
GridData data = new GridData(GridData.FILL, GridData.FILL, true, true);
tabFolder.setLayoutData(data);
data.heightHint = 280;
data.minimumHeight = 280;
data.widthHint = 500;
data.minimumWidth = 500;
CTabItem defaultTabItem = new CTabItem(tabFolder, SWT.NULL);
defaultTabItem.setText(Messages.getString("AbstractPomTemplateProjectSettingPage.defaultTabLabel")); //$NON-NLS-1$
CTabItem customTabItem = new CTabItem(tabFolder, SWT.NULL);
customTabItem.setText(Messages.getString("AbstractPomTemplateProjectSettingPage.customTabLabel")); //$NON-NLS-1$
tabFolder.setSelection(defaultTabItem);
int style = SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL;
defaultText = new StyledText(tabFolder, style);
defaultText.setText(getDefaultText());
defaultText.setBackground(new Color(null, 233, 233, 233));
defaultText.setEditable(false);
defaultTabItem.setControl(defaultText);
customText = new StyledText(tabFolder, style);
customText.setText(getCustomText());
customText.setEditable(!isReadonly());
customTabItem.setControl(customText);
customText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
isDefaultPresentedForScriptTxt = false;
}
});
Button preview = new Button(parent, SWT.NONE);
preview.setText(Messages.getString("AbstractPomTemplateProjectSettingPage.previewButton")); //$NON-NLS-1$
preview.setToolTipText(Messages.getString("AbstractPomTemplateProjectSettingPage.previewButtonTip")); //$NON-NLS-1$
preview.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
checkModel(true);
}
});
return parent;
}
protected abstract String getHeaderMessage();
protected abstract String getDefaultText();
protected String getCustomText() {
return getPreferenceStore().getString(getPreferenceKey());
}
protected abstract boolean checkModel(boolean preview);
protected abstract String getMoreInfoUrl();
@Override
protected void performDefaults() {
super.performDefaults();
if (customText != null && !customText.isDisposed()) {
isDefaultPresentedForScriptTxt = true;
customText.setText(getPreferenceStore().getDefaultString(getPreferenceKey()));
}
}
@Override
public boolean performOk() {
boolean ok = super.performOk();
if (customText != null && !customText.isDisposed()) {
if (isDefaultPresentedForScriptTxt) {
getPreferenceStore().setToDefault(getPreferenceKey());
return ok;
}
if (!checkModel(false)) {
return false;
}
getPreferenceStore().setValue(getPreferenceKey(), customText.getText());
}
return ok;
}
}

View File

@@ -60,6 +60,8 @@ public interface IProjectSettingTemplateConstants {
final static String PROJECT_TEMPLATE_FILE_NAME = "pom_project_template.xml";
final static String PROJECT_CUSTOM_TEMPLATE_FILE_NAME = "pom_project_custom_template.xml";
final static String MAVEN_USER_SETTING_TEMPLATE_FILE_NAME = "maven_user_settings.xml";
/*

View File

@@ -0,0 +1,66 @@
// ============================================================================
//
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.runtime.projectsetting;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
public class PomPreviewDialog extends Dialog {
private String title;
private String content;
public PomPreviewDialog(Shell parentShell, String title, String content) {
super(parentShell);
this.title = title;
this.content = content;
setShellStyle(getShellStyle() | SWT.RESIZE);
}
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(title);
}
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
GridData data = new GridData(GridData.FILL, GridData.FILL, true, true);
data.heightHint = 280;
data.minimumHeight = 1000;
data.widthHint = 500;
data.minimumWidth = 1100;
composite.setLayoutData(data);
StyledText text = new StyledText(composite, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
text.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
text.setText(content);
text.setEditable(false);
return composite;
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
}
}

View File

@@ -116,7 +116,7 @@ public class ModuleAccessHelper {
if (allow != null) {
return Boolean.valueOf(allow);
}
if (CommonsPlugin.isTUJTest() || CommonsPlugin.isJUnitTest() || CommonsPlugin.isJunitWorking()) {
if (CommonsPlugin.isJUnitTest() || CommonsPlugin.isJunitWorking()) {
return true;
}
Project project;
@@ -135,15 +135,15 @@ public class ModuleAccessHelper {
if (property == null) {
return Collections.emptySet();
}
if (!allowJavaInternalAcess(property)) {
return Collections.emptySet();
}
if (isPreviewProcess(processor)) {
// add all for preview process
return getProperties().entrySet().stream().filter(en -> StringUtils.isNotBlank((String) en.getValue()))
.flatMap(en -> getModules((String) en.getKey()).stream()).collect(Collectors.toSet());
}
if (!allowJavaInternalAcess(property)) {
return Collections.emptySet();
}
ProcessItem mainJobItem = (ProcessItem) property.getItem();
Set<JobInfo> allJobInfos = new HashSet<>();
allJobInfos.add(new JobInfo(mainJobItem, mainJobItem.getProcess().getDefaultContext()));

View File

@@ -0,0 +1,64 @@
// ============================================================================
//
// Copyright (C) 2006-2023 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.core.service;
import java.io.File;
import org.talend.commons.CommonsPlugin;
import org.talend.core.IService;
/**
* @author bhe created on Jan 19, 2023
*
*/
public interface IComponentJsonformGeneratorService extends IService {
/**
* System property to enable whether to generate jsonform or not, not enabled by default
*/
public static final String JSONFORM_GENERATE_PROP = "jsonform.generate";
public static final String JSONFORM_GENERATE_FOLDER_PROP = "jsonform.generate.dir";
public static final String JSONFORM_GENERATE_FOLDER_NAME_PROP = "jsonforms";
/**
* Generate jsonform json files for all of components
*
* <pre>
* Folder structure
*
* targetFolder
* --Category
* ----tRowgenerator.json
* ----tLogRow.json
*
* </pre>
*
* @param targetFolder all of jsonform jsons will be saved into the targetFolder
*/
void generate(File targetFolder);
/**
* If enabled by -Djsonform.generate or by running junit, then generate jsonform for components, otherwise will not generate.
*
* @return enabled or not
*/
public static boolean isEnabled() {
return Boolean.getBoolean(JSONFORM_GENERATE_PROP) || CommonsPlugin.isJUnitTest() || CommonsPlugin.isJunitWorking();
}
public static String getDirectoryFromProperty() {
return System.getProperty(JSONFORM_GENERATE_FOLDER_PROP);
}
}

View File

@@ -75,4 +75,6 @@ public interface IESBMicroService extends IService {
* @return
*/
IBuildJobHandler createBuildJobHandler(ProcessItem itemToExport, String version, String context, Map exportChoiceMap);
public List<String> getExternalizedDependencies();
}

View File

@@ -438,6 +438,8 @@ public final class TalendQuoteUtils {
return QUOTATION_MARK;
case IBMDB2:
return QUOTATION_MARK;
case INGRES:
return QUOTATION_MARK;
case MSODBC:
return QUOTATION_MARK;
case MSSQL:

View File

@@ -82,6 +82,7 @@ import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
@@ -89,6 +90,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.ColorConstants;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.model.process.IContext;
import org.talend.core.model.process.IContextManager;
@@ -306,14 +308,15 @@ public class ContextTreeTable {
attachCheckColumnTip(natTable);
final Color backgroundColor = ColorConstants.getTableBackgroundColor();
// global settings only effect on body and default region, so should set other regions' color separately.
natTable.setBackground(GUIHelper.COLOR_WHITE);
natTable.setBackground(backgroundColor);
natTable.addConfiguration(new AbstractRegistryConfiguration() {
@Override
public void configureRegistry(IConfigRegistry configRegistry) {
Style cellStyle = new Style();
cellStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, GUIHelper.COLOR_WHITE);
cellStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, backgroundColor);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, cellStyle, DisplayMode.NORMAL,
GridRegion.COLUMN_HEADER);
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, cellStyle, DisplayMode.NORMAL,
@@ -550,8 +553,8 @@ public class ContextTreeTable {
private void addCustomSelectionBehaviour(SelectionLayer layer) {
// need control the selection style when select the rows.
DefaultSelectionStyleConfiguration selectStyleConfig = new DefaultSelectionStyleConfiguration();
selectStyleConfig.selectedHeaderBgColor = GUIHelper.COLOR_WIDGET_BACKGROUND;
selectStyleConfig.selectedHeaderFgColor = GUIHelper.COLOR_BLACK;
selectStyleConfig.selectedHeaderBgColor = ColorConstants.getTableBackgroundColor();
selectStyleConfig.selectedHeaderFgColor = ColorConstants.getTableForegroundColor();
selectStyleConfig.selectedHeaderFont = GUIHelper.DEFAULT_FONT;
layer.addConfiguration(selectStyleConfig);
}

View File

@@ -24,6 +24,7 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.talend.commons.ui.runtime.ColorConstants;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.swt.calendar.SWTCalendarWithTime;
import org.talend.commons.ui.swt.proposal.ContentProposalAdapterExtended;
@@ -61,7 +62,7 @@ public class PatternCalendar extends SWTCalendarWithTime {
gridLayout.marginHeight = 5;
composite.setLayout(gridLayout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
composite.setBackground(getDisplay().getSystemColor(SWT.COLOR_WHITE));
composite.setBackground(ColorConstants.getTableBackgroundColor());
Label patternLabel = new Label(composite, SWT.NONE);
patternLabel.setText(Messages.getString("PatternCalendar.pattern")); //$NON-NLS-1$
@@ -71,6 +72,7 @@ public class PatternCalendar extends SWTCalendarWithTime {
patternText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
patternText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
onPatternChange();
}

View File

@@ -43,6 +43,7 @@ import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
import org.talend.commons.ui.runtime.ColorConstants;
import org.talend.core.PluginChecker;
import org.talend.core.model.metadata.types.ContextParameterJavaTypeManager;
import org.talend.core.model.metadata.types.JavaTypesManager;
@@ -115,7 +116,7 @@ public class ContextNatTableConfiguration extends AbstractRegistryConfiguration
private void registerStyleRules(IConfigRegistry configRegistry) {
// register the default cell fg/bg colour for the natTable
Style cellStyleDefault = new Style();
cellStyleDefault.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, GUIHelper.COLOR_WHITE);
cellStyleDefault.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, ColorConstants.getTableBackgroundColor());
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, cellStyleDefault, DisplayMode.NORMAL,
ContextTableConstants.COLUMN_TYPE_PROPERTY);

View File

@@ -27,6 +27,7 @@ import org.eclipse.nebula.widgets.nattable.style.VerticalAlignmentEnum;
import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.talend.commons.ui.runtime.ColorConstants;
/**
* created by ldong on Aug 26, 2014 Detailled comment
@@ -34,12 +35,6 @@ import org.eclipse.swt.graphics.Font;
*/
public class ContextNatTableStyleConfiguration extends AbstractRegistryConfiguration {
public Color bgColor = GUIHelper.COLOR_WHITE;
public Color fgColor = GUIHelper.COLOR_BLACK;
public Color gradientBgColor = GUIHelper.COLOR_WHITE;
public Color gradientFgColor = GUIHelper.getColor(136, 212, 215);
public Font font = GUIHelper.DEFAULT_FONT;
@@ -67,9 +62,9 @@ public class ContextNatTableStyleConfiguration extends AbstractRegistryConfigura
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, cellPainter);
Style cellStyle = new Style();
cellStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, bgColor);
cellStyle.setAttributeValue(CellStyleAttributes.FOREGROUND_COLOR, fgColor);
cellStyle.setAttributeValue(CellStyleAttributes.GRADIENT_BACKGROUND_COLOR, gradientBgColor);
cellStyle.setAttributeValue(CellStyleAttributes.BACKGROUND_COLOR, ColorConstants.getTableBackgroundColor());
cellStyle.setAttributeValue(CellStyleAttributes.FOREGROUND_COLOR, ColorConstants.getTableForegroundColor());
cellStyle.setAttributeValue(CellStyleAttributes.GRADIENT_BACKGROUND_COLOR, ColorConstants.getTableBackgroundColor());
cellStyle.setAttributeValue(CellStyleAttributes.GRADIENT_FOREGROUND_COLOR, gradientFgColor);
cellStyle.setAttributeValue(CellStyleAttributes.FONT, font);
cellStyle.setAttributeValue(CellStyleAttributes.HORIZONTAL_ALIGNMENT, hAlign);
@@ -79,5 +74,7 @@ public class ContextNatTableStyleConfiguration extends AbstractRegistryConfigura
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_STYLE, cellStyle);
configRegistry.registerConfigAttribute(CellConfigAttributes.DISPLAY_CONVERTER, new DefaultDisplayConverter());
}
}

View File

@@ -34,6 +34,7 @@ import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import org.talend.commons.ui.runtime.ITalendThemeService;
import org.talend.commons.ui.runtime.image.EImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.core.GlobalServiceRegister;
@@ -173,10 +174,10 @@ public class TalendTabbedPropertyTitle extends Composite implements ITalendTabbe
helpComp.setVisible(false);
if (colorHelper.getTitleBackground() == null) {
label.setBackground(new Color[] { factory.getColors().getColor(IFormColors.H_GRADIENT_END),
factory.getColors().getColor(IFormColors.H_GRADIENT_START) }, new int[] { 100 }, true);
titleLabelComp.setBackground(factory.getColors().getColor(IFormColors.H_GRADIENT_START));
helpComp.setBackground(factory.getColors().getColor(IFormColors.H_GRADIENT_START));
label.setBackground(new Color[] { getStartColor(),
getEndColor() }, new int[] { 100 }, true);
titleLabelComp.setBackground(getEndColor());
helpComp.setBackground(getEndColor());
} else {
label.setBackground(colorHelper.getTitleBackground());
titleLabelComp.setBackground(colorHelper.getTitleBackground());
@@ -184,23 +185,33 @@ public class TalendTabbedPropertyTitle extends Composite implements ITalendTabbe
}
}
private Color getStartColor() {
return ITalendThemeService.getColor("org.talend.core.repository.TAB_START_COLOR")
.orElse(factory.getColors().getColor(IFormColors.H_GRADIENT_END));
}
private Color getEndColor() {
return ITalendThemeService.getColor("org.talend.core.repository.TAB_END_COLOR")
.orElse(factory.getColors().getColor(IFormColors.H_GRADIENT_START));
}
/**
* @param e
*/
protected void drawTitleBackground(PaintEvent e) {
Rectangle bounds = getClientArea();
if (colorHelper.getTitleBackground() == null) {
label.setBackground(new Color[] { factory.getColors().getColor(IFormColors.H_GRADIENT_END),
factory.getColors().getColor(IFormColors.H_GRADIENT_START) }, new int[] { 100 }, true);
titleLabelComp.setBackground(factory.getColors().getColor(IFormColors.H_GRADIENT_START));
helpComp.setBackground(factory.getColors().getColor(IFormColors.H_GRADIENT_START));
label.setBackground(new Color[] { getStartColor(),
getEndColor() }, new int[] { 100 }, true);
titleLabelComp.setBackground(getEndColor());
helpComp.setBackground(getEndColor());
} else {
label.setBackground(colorHelper.getTitleBackground());
titleLabelComp.setBackground(colorHelper.getTitleBackground());
helpComp.setBackground(colorHelper.getTitleBackground());
}
Color bg = factory.getColors().getColor(IFormColors.H_GRADIENT_END);
Color gbg = factory.getColors().getColor(IFormColors.H_GRADIENT_START);
Color bg = getStartColor();
Color gbg = getEndColor();
GC gc = e.gc;
gc.setForeground(bg);
gc.setBackground(gbg);

View File

@@ -63,6 +63,7 @@ public final class GenerateQueryFactory {
case IBMDB2ZOS:
case MYSQL:
case AMAZON_AURORA:
case INGRES:
return new NonDatabaseDefaultQueryGenerator(dbType);
case ORACLE_OCI:
case ORACLEFORSID:

View File

@@ -26,6 +26,7 @@ import org.talend.commons.exception.PersistenceException;
import org.talend.commons.exception.SystemException;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.IService;
import org.talend.core.model.general.ConnectionBean;
import org.talend.core.model.general.Project;
import org.talend.core.model.process.INode;
import org.talend.core.model.properties.Property;
@@ -108,6 +109,8 @@ public interface ICoreTisService extends IService {
void syncProjectUpdateSettingsFromServer(IProgressMonitor monitor, Project proj) throws Exception;
void refreshPatchesFolderCache();
boolean hasValidToken(ConnectionBean conn) throws Exception;
static ICoreTisService get() {
if (GlobalServiceRegister.getDefault().isServiceRegistered(ICoreTisService.class)) {

View File

@@ -43,3 +43,4 @@ Export-Package: org.talend.designer.maven.aether,
org.talend.designer.maven.aether.selector,
org.talend.designer.maven.aether.util
Bundle-Vendor: .Talend SA.

View File

@@ -83,7 +83,7 @@
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.2</version>
<version>1.15.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>

View File

@@ -11,7 +11,7 @@
<packaging>eclipse-plugin</packaging>
<properties>
<tcomp.version>${component-runtime.version}</tcomp.version>
<cxf.version>3.5.2</cxf.version>
<cxf.version>3.5.5</cxf.version>
<geronimo.version>1.0.2</geronimo.version>
<jcache.version>1.0.5</jcache.version>
<jcache_spec.version>1.0-alpha-1</jcache_spec.version>
@@ -23,7 +23,7 @@
<tomcat.version>9.0.68</tomcat.version>
<xbean.version>4.20</xbean.version>
<reload4j.version>1.2.22</reload4j.version>
<log4j2.version>2.17.2</log4j2.version>
<log4j2.version>2.18.0</log4j2.version>
<tycho.buildtimestamp.format>${timestamp}</tycho.buildtimestamp.format>
</properties>
<repositories>

View File

@@ -174,7 +174,7 @@
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.2</version>
<version>1.15.3</version>
</dependency>
</dependencies>
<build>

View File

@@ -11,7 +11,7 @@
<packaging>pom</packaging>
<properties>
<tcomp.version>1.51.2</tcomp.version>
<tcomp.version>1.53.0</tcomp.version>
<slf4j.version>1.7.34</slf4j.version>
<reload4j.version>1.2.22</reload4j.version>
</properties>

View File

@@ -35,7 +35,189 @@
</exclusion>
</exclusions>
</dependency>
<!--crypto-utils 7.0.5 dependencies begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.3</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-bom</artifactId>
<version>4.14.1</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-bom</artifactId>
<version>3.0.12</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>2.13.3</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>2.35</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-bom</artifactId>
<version>9.4.48.v20220622</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-bom</artifactId>
<version>1.6.21</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-bom</artifactId>
<version>1.6.4</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.17.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-bom</artifactId>
<version>1.9.3</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>4.1.79.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc-bom</artifactId>
<version>21.5.0.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_bom</artifactId>
<version>0.15.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-bom</artifactId>
<version>5.0.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-bom</artifactId>
<version>Borca-SR1</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-bom</artifactId>
<version>2020.0.22</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.rsocket</groupId>
<artifactId>rsocket-bom</artifactId>
<version>1.1.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-bom</artifactId>
<version>2021.2.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.22</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>5.5.14</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>5.7.3</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-bom</artifactId>
<version>2021.2.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-bom</artifactId>
<version>4.2.11</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-parent</artifactId>
<version>4.2.11</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-bom</artifactId>
<version>13.0.10.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-build-configuration-parent</artifactId>
<version>13.0.10.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss</groupId>
<artifactId>jboss-parent</artifactId>
<version>36</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-bom</artifactId>
<version>4.5.1</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-bom</artifactId>
<version>4.9.3</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-bom</artifactId>
<version>4.5.1</version>
<type>pom</type>
</dependency>
<!--crypto-utils 7.0.5 dependencies end -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.8.0</version>
@@ -120,6 +302,36 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<version>2.0.1-TALEND</version>
<configuration>
<localRepositoryPath>${basedir}/../tmp/repository</localRepositoryPath>
<skipTestScopeForExtraArtifacts>true</skipTestScopeForExtraArtifacts>
<onlyResolveDependencies>true</onlyResolveDependencies>
</configuration>
<executions>
<execution>
<id>generate-components-maven-repo</id>
<phase>package</phase>
<goals>
<goal>install</goal>
</goals>
<configuration>
<extraArtifacts>
<extraArtifact>org.junit:junit-bom:5.7.1:pom</extraArtifact>
<extraArtifact>org.junit:junit-bom:5.8.2:pom</extraArtifact>
<extraArtifact>org.junit:junit-bom:5.9.1:pom</extraArtifact>
<extraArtifact>com.fasterxml.jackson:jackson-bom:2.13.3:pom</extraArtifact>
</extraArtifacts>
<pomIncludes>
<pomInclude>*/*.pom</pomInclude>
</pomIncludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -94,6 +94,15 @@
name="RemoveConfigMavenRepository"
version="6.0.2">
</projecttask>
<projecttask
beforeLogon="true"
breaks="8.0.0"
class="org.talend.designer.maven.ui.setting.migration.ProjectPomTemplateMigrationTask"
description="Migrate custom project pom template"
id="org.talend.designer.maven.ui.setting.migration.ProjectPomTemplateMigrationTask"
name="ProjectPomTemplateMigrationTask"
version="8.0.1">
</projecttask>
</extension>
</plugin>

View File

@@ -11,6 +11,11 @@ ProjectPomProjectSettingPage_FilterPomLabel=Filter to use to generate poms:
ProjectPomProjectSettingPage_FilterErrorMessage=Filter is invalid.
ProjectPomProjectSettingPage.syncAllPomsButtonText=Force full re-synchronize POMs
ProjectPomProjectSettingPage.syncBuildTypesButtonText=Force full re-synchronize build types
ProjectPomProjectSettingPage.validateTitle=Customization result
ProjectPomProjectSettingPage.warningTip=The following default settings will be overwritten.\n
ProjectPomProjectSettingPage.errorTip=The following default settings can't be overwritten.\n
ProjectPomProjectSettingPage.headerMessage=Customize the project POM settings by adding your custom settings on the Custom tab.
ProjectPomProjectSettingPage.preview=Preview
AbstractPersistentProjectSettingPage.syncAllPoms=Do you want to update all poms? \n This operation might take long time depends on your project size.
MavenProjectSettingPage.filterExampleMessage=Filter examples:\nlabel=myJob \t\t\t\t=> Generate only the job named "myJob"\n!(label=myJob) \t\t\t\t=> Generate any job except the one named "myJob"\n(path=folder1/folder2) \t\t\t=> Generate any job in the folder "folder1/folder2"\n(path=folder1/folder2)or(label=myJob)\t=> Generate any job in the folder "folder1/folder2" or named "myJob"\n(label=myJob)and(version=0.2)\t\t=> Generate only the job named "myJob" with version 0.2\n!((label=myJob)and(version=0.1))\t\t=> Generate every jobs except the "myJob" version 0.1
MavenProjectSettingPage.refModuleText=Set reference project modules in profile

View File

@@ -0,0 +1,66 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.maven.ui.setting.migration;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import org.apache.maven.model.Model;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.model.general.Project;
import org.talend.core.model.migration.AbstractProjectMigrationTask;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.core.runtime.projectsetting.ProjectPreferenceManager;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.tools.MergeModelTool;
import org.talend.designer.maven.ui.DesignerMavenUiPlugin;
import org.talend.repository.ProjectManager;
public class ProjectPomTemplateMigrationTask extends AbstractProjectMigrationTask {
@Override
public Date getOrder() {
GregorianCalendar gc = new GregorianCalendar(2023, 1, 9, 12, 0, 0);
return gc.getTime();
}
@Override
public ExecutionResult execute(Project project) {
try {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(MavenTemplateManager.KEY_PROJECT_NAME,
ProjectManager.getInstance().getCurrentProject().getTechnicalLabel());
Model defaultModel = MavenTemplateManager.getDefaultProjectModel(parameters);
Model customModel = MavenTemplateManager.getCustomProjectModel(parameters);
Model model = new MergeModelTool().migrateCustomModel(defaultModel, customModel);
ByteArrayOutputStream out = new ByteArrayOutputStream();
MavenPlugin.getMaven().writeModel(model, out);
String content = out.toString(TalendMavenConstants.DEFAULT_ENCODING);
if (content != null) {
ProjectPreferenceManager prefManager = DesignerMavenUiPlugin.getDefault().getProjectPreferenceManager();
prefManager.setValue(IProjectSettingPreferenceConstants.TEMPLATE_PROJECT_POM, content);
prefManager.save();
}
} catch (Exception e) {
ExceptionHandler.process(e);
return ExecutionResult.FAILURE;
}
return ExecutionResult.SUCCESS_NO_ALERT;
}
}

View File

@@ -12,25 +12,19 @@
// ============================================================================
package org.talend.designer.maven.ui.setting.project.initializer;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.Iterator;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.model.Model;
import org.apache.maven.model.Profile;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.PluginChecker;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants;
import org.talend.designer.maven.DesignerMavenPlugin;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.maven.template.AbstractMavenTemplateManager;
import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.tools.extension.PomExtensionRegistry;
import org.talend.designer.maven.ui.DesignerMavenUiPlugin;
import org.talend.designer.maven.utils.PomUtil;
@@ -51,7 +45,7 @@ public class MavenScriptsProjectSettingInitializer extends AbstractProjectPrefer
try {
setDefault(preferenceStore, IProjectSettingPreferenceConstants.TEMPLATE_PROJECT_POM, DesignerMavenPlugin.PLUGIN_ID,
IProjectSettingTemplateConstants.PATH_GENERAL + '/'
+ IProjectSettingTemplateConstants.PROJECT_TEMPLATE_FILE_NAME);
+ IProjectSettingTemplateConstants.PROJECT_CUSTOM_TEMPLATE_FILE_NAME);
} catch (Exception e) {
ExceptionHandler.process(e);
@@ -67,7 +61,6 @@ public class MavenScriptsProjectSettingInitializer extends AbstractProjectPrefer
if (templateManager != null) {
InputStream stream = templateManager.readBundleStream(bundleTemplatePath);
Model model = MavenPlugin.getMavenModelManager().readMavenModel(stream);
PomExtensionRegistry.getInstance().updatePomTemplate(model);
ByteArrayOutputStream out = new ByteArrayOutputStream();
PomUtil.sortModules(model);
MavenPlugin.getMaven().writeModel(model, out);
@@ -76,31 +69,6 @@ public class MavenScriptsProjectSettingInitializer extends AbstractProjectPrefer
preferenceStore.setDefault(key, content);
}
}
// if license change to NON-TP, check to remove docker profile
if (!PluginChecker.isDockerPluginLoaded()) {
String content = preferenceStore.getString(key);
if (!StringUtils.isBlank(content)) {
InputStream stream = new ByteArrayInputStream(content.getBytes(TalendMavenConstants.DEFAULT_ENCODING));
Model model = MavenPlugin.getMavenModelManager().readMavenModel(stream);
Iterator<Profile> iterator = model.getProfiles().iterator();
boolean isModified = false;
while(iterator.hasNext()) {
Profile profile = iterator.next();
if ("docker".equals(profile.getId())) { //$NON-NLS-1$
iterator.remove();
isModified = true;
}
}
if (isModified) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
MavenPlugin.getMaven().writeModel(model, out);
content = out.toString(TalendMavenConstants.DEFAULT_ENCODING);
if (content != null) {
preferenceStore.setValue(key, content);
}
}
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}

View File

@@ -12,27 +12,39 @@
// ============================================================================
package org.talend.designer.maven.ui.setting.project.page;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.maven.model.Model;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.m2e.core.MavenPlugin;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.GlobalServiceRegister;
import org.talend.core.runtime.process.ITalendProcessJavaProject;
import org.talend.core.runtime.projectsetting.AbstractPomTemplateProjectSettingPage;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.designer.maven.tools.ProjectPomManager;
import org.talend.core.runtime.projectsetting.PomPreviewDialog;
import org.talend.designer.maven.model.MergedModel;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.tools.AggregatorPomsHelper;
import org.talend.designer.maven.tools.MergeModelTool;
import org.talend.designer.maven.ui.DesignerMavenUiPlugin;
import org.talend.designer.maven.ui.i18n.Messages;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.repository.ProjectManager;
/**
* DOC ggu class global comment. Detailled comment
*/
public class ProjectPomProjectSettingPage extends AbstractPersistentProjectSettingPage {
public class ProjectPomProjectSettingPage extends AbstractPomTemplateProjectSettingPage {
private String oldScriptContent;
public ProjectPomProjectSettingPage() {
super();
this.oldScriptContent = this.getScriptContent();
this.oldScriptContent = getCustomText();
}
@Override
@@ -45,42 +57,122 @@ public class ProjectPomProjectSettingPage extends AbstractPersistentProjectSetti
return IProjectSettingPreferenceConstants.TEMPLATE_PROJECT_POM;
}
/*
* (non-Javadoc)
*
* @see org.talend.repository.preference.AbstractScriptPreferencePage#getHeadTitle()
*/
@Override
protected String getHeadTitle() {
return Messages.getString("ProjectPomProjectSettingPage_Titile"); //$NON-NLS-1$
protected String getHeaderMessage() {
return Messages.getString("ProjectPomProjectSettingPage.headerMessage"); //$NON-NLS-1$
}
@Override
protected String getDefaultText() {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put(MavenTemplateManager.KEY_PROJECT_NAME,
ProjectManager.getInstance().getCurrentProject().getTechnicalLabel());
Model model = MavenTemplateManager.getDefaultProjectModel(parameters);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
MavenPlugin.getMaven().writeModel(model, out);
return out.toString(TalendMavenConstants.DEFAULT_ENCODING);
} catch (Exception e) {
ExceptionHandler.process(e);
}
return "Error loading default project pom template!"; //$NON-NLS-1$
}
@Override
protected String getMoreInfoUrl() {
return "https://document-link.us.cloud.talend.com/ts_ug_customize_project_pom_settings?version=80&lang=en&env=prd"; //$NON-NLS-1$
}
@Override
protected boolean checkModel(boolean preview) {
if (customText == null || customText.isDisposed()) {
return false;
}
Model model = null;
try {
Model defaultModel = MavenPlugin.getMavenModelManager()
.readMavenModel(new ByteArrayInputStream(defaultText.getText().getBytes()));
Model customModel = MavenPlugin.getMavenModelManager()
.readMavenModel(new ByteArrayInputStream(customText.getText().getBytes()));
MergedModel mergedModel = new MergeModelTool().mergeModel(defaultModel, customModel);
model = mergedModel.getModel();
StringBuilder msgBuilder = new StringBuilder();
if (model != null) {
String propertiesInfo = mergedModel.getIllegalPropertiesInfo();
if (propertiesInfo != null) {
// validated with warning
msgBuilder.append(Messages.getString("ProjectPomProjectSettingPage.warningTip")); //$NON-NLS-1$
msgBuilder.append(propertiesInfo);
MessageDialog.openWarning(getShell(), Messages.getString("ProjectPomProjectSettingPage.validateTitle"), //$NON-NLS-1$
msgBuilder.toString());
}
} else {
msgBuilder.append(Messages.getString("ProjectPomProjectSettingPage.errorTip")); //$NON-NLS-1$
String pluginManagementInfo = mergedModel.getIllegalPluginManagementInfo();
if (pluginManagementInfo != null) {
msgBuilder.append(pluginManagementInfo);
}
String pluginsInfo = mergedModel.getIllegalPluginsInfo();
if (pluginsInfo != null) {
msgBuilder.append(pluginsInfo);
}
String profilesInfo = mergedModel.getIllegalProfilesInfo();
if (profilesInfo != null) {
msgBuilder.append(profilesInfo);
}
MessageDialog.openError(getShell(), Messages.getString("ProjectPomProjectSettingPage.validateTitle"), //$NON-NLS-1$
msgBuilder.toString());
}
if (model == null) {
return false;
}
if (preview) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
MavenPlugin.getMaven().writeModel(model, out);
String content = out.toString(TalendMavenConstants.DEFAULT_ENCODING);
new PomPreviewDialog(getShell(), Messages.getString("ProjectPomProjectSettingPage.preview"), content).open(); //$NON-NLS-1$
}
return true;
} catch (Exception e) {
MessageDialog.openError(getShell(), Messages.getString("ProjectPomProjectSettingPage.validateTitle"), //$NON-NLS-1$
e.getCause() == null ? e.getMessage() : e.getCause().getMessage());
ExceptionHandler.process(e);
return false;
}
}
@Override
protected void performApply() {
super.performApply();
// reset from modification
this.oldScriptContent = this.getScriptContent();
if (performOk()) {
// reset from modification
this.oldScriptContent = getCustomText();
}
}
@Override
public boolean performOk() {
boolean performOk = super.performOk();
String newContent = this.getScriptContent();
if (!newContent.equals(oldScriptContent)) { // not same
MessageDialog.openWarning(this.getShell(), Messages.getString("ProjectPomProjectSettingPage_ConfirmTitle"), //$NON-NLS-1$
Messages.getString("ProjectPomProjectSettingPage_ConfirmMessage")); //$NON-NLS-1$
// Update project pom file.
ProjectPomManager projectPomManager = new ProjectPomManager();
boolean ok = super.performOk();
if (ok && getScriptTxt() != null && !getScriptTxt().isDisposed()) {
try {
projectPomManager.updateFromTemplate(null);
if (MessageDialog.openQuestion(getShell(), "Question", //$NON-NLS-1$
Messages.getString("AbstractPersistentProjectSettingPage.syncAllPoms"))) { //$NON-NLS-1$
new AggregatorPomsHelper().syncAllPoms();
} else {
String newContent = getCustomText();
if (!newContent.equals(oldScriptContent)) { // not same
MessageDialog.openWarning(this.getShell(),
Messages.getString("ProjectPomProjectSettingPage_ConfirmTitle"), //$NON-NLS-1$
Messages.getString("ProjectPomProjectSettingPage_ConfirmMessage")); //$NON-NLS-1$
new AggregatorPomsHelper().createRootPom(new NullProgressMonitor());
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
return performOk;
return ok;
}
}

View File

@@ -0,0 +1,12 @@
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>@ProjectGroupId@</groupId>
<artifactId>@ProjectArtifactId@</artifactId>
<version>@ProjectVersion@</version>
<packaging>pom</packaging>
<name>@ProjectName@ Codes Master</name>
<url>http://www.talend.org/</url>
</project>

View File

@@ -0,0 +1,98 @@
// ============================================================================
//
// Copyright (C) 2006-2022 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.maven.model;
import java.util.ArrayList;
import java.util.List;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.Profile;
public class MergedModel {
private Model model;
private List<String> illegalProperties = new ArrayList<>();
private List<Profile> illegalProfiles = new ArrayList<>();
private List<Plugin> illegalPluginManagement = new ArrayList<>();
private List<Plugin> illegalPlugins = new ArrayList<>();
public Model getModel() {
return model;
}
public void setModel(Model model) {
this.model = model;
}
public List<String> getIllegalProperties() {
return illegalProperties;
}
public List<Profile> getIllegalProfiles() {
return illegalProfiles;
}
public List<Plugin> getIllegalPluginManagement() {
return illegalPluginManagement;
}
public List<Plugin> getIllegalPlugins() {
return illegalPlugins;
}
public String getIllegalPropertiesInfo() {
if (!illegalProperties.isEmpty()) {
StringBuilder msgBuilder = new StringBuilder();
msgBuilder.append("Properties:\n");
illegalProperties.forEach(property -> msgBuilder.append(" ").append(property).append("\n"));
return msgBuilder.toString();
}
return null;
}
public String getIllegalPluginManagementInfo() {
if (!illegalPluginManagement.isEmpty()) {
StringBuilder msgBuilder = new StringBuilder();
msgBuilder.append("PluginManagement:\n");
illegalPluginManagement.forEach(plugin -> msgBuilder.append(" ").append(plugin.getKey()).append("\n"));
return msgBuilder.toString();
}
return null;
}
public String getIllegalPluginsInfo() {
if (!illegalPlugins.isEmpty()) {
StringBuilder msgBuilder = new StringBuilder();
msgBuilder.append("Plugins:\n"); //$NON-NLS-1$
illegalPlugins.forEach(plugin -> msgBuilder.append(" ").append(plugin.getKey()).append("\n"));
return msgBuilder.toString();
}
return null;
}
public String getIllegalProfilesInfo() {
if (!illegalProfiles.isEmpty()) {
StringBuilder msgBuilder = new StringBuilder();
msgBuilder.append("Profiles:\n");
illegalProfiles.forEach(profile -> msgBuilder.append(" ").append(profile.getId()).append("\n"));
return msgBuilder.toString();
}
return null;
}
}

View File

@@ -38,8 +38,10 @@ import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants;
import org.talend.designer.maven.DesignerMavenPlugin;
import org.talend.designer.maven.model.MergedModel;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.maven.setting.project.IProjectSettingManagerProvider;
import org.talend.designer.maven.tools.MergeModelTool;
import org.talend.designer.maven.tools.extension.PomExtensionRegistry;
import org.talend.designer.maven.utils.PomIdsHelper;
import org.talend.designer.maven.utils.PomUtil;
@@ -211,49 +213,67 @@ public class MavenTemplateManager {
}
}
public static Model getCodeProjectTemplateModel() {
return getCodeProjectTemplateModel(null); // by default will be current project.
}
/**
* Try to load the project template from bundle, if load failed, use default instead.
*/
public static Model getCodeProjectTemplateModel(Map<String, Object> parameters) {
final String projectTechName = PomUtil.getProjectNameFromTemplateParameter(parameters);
Model defaultModel = getDefaultCodeProjectTemplateModel(projectTechName);
Model basicModel = getBasicProjectPomTemplateModel(parameters);
Model defaultModel = getDefaultProjectModel(parameters);
if (defaultModel == null) {
defaultModel = basicModel;
}
Model customModel = getCustomProjectModel(parameters);
MergedModel mergedModel = new MergeModelTool().mergeModel(defaultModel, customModel);
Model model = mergedModel.getModel();
if (model != null) {
Map<ETalendMavenVariables, String> variablesValuesMap = new HashMap<>();
variablesValuesMap.put(ETalendMavenVariables.ProjectGroupId, basicModel.getGroupId());
variablesValuesMap.put(ETalendMavenVariables.ProjectArtifactId, basicModel.getArtifactId());
variablesValuesMap.put(ETalendMavenVariables.ProjectVersion, basicModel.getVersion());
variablesValuesMap.put(ETalendMavenVariables.ProjectName, PomUtil.getProjectNameFromTemplateParameter(parameters));
model.setGroupId(ETalendMavenVariables.replaceVariables(model.getGroupId(), variablesValuesMap));
model.setArtifactId(ETalendMavenVariables.replaceVariables(model.getArtifactId(), variablesValuesMap));
model.setVersion(ETalendMavenVariables.replaceVariables(model.getVersion(), variablesValuesMap));
model.setName(ETalendMavenVariables.replaceVariables(model.getName(), variablesValuesMap));
setJavaVersionForModel(model, variablesValuesMap);
}
return model;
}
public static Model getDefaultProjectModel(Map<String, Object> parameters) {
try {
InputStream stream = MavenTemplateManager.getTemplateStream(null,
IProjectSettingPreferenceConstants.TEMPLATE_PROJECT_POM, DesignerMavenPlugin.PLUGIN_ID,
InputStream stream = MavenTemplateManager.getTemplateStream(null, null, DesignerMavenPlugin.PLUGIN_ID,
IProjectSettingTemplateConstants.PATH_GENERAL + '/'
+ IProjectSettingTemplateConstants.PROJECT_TEMPLATE_FILE_NAME, parameters);
+ IProjectSettingTemplateConstants.PROJECT_TEMPLATE_FILE_NAME,
parameters);
if (stream != null) {
Model model = MavenPlugin.getMavenModelManager().readMavenModel(stream);
Map<ETalendMavenVariables, String> variablesValuesMap = new HashMap<ETalendMavenVariables, String>();
variablesValuesMap.put(ETalendMavenVariables.ProjectGroupId, defaultModel.getGroupId());
variablesValuesMap.put(ETalendMavenVariables.ProjectArtifactId, defaultModel.getArtifactId());
variablesValuesMap.put(ETalendMavenVariables.ProjectVersion, defaultModel.getVersion());
variablesValuesMap.put(ETalendMavenVariables.ProjectName, projectTechName);
model.setGroupId(ETalendMavenVariables.replaceVariables(model.getGroupId(), variablesValuesMap));
model.setArtifactId(ETalendMavenVariables.replaceVariables(model.getArtifactId(), variablesValuesMap));
model.setVersion(ETalendMavenVariables.replaceVariables(model.getVersion(), variablesValuesMap));
model.setName(ETalendMavenVariables.replaceVariables(model.getName(), variablesValuesMap));
setJavaVersionForModel(model, variablesValuesMap);
PomExtensionRegistry.getInstance().updateProjectPom(model);
PomExtensionRegistry.getInstance().updatePomTemplate(model);
Properties properties = model.getProperties();
properties.put("talend.project.name", projectTechName); //$NON-NLS-1$
properties.put("talend.project.name", PomUtil.getProjectNameFromTemplateParameter(parameters)); //$NON-NLS-1$
return model;
}
} catch (Exception e) {
// ExceptionHandler.process(e);
ExceptionHandler.process(e);
}
return defaultModel; // if error, try to use default model
return null;
}
public static Model getCustomProjectModel(Map<String, Object> parameters) {
try {
InputStream stream = MavenTemplateManager.getTemplateStream(null,
IProjectSettingPreferenceConstants.TEMPLATE_PROJECT_POM, null, null, parameters);
if (stream != null) {
return MavenPlugin.getMavenModelManager().readMavenModel(stream);
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
return null;
}
private static void setJavaVersionForModel(Model model, Map<ETalendMavenVariables, String> variablesValuesMap) {
@@ -275,7 +295,8 @@ public class MavenTemplateManager {
}
}
private static Model getDefaultCodeProjectTemplateModel(String projectTechName) {
private static Model getBasicProjectPomTemplateModel(Map<String, Object> parameters) {
String projectTechName = PomUtil.getProjectNameFromTemplateParameter(parameters);
Model templateCodeProjectMOdel = new Model();
templateCodeProjectMOdel.setGroupId(PomIdsHelper.getProjectGroupId(projectTechName));
templateCodeProjectMOdel.setArtifactId(PomIdsHelper.getProjectArtifactId());

View File

@@ -0,0 +1,182 @@
// ============================================================================
//
// Copyright (C) 2006-2022 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.maven.tools;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.maven.model.Build;
import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.Profile;
import org.talend.designer.maven.model.MergedModel;
public class MergeModelTool {
public MergedModel mergeModel(Model defaultModel, Model customModel) {
MergedModel mergedModel = new MergedModel();
mergedModel.setModel(defaultModel);
if (customModel == null) {
return mergedModel;
}
// basic info
mergeBasicInfo(defaultModel, customModel);
// Properties
if (customModel.getProperties() != null) {
Properties defaultProperties = defaultModel.getProperties();
customModel.getProperties().keySet().stream().filter(key -> defaultProperties.containsKey(key))
.forEach(key -> mergedModel.getIllegalProperties().add((String) key));
defaultProperties.putAll(customModel.getProperties());
}
Build build = customModel.getBuild();
if (build != null) {
// PluginManagement
if (build.getPluginManagement() != null) {
Map<String, Plugin> customPluginsManageMap = build.getPluginManagement().getPluginsAsMap();
Map<String, Plugin> defaultPluginsManageMap = defaultModel.getBuild().getPluginManagement().getPluginsAsMap();
customPluginsManageMap.keySet().stream().filter(key -> defaultPluginsManageMap.containsKey(key))
.forEach(key -> mergedModel.getIllegalPluginManagement().add(customPluginsManageMap.get(key)));
if (mergedModel.getIllegalPluginManagement().isEmpty()) {
build.getPluginManagement().getPlugins()
.forEach(plugin -> defaultModel.getBuild().getPluginManagement().addPlugin(plugin));
}
}
// Plugins
Map<String, Plugin> customPluginsMap = build.getPluginsAsMap();
Map<String, Plugin> defaultPluginsMap = defaultModel.getBuild().getPluginsAsMap();
customPluginsMap.keySet().stream().filter(key -> defaultPluginsMap.containsKey(key))
.forEach(key -> mergedModel.getIllegalPlugins().add(customPluginsMap.get(key)));
if (mergedModel.getIllegalPlugins().isEmpty()) {
defaultModel.getBuild().getPlugins().addAll(build.getPlugins());
}
}
// Profiles
Map<String, Profile> customProfileMap = customModel.getProfiles().stream()
.collect(Collectors.toMap(Profile::getId, Function.identity()));
Map<String, Profile> defaultProfileMap = defaultModel.getProfiles().stream()
.collect(Collectors.toMap(Profile::getId, Function.identity()));
customProfileMap.keySet().stream().filter(key -> defaultProfileMap.containsKey(key))
.forEach(key -> mergedModel.getIllegalProfiles().add(customProfileMap.get(key)));
if (mergedModel.getIllegalProfiles().isEmpty()) {
defaultModel.getProfiles().addAll(customModel.getProfiles());
}
mergeOtherSetup(defaultModel, customModel);
if (!mergedModel.getIllegalPluginManagement().isEmpty() || !mergedModel.getIllegalPlugins().isEmpty()
|| !mergedModel.getIllegalProfiles().isEmpty()) {
mergedModel.setModel(null);
}
return mergedModel;
}
public Model migrateCustomModel(Model defaultModel, Model customModel) {
// Properties
Iterator<Entry<Object, Object>> iterator = customModel.getProperties().entrySet().iterator();
while (iterator.hasNext()) {
Entry<Object, Object> entry = iterator.next();
Object key = entry.getKey();
Object value = entry.getValue();
if (defaultModel.getProperties().containsKey(key) && value != null
&& value.equals(defaultModel.getProperties().get(key))) {
iterator.remove();
}
}
Build build = customModel.getBuild();
if (build != null) {
// PluginManagement
if (build.getPluginManagement() != null) {
Map<String, Plugin> defaultPluginsManageMap = defaultModel.getBuild().getPluginManagement().getPluginsAsMap();
build.getPluginManagement().getPlugins().removeIf(p -> defaultPluginsManageMap.containsKey(p.getKey()));
if (build.getPluginManagement().getPlugins().isEmpty()) {
build.setPluginManagement(null);
}
}
// Plugins
Map<String, Plugin> defaultPluginsMap = defaultModel.getBuild().getPluginsAsMap();
customModel.getBuild().getPlugins().removeIf(p -> defaultPluginsMap.containsKey(p.getKey()));
}
// Profiles
Map<String, Profile> defaultProfileMap = defaultModel.getProfiles().stream()
.collect(Collectors.toMap(Profile::getId, Function.identity()));
customModel.getProfiles().removeIf(profile -> defaultProfileMap.containsKey(profile.getId()));
return customModel;
}
private void mergeBasicInfo(Model defaultModel, Model customModel) {
if (customModel.getModelVersion() != null && !customModel.getModelVersion().equals(defaultModel.getModelVersion())) {
defaultModel.setModelVersion(customModel.getModelVersion());
}
if (customModel.getGroupId() != null && !customModel.getGroupId().equals(defaultModel.getGroupId())) {
defaultModel.setGroupId(customModel.getGroupId());
}
if (customModel.getArtifactId() != null && !customModel.getArtifactId().equals(defaultModel.getArtifactId())) {
defaultModel.setArtifactId(customModel.getArtifactId());
}
if (customModel.getVersion() != null && !customModel.getVersion().equals(defaultModel.getVersion())) {
defaultModel.setVersion(customModel.getVersion());
}
if (customModel.getPackaging() != null && !customModel.getPackaging().equals(defaultModel.getPackaging())) {
defaultModel.setPackaging(customModel.getPackaging());
}
if (customModel.getName() != null && !customModel.getName().equals(defaultModel.getName())) {
defaultModel.setName(customModel.getName());
}
if (customModel.getUrl() != null && !customModel.getUrl().equals(defaultModel.getUrl())) {
defaultModel.setUrl(customModel.getUrl());
}
}
private void mergeOtherSetup(Model defaultModel, Model customModel) {
// default model doesn't have those setup so can merge directly if exists
// FIXME add more if needed: https://maven.apache.org/ref/3.8.6/maven-model/maven.html
// DependencyManagement
if (customModel.getDependencyManagement() != null) {
defaultModel.setDependencyManagement(customModel.getDependencyManagement());
}
// Dependencies
if (!customModel.getDependencies().isEmpty()) {
defaultModel.setDependencies(customModel.getDependencies());
}
// Repositories
if (!customModel.getRepositories().isEmpty()) {
defaultModel.setRepositories(customModel.getRepositories());
}
// PluginRepositories
if (!customModel.getPluginRepositories().isEmpty()) {
defaultModel.setPluginRepositories(customModel.getPluginRepositories());
}
// DistributionManagement
if (customModel.getDistributionManagement() != null) {
defaultModel.setDistributionManagement(customModel.getDistributionManagement());
}
// SCM
if (customModel.getScm() != null) {
defaultModel.setScm(customModel.getScm());
}
}
}

View File

@@ -1,99 +0,0 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.maven.tools;
import java.util.Map;
import org.apache.maven.model.Model;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.embedder.MavenModelManager;
import org.talend.core.model.general.Project;
import org.talend.designer.maven.model.TalendJavaProjectConstants;
import org.talend.designer.maven.model.TalendMavenConstants;
import org.talend.designer.maven.template.MavenTemplateManager;
import org.talend.designer.maven.utils.PomUtil;
import org.talend.designer.runprocess.IProcessor;
import org.talend.repository.ProjectManager;
/**
* DOC ggu class global comment. Detailled comment
*/
public class ProjectPomManager {
protected static final MavenModelManager MODEL_MANAGER = MavenPlugin.getMavenModelManager();
private IFile projectPomFile;
/**
* true by default, update all
*/
public ProjectPomManager() {
projectPomFile = getTalendProjectPom();
}
public void update(IProgressMonitor monitor, IProcessor processor) throws Exception {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
if (!projectPomFile.exists()) {// delete by user manually?
// create it or nothing to do?
return;
}
Model projectModel = MODEL_MANAGER.readMavenModel(projectPomFile);
// attributes
updateAttributes(monitor, processor, projectModel);
PomUtil.savePom(monitor, projectModel, projectPomFile);
}
public void updateFromTemplate(IProgressMonitor monitor) throws Exception {
if (monitor == null) {
monitor = new NullProgressMonitor();
}
new AggregatorPomsHelper().createRootPom(monitor);
}
/**
*
* update the main attributes for project pom.
*
*/
protected void updateAttributes(IProgressMonitor monitor, IProcessor processor, Model projectModel) throws Exception {
final Map<String, Object> templateParameters = PomUtil.getTemplateParameters(processor);
Model templateModel = MavenTemplateManager.getCodeProjectTemplateModel(templateParameters);
projectModel.setGroupId(templateModel.getGroupId());
projectModel.setArtifactId(templateModel.getArtifactId());
projectModel.setVersion(templateModel.getVersion());
projectModel.setName(templateModel.getName());
projectModel.setPackaging(templateModel.getPackaging());
}
public IFile getTalendProjectPom() {
Project project = ProjectManager.getInstance().getCurrentProject();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IFolder pomsFolder = workspace.getRoot()
.getFolder(new Path(project.getTechnicalLabel() + "/" + TalendJavaProjectConstants.DIR_POMS)); //$NON-NLS-1$
IFile pomFile = pomsFolder.getFile(TalendMavenConstants.POM_FILE_NAME);
return pomFile;
}
}

View File

@@ -76,7 +76,6 @@ import org.talend.core.runtime.process.TalendProcessArgumentConstant;
import org.talend.core.runtime.process.TalendProcessOptionConstants;
import org.talend.core.runtime.projectsetting.IProjectSettingPreferenceConstants;
import org.talend.core.runtime.projectsetting.IProjectSettingTemplateConstants;
import org.talend.core.runtime.projectsetting.ProjectPreferenceManager;
import org.talend.core.runtime.util.ModuleAccessHelper;
import org.talend.core.services.IGITProviderService;
import org.talend.core.ui.ITestContainerProviderService;
@@ -93,7 +92,6 @@ import org.talend.designer.runprocess.IProcessor;
import org.talend.designer.runprocess.IRunProcessService;
import org.talend.designer.runprocess.ProcessorUtilities;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.RepositoryConstants;
import org.talend.utils.io.FilesUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@@ -290,18 +288,19 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
org.talend.core.model.general.Project currentProject = ProjectManager.getInstance()
.getProjectFromProjectTechLabel(project.getTechnicalLabel());
String branchName = ProjectManager.getInstance().getMainProjectBranch(project);
try {
if (branchName == null) {
ProjectPreferenceManager preferenceManager =
new ProjectPreferenceManager(currentProject, "org.talend.repository", false);
branchName = preferenceManager.getValue(RepositoryConstants.PROJECT_BRANCH_ID);
if(branchName == null) {
try {
branchName = IGitInfoService.get().getProjectBranch(currentProject);
} catch (Exception e) {
ExceptionHandler.process(e);
}
} catch (Exception e) {
ExceptionHandler.process(e);
}
if (null != branchName && branchName.startsWith("branches/")) {
branchName = branchName.substring(9);
if (null != branchName) {
properties.setProperty("talend.project.branch.name", branchName);
if(branchName.startsWith("branches/")) {
branchName = branchName.substring(9);
properties.setProperty("talend.project.branch.name", branchName);
}
}
try {
@@ -616,10 +615,13 @@ public class CreateMavenJobPom extends AbstractMavenProcessorPom {
}
String mainProjectBranch = ProjectManager.getInstance().getMainProjectBranch(project);
if (mainProjectBranch == null) {
ProjectPreferenceManager preferenceManager =
new ProjectPreferenceManager(project, "org.talend.repository", false);
mainProjectBranch = preferenceManager.getValue(RepositoryConstants.PROJECT_BRANCH_ID);
if (mainProjectBranch == null) {
try {
mainProjectBranch = IGitInfoService.get().getProjectBranch(project);
} catch (Exception e) {
ExceptionHandler.process(e);
}
if(mainProjectBranch == null) {
mainProjectBranch = "";
}
}

View File

@@ -5,4 +5,5 @@ bin.includes = META-INF/,\
plugin.xml,\
community_tools.xml,\
inlinehelp_context.xml,\
thc.xml
thc.xml,\
html/

View File

@@ -2,11 +2,10 @@
<?NLS TYPE="org.eclipse.help.toc"?>
<toc label="Talend Online Tools">
<topic label="Talend Babili" href="http://www.talendforge.org/babili/" />
<topic label="Talend Bugtracker" href="https://jira.talendforge.org/secure/Dashboard.jspa" />
<topic label="Talend Components" href="http://www.talendforge.org/components" />
<topic label="Talend Exchange" href="https://exchange.talend.com/" />
<topic label="Talend Forum" href="https://community.talend.com/" />
<topic label="Talend Sources" href="https://www.talendforge.org/sources/" />
<topic label="Talend Tutorials" href="https://community.talend.com/t5/custom/page/page-id/Tutorials" />
<topic label="Talend Bugtracker" href="html/dashboard.html" />
<topic label="Talend Components" href="html/components.html" />
<topic label="Talend Exchange" href="html/exchange.html" />
<topic label="Talend Forum" href="html/forum.html" />
<topic label="Talend Sources" href="html/sources.html" />
<topic label="Talend Tutorials" href="html/tutorials.html" />
</toc>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Components in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Components</button>
<script>
function openInNewWindow() {
window.open("http://www.talendforge.org/components");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Bugtracker in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Bugtracker</button>
<script>
function openInNewWindow() {
window.open("https://jira.talendforge.org/secure/Dashboard.jspa");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Exchange in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Exchange</button>
<script>
function openInNewWindow() {
window.open("https://exchange.talend.com/");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Forum in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Forum</button>
<script>
function openInNewWindow() {
window.open("https://community.talend.com/");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Sources in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Sources</button>
<script>
function openInNewWindow() {
window.open("https://www.talendforge.org/sources/");
}
</script>
</body>
</html>

View File

@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<body>
<p>Click the button below to open Talend Tutorials in a new browser window.</p>
<button onclick="openInNewWindow()">Go to Talend Tutorials</button>
<script>
function openInNewWindow() {
window.open("https://help.talend.com/r/en-US/8.0/discovering-talend-studio");
}
</script>
</body>
</html>

View File

@@ -2,28 +2,28 @@
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="lib/jakarta.activation-1.2.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-wsdl-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-wsdl-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jakarta.activation-api-1.2.2.jar"/>
<classpathentry exported="true" kind="lib" path="lib/woodstox-core-6.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/woodstox-core-6.4.0.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jakarta.annotation-api-1.3.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/stax2-api-4.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/neethi-3.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jakarta.ws.rs-api-2.1.6.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-core-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-xml-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxrs-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-rs-client-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-transports-http-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-soap-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-databinding-jaxb-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-features-clustering-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxws-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-simple-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-security-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-security-saml-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-addr-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-policy-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-security-3.4.4.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-core-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-xml-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxrs-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-rs-client-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-transports-http-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-bindings-soap-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-databinding-jaxb-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-features-clustering-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-jaxws-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-frontend-simple-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-security-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-security-saml-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-addr-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-policy-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/cxf-rt-ws-security-3.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="lib/javax.ws.rs-api-2.0-m10.jar"/>
<classpathentry exported="true" kind="lib" path="lib/jakarta.xml.bind-api-2.3.3.jar"/>
<classpathentry exported="true" kind="lib" path="lib/xmlschema-core-2.2.5.jar"/>

View File

@@ -8,25 +8,25 @@ Bundle-ClassPath: .,
lib/neethi-3.1.1.jar,
lib/stax2-api-4.2.1.jar,
lib/javax.activation-1.2.0.jar,
lib/cxf-core-3.4.4.jar,
lib/cxf-rt-bindings-xml-3.4.4.jar,
lib/cxf-rt-frontend-jaxrs-3.4.4.jar,
lib/cxf-rt-rs-client-3.4.4.jar,
lib/cxf-rt-transports-http-3.4.4.jar,
lib/cxf-rt-wsdl-3.4.4.jar,
lib/cxf-rt-bindings-soap-3.4.4.jar,
lib/cxf-rt-databinding-jaxb-3.4.4.jar,
lib/cxf-rt-features-clustering-3.4.4.jar,
lib/cxf-rt-frontend-jaxws-3.4.4.jar,
lib/cxf-rt-frontend-simple-3.4.4.jar,
lib/cxf-rt-security-3.4.4.jar,
lib/cxf-rt-security-saml-3.4.4.jar,
lib/cxf-rt-ws-addr-3.4.4.jar,
lib/cxf-rt-ws-policy-3.4.4.jar,
lib/cxf-rt-ws-security-3.4.4.jar,
lib/cxf-core-3.5.5.jar,
lib/cxf-rt-bindings-xml-3.5.5.jar,
lib/cxf-rt-frontend-jaxrs-3.5.5.jar,
lib/cxf-rt-rs-client-3.5.5.jar,
lib/cxf-rt-transports-http-3.5.5.jar,
lib/cxf-rt-wsdl-3.5.5.jar,
lib/cxf-rt-bindings-soap-3.5.5.jar,
lib/cxf-rt-databinding-jaxb-3.5.5.jar,
lib/cxf-rt-features-clustering-3.5.5.jar,
lib/cxf-rt-frontend-jaxws-3.5.5.jar,
lib/cxf-rt-frontend-simple-3.5.5.jar,
lib/cxf-rt-security-3.5.5.jar,
lib/cxf-rt-security-saml-3.5.5.jar,
lib/cxf-rt-ws-addr-3.5.5.jar,
lib/cxf-rt-ws-policy-3.5.5.jar,
lib/cxf-rt-ws-security-3.5.5.jar,
lib/jakarta.ws.rs-api-2.1.6.jar,
lib/jakarta.annotation-api-1.3.5.jar,
lib/woodstox-core-6.2.1.jar,
lib/woodstox-core-6.4.0.jar,
lib/jakarta.xml.bind-api-2.3.3.jar,
lib/jakarta.activation-api-1.2.2.jar,
lib/jakarta.activation-1.2.2.jar,

View File

@@ -9,7 +9,9 @@
</parent>
<artifactId>org.talend.libraries.apache.cxf</artifactId>
<packaging>eclipse-plugin</packaging>
<properties>
<cxf.version>3.5.5</cxf.version>
</properties>
<repositories>
<repository>
<id>talend-update</id>
@@ -21,82 +23,82 @@
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-xml</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-wsdl</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-databinding-jaxb</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-features-clustering</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-security</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-security-saml</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-addr</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.4.4</version>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>com.sun.activation</groupId>
@@ -131,7 +133,7 @@
<dependency>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
<version>6.2.1</version>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>

View File

@@ -202,9 +202,6 @@ public class JavaLibrariesService extends AbstractLibrariesService {
if (!repositoryBundleService.isInitialized()) {
// 2. Components libraries and libraries from extension
repositoryBundleService.createModulesIndexFromComponentAndExtension(monitorWrap);
} else {
//TUP-31721 & TUP-36231:Handle the custom components deployment when studio index is not re-generated.
repositoryBundleService.deployLibsFromCustomComponents();
}
repositoryBundleService.installModules(ModulesNeededProvider.getSystemRunningModules(), null);

View File

@@ -1347,27 +1347,83 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
saveMavenIndex(mavenURIMap, monitorWrap);
savePlatfromURLIndex(platformURLMap, monitorWrap);
if (service != null) {
deployLibsFromCustomComponents(service, platformURLMap);
}
return mavenURIMap;
}
public void deployLibsFromCustomComponents() {
IComponentsService service = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IComponentsService.class)) {
service = GlobalServiceRegister.getDefault().getService(IComponentsService.class);
public void deployLibsFromCustomComponents(File componentFolder, List<ModuleNeeded> modulesNeeded) {
if (modulesNeeded == null || modulesNeeded.isEmpty()) {
return;
}
if (service != null) {
Map<String, String> platformURLMap = new HashMap<>();
platformURLMap = LibrariesIndexManager.getInstance().getAllStudioLibsFromIndex();
// Need to read components first, otherwise FiltUtils.getFilesFromFolderByName() returns empty for custom
// component folder.
service.getComponentsFactory().readComponents();
deployLibsFromCustomComponents(service, platformURLMap);
Map<File, Set<MavenArtifact>> needToDeploy = new HashMap<File, Set<MavenArtifact>>();
modulesNeeded.forEach(module -> {
if (module != null) {
boolean needDeploy = false;
String mvnUri = module.getMavenUri();
String jarPathFromMaven = getJarPathFromMaven(StringUtils.isNotBlank(mvnUri) ? mvnUri : module.getModuleName());
if (StringUtils.isBlank(jarPathFromMaven)) {
needDeploy = true;
} else {
File jarFromMaven = new File(jarPathFromMaven);
if (!jarFromMaven.exists()) {
needDeploy = true;
}
}
if (needDeploy) {
File deployFile = getDeployJarFileByModule(componentFolder, module);
if (deployFile != null) {
install(deployFile, mvnUri, false, true, null);
if (needToDeploy.get(deployFile) == null) {
needToDeploy.put(deployFile, new HashSet<MavenArtifact>());
}
if (StringUtils.isNotBlank(mvnUri)) {
MavenArtifact mavenArtifact = MavenUrlHelper.parseMvnUrl(mvnUri);
needToDeploy.get(deployFile).add(mavenArtifact);
} else {
Map<String, String> sourceAndMavenUri = new HashMap<>();
guessMavenRUIFromIndex(deployFile, true, sourceAndMavenUri);
Set<MavenArtifact> MavenArtifactSet = new HashSet<MavenArtifact>();
sourceAndMavenUri.keySet()
.forEach(mavenUri -> {
if (StringUtils.isNotBlank(mvnUri)) {
MavenArtifactSet.add(MavenUrlHelper.parseMvnUrl(mavenUri));
}
});
needToDeploy.get(deployFile).addAll(MavenArtifactSet);
}
}
}
}
});
if (!needToDeploy.isEmpty()) {
ShareComponentsLibsJob shareJob = new ShareComponentsLibsJob(
Messages.getString("LocalLibraryManager.shareLibsForCustomponents"), needToDeploy, deployer);
shareJob.schedule();
}
}
private File getDeployJarFileByModule(File componentFolder, ModuleNeeded module) {
String mvnUri = module.getMavenUri();
if (StringUtils.isNotBlank(mvnUri)) {
MavenArtifact mavenArtifact = MavenUrlHelper.parseMvnUrl(mvnUri);
String fileName = mavenArtifact.getFileName();
File jarFile = new File(componentFolder, fileName);
if (jarFile.exists()) {
return jarFile;
}
}
// try module name
File jarFile = new File(componentFolder, module.getModuleName());
if (jarFile.exists()) {
return jarFile;
}
return null;
}
/**
*
* The old components might use some jars in component folder and theres jars are not configured with platfrom URL
@@ -1425,86 +1481,6 @@ public class LocalLibraryManager implements ILibraryManagerService, IChangedLibr
return false;
}
private void deployLibsFromCustomComponents(IComponentsService service, Map<String, String> platformURLMap) {
boolean deployToRemote = true;
if (!LibrariesManagerUtils.shareLibsAtStartup()) {
log.info("Skip deploying libs from custom components");
deployToRemote = false;
}
Map<File, Set<MavenArtifact>> needToDeploy = new HashMap<File, Set<MavenArtifact>>();
List<ComponentProviderInfo> componentsFolders = service.getComponentsFactory().getComponentsProvidersInfo();
for (ComponentProviderInfo providerInfo : componentsFolders) {
String id = providerInfo.getId();
try {
File file = new File(providerInfo.getLocation());
if (isExtComponentProvider(id)) {
if (file.isDirectory()) {
List<File> jarFiles = FilesUtils.getJarFilesFromFolder(file, null);
if (jarFiles.size() > 0) {
for (File jarFile : jarFiles) {
String name = jarFile.getName();
if (!canDeployFromCustomComponentFolder(name) || platformURLMap.get(name) != null) {
continue;
}
collectLibModules(jarFile, needToDeploy);
}
}
} else {
if (!canDeployFromCustomComponentFolder(file.getName()) || platformURLMap.get(file.getName()) != null) {
continue;
}
collectLibModules(file, needToDeploy);
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
continue;
}
}
// first install them locally
needToDeploy.forEach((k, v) -> {
try {
// install as release version if can't find mvn url from index
install(k, null, false, true);
} catch (Exception e) {
ExceptionHandler.process(e);
}
});
if (!deployToRemote) {
return;
}
ShareComponentsLibsJob shareJob = new ShareComponentsLibsJob(
Messages.getString("LocalLibraryManager.shareLibsForCustomponents"), needToDeploy, deployer);
shareJob.schedule();
}
private void collectLibModules(File jarFile, Map<File, Set<MavenArtifact>> needToDeploy) {
Map<String,String> mavenUris = new HashMap<String,String>();
guessMavenRUIFromIndex(jarFile, true, mavenUris);
Set<MavenArtifact> artifacts = new HashSet<MavenArtifact>();
for(String uri: mavenUris.keySet()) {
MavenArtifact art = MavenUrlHelper.parseMvnUrl(uri);
if(art!=null) {
artifacts.add(art);
}
}
needToDeploy.put(jarFile, artifacts);
}
private boolean canDeployFromCustomComponentFolder(String fileName) {
if (isSystemCacheFile(fileName) || isComponentDefinitionFileType(fileName)) {
return false;
}
return true;
}
private void warnDuplicated(List<ModuleNeeded> modules, Set<String> duplicates, String type) {
for (String lib : duplicates) {
Set<String> components = new HashSet<>();

View File

@@ -54,7 +54,7 @@ ContextWizard.step0Description=\u5FC5\u8981\u306A\u60C5\u5831\u3092\u8FFD\u52A0
ContextWizard.step0Title=\u30B9\u30C6\u30C3\u30D71/2
ContextModeWizard.Title=\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30B0\u30EB\u30FC\u30D7\u3092\u4F5C\u6210/\u518D\u4F7F\u7528
CreateTableAction.action.createTitle=\u30B9\u30AD\u30FC\u30DE\u3092\u53D6\u5F97
DatabaseForm.AddParams=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u8FFD\u52A0
DatabaseForm.AddParams=\u8FFD\u52A0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC
DatabaseForm.alert=DB\u30BF\u30A4\u30D7\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
DatabaseForm.StandardSQL=\u6A19\u6E96SQL\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8
DatabaseForm.SystemSQL=\u30B7\u30B9\u30C6\u30E0SQL\u30B9\u30C6\u30FC\u30C8\u30E1\u30F3\u30C8

View File

@@ -294,8 +294,9 @@ public class PropertiesWizard extends Wizard {
// changed by hqzhang for TDI-19527, label=displayName
object.getProperty().setLabel(object.getProperty().getDisplayName());
processBeforeItemSave(proxyRepositoryFactory);
processBeforeItemSave(proxyRepositoryFactory, monitor);
proxyRepositoryFactory.save(object.getProperty(), originaleObjectLabel, originalVersion);
ExpressionPersistance.getInstance().jobNameChanged(originaleObjectLabel, object.getLabel());
if (!originalVersion.equals(object.getVersion())) {
@@ -328,21 +329,21 @@ public class PropertiesWizard extends Wizard {
}
}
private void processBeforeItemSave(IProxyRepositoryFactory proxyRepositoryFactory) throws PersistenceException {
private void processBeforeItemSave(IProxyRepositoryFactory proxyRepositoryFactory, final IProgressMonitor monitor) throws PersistenceException, CoreException {
ERepositoryObjectType objectRepType = object.getRepositoryObjectType();
if (!originaleObjectLabel.equals(object.getProperty().getLabel())
&& ERepositoryObjectType.getAllTypesOfCodesJar().contains(objectRepType)) {
// for codejar to change innercode folder name
proxyRepositoryFactory.renameFolder(object.getRepositoryObjectType(), new Path(originaleObjectLabel),
object.getProperty().getLabel());
Project currentProject = ProjectManager.getInstance().getCurrentProject();
Project currentProject = ProjectManager.getInstance().getCurrentProject();
IFolder innerCodeFolder = ResourceUtils.getFolder(ResourceUtils.getProject(currentProject),
ERepositoryObjectType.getFolderName(objectRepType) + "/" + object.getProperty().getLabel(), true);
ERepositoryObjectType.getFolderName(objectRepType) + "/" + originaleObjectLabel, true);
List<IRepositoryViewObject> innerCodesObjs = proxyRepositoryFactory.getAll(currentProject, objectRepType, false,
false, innerCodeFolder);
proxyRepositoryFactory.renameFolder(object.getRepositoryObjectType(), new Path(originaleObjectLabel),
object.getProperty().getLabel());
// for codejar to change innercode folder name
if (innerCodesObjs != null && !innerCodesObjs.isEmpty()) {
innerCodesObjs.stream().forEach(repObj -> {
RoutineUtils.changeInnerCodePackage(repObj.getProperty().getItem(), false);
RoutineUtils.changeInnerCodePackage(repObj.getProperty().getItem(), false, false);
});
}
}

View File

@@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.runtime.IPath;
@@ -67,6 +68,7 @@ import org.talend.core.model.repository.ERepositoryObjectType;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.repository.LockInfo;
import org.talend.core.model.routines.CodesJarInfo;
import org.talend.core.model.routines.RoutinesUtil;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.CoreRuntimePlugin;
import org.talend.core.ui.branding.IBrandingService;
@@ -241,11 +243,16 @@ public abstract class PropertiesWizardPage extends AbstractNamedWizardPage {
list.addAll(repViewObjectWithSameType);
}
List<IRepositoryViewObject> others = loadRepViewObjectWithOtherTypes();
// Loads other repository view objects with the different repository type.
if (others != null && others.size() > 0) {
list.addAll(others);
if (!RoutinesUtil.isInnerCodes(property)) {
List<IRepositoryViewObject> others = loadRepViewObjectWithOtherTypes();
// Loads other repository view objects with the different repository type.
if (others != null && others.size() > 0) {
for (IRepositoryViewObject object : others) {
if (!RoutinesUtil.isInnerCodes(object.getProperty())) {
list.add(object);
}
}
}
}
return list;
}
@@ -295,13 +302,12 @@ public abstract class PropertiesWizardPage extends AbstractNamedWizardPage {
ERepositoryObjectType type = ERepositoryObjectType.getItemType(property.getItem());
if (IProxyRepositoryService.get() != null) {
IProxyRepositoryFactory factory = IProxyRepositoryService.get().getProxyRepositoryFactory();
list = factory.getAll(type, true, false);
if (ERepositoryObjectType.getAllTypesOfCodes().contains(type)) {
for (CodesJarInfo info : CodesJarResourceCache.getAllCodesJars()) {
if (info.isInCurrentMainProject()
&& ERepositoryObjectType.CodeTypeEnum.isCodeRepositoryObjectTypeMatch(info.getType(), type)) {
list.addAll(factory.getAllInnerCodes(info));
}
if (!RoutinesUtil.isInnerCodes(property)) {
list = factory.getAll(type, true, false).stream().filter(a->(!RoutinesUtil.isInnerCodes(a.getProperty()))).collect(Collectors.toList());
} else {
CodesJarInfo codeJarinfo = CodesJarResourceCache.getCodesJarByInnerCode((RoutineItem) property.getItem());
if (codeJarinfo != null) {
return ProxyRepositoryFactory.getInstance().getAllInnerCodes(codeJarinfo);
}
}
}
@@ -1188,6 +1194,9 @@ public abstract class PropertiesWizardPage extends AbstractNamedWizardPage {
}
evaluateName(nameText.getText());
updatePageStatus();
if (nameStatus.getSeverity() == IStatus.OK && RoutinesUtil.isInnerCodes(property)) {
evaluateNameInJob();
}
}
@Override

View File

@@ -220,6 +220,21 @@
required="true"
uripath="platform:/plugin/org.talend.libraries.jdbc.hsql/lib/hsqldb.jar">
</libraryNeeded>
<libraryNeeded
context="plugin:org.talend.metadata.managment"
language="java"
message="Needed for Ingres jdbc plugin"
name="iijdbc-10.2-4.1.10.jar" mvn_uri="mvn:com.ingres.jdbc/iijdbc/10.2-4.1.10"
required="true">
</libraryNeeded>
<libraryNeeded
context="plugin:org.talend.metadata.managment"
language="java"
message="Needed for create sqlite connection"
mvn_uri="mvn:org.xerial/sqlite-jdbc/3.40.0.0"
name="sqlite-jdbc-3.40.0.0.jar"
required="true">
</libraryNeeded>
</extension>
<extension
point="org.talend.core.migrationTask">

View File

@@ -86,6 +86,7 @@ public final class SupportDBUrlStore {
supportDBUrlMap.put(SupportDBUrlType.SYBASEDEFAULTURL.getDBKey(), SupportDBUrlType.SYBASEDEFAULTURL);
// supportDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDBKey(), SupportDBUrlType.INFORMIXDEFAULTURL);
// supportDBUrlMap.put(SupportDBUrlType.FIREBIRDDEFAULTURL.getDBKey(), SupportDBUrlType.FIREBIRDDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.INGRESDEFAULTURL.getDBKey(), SupportDBUrlType.INGRESDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDBKey(), SupportDBUrlType.INFORMIXDEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.SQLITE3DEFAULTURL.getDBKey(), SupportDBUrlType.SQLITE3DEFAULTURL);
supportDBUrlMap.put(SupportDBUrlType.GENERICJDBCDEFAULTURL.getDBKey(), SupportDBUrlType.GENERICJDBCDEFAULTURL);
@@ -128,6 +129,8 @@ public final class SupportDBUrlStore {
// SupportDBUrlType.INFORMIXDEFAULTURL);
// supportDiverNameDBUrlMap.put(SupportDBUrlType.FIREBIRDDEFAULTURL.getDbDriver(),
// SupportDBUrlType.FIREBIRDDEFAULTURL);
supportDiverNameDBUrlMap
.put(SupportDBUrlType.INGRESDEFAULTURL.getDbDriver(), SupportDBUrlType.INGRESDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.INFORMIXDEFAULTURL.getDbDriver(),
SupportDBUrlType.INFORMIXDEFAULTURL);
supportDiverNameDBUrlMap.put(SupportDBUrlType.SQLITE3DEFAULTURL.getDbDriver(),

View File

@@ -142,6 +142,7 @@ public enum SupportDBUrlType {
"org.firebirdsql.jdbc.FBDriver", //$NON-NLS-1$
null,
"FireBird"), //$NON-NLS-1$
INGRESDEFAULTURL("Ingres", "localhost", "II7", "dbname", null, "com.ingres.jdbc.IngresDriver", null, "Ingres"),
SQLITE3DEFAULTURL("SQLite", "localhost", "", "dbname", null, "org.sqlite.JDBC", null, "SQLite"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
GENERICJDBCDEFAULTURL("General JDBC", "", "", "", null, "", null, "General JDBC"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
// MOD klliu 2010-06-04 bug 12819: upgrade jdbc driver class used in sql explorer
@@ -397,6 +398,6 @@ public enum SupportDBUrlType {
public static boolean justHaveSchema(String dbKey) {
SupportDBUrlType dbTypeByKey = getDBTypeByKey(dbKey);
return dbTypeByKey != null
&& (isOracle(dbKey) || dbTypeByKey == TERADATADEFAULTURL || dbTypeByKey == DB2DEFAULTURL || dbTypeByKey == DB2ZOSDEFAULTURL);
&& (isOracle(dbKey) || dbTypeByKey == TERADATADEFAULTURL || dbTypeByKey == DB2DEFAULTURL || dbTypeByKey == DB2ZOSDEFAULTURL|| dbTypeByKey == INGRESDEFAULTURL);
}
}

View File

@@ -6,6 +6,7 @@ IBM\ DB2\ ZOS=jdbc\:db2\://{0}\:{1}/{2}
FireBird=jdbc\:firebirdsql\:{0}\:{2}
Generic\ ODBC=jdbc\:odbc\:{3}
Informix=jdbc\:informix-sqli\://{0}\:{1}/{2}\:informixserver\={3}
Ingres=jdbc\:ingres\://{0}\:{1}/{2}
Microsoft\ SQL\ Server=jdbc\:jtds\:sqlserver\://{0}\:{1}/{2}
Microsoft\ SQL\ Server\ 2005/2008=jdbc\:sqlserver\://{0}\:{1};DatabaseName\={2}
MySQL=jdbc\:mysql\://{0}\:{1}/{2}

View File

@@ -26,7 +26,6 @@ import org.apache.log4j.Logger;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.core.ICoreService;
import org.talend.core.database.EDatabaseTypeName;
import org.talend.core.database.conn.version.EDatabaseVersion4Drivers;
import org.talend.core.model.metadata.IMetadataConnection;
import org.talend.core.model.metadata.IMetadataTable;
import org.talend.core.model.metadata.MappingTypeRetriever;
@@ -347,14 +346,15 @@ public class OracleExtractManager extends ExtractManager {
@Override
protected void filterTablesFromRecycleBin(IMetadataConnection metadataConnection, List<String> itemTablesName) {
// filter tables or viewer from the recyclebin in the Oracle 10g.
if (metadataConnection.getDbVersionString() != null
&& !metadataConnection.getDbVersionString().equals(EDatabaseVersion4Drivers.ORACLE_8.getVersionValue())) {
if (metadataConnection.getDbVersionString() != null) {
ExtractMetaDataUtils extractMeta = ExtractMetaDataUtils.getInstance();
try {
PreparedStatement stmt = extractMeta.getConn().prepareStatement(TableInfoParameters.ORACLE_10G_RECBIN_SQL);
PreparedStatement stmt =
extractMeta.getConn().prepareStatement(TableInfoParameters.ORACLE_10G_RECBIN_SQL);
extractMeta.setQueryStatementTimeout(stmt);
ResultSet rsTables = stmt.executeQuery();
itemTablesName.removeAll(ExtractMetaDataFromDataBase.getTableNamesFromQuery(rsTables, extractMeta.getConn()));
itemTablesName
.removeAll(ExtractMetaDataFromDataBase.getTableNamesFromQuery(rsTables, extractMeta.getConn()));
rsTables.close();
stmt.close();
} catch (SQLException e) {
@@ -412,10 +412,6 @@ public class OracleExtractManager extends ExtractManager {
@Override
public String getTableComment(IMetadataConnection metadataConnection, ResultSet resultSet, String nameKey)
throws SQLException {
if (EDatabaseVersion4Drivers.ORACLE_8.getVersionValue().equals(metadataConnection.getDbVersionString())) {
return ExtractMetaDataFromDataBase.getTableComment(nameKey, resultSet, false, ExtractMetaDataUtils.getInstance()
.getConn());
}
return super.getTableComment(metadataConnection, resultSet, nameKey);
}

View File

@@ -83,6 +83,7 @@ import org.talend.metadata.managment.connection.manager.HiveConnectionManager;
import org.talend.metadata.managment.hive.EmbeddedHiveDataBaseMetadata;
import org.talend.metadata.managment.repository.ManagerConnection;
import org.talend.metadata.managment.utils.DatabaseConstant;
import org.talend.metadata.managment.utils.EDataBaseType;
import org.talend.metadata.managment.utils.ManagementTextUtils;
import org.talend.metadata.managment.utils.MetadataConnectionUtils;
import org.talend.utils.sql.ConnectionUtils;
@@ -1042,8 +1043,12 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
// for CDH4 HIVE2 , the table type are MANAGED_TABLE and EXTERNAL_TABLE ......
// tableType = null;
}
Map<String,String> tableComments = null;
if (!isOracle8i) {
tableComments = this.getTableComments(dbJDBCMetadata, catalogName, schemaPattern);
}
ResultSet tables = dbJDBCMetadata.getTables(catalogName, schemaPattern, tablePattern, tableType);
boolean hasRemarksCol = hasRemarksColumn(tables);
while (tables.next()) {
String coloumnName = GetTable.TABLE_SCHEM.name();
if (schemaPattern != null) {
@@ -1068,8 +1073,13 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
// if (!isOracle && !isOracle8i && !isOracleJdbc && tableName.startsWith("/")) { //$NON-NLS-1$
// continue;
// }
if (!isOracle8i) {
tableComment = getTableComment(dbJDBCMetadata, tables, tableName, catalogName, schemaPattern);
if (hasRemarksCol) {
tableComment = getRemarksFromResultSet(tables);
}
if (tableComments != null) {
if (StringUtils.isEmpty(tableComment)) {
tableComment = tableComments.get(tableName);
}
}
MetadataTable metadatatable = null;
if (TableType.VIEW.toString().equals(temptableType) || ETableTypes.VIRTUAL_VIEW.getName().equals(temptableType)) {
@@ -1213,6 +1223,69 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
}
return tableComment;
}
private Map<String, String> getTableComments(DatabaseMetaData dbJDBCMetadata, String catalogName, String schemaPattern) {
Map<String, String> ret = new HashMap<String, String>();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String productName = dbJDBCMetadata.getDatabaseProductName();
if (StringUtils.isEmpty(productName)) {
return ret;
}
productName = productName.replaceAll(" ", "_"); //$NON-NLS-1$ //$NON-NLS-2$
EDataBaseType eDataBaseType = null;
try {
eDataBaseType = EDataBaseType.valueOf(productName);
} catch (Exception e) {
eDataBaseType = EDataBaseType.Microsoft_SQL_Server;
}
String sqlStr = ""; //$NON-NLS-1$
switch (eDataBaseType) {
case Oracle:
sqlStr = "SELECT TABLE_NAME,COMMENTS FROM ALL_TAB_COMMENTS WHERE OWNER=?";
ps = dbJDBCMetadata.getConnection().prepareStatement(sqlStr);
ps.setString(1, schemaPattern.toUpperCase());
break;
case MySQL:
sqlStr = "SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=?";
ps = dbJDBCMetadata.getConnection().prepareStatement(sqlStr);
ps.setString(1, catalogName);
break;
default:
break;
}
if (ps != null) {
rs = ps.executeQuery();
while (rs != null && rs.next()) {
String comment = rs.getString(2);
if (!StringUtils.isEmpty(comment)) {
ret.put(rs.getString(1), comment);
}
}
}
} catch (SQLException e) {
log.error(e, e);
} finally {
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
CommonExceptionHandler.process(e);
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
CommonExceptionHandler.process(e);
}
}
}
return ret;
}
/**
* get the Column Comment especially for oracle type.
@@ -1299,9 +1372,12 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
}
}
}
Map<String, String> tableComments = null;
if (!flag) {
tableComments = this.getTableComments(dbJDBCMetadata, catalogName, schemaPattern);
}
ResultSet tables = dbJDBCMetadata.getTables(catalogName, schemaPattern, tablePattern, tableType);
boolean hasRemarksCol = hasRemarksColumn(tables);
while (tables.next()) {
String tableName = getStringFromResultSet(tables, GetTable.TABLE_NAME.name());
String temptableType = getStringFromResultSet(tables, GetTable.TABLE_TYPE.name());
@@ -1320,8 +1396,13 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
if (tableName == null || tablesToFilter.contains(tableName) || tableName.startsWith("/")) { //$NON-NLS-1$
continue;
}
if (!flag) {
tableComment = getTableComment(dbJDBCMetadata, tables, tableName, catalogName, schemaPattern);
if (hasRemarksCol) {
tableComment = getRemarksFromResultSet(tables);
}
if (tableComments != null) {
if (StringUtils.isEmpty(tableComment)) {
tableComment = tableComments.get(tableName);
}
}
// create table
TdTable table = RelationalFactory.eINSTANCE.createTdTable();
@@ -1371,8 +1452,17 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
}
}
try {
boolean flag = true;
if (pack != null) {
Connection c = ConnectionHelper.getConnection(pack);
flag = MetadataConnectionUtils.isOracle8i(c);
}
Map<String, String> tableComments = null;
if (!flag) {
tableComments = this.getTableComments(dbJDBCMetadata, catalogName, schemaPattern);
}
ResultSet tables = dbJDBCMetadata.getTables(catalogName, schemaPattern, viewPattern, tableType);
boolean hasRemarksCol = hasRemarksColumn(tables);
while (tables.next()) {
String tableName = getStringFromResultSet(tables, GetTable.TABLE_NAME.name());
@@ -1383,14 +1473,14 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
continue;
}
// common
boolean flag = true;
String tableComment = null;
if (pack != null) {
Connection c = ConnectionHelper.getConnection(pack);
flag = MetadataConnectionUtils.isOracle8i(c);
if (hasRemarksCol) {
tableComment = getRemarksFromResultSet(tables);
}
if (!flag) {
tableComment = getTableComment(dbJDBCMetadata, tables, tableName, catalogName, schemaPattern);
if (tableComments != null) {
if (StringUtils.isEmpty(tableComment)) {
tableComment = tableComments.get(tableName);
}
}
// create table
TdView table = RelationalFactory.eINSTANCE.createTdView();
@@ -1429,6 +1519,24 @@ public class DBConnectionFillerImpl extends MetadataFillerImpl<DatabaseConnectio
return valueOfString;
}
private boolean hasRemarksColumn(ResultSet resultSet) {
try {
if (resultSet == null || resultSet.getMetaData() == null) {
return false;
}
int numOfCols = resultSet.getMetaData().getColumnCount();
for (int i = 1; i < numOfCols + 1; i++) {
String colName = resultSet.getMetaData().getColumnLabel(i);
if (StringUtils.equals(colName, GetColumn.REMARKS.name())) {
return true;
}
}
} catch (SQLException e) {
CommonExceptionHandler.process(e);
}
return false;
}
private String getRemarksFromResultSet(ResultSet resultSet) {
String valueOfString = null;
try {

View File

@@ -38,6 +38,10 @@ public final class DatabaseConstant {
public static final String ODBC_DRIVER_NAME = "jdbc-odbc";
public static final String INGRES_PRODUCT_NAME = "ingres";
public static final String JDBC_INGRES_DEIVER_NAME = "Ingres Corporation - JDBC Driver";
// feature 0010630 zshen: Tables are not found when using Excel with ODBC connection
public static final String ODBC_EXCEL_PRODUCT_NAME = "EXCEL";

View File

@@ -811,6 +811,21 @@ public class ConnectionHelper {
return false;
}
/**
* DOC xqliu Comment method "isIngress".
*
* @param connection
* @return
*/
public static boolean isIngress(Connection connection) {
DatabaseConnection dbConn = SwitchHelpers.DATABASECONNECTION_SWITCH.doSwitch(connection);
if (dbConn != null) {
String databaseType = dbConn.getDatabaseType() == null ? "" : dbConn.getDatabaseType(); //$NON-NLS-1$
return databaseType.toLowerCase().contains("ingres"); //$NON-NLS-1$
}
return false;
}
/**
* DOC xqliu Comment method "isDb2".
*

View File

@@ -1,12 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.talend.studio</groupId>
<artifactId>tcommon-studio-se</artifactId>
<version>8.0.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>org.talend.rcp</artifactId>
<packaging>eclipse-plugin</packaging>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.talend.studio</groupId>
<artifactId>tcommon-studio-se</artifactId>
<version>8.0.1-SNAPSHOT</version>
<relativePath>../../../</relativePath>
</parent>
<artifactId>org.talend.rcp</artifactId>
<packaging>eclipse-plugin</packaging>
<profiles>
<profile>
<id>patch</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-p2-inf</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/touchpoint</directory>
<includes>
<include>p2.inf</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.basedir}/META-INF</outputDirectory>
<overwrite>true</overwrite>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

View File

@@ -46,6 +46,7 @@ import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.core.runtime.util.SharedStudioUtils;
import org.talend.core.services.IGITProviderService;
import org.talend.core.ui.branding.IActionBarHelper;
import org.talend.core.ui.branding.IBrandingService;
import org.talend.core.ui.perspective.PerspectiveMenuManager;
@@ -330,20 +331,26 @@ public class ActionBarBuildHelper implements IActionBarHelper {
// ViewDescriptor[] descriptors = { viewDesc };
// registry.removeExtension(viewDesc.getConfigurationElement().getDeclaringExtension(), descriptors);
// }
List<String> disabledPrefsIdList = new ArrayList<String>();
if (IGITProviderService.get() == null || !IGITProviderService.get().isStandardMode()) {
disabledPrefsIdList.add("org.eclipse.team.ui.TeamPreferences");
}
List<IPreferenceNode> prefsToDelete = new ArrayList<IPreferenceNode>();
IBrandingService brandingService = GlobalServiceRegister.getDefault().getService(
IBrandingService.class);
String[] availableLanguages = brandingService.getBrandingConfiguration().getAvailableLanguages();
if (ArrayUtils.contains(availableLanguages, ECodeLanguage.PERL.getName())) {
String[] prefsId = { "org.eclipse.team.ui.TeamPreferences" };
String[] prefsId = disabledPrefsIdList.toArray(new String[0]);
for (IPreferenceNode node : window.getWorkbench().getPreferenceManager().getRootSubNodes()) {
if (ArrayUtils.contains(prefsId, node.getId())) {
prefsToDelete.add(node);
}
}
} else {
String[] prefsId = { "org.eclipse.team.ui.TeamPreferences", "org.epic.core.preferences.PerlMainPreferencePage" };
disabledPrefsIdList.add("org.epic.core.preferences.PerlMainPreferencePage");
String[] prefsId = disabledPrefsIdList.toArray(new String[0]);
for (IPreferenceNode node : window.getWorkbench().getPreferenceManager().getRootSubNodes()) {
if (ArrayUtils.contains(prefsId, node.getId())) {
prefsToDelete.add(node);

View File

@@ -95,6 +95,8 @@ public class Application implements IApplication {
private static final String TALEND_FORCE_INITIAL_WORKSPACE_PROMPT_SYS_PROP =
"talend.force.initial.workspace.prompt"; //$NON-NLS-1$
private static final String OPS4J_USEFALLBACKREPOSITORIES_ARG = "org.ops4j.pax.url.mvn.useFallbackRepositories"; //$NON-NLS-1$
private static final Logger LOGGER = Logger.getLogger(Application.class);
/**
@@ -105,6 +107,9 @@ public class Application implements IApplication {
@SuppressWarnings("restriction")
@Override
public Object start(IApplicationContext context) throws Exception {
if (System.getProperty(OPS4J_USEFALLBACKREPOSITORIES_ARG) == null) {
System.setProperty(OPS4J_USEFALLBACKREPOSITORIES_ARG, Boolean.FALSE.toString());
}
if (Boolean.getBoolean(EclipseCommandLine.PROP_TALEND_BUNDLES_DO_CLEAN)) {
System.setProperty(EclipseCommandLine.PROP_TALEND_BUNDLES_DO_CLEAN, Boolean.FALSE.toString());
EclipseCommandLine.updateOrCreateExitDataPropertyWithCommand(EclipseCommandLine.CLEAN, null, false);

View File

@@ -0,0 +1,31 @@
metaRequirements.0.namespace=org.talend.studiolite.p2.touchpoint
metaRequirements.0.name=addJvmArgs
metaRequirements.0.range=0.0.1
metaRequirements.1.namespace=org.talend.studiolite.p2.touchpoint
metaRequirements.1.name=RemoveJvmArgs
metaRequirements.1.range=0.0.1
instructions.configure=\
removeJvmArgs(jvmArgs:\
--add-opens\\njava.base/java.lang=ALL-UNNAMED|\
--add-opens\\njava.base/java.util=ALL-UNNAMED);\
addJvmArgs(jvmArgs:\
--add-opens=java.base/java.lang=ALL-UNNAMED|\
--add-opens=java.base/java.util=ALL-UNNAMED|\
--add-opens=java.base/java.io=ALL-UNNAMED|\
--add-opens=java.base/java.util.stream=ALL-UNNAMED|\
--add-opens=java.base/java.util.regex=ALL-UNNAMED|\
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED|\
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED|\
--add-opens=java.base/java.net=ALL-UNNAMED|\
--add-opens=java.base/java.nio=ALL-UNNAMED|\
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED|\
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED|\
--add-opens=java.base/sun.nio.cs=ALL-UNNAMED|\
--add-opens=java.base/sun.security.action=ALL-UNNAMED|\
--add-opens=java.base/sun.security.pkcs=ALL-UNNAMED|\
--add-opens=java.base/sun.security.x509=ALL-UNNAMED|\
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED|\
--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED);
instructions.configure.import=\
org.talend.studiolite.p2.touchpoint.removeJvmArgs,\
org.talend.studiolite.p2.touchpoint.addJvmArgs

View File

@@ -973,13 +973,20 @@ public class ImportExportHandlersManager {
String importingLabel = itemRecord.getProperty().getLabel();
String existLabel = lastVersionBackup.getProperty().getLabel();
// refer to ImportBasicHandler.isNeedDeleteOnRemote
if (importingLabel != null && importingLabel.equalsIgnoreCase(importingLabel)
&& !importingLabel.equals(existLabel)) {
physicalDeleteHM.get(true).add(objectToDelete);
} else {
physicalDeleteHM.get(false).add(objectToDelete);
}
boolean isDeleteOnRemote = (importingLabel != null && !importingLabel.equals(existLabel));
physicalDeleteHM.get(isDeleteOnRemote).add(objectToDelete);
idDeletedBeforeImport.add(id);
if (ERepositoryObjectType.ROUTINESJAR.getType()
.equals(objectToDelete.getRepositoryObjectType().getType())
|| ERepositoryObjectType.BEANSJAR.getType()
.equals(objectToDelete.getRepositoryObjectType().getType())) {
List<IRepositoryViewObject> innerRoutinesObj = ProxyRepositoryFactory.getInstance()
.getAllInnerCodes(CodesJarInfo.create(objectToDelete.getProperty()));
for (IRepositoryViewObject child : innerRoutinesObj) {
physicalDeleteHM.get(isDeleteOnRemote).add(child);
idDeletedBeforeImport.add(child.getId());
}
}
}
}
}

View File

@@ -845,7 +845,7 @@ DatabaseForm.maprdb.MaprTUsernameTxt.label=\u30E6\u30FC\u30B6\u30FC\u540D
DatabaseForm.maprdb.MaprTPasswordTxt.label=\u30D1\u30B9\u30EF\u30FC\u30C9
DatabaseForm.maprdb.MaprTClusterTxt.label=\u30AF\u30E9\u30B9\u30BF\u30FC\u540D
DatabaseForm.maprdb.MaprTDurationTxt.label=\u30C1\u30B1\u30C3\u30C8\u306E\u6709\u52B9\u671F\u9593(\u79D2)
DatabaseForm.AddParams=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u306E\u8FFD\u52A0
DatabaseForm.AddParams=\u8FFD\u52A0\u30D1\u30E9\u30E1\u30FC\u30BF\u30FC
DatabaseForm.alert=DB\u30BF\u30A4\u30D7\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
DatabaseForm.portAlert=DB\u30DD\u30FC\u30C8\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044
DatabaseForm.serverAlert=DB\u30B5\u30FC\u30D0\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044

View File

@@ -829,183 +829,143 @@ public abstract class AbstractCreateTableAction extends AbstractCreateAction {
}
}
private void openDatabaseTableWizard(final DatabaseConnectionItem item, final MetadataTable metadataTable,
final boolean forceReadOnly, final RepositoryNode node, final boolean creation) {
UIJob job = new UIJob(Messages.getString("CreateTableAction.action.createTitle")) { //$NON-NLS-1$
private void openDatabaseTableWizard(final DatabaseConnectionItem item, final MetadataTable metadataTable, final boolean forceReadOnly, final RepositoryNode node, final boolean creation) {
String name = "User action : " + getText(); //$NON-NLS-1$
RepositoryWorkUnit<Object> repositoryWorkUnit = new RepositoryWorkUnit<Object>(name, this) {
@Override
public IStatus runInUIThread(final IProgressMonitor monitor) {
String name = "User action : " + getText(); //$NON-NLS-1$
RepositoryWorkUnit<Object> repositoryWorkUnit = new RepositoryWorkUnit<Object>(name, this) {
@Override
protected void run() throws LoginException, PersistenceException {
monitor.beginTask(Messages.getString("CreateTableAction.action.createTitle"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
if (!monitor.isCanceled()) {
final ManagerConnection managerConnection = new ManagerConnection();
DatabaseConnection connection = (DatabaseConnection) item.getConnection();
boolean useKrb = Boolean.valueOf(connection.getParameters().get(
ConnParameterKeys.CONN_PARA_KEY_USE_KRB));
// TUP-596 : Update the context name in connection when the user does a context switch in DI
String oldContextName = connection.getContextName();
Connection copyConnection = MetadataConnectionUtils.prepareConection(connection);
if (copyConnection == null) {
return;
}
IMetadataConnection metadataConnection = ConvertionHelper.convert(copyConnection, false,
copyConnection.getContextName());
String newContextName = connection.getContextName();
if (oldContextName != null && newContextName != null && !oldContextName.equals(newContextName)) {
if (node != null && node.getObject() != null && node.getObject().getProperty() != null) {
Item itemTemp = node.getObject().getProperty().getItem();
if (itemTemp != null && itemTemp instanceof ConnectionItem) {
ConnectionItem connItem = (ConnectionItem) itemTemp;
SwitchContextGroupNameImpl.getInstance().updateContextGroup(connItem, newContextName);
}
}
}
boolean isTcomDB = false;
IGenericDBService dbService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericDBService.class)) {
dbService = GlobalServiceRegister.getDefault().getService(
IGenericDBService.class);
}
if(dbService != null){
for(ERepositoryObjectType type : dbService.getExtraTypes()){
if(type.getLabel().equals(metadataConnection.getDbType())){
isTcomDB = true;
}
}
}
if (!metadataConnection.getDbType().equals(EDatabaseConnTemplate.GODBC.getDBDisplayName())
&& !metadataConnection.getDbType().equals(EDatabaseConnTemplate.ACCESS.getDBDisplayName())
&& !metadataConnection.getDbType().equals(
EDatabaseConnTemplate.GENERAL_JDBC.getDBDisplayName())
&& !isTcomDB) {
// TODO 1. To identify if it is hive connection.
String hiveMode = (String) metadataConnection
.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
// metadataConnection.setDriverJarPath((String)metadataConnection
// .getParameter(ConnParameterKeys.CONN_PARA_KEY_METASTORE_CONN_DRIVER_JAR));
if (HiveModeInfo.get(hiveMode) == HiveModeInfo.EMBEDDED) {
JavaSqlFactory.doHivePreSetup((DatabaseConnection) metadataConnection
.getCurrentConnection());
}
} else if (EDatabaseTypeName.IMPALA.getDisplayName().equals(metadataConnection.getDbType())) {
DatabaseConnection originalValueConnection = null;
IRepositoryContextService repositoryContextService = CoreRuntimePlugin.getInstance()
.getRepositoryContextService();
if (repositoryContextService != null) {
originalValueConnection = repositoryContextService
.cloneOriginalValueConnection(connection, false, null);
}
if (originalValueConnection != null) {
metadataConnection.setUrl(originalValueConnection.getURL());
}
} else {
String genUrl = DatabaseConnStrUtil.getURLString(metadataConnection.getDbType(),
metadataConnection.getDbVersionString(), metadataConnection.getServerName(),
metadataConnection.getUsername(), metadataConnection.getPassword(),
metadataConnection.getPort(), metadataConnection.getDatabase(),
metadataConnection.getFileFieldName(), metadataConnection.getDataSourceName(),
metadataConnection.getDbRootPath(), metadataConnection.getAdditionalParams());
if (!(metadataConnection.getDbType().equals(EDatabaseConnTemplate.IMPALA.getDBDisplayName()) && useKrb)) {
metadataConnection.setUrl(genUrl);
}
}
}
// bug 23508:even open type is metaTable,not connection,we always need the connection's
// datapackage to find the table schema when click the retrieve schema button
if (connection != null) {
EList<orgomg.cwm.objectmodel.core.Package> dp = connection.getDataPackage();
Collection<Package> newDataPackage = EcoreUtil.copyAll(dp);
ConnectionHelper.addPackages(newDataPackage,
(DatabaseConnection) metadataConnection.getCurrentConnection());
}
if (creation) {
String hiveMode = (String) metadataConnection
.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
try {
HiveConnectionManager.getInstance().checkConnection(metadataConnection);
} catch (Exception e) {
e.printStackTrace();
}
} else {
managerConnection.check(metadataConnection);
}
// ExtractMetaDataUtils.metadataCon = metadataConnection;
// when open,set use synonyms false.
ExtractMetaDataUtils.getInstance().setUseAllSynonyms(false);
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
boolean repositoryObjectEditable = factory.isEditableAndLockIfPossible(node.getObject());
if (!repositoryObjectEditable) {
boolean flag = MessageDialog.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getShell(), Messages.getString("CreateTableAction.action.Warning"),
Messages.getString("CreateTableAction.action.NotLockMessage"));
if (flag) {
DatabaseTableWizard databaseTableWizard = new DatabaseTableWizard(
PlatformUI.getWorkbench(), creation, node.getObject(), metadataTable,
getExistingNames(), forceReadOnly, managerConnection, metadataConnection);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getShell(), databaseTableWizard);
wizardDialog.setBlockOnOpen(true);
handleWizard(node, wizardDialog);
}
} else {
DatabaseTableWizard databaseTableWizard = new DatabaseTableWizard(PlatformUI.getWorkbench(),
creation, node.getObject(), metadataTable, getExistingNames(), forceReadOnly,
managerConnection, metadataConnection);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getShell(), databaseTableWizard);
wizardDialog.setBlockOnOpen(true);
handleWizard(node, wizardDialog);
}
} else {
// added for bug 16595
// no need connect to database when double click one schema.
final boolean skipStep = true;
DatabaseTableWizard databaseTableWizard = new DatabaseTableWizard(PlatformUI.getWorkbench(),
creation, node.getObject(), metadataTable, getExistingNames(), forceReadOnly,
managerConnection, metadataConnection);
databaseTableWizard.setSkipStep(skipStep);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getShell(), databaseTableWizard);
handleWizard(node, wizardDialog);
}
protected void run() throws LoginException, PersistenceException {
final ManagerConnection managerConnection = new ManagerConnection();
DatabaseConnection connection = (DatabaseConnection) item.getConnection();
boolean useKrb = Boolean.valueOf(connection.getParameters().get(ConnParameterKeys.CONN_PARA_KEY_USE_KRB));
// TUP-596 : Update the context name in connection when the user does a context switch in DI
String oldContextName = connection.getContextName();
Connection copyConnection = MetadataConnectionUtils.prepareConection(connection);
if (copyConnection == null) {
return;
}
IMetadataConnection metadataConnection = ConvertionHelper.convert(copyConnection, false, copyConnection.getContextName());
String newContextName = connection.getContextName();
if (oldContextName != null && newContextName != null && !oldContextName.equals(newContextName)) {
if (node != null && node.getObject() != null && node.getObject().getProperty() != null) {
Item itemTemp = node.getObject().getProperty().getItem();
if (itemTemp != null && itemTemp instanceof ConnectionItem) {
ConnectionItem connItem = (ConnectionItem) itemTemp;
SwitchContextGroupNameImpl.getInstance().updateContextGroup(connItem, newContextName);
}
}
}
boolean isTcomDB = false;
IGenericDBService dbService = null;
if (GlobalServiceRegister.getDefault().isServiceRegistered(IGenericDBService.class)) {
dbService = GlobalServiceRegister.getDefault().getService(IGenericDBService.class);
}
if (dbService != null) {
for (ERepositoryObjectType type : dbService.getExtraTypes()) {
if (type.getLabel().equals(metadataConnection.getDbType())) {
isTcomDB = true;
}
}
}
if (!metadataConnection.getDbType().equals(EDatabaseConnTemplate.GODBC.getDBDisplayName()) && !metadataConnection.getDbType().equals(EDatabaseConnTemplate.ACCESS.getDBDisplayName())
&& !metadataConnection.getDbType().equals(EDatabaseConnTemplate.GENERAL_JDBC.getDBDisplayName()) && !isTcomDB) {
// TODO 1. To identify if it is hive connection.
String hiveMode = (String) metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
// metadataConnection.setDriverJarPath((String)metadataConnection
// .getParameter(ConnParameterKeys.CONN_PARA_KEY_METASTORE_CONN_DRIVER_JAR));
if (HiveModeInfo.get(hiveMode) == HiveModeInfo.EMBEDDED) {
JavaSqlFactory.doHivePreSetup((DatabaseConnection) metadataConnection.getCurrentConnection());
}
} else if (EDatabaseTypeName.IMPALA.getDisplayName().equals(metadataConnection.getDbType())) {
DatabaseConnection originalValueConnection = null;
IRepositoryContextService repositoryContextService = CoreRuntimePlugin.getInstance().getRepositoryContextService();
if (repositoryContextService != null) {
originalValueConnection = repositoryContextService.cloneOriginalValueConnection(connection, false, null);
}
if (originalValueConnection != null) {
metadataConnection.setUrl(originalValueConnection.getURL());
}
} else {
String genUrl = DatabaseConnStrUtil
.getURLString(metadataConnection.getDbType(), metadataConnection.getDbVersionString(), metadataConnection.getServerName(), metadataConnection.getUsername(),
metadataConnection.getPassword(), metadataConnection.getPort(), metadataConnection.getDatabase(), metadataConnection.getFileFieldName(),
metadataConnection.getDataSourceName(), metadataConnection.getDbRootPath(), metadataConnection.getAdditionalParams());
if (!(metadataConnection.getDbType().equals(EDatabaseConnTemplate.IMPALA.getDBDisplayName()) && useKrb)) {
metadataConnection.setUrl(genUrl);
}
}
};
repositoryWorkUnit.setAvoidUnloadResources(isAvoidUnloadResources());
IRepositoryService repositoryService = GlobalServiceRegister.getDefault().getService(
IRepositoryService.class);
repositoryService.getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
monitor.done();
return Status.OK_STATUS;
};
};
job.setUser(true);
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
if (!event.getResult().isOK()) {
log.error(event.getResult().getMessage(), event.getResult().getException());
} // else eveything is fine so do not log anything
}
// bug 23508:even open type is metaTable,not connection,we always need the connection's
// datapackage to find the table schema when click the retrieve schema button
if (connection != null) {
EList<orgomg.cwm.objectmodel.core.Package> dp = connection.getDataPackage();
Collection<Package> newDataPackage = EcoreUtil.copyAll(dp);
ConnectionHelper.addPackages(newDataPackage, (DatabaseConnection) metadataConnection.getCurrentConnection());
}
if (creation) {
String hiveMode = (String) metadataConnection.getParameter(ConnParameterKeys.CONN_PARA_KEY_HIVE_MODE);
if (EDatabaseTypeName.HIVE.getDisplayName().equals(metadataConnection.getDbType())) {
try {
HiveConnectionManager.getInstance().checkConnection(metadataConnection);
} catch (Exception e) {
e.printStackTrace();
}
} else {
managerConnection.check(metadataConnection);
}
// ExtractMetaDataUtils.metadataCon = metadataConnection;
// when open,set use synonyms false.
ExtractMetaDataUtils.getInstance().setUseAllSynonyms(false);
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
boolean repositoryObjectEditable = factory.isEditableAndLockIfPossible(node.getObject());
if (!repositoryObjectEditable) {
boolean flag = MessageDialog
.openConfirm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), Messages.getString("CreateTableAction.action.Warning"),
Messages.getString("CreateTableAction.action.NotLockMessage"));
if (flag) {
DatabaseTableWizard databaseTableWizard = new DatabaseTableWizard(PlatformUI.getWorkbench(), creation, node.getObject(), metadataTable, getExistingNames(), forceReadOnly,
managerConnection, metadataConnection);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), databaseTableWizard);
wizardDialog.setBlockOnOpen(true);
Display.getDefault().asyncExec(() -> {
handleWizard(node, wizardDialog);
});
}
} else {
DatabaseTableWizard databaseTableWizard =
new DatabaseTableWizard(PlatformUI.getWorkbench(), creation, node.getObject(), metadataTable, getExistingNames(), forceReadOnly, managerConnection, metadataConnection);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), databaseTableWizard);
wizardDialog.setBlockOnOpen(true);
Display.getDefault().asyncExec(() -> {
handleWizard(node, wizardDialog);
});
}
} else {
// added for bug 16595
// no need connect to database when double click one schema.
final boolean skipStep = true;
DatabaseTableWizard databaseTableWizard =
new DatabaseTableWizard(PlatformUI.getWorkbench(), creation, node.getObject(), metadataTable, getExistingNames(), forceReadOnly, managerConnection, metadataConnection);
databaseTableWizard.setSkipStep(skipStep);
WizardDialog wizardDialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), databaseTableWizard);
Display.getDefault().asyncExec(() -> {
handleWizard(node, wizardDialog);
});
}
}
});
job.schedule();
};
repositoryWorkUnit.setAvoidUnloadResources(isAvoidUnloadResources());
IRepositoryService repositoryService = GlobalServiceRegister.getDefault().getService(IRepositoryService.class);
repositoryService.getProxyRepositoryFactory().executeRepositoryWorkUnit(repositoryWorkUnit);
}

View File

@@ -5188,7 +5188,11 @@ public class DatabaseForm extends AbstractForm {
boolean b = true;
String databaseType = getConnection().getDatabaseType();
if (databaseType != null) {
b = Pattern.matches(Messages.getString("DatabaseForm.otherDBRegex"), portText.getText()); //$NON-NLS-1$
if (databaseType.equals("Ingres")) { //$NON-NLS-1$
b = Pattern.matches(Messages.getString("DatabaseForm.ingresDBRegex"), portText.getText()); //$NON-NLS-1$
} else {
b = Pattern.matches(Messages.getString("DatabaseForm.otherDBRegex"), portText.getText()); //$NON-NLS-1$
}
}
if (b) {
b = portText.getText().length() <= 5;
@@ -7299,15 +7303,11 @@ public class DatabaseForm extends AbstractForm {
}
private boolean isSupportNLSOracleVersion(String dbVersionString) {
if (!EDatabaseVersion4Drivers.ORACLE_8.getVersionDisplay().equals(dbVersionString)
&& !EDatabaseVersion4Drivers.ORACLE_9.getVersionDisplay().equals(dbVersionString)
&& !EDatabaseVersion4Drivers.ORACLE_10.getVersionDisplay().equals(dbVersionString)
&& !EDatabaseVersion4Drivers.ORACLE_11.getVersionDisplay().equals(dbVersionString)
&& !EDatabaseVersion4Drivers.ORACLE_12.getVersionDisplay().equals(dbVersionString)
) {
if (!EDatabaseVersion4Drivers.ORACLE_11.getVersionDisplay().equals(dbVersionString)
&& !EDatabaseVersion4Drivers.ORACLE_12.getVersionDisplay().equals(dbVersionString)) {
return true;
}
return false;
}

View File

@@ -28,6 +28,8 @@ public abstract class AbstractTreePopulator {
private String encoding;
protected String originfilePath;
protected String filePath;
protected static int limit;
@@ -82,6 +84,22 @@ public abstract class AbstractTreePopulator {
public static int getLimit() {
return limit;
}
/**
* Getter for originfilePath.
* @return the originfilePath
*/
public String getOriginfilePath() {
return originfilePath;
}
/**
* Sets the originfilePath.
* @param originfilePath the originfilePath to set
*/
public void setOriginfilePath(String originfilePath) {
this.originfilePath = originfilePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;

View File

@@ -13,6 +13,9 @@
package org.talend.repository.ui.wizards.metadata.connection.files.xml;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
@@ -20,6 +23,7 @@ import java.util.List;
import org.apache.commons.collections.BidiMap;
import org.apache.commons.collections.bidimap.DualHashBidiMap;
import org.apache.commons.io.IOUtils;
import org.apache.xerces.xs.XSModel;
import org.dom4j.Document;
import org.dom4j.DocumentException;
@@ -161,6 +165,28 @@ public class TreePopulator extends AbstractTreePopulator {
treeViewer.setInput(new Object[] { selected });
treeViewer.expandToLevel(3);
} else {
String originalJsonFilePath = getOriginfilePath();
if(null != originalJsonFilePath && !"".equals(originalJsonFilePath.trim())) {
File file = new File(originalJsonFilePath);
if (file.exists()) {
if (!file.isDirectory()) {
try(InputStream input = new FileInputStream(file);) {
String jsonStr = IOUtils.toString(input, getEncoding());
if(barceType(jsonStr) == 0 && childs.length == 1) {
if(isNeedAddRoot(jsonStr)) {
childs = ((ATreeNode)childs[0]).getChildren();
}
} else if(barceType(jsonStr) == 1 && childs.length == 1) {
ATreeNode objectNode = (ATreeNode) ((ATreeNode)childs[0]).getChildren()[0];
childs = objectNode.getChildren();
}
} catch (IOException e) {
ExceptionHandler.process(e);
}
}
}
}
treeViewer.setInput(childs);
treeViewer.expandToLevel(3);
}
@@ -170,7 +196,35 @@ public class TreePopulator extends AbstractTreePopulator {
}
return false;
}
private int barceType(String originalJsonString) {
for (int c = 0; c < originalJsonString.length(); ++c) {
if (originalJsonString.charAt(c) == '{') {
return 0; //brace
} else if (originalJsonString.charAt(c) == '[') {
return 1; //bracket
}
}
return -1;
}
private boolean isNeedAddRoot(String originalJsonString) {
boolean isNeedAddRoot = false;
net.sf.json.JSONObject jso = net.sf.json.JSONObject.fromObject(originalJsonString);
String jsonKey = "";
Object firstObject = null;
if (jso.names().size() == 1) {
jsonKey = jso.names().get(0).toString();
firstObject = jso.get(jsonKey);
}
if (jso.size() > 1
|| (firstObject != null && firstObject instanceof net.sf.json.JSONArray && ((net.sf.json.JSONArray) firstObject)
.size() > 1)) {
isNeedAddRoot = true;
}
return isNeedAddRoot;
}
public boolean populateTree(XSModel xsModel, ATreeNode selectedNode, List<ATreeNode> treeNodes) {
xPathToTreeItem.clear();
ATreeNode treeNode = null;

View File

@@ -0,0 +1,35 @@
// ============================================================================
//
// Copyright (C) 2006-2021 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository.ui.wizards.metadata.table.database;
import java.util.List;
import org.talend.core.model.metadata.builder.database.TableNode;
/**
* wzhang class global comment. Detailled comment
*/
public class DefaultSelectorTreeViewerProvider extends SelectorTreeViewerProvider {
public DefaultSelectorTreeViewerProvider() {
super();
}
@Override
public Object[] getChildren(Object parentElement) {
TableNode tableNode = (TableNode) parentElement;
List<TableNode> child = tableNode.getChildren();
return child.toArray();
}
}

View File

@@ -16,6 +16,8 @@ import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.Collator;
import java.util.ArrayList;
@@ -80,6 +82,7 @@ import org.talend.commons.ui.swt.formtools.Form;
import org.talend.commons.ui.swt.formtools.UtilsButton;
import org.talend.commons.utils.data.text.IndiceHelper;
import org.talend.commons.utils.threading.TalendCustomThreadPoolExecutor;
import org.talend.core.database.EDatabase4DriverClassName;
import org.talend.core.database.EDatabaseTypeName;
import org.talend.core.database.conn.ConnParameterKeys;
import org.talend.core.model.metadata.IMetadataConnection;
@@ -89,6 +92,7 @@ import org.talend.core.model.metadata.MetadataToolHelper;
import org.talend.core.model.metadata.builder.connection.DatabaseConnection;
import org.talend.core.model.metadata.builder.connection.MetadataColumn;
import org.talend.core.model.metadata.builder.connection.MetadataTable;
import org.talend.core.model.metadata.builder.database.DriverShim;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataFromDataBase;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataFromDataBase.ETableTypes;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataUtils;
@@ -388,6 +392,7 @@ public class SelectorTableForm extends AbstractForm {
// TDI-28768 after add checkStateProvider, the catalog and schema checked status become true , then
// force them to false
if (parentNode.getType() == TableNode.CATALOG || parentNode.getType() == TableNode.SCHEMA) {
retrieveSchema(parentNode);
needUpdate = false;
}
boolean firstExpand = false;
@@ -396,6 +401,9 @@ public class SelectorTableForm extends AbstractForm {
} else {
firstExpand = true;
}
if (treeItem.isDisposed()) {
return;
}
for (TreeItem item : treeItem.getItems()) {
if (item.getData() != null) {
TableNode node = (TableNode) item.getData();
@@ -466,7 +474,7 @@ public class SelectorTableForm extends AbstractForm {
viewProvider = provider.getMetadataViewProvider();
} else {
viewProvider = new SelectorTreeViewerProvider();
viewProvider = new DefaultSelectorTreeViewerProvider();
}
viewer.setLabelProvider(viewProvider);
@@ -476,7 +484,237 @@ public class SelectorTableForm extends AbstractForm {
scrolledCompositeFileViewer.setContent(tree);
scrolledCompositeFileViewer.setMinSize(tree.computeSize(SWT.DEFAULT, SWT.DEFAULT));
}
private void retrieveSchema(TableNode tableNode) {
IRunnableWithProgress runnable = new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask(Messages.getString("CreateTableAction.action.createTitle"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
List<TableNode> child = tableNode.getChildren();
boolean extended = false;
if (!child.isEmpty()) {
for (TableNode node : child) {
if (node.getType() == TableNode.TABLE) {
extended = true;
break;
}
}
}
// if extended is true, means table already got,no need to get again.
if (extended) {
return;
}
List<MetadataTable> tableList = new ArrayList<MetadataTable>();
retrieveAllSubNodes(tableNode, tableList);
Display.getDefault().syncExec(() -> {
viewer.setInput(tableNodeList);
viewer.expandToLevel(tableNode, viewer.ALL_LEVELS);
});
monitor.done();
}
};
try {
this.parentWizardPage.getWizard().getContainer().run(true, true, runnable);
} catch (Exception e) {
ExceptionHandler.process(e);
}
}
private void retrieveAllSubNodes(TableNode tableNode, List<MetadataTable> tableList) {
tableList.clear();
List<TableNode> child = tableNode.getChildren();
boolean extended = false;
if (!child.isEmpty()) {
for (TableNode node : child) {
if (node.getType() == TableNode.TABLE) {
extended = true;
break;
}
}
}
// if extended is true, means table already got,no need to get again.
if (extended) {
return;
}
IMetadataConnection metadataConn = tableNode.getMetadataConn();
Connection conn = null;
Driver driver = null;
DatabaseMetaData dbMetaData = null;
ExtractMetaDataUtils extractMeta = ExtractMetaDataUtils.getInstance();
// Added by Marvin Wang on Mar. 13, 2013 for loading hive jars dynamically, refer to TDI-25072.
if (EDatabaseTypeName.HIVE.getXmlName().equalsIgnoreCase(metadataConn.getDbType())) {
try {
dbMetaData = HiveConnectionManager.getInstance().extractDatabaseMetaData(metadataConn);
} catch (Exception e) {
ExceptionHandler.process(e);
}
} else if (EDatabaseTypeName.IMPALA.getDisplayName().equalsIgnoreCase(metadataConn.getDbType())) {
try {
dbMetaData = ImpalaConnectionManager.getInstance().createConnection(metadataConn).getMetaData();
} catch (Exception e) {
ExceptionHandler.process(e);
}
} else {
List list = extractMeta.getConnectionList(metadataConn);
if (list != null && !list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i) instanceof Connection) {
conn = (Connection) list.get(i);
}
if (list.get(i) instanceof DriverShim) {
driver = (DriverShim) list.get(i);
}
}
}
dbMetaData = extractMeta.getDatabaseMetaData(conn, metadataConn.getDbType(), metadataConn.isSqlMode(),
metadataConn.getDatabase());
}
int type = tableNode.getType();
orgomg.cwm.objectmodel.core.Package pack = null;
if (type == tableNode.CATALOG) {
if (tableNode.getChildren().isEmpty()) {
pack = tableNode.getCatalog();
} else {
for (TableNode n : tableNode.getChildren()) {
retrieveAllSubNodes(n, tableList);
}
}
} else if (type == tableNode.SCHEMA) {
pack = tableNode.getSchema();
}
try {
if (pack != null) {
TableInfoParameters paras = tableNode.getParas();
List<ETableTypes> paraType = paras.getTypes();
Set<String> availableTableTypes = new HashSet<String>();
for (ETableTypes tableType : paraType) {
availableTableTypes.add(tableType.getName());
}
// get all tables/views depending the filter selected
Set<String> tableNameFilter = null;
if (!paras.isUsedName()) {
tableNameFilter = new HashSet<String>();
if (paras.getSqlFiter() != null && !"".equals(paras.getSqlFiter())) { //$NON-NLS-1$
PreparedStatement stmt = extractMeta.getConn().prepareStatement(paras.getSqlFiter());
extractMeta.setQueryStatementTimeout(stmt);
ResultSet rsTables = stmt.executeQuery();
while (rsTables.next()) {
String nameKey = rsTables.getString(1).trim();
tableNameFilter.add(nameKey);
}
rsTables.close();
stmt.close();
}
} else {
tableNameFilter = paras.getNameFilters();
}
List<MetadataTable> tempListTables = new ArrayList<MetadataTable>();
MetadataFillFactory dbInstance = MetadataFillFactory.getDBInstance(metadataConn);
for (String filter : tableNameFilter) {
tempListTables = dbInstance.fillAll(pack, dbMetaData, metadataConn, null, filter,
availableTableTypes.toArray(new String[] {}));
for (MetadataTable table : tempListTables) {
boolean contains = false;
for (MetadataTable inListTable : tableList) {
if (inListTable.getName().equals(table.getName())) {
contains = true;
break;
}
}
if (!contains) {
tableList.add(table);
}
}
}
if (tableNameFilter.isEmpty()) {
tempListTables = dbInstance.fillAll(pack, dbMetaData, metadataConn, null, null,
availableTableTypes.toArray(new String[] {}));
for (MetadataTable table : tempListTables) {
boolean contains = false;
for (MetadataTable inListTable : tableList) {
if (inListTable.getName().equals(table.getName())) {
contains = true;
break;
}
}
if (!contains) {
tableList.add(table);
}
}
}
}
} catch (Exception e) {
ExceptionHandler.process(e);
} finally {
String dbType = metadataConn.getDbType();
// bug 22619
String driverClass = metadataConn.getDriverClass();
if (conn != null) {
ConnectionUtils.closeConnection(conn);
}
// for specific db such as derby
if (driver != null) {
if ((driverClass != null && driverClass.equals(EDatabase4DriverClassName.JAVADB_EMBEDED.getDriverClass()))
|| (dbType != null && (dbType.equals(EDatabaseTypeName.JAVADB_EMBEDED.getDisplayName())
|| dbType.equals(EDatabaseTypeName.JAVADB_DERBYCLIENT.getDisplayName())
|| dbType.equals(EDatabaseTypeName.JAVADB_JCCJDBC.getDisplayName())
|| dbType.equals(EDatabaseTypeName.HSQLDB_IN_PROGRESS.getDisplayName())))) {
try {
driver.connect("jdbc:derby:;shutdown=true", null); //$NON-NLS-1$
} catch (SQLException e) {
// exception of shutdown success. no need to catch.
}
}
}
}
if (!(tableNode.getType() == TableNode.CATALOG && pack == null)) {
transferToTableNode(tableList, tableNode);
}
}
protected void transferToTableNode(List<MetadataTable> list, TableNode parentNode) {
if (list != null && !list.isEmpty()) {
for (MetadataTable table : list) {
if (table instanceof TdTable) {
TdTable td = (TdTable) table;
TableNode tableNode = new TableNode();
tableNode.setType(TableNode.TABLE);
tableNode.setValue(td.getLabel());
tableNode.setItemType(td.getTableType());
tableNode.setTable(td);
tableNode.setParent(parentNode);
parentNode.addChild(tableNode);
} else if (table instanceof TdView) {
TdView tv = (TdView) table;
TableNode tableNode = new TableNode();
tableNode.setType(TableNode.TABLE);
tableNode.setValue(tv.getLabel());
tableNode.setItemType(tv.getTableType());
tableNode.setView(tv);
tableNode.setParent(parentNode);
parentNode.addChild(tableNode);
}
}
}
}
private final Collator col = Collator.getInstance(Locale.getDefault());
/**
@@ -943,6 +1181,10 @@ public class SelectorTableForm extends AbstractForm {
}
if (canAdd) {
tableNodes.add(schemaNode);
if (schemaNode.getValue() != null && StringUtils.isEmpty(schemaNode.getValue().trim())) {
List<MetadataTable> tableList = new ArrayList<MetadataTable>();
retrieveAllSubNodes(schemaNode, tableList);
}
}
}
}

View File

@@ -22,6 +22,7 @@ import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ISelection;
@@ -45,6 +46,7 @@ import org.osgi.service.event.Event;
import org.osgi.service.event.EventConstants;
import org.osgi.service.event.EventHandler;
import org.talend.commons.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.ITalendThemeService;
import org.talend.core.model.properties.Property;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.repository.CoreRepositoryPlugin;
@@ -52,6 +54,7 @@ import org.talend.core.repository.constants.Constant;
import org.talend.core.repository.model.ProjectRepositoryNode;
import org.talend.core.repository.ui.actions.MoveObjectAction;
import org.talend.core.repository.ui.view.RepositoryDropAdapter;
import org.talend.core.repository.ui.view.RepositoryLabelProvider;
import org.talend.core.repository.utils.XmiResourceManager;
import org.talend.repository.model.IRepositoryNode;
import org.talend.repository.model.RepositoryNode;
@@ -79,6 +82,8 @@ public class RepoViewCommonViewer extends CommonViewer implements INavigatorCont
private ServiceRegistration lockService;
private IPropertyChangeListener propertyChangeListener;
/**
* Getter for repViewCommonNavigator.
*
@@ -102,6 +107,8 @@ public class RepoViewCommonViewer extends CommonViewer implements INavigatorCont
protected void init() {
super.init();
registerLockUnlockServiceListener();
propertyChangeListener = RepositoryLabelProvider.createPropertyChangeListener(this);
ITalendThemeService.addPropertyChangeListener(propertyChangeListener);
}
// @SuppressWarnings("restriction")
@@ -441,6 +448,9 @@ public class RepoViewCommonViewer extends CommonViewer implements INavigatorCont
lockService.unregister();
lockService = null;
}// else service already unregistered or not event instanciated
if (propertyChangeListener != null) {
ITalendThemeService.removePropertyChangeListener(propertyChangeListener);
}
super.dispose();
}
}

View File

@@ -1 +1 @@
demo.description=\u30C7\u30FC\u30BF\u7D71\u5408\u30C7\u30E2
demo.description=\u30C7\u30FC\u30BF\u30A4\u30F3\u30C6\u30B0\u30EC\u30FC\u30B7\u30E7\u30F3\u30C7\u30E2

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