Compare commits
43 Commits
release/8.
...
release/8.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68ae91573d | ||
|
|
a9f5e42f6d | ||
|
|
e4250d1120 | ||
|
|
7225c51654 | ||
|
|
11bf826613 | ||
|
|
2039df6058 | ||
|
|
59147d2bf3 | ||
|
|
a272ce7fe3 | ||
|
|
d32d4c1c2c | ||
|
|
51ca13e2ee | ||
|
|
3d697f472c | ||
|
|
0dcd60f44b | ||
|
|
8f59c857d8 | ||
|
|
442631c61b | ||
|
|
31303fa608 | ||
|
|
fea26cbefa | ||
|
|
21254ffaca | ||
|
|
caa4b51cc4 | ||
|
|
b2fdccc3e7 | ||
|
|
da208c72f6 | ||
|
|
bd6a271805 | ||
|
|
cd5af34395 | ||
|
|
ba71689fac | ||
|
|
f6a123ad2b | ||
|
|
14d9caec2e | ||
|
|
96f177cb95 | ||
|
|
4a34141e6f | ||
|
|
9bf06c26bb | ||
|
|
51010064c7 | ||
|
|
d0a5c76459 | ||
|
|
4b308e1d34 | ||
|
|
b39332b706 | ||
|
|
556ab359d9 | ||
|
|
55f8537c15 | ||
|
|
98f0a248dc | ||
|
|
360c36b6bb | ||
|
|
c5e48b7e97 | ||
|
|
8b3040a4f6 | ||
|
|
fac09dcc63 | ||
|
|
f97757fa8e | ||
|
|
3a557a7658 | ||
|
|
00a777d477 | ||
|
|
eb661b81c5 |
@@ -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>
|
||||
|
||||
@@ -4,4 +4,6 @@ bin.includes = META-INF/,\
|
||||
plugin.xml,\
|
||||
icons/,\
|
||||
icons1/,\
|
||||
.
|
||||
.,\
|
||||
resources/
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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'
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
216
main/plugins/org.talend.core.runtime/mappings/mapping_Ingres.xml
Normal file
216
main/plugins/org.talend.core.runtime/mappings/mapping_Ingres.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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);
|
||||
|
||||
@@ -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$
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public enum EParameterFieldType {
|
||||
SCHEMA_XPATH_QUERYS,
|
||||
QUERYSTORE_TYPE,
|
||||
GUESS_SCHEMA,
|
||||
DYNAMIC_GUESS_SCHEMA,
|
||||
PROPERTY_TYPE,
|
||||
EXTERNAL,
|
||||
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
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
/*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()));
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -75,4 +75,6 @@ public interface IESBMicroService extends IService {
|
||||
* @return
|
||||
*/
|
||||
IBuildJobHandler createBuildJobHandler(ProcessItem itemToExport, String version, String context, Map exportChoiceMap);
|
||||
|
||||
public List<String> getExternalizedDependencies();
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,4 +5,5 @@ bin.includes = META-INF/,\
|
||||
plugin.xml,\
|
||||
community_tools.xml,\
|
||||
inlinehelp_context.xml,\
|
||||
thc.xml
|
||||
thc.xml,\
|
||||
html/
|
||||
|
||||
@@ -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>
|
||||
|
||||
15
main/plugins/org.talend.help.external/html/components.html
Normal file
15
main/plugins/org.talend.help.external/html/components.html
Normal 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>
|
||||
15
main/plugins/org.talend.help.external/html/dashboard.html
Normal file
15
main/plugins/org.talend.help.external/html/dashboard.html
Normal 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>
|
||||
15
main/plugins/org.talend.help.external/html/exchange.html
Normal file
15
main/plugins/org.talend.help.external/html/exchange.html
Normal 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>
|
||||
15
main/plugins/org.talend.help.external/html/forum.html
Normal file
15
main/plugins/org.talend.help.external/html/forum.html
Normal 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>
|
||||
15
main/plugins/org.talend.help.external/html/sources.html
Normal file
15
main/plugins/org.talend.help.external/html/sources.html
Normal 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>
|
||||
15
main/plugins/org.talend.help.external/html/tutorials.html
Normal file
15
main/plugins/org.talend.help.external/html/tutorials.html
Normal 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>
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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";
|
||||
|
||||
|
||||
@@ -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".
|
||||
*
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
31
main/plugins/org.talend.rcp/touchpoint/p2.inf
Normal file
31
main/plugins/org.talend.rcp/touchpoint/p2.inf
Normal 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
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user