Compare commits
2 Commits
patch/7.0.
...
patch/7.0.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a85f88b9ae | ||
|
|
72bc68a5a3 |
59
PATCH_RELEASE_NOTE.md
Normal file
59
PATCH_RELEASE_NOTE.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
version: 7.0.1
|
||||
module: https://talend.poolparty.biz/coretaxonomy/42
|
||||
product:
|
||||
- https://talend.poolparty.biz/coretaxonomy/23
|
||||
---
|
||||
|
||||
# TPS-3577
|
||||
|
||||
| Info | Value |
|
||||
| ---------------- | ---------------- |
|
||||
| Patch Name | Patch\_20191128\_TPS-3577\_v1-7.0.1 |
|
||||
| Release Date | 2019-11-28 |
|
||||
| Target Version | 20180411_1414-V7.0.1 |
|
||||
| Product affected | Talend Studio |
|
||||
|
||||
## Introduction
|
||||
This is a self-contained patch.
|
||||
|
||||
|
||||
**NOTE**: For information on how to obtain this patch, reach out to your Support contact at Talend.
|
||||
|
||||
## Fixed issues
|
||||
|
||||
This patch contains the following fixes:
|
||||
|
||||
- TPS-3577 [7.0.1] Google Cloud Storage with Proxy (TDI-40854)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Consider the following requirements for your system:
|
||||
|
||||
- Talend Studio 7.0.1 must be installed.
|
||||
|
||||
## Installation
|
||||
|
||||
### Installing the patch using Software update
|
||||
**NOTE**: If the customer has not yet installed any patch before with Nexus3, a TUP patch named Patch_20180510_TPS-2482_v1-7.0.1.zip must be deployed first in the appoarch "Installing the patch using Talend Studio".
|
||||
|
||||
1) Logon TAC and switch to Configuration->Software Update, then enter the correct values and save referring to the documentation: https://help.talend.com/reader/f7Em9WV_cPm2RRywucSN0Q/j9x5iXV~vyxMlUafnDejaQ
|
||||
|
||||
2) Switch to Software update page, where the new patch will be listed. The patch can be downloaded from here into the nexus repository.
|
||||
|
||||
3) On Studio Side: Logon Studio with remote mode, on the logon page the Update button is displayed: click this button to install the patch.
|
||||
|
||||
### Installing the patch using Talend Studio
|
||||
|
||||
1) Create a folder named "patches" under your studio installer directory and copy the patch .zip file to this folder.
|
||||
|
||||
2) Restart your studio: a window pops up, then click OK to install the patch, or restart the commandline and the patch will be installed automatically.
|
||||
|
||||
### Installing the patch using Commandline
|
||||
|
||||
Execute the following commands:
|
||||
|
||||
1. Talend-Studio-win-x86_64.exe -nosplash -application org.talend.commandline.CommandLine -consoleLog -data commandline-workspace startServer -p 8002 --talendDebug
|
||||
2. initRemote {tac_url} -ul {TAC login username} -up {TAC login password}
|
||||
3. checkAndUpdate -tu {TAC login username} -tup {TAC login password}
|
||||
|
||||
@@ -62,8 +62,6 @@ class IndexedRecordToRowStructGenerator {
|
||||
%>
|
||||
boolean <%=codeVarIsDynamicInitialized%> = false;
|
||||
routines.system.Dynamic <%=codeVarDynamic%> = new routines.system.Dynamic();
|
||||
//Workaround for TDI-44051, TcimpV0 do not need DbmsID
|
||||
<%=codeVarDynamic%>.setDbmsId("<%=cid%>");
|
||||
<%
|
||||
}
|
||||
|
||||
@@ -117,11 +115,10 @@ class IndexedRecordToRowStructGenerator {
|
||||
for (org.apache.avro.Schema.Field dynamicField_<%=cid%> : dynSchema_<%=cid%>.getFields()){
|
||||
routines.system.DynamicMetadata dynamicMetadata_<%=cid%> = new routines.system.DynamicMetadata();
|
||||
org.apache.avro.Schema dynamicFieldSchema_<%=cid%> = dynamicField_<%=cid%>.schema();
|
||||
String dbName = dynamicField_<%=cid%>.getProp("talend.field.dbColumnName");
|
||||
// set name
|
||||
dynamicMetadata_<%=cid%>.setName(dynamicField_<%=cid%>.name());
|
||||
// set db name
|
||||
dynamicMetadata_<%=cid%>.setDbName(dbName==null?dynamicField_<%=cid%>.name():dbName);
|
||||
dynamicMetadata_<%=cid%>.setDbName(dynamicField_<%=cid%>.name());
|
||||
// set nullable
|
||||
if (org.talend.daikon.avro.AvroUtils.isNullable(dynamicFieldSchema_<%=cid%>)) {
|
||||
dynamicMetadata_<%=cid%>.setNullable(true);
|
||||
|
||||
@@ -92,7 +92,7 @@ public class JavaRoutineSynchronizer extends AbstractRoutineSynchronizer {
|
||||
|
||||
private void syncRoutineItems(Collection<RoutineItem> routineObjects, boolean forceUpdate) throws SystemException {
|
||||
for (RoutineItem routineItem : routineObjects) {
|
||||
syncRoutine(routineItem, true, forceUpdate);
|
||||
syncRoutine(routineItem, true, true, forceUpdate);
|
||||
}
|
||||
syncSystemRoutine(ProjectManager.getInstance().getCurrentProject());
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ final String GoogleTracker = org.talend.core.utils.TrackerUtil.getGoogleTracker(
|
||||
|
||||
<%@ include file="@{org.talend.designer.components.localprovider}/components/templates/password.javajet"%>
|
||||
|
||||
org.jets3t.service.Jets3tProperties jets3tProperties = new org.jets3t.service.Jets3tProperties();
|
||||
org.jets3t.service.Jets3tProperties jets3tProperties = org.jets3t.service.Jets3tProperties.getInstance(org.jets3t.service.Constants.JETS3T_PROPERTIES_FILENAME);
|
||||
jets3tProperties.setProperty("httpclient.useragent", "<%=AWSTracker%>");
|
||||
org.jets3t.service.security.GSCredentials credentials_<%=cid%> = new org.jets3t.service.security.GSCredentials(<%=accessKey%>,decryptedPassword_<%=cid%>);
|
||||
org.jets3t.service.impl.rest.httpclient.GoogleStorageService service_<%=cid%> = new org.jets3t.service.impl.rest.httpclient.GoogleStorageService(credentials_<%=cid%>," <%=GoogleTracker%>", null, jets3tProperties);
|
||||
|
||||
@@ -99,7 +99,6 @@ import org.talend.designer.core.ui.views.jobsettings.JobSettings;
|
||||
import org.talend.designer.core.ui.views.problems.Problems;
|
||||
import org.talend.designer.core.ui.views.properties.ComponentSettings;
|
||||
import org.talend.designer.core.ui.views.properties.ComponentSettingsView;
|
||||
import org.talend.designer.core.utils.BigDataJobUtil;
|
||||
import org.talend.designer.core.utils.JavaProcessUtil;
|
||||
import org.talend.designer.core.utils.UnifiedComponentUtil;
|
||||
import org.talend.designer.runprocess.ProcessorException;
|
||||
@@ -870,9 +869,4 @@ public class DesignerCoreService implements IDesignerCoreService {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNeedContextInJar(IProcess process) {
|
||||
return new BigDataJobUtil(process).needsToHaveContextInsideJar();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
@@ -1802,36 +1801,23 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
|
||||
routinesDependencies = new ArrayList<RoutinesParameterType>();
|
||||
}
|
||||
try {
|
||||
Project targetProject = new Project(ProjectManager.getInstance().getProject(getProperty()));
|
||||
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
|
||||
Set<IRepositoryViewObject> routines = new HashSet<>();
|
||||
routines.addAll(factory.getAll(targetProject, ERepositoryObjectType.ROUTINES));
|
||||
List<Project> referenceProjects = ProjectManager.getInstance().getAllReferencedProjects(targetProject, false);
|
||||
referenceProjects.stream().forEach(p -> {
|
||||
try {
|
||||
routines.addAll(factory.getAll(p, ERepositoryObjectType.ROUTINES).stream()
|
||||
.filter(o -> !((RoutineItem) o.getProperty().getItem()).isBuiltIn()).collect(Collectors.toList()));
|
||||
} catch (PersistenceException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
});
|
||||
Set<String> allRoutinesSet = routines.stream().map(o -> o.getProperty().getLabel()).collect(Collectors.toSet());
|
||||
Iterator<RoutinesParameterType> iterator = routinesDependencies.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
RoutinesParameterType routine = iterator.next();
|
||||
if (!allRoutinesSet.contains(routine.getName())) {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
List<String> possibleRoutines = new ArrayList<String>();
|
||||
List<String> routinesToAdd = new ArrayList<String>();
|
||||
String additionalString = LanguageManager.getCurrentLanguage() == ECodeLanguage.JAVA ? "." : "";
|
||||
|
||||
List<String> routinesAlreadySetup = new ArrayList<String>();
|
||||
|
||||
for (RoutinesParameterType routine : routinesDependencies) {
|
||||
routinesAlreadySetup.add(routine.getName());
|
||||
}
|
||||
for (Project project : referenceProjects) {
|
||||
|
||||
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
|
||||
List<IRepositoryViewObject> routines = factory.getAll(ProjectManager.getInstance().getCurrentProject(),
|
||||
ERepositoryObjectType.ROUTINES);
|
||||
routines.addAll(factory.getAll(ProjectManager.getInstance().getCurrentProject(), ERepositoryObjectType.PIG_UDF));
|
||||
for (Project project : ProjectManager.getInstance().getAllReferencedProjects()) {
|
||||
List<IRepositoryViewObject> refRoutines = factory.getAll(project, ERepositoryObjectType.ROUTINES);
|
||||
refRoutines.addAll(factory.getAll(project, ERepositoryObjectType.PIG_UDF));
|
||||
for (IRepositoryViewObject object : refRoutines) {
|
||||
if (!((RoutineItem) object.getProperty().getItem()).isBuiltIn()) {
|
||||
if (!possibleRoutines.contains(object.getLabel()) && !routinesAlreadySetup.contains(object.getLabel())) {
|
||||
@@ -1856,8 +1842,9 @@ public class Process extends Element implements IProcess2, IGEFProcess, ILastVer
|
||||
possibleRoutines.add(object.getLabel());
|
||||
}
|
||||
}
|
||||
for (Project project : referenceProjects) {
|
||||
for (Project project : ProjectManager.getInstance().getAllReferencedProjects()) {
|
||||
List<IRepositoryViewObject> refRoutines = factory.getAll(project, ERepositoryObjectType.ROUTINES);
|
||||
refRoutines.addAll(factory.getAll(project, ERepositoryObjectType.PIG_UDF));
|
||||
for (IRepositoryViewObject object : refRoutines) {
|
||||
if (!((RoutineItem) object.getProperty().getItem()).isBuiltIn()) {
|
||||
if (!possibleRoutines.contains(object.getLabel()) && !routinesAlreadySetup.contains(object.getLabel())) {
|
||||
|
||||
@@ -151,12 +151,7 @@ public class BigDataJobUtil {
|
||||
|
||||
for (IElementParameter pt : parameters) {
|
||||
if (pt.getName().equals("DISTRIBUTION")) { //$NON-NLS-1$
|
||||
String value = String.valueOf(pt.getValue());
|
||||
if ("MICROSOFT_HD_INSIGHT".equals(value) //$NON-NLS-1$
|
||||
|| "GOOGLE_CLOUD_DATAPROC".equals(value) //$NON-NLS-1$
|
||||
|| "CLOUDERA_ALTUS".equals(value) || "DATABRICKS".equals(value) || "QUBOLE".equals(value)) { //$NON-NLS-1$
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (isSparkWithYarnClusterMode()) {
|
||||
|
||||
@@ -38,14 +38,6 @@
|
||||
<include>**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet> <!-- add metadata -->
|
||||
<directory>${basedir}/src/main/resources</directory>
|
||||
<outputDirectory>${file.separator}</outputDirectory>
|
||||
<includes>
|
||||
<include>metadata/**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
|
||||
<fileSet> <!-- add xmlMappings -->
|
||||
<directory>${current.bundle.resources.dir}/xmlMappings</directory>
|
||||
<outputDirectory>xmlMappings</outputDirectory>
|
||||
|
||||
@@ -673,11 +673,6 @@ public class DefaultRunProcessService implements IRunProcessService {
|
||||
return TalendJavaProjectManager.getTalendJobJavaProject(property);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IFolder getCodeSrcFolder(ERepositoryObjectType type, String projectTechName) {
|
||||
return new AggregatorPomsHelper(projectTechName).getCodeSrcFolder(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITalendProcessJavaProject getTempJavaProject() {
|
||||
return TalendJavaProjectManager.getTempJavaProject();
|
||||
@@ -766,8 +761,6 @@ public class DefaultRunProcessService implements IRunProcessService {
|
||||
if (ProcessUtils.isRequiredBeans(null, refProject)) {
|
||||
installRefCodeProject(ERepositoryObjectType.valueOf("BEANS"), refHelper, monitor); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
deleteRefProjects(refProject, refHelper);
|
||||
}
|
||||
|
||||
private void installRefCodeProject(ERepositoryObjectType codeType, AggregatorPomsHelper refHelper, IProgressMonitor monitor)
|
||||
@@ -783,28 +776,6 @@ public class DefaultRunProcessService implements IRunProcessService {
|
||||
argumentsMap.put(TalendProcessArgumentConstant.ARG_GOAL, TalendMavenConstants.GOAL_INSTALL);
|
||||
argumentsMap.put(TalendProcessArgumentConstant.ARG_PROGRAM_ARGUMENTS, TalendMavenConstants.ARG_MAIN_SKIP);
|
||||
codeProject.buildModules(monitor, null, argumentsMap);
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteRefProjects(Project refProject, AggregatorPomsHelper refHelper) throws Exception {
|
||||
IProgressMonitor monitor = new NullProgressMonitor();
|
||||
deleteRefProject(ERepositoryObjectType.ROUTINES, refHelper, monitor);
|
||||
deleteRefProject(ERepositoryObjectType.PIG_UDF, refHelper, monitor);
|
||||
deleteRefProject(ERepositoryObjectType.valueOf("BEANS"), refHelper, monitor); //$NON-NLS-1$
|
||||
|
||||
}
|
||||
|
||||
private void deleteRefProject(ERepositoryObjectType codeType, AggregatorPomsHelper refHelper, IProgressMonitor monitor)
|
||||
throws Exception, CoreException {
|
||||
|
||||
if (!refHelper.getProjectRootPom().exists()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String projectTechName = refHelper.getProjectTechName();
|
||||
ITalendProcessJavaProject codeProject = TalendJavaProjectManager.getExistingTalendCodeProject(codeType, projectTechName);
|
||||
|
||||
if (codeProject != null) {
|
||||
codeProject.getProject().delete(false, true, monitor);
|
||||
TalendJavaProjectManager.removeFromCodeJavaProjects(codeType, projectTechName);
|
||||
}
|
||||
|
||||
@@ -427,11 +427,6 @@ public class RunProcessService implements IRunProcessService {
|
||||
return delegateService.getTalendJobJavaProject(property);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IFolder getCodeSrcFolder(ERepositoryObjectType type, String projectTechName) {
|
||||
return delegateService.getCodeSrcFolder(type, projectTechName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITalendProcessJavaProject getTempJavaProject() {
|
||||
return delegateService.getTempJavaProject();
|
||||
|
||||
@@ -150,7 +150,6 @@ import org.talend.designer.runprocess.i18n.Messages;
|
||||
import org.talend.designer.runprocess.prefs.RunProcessPrefsConstants;
|
||||
import org.talend.designer.runprocess.utils.JobVMArgumentsUtil;
|
||||
import org.talend.repository.ProjectManager;
|
||||
import org.talend.repository.utils.EmfModelUtils;
|
||||
import org.talend.repository.utils.EsbConfigUtils;
|
||||
import org.talend.utils.io.FilesUtils;
|
||||
|
||||
@@ -354,40 +353,16 @@ public class JavaProcessor extends AbstractJavaProcessor implements IJavaBreakpo
|
||||
outputFolder = tProcessJavaProject.getTestOutputFolder();
|
||||
} else {
|
||||
srcFolder = tProcessJavaProject.getSrcFolder();
|
||||
boolean needContextInJar = false;
|
||||
boolean needsToHaveContextInsideJar = true;
|
||||
|
||||
if (process != null) {
|
||||
needContextInJar = new BigDataJobUtil(process).needsToHaveContextInsideJar();
|
||||
if (ProcessorUtilities.getMainJobInfo() != null) {
|
||||
if (ProcessorUtilities.getMainJobInfo().getProcess() != null) {
|
||||
if (ProcessorUtilities.isEsbJob(ProcessorUtilities.getMainJobInfo().getProcess(), true)
|
||||
|| "CAMEL".equals(ProcessorUtilities.getMainJobInfo().getProcess().getComponentsType())) {
|
||||
if (property.getItem() instanceof ProcessItem) {
|
||||
if (!needContextInJar) {
|
||||
if (null != EmfModelUtils.getComponentByName((ProcessItem) property.getItem(), "tRunJob",
|
||||
"cTalendJob")) {
|
||||
needContextInJar = false;
|
||||
} else {
|
||||
if (ProcessorUtilities.isEsbJob(process, true)) {
|
||||
needContextInJar = false;
|
||||
} else {
|
||||
needContextInJar = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (property.getItem().eClass().getClassifierID() == 4) {
|
||||
// CamelPropertiesPackage Line 516 int ROUTELET_PROCESS_ITEM = 4;
|
||||
needContextInJar = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (property != null && property.getItem() instanceof ProcessItem) {
|
||||
needsToHaveContextInsideJar = !new BigDataJobUtil(process).needsToHaveContextInsideJar();
|
||||
}
|
||||
|
||||
if (needContextInJar) {
|
||||
resourcesFolder = tProcessJavaProject.getResourcesFolder();
|
||||
} else {
|
||||
if (ProcessorUtilities.isExportConfig() && property != null && needsToHaveContextInsideJar) {
|
||||
resourcesFolder = tProcessJavaProject.getExternalResourcesFolder();
|
||||
} else {
|
||||
resourcesFolder = tProcessJavaProject.getResourcesFolder();
|
||||
}
|
||||
outputFolder = tProcessJavaProject.getOutputFolder();
|
||||
}
|
||||
|
||||
@@ -29,8 +29,6 @@ import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.ltk.core.refactoring.resource.MoveResourceChange;
|
||||
import org.eclipse.ltk.core.refactoring.resource.RenameResourceChange;
|
||||
import org.talend.commons.exception.ExceptionHandler;
|
||||
import org.talend.commons.exception.PersistenceException;
|
||||
import org.talend.commons.utils.workbench.resources.ResourceUtils;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.Property;
|
||||
@@ -145,7 +143,7 @@ public class ProcessChangeListener implements PropertyChangeListener {
|
||||
IFolder targetFolder = processTypeFolder.getFolder(targetPath);
|
||||
try {
|
||||
if (!targetFolder.exists()) {
|
||||
ResourceUtils.createFolder(targetFolder);
|
||||
targetFolder.create(true, true, null);
|
||||
}
|
||||
List<IRepositoryViewObject> allVersions = ProxyRepositoryFactory.getInstance().getAllVersion(obj.getId());
|
||||
for (IRepositoryViewObject objs : allVersions) {
|
||||
@@ -273,20 +271,13 @@ public class ProcessChangeListener implements PropertyChangeListener {
|
||||
if (getAllProcessTypes().contains(processType)) {
|
||||
IFolder processTypeFolder = getAggregatorPomsHelper().getProcessFolder(processType);
|
||||
IFolder sourceFolder = processTypeFolder.getFolder(sourcePath);
|
||||
if (!sourceFolder.exists()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
sourceFolder.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
|
||||
removeFromParentSourceFolder(sourceFolder);
|
||||
IFolder targetFolder = processTypeFolder.getFolder(targetPath);
|
||||
if (!targetFolder.exists()) {
|
||||
ResourceUtils.createFolder(targetFolder);
|
||||
}
|
||||
MoveResourceChange change = new MoveResourceChange(sourceFolder, targetFolder);
|
||||
change.perform(new NullProgressMonitor());
|
||||
updatePomsInNewFolder(targetFolder.getFolder(sourceFolder.getName()));
|
||||
} catch (OperationCanceledException | CoreException | PersistenceException e) {
|
||||
} catch (OperationCanceledException | CoreException e) {
|
||||
ExceptionHandler.process(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3052,15 +3052,6 @@
|
||||
name="FileInputPositionalByteLengthMigrationTask"
|
||||
version="7.0.1">
|
||||
</projecttask>
|
||||
<projecttask
|
||||
beforeLogon="false"
|
||||
breaks="7.0.1"
|
||||
class="org.talend.repository.model.migration.spark.UseSqlDateTypeInDataframesTask"
|
||||
description="Keep Date type for component impacted by change from Date to Timestamp"
|
||||
id="org.talend.repository.model.migration.spark.UseSqlDateTypeInDataframesTask"
|
||||
name="UseSqlDateTypeInDataframesTask"
|
||||
version="7.0.2">
|
||||
</projecttask>
|
||||
</extension>
|
||||
|
||||
<extension
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2018 Talend Inc. - www.talend.com
|
||||
// Copyright (C) 2006-2017 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
|
||||
@@ -1,94 +0,0 @@
|
||||
// ============================================================================
|
||||
//
|
||||
// Copyright (C) 2006-2018 Talend Inc. - www.talend.com
|
||||
//
|
||||
// This source code is available under agreement available at
|
||||
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
|
||||
//
|
||||
// You should have received a copy of the agreement
|
||||
// along with this program; if not, write to Talend SA
|
||||
// 9 rue Pages 92150 Suresnes, France
|
||||
//
|
||||
// ============================================================================
|
||||
package org.talend.repository.model.migration.spark;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
|
||||
import org.talend.core.model.components.ComponentUtilities;
|
||||
import org.talend.core.model.components.ModifyComponentsAction;
|
||||
import org.talend.core.model.components.conversions.IComponentConversion;
|
||||
import org.talend.core.model.components.filters.NameComponentFilter;
|
||||
import org.talend.core.model.migration.AbstractJobMigrationTask;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.repository.ERepositoryObjectType;
|
||||
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
|
||||
import org.talend.designer.core.model.utils.emf.talendfile.ProcessType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kcoepeau
|
||||
*
|
||||
* Keep Date type for component impacted by change from Date to Timestamp
|
||||
*
|
||||
*/
|
||||
public class UseSqlDateTypeInDataframesTask extends AbstractJobMigrationTask {
|
||||
|
||||
@Override
|
||||
public List<ERepositoryObjectType> getTypes() {
|
||||
List<ERepositoryObjectType> toReturn = new ArrayList<ERepositoryObjectType>();
|
||||
toReturn.add(ERepositoryObjectType.PROCESS_SPARK);
|
||||
toReturn.add(ERepositoryObjectType.PROCESS_SPARKSTREAMING);
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExecutionResult execute(Item item) {
|
||||
ProcessType processType = getProcessType(item);
|
||||
if (processType == null) {
|
||||
return ExecutionResult.NOTHING_TO_DO;
|
||||
}
|
||||
|
||||
List<String> impactedComponents =
|
||||
Arrays.asList("tFileOutputParquet", "tHiveOutput", "tRedshiftOutput", "tSqlRow", "tMatchPairing",
|
||||
"tMatchPredict");
|
||||
|
||||
IComponentConversion addUseTimestampForDateType = new AddUseTimestampForDateType();
|
||||
|
||||
try {
|
||||
for (String componentName : impactedComponents) {
|
||||
ModifyComponentsAction.searchAndModify(item, processType, new NameComponentFilter(componentName),
|
||||
Arrays.<IComponentConversion> asList(addUseTimestampForDateType));
|
||||
}
|
||||
return ExecutionResult.SUCCESS_NO_ALERT;
|
||||
} catch (Exception e) {
|
||||
return ExecutionResult.FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
private class AddUseTimestampForDateType implements IComponentConversion {
|
||||
|
||||
private String field = "CHECK"; //$NON-NLS-1$
|
||||
|
||||
private String name = "DATE_TO_TIMESTAMP_DF_TYPE_SUBSTITUTION"; //$NON-NLS-1$
|
||||
|
||||
public void transform(NodeType node) {
|
||||
|
||||
if (ComponentUtilities.getNodeProperty(node, name) == null) {
|
||||
ComponentUtilities.addNodeProperty(node, name, field);
|
||||
ComponentUtilities.setNodeValue(node, name, "true");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getOrder() {
|
||||
GregorianCalendar gc = new GregorianCalendar(2018, 8, 10, 18, 0, 0);
|
||||
return gc.getTime();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -84,8 +84,7 @@ public class LibraryField extends TableField {
|
||||
final TableItem item = contextTable.getSelection()[0];
|
||||
if (item.getBounds(1).contains(event.x, event.y)) {
|
||||
IMPORTType it = (IMPORTType) getList().get(contextTable.getSelectionIndex());
|
||||
if ("BeanItem".equals(it.eContainer().eClass().getName())
|
||||
|| "RoutineItem".equals(it.eContainer().eClass().getName())) {
|
||||
if ("BeanItem".equals(it.eContainer().eClass().getName())) {
|
||||
it.setREQUIRED(!it.isREQUIRED());
|
||||
setInput(getList());
|
||||
}
|
||||
|
||||
@@ -43,11 +43,9 @@ import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.model.repository.job.JobResource;
|
||||
import org.talend.core.model.repository.job.JobResourceManager;
|
||||
import org.talend.core.repository.model.ProxyRepositoryFactory;
|
||||
import org.talend.core.runtime.process.ITalendProcessJavaProject;
|
||||
import org.talend.core.ui.CoreUIPlugin;
|
||||
import org.talend.core.ui.export.ArchiveFileExportOperationFullPath;
|
||||
import org.talend.core.ui.services.IDesignerCoreUIService;
|
||||
import org.talend.designer.runprocess.IRunProcessService;
|
||||
import org.talend.designer.runprocess.ItemCacheManager;
|
||||
import org.talend.designer.runprocess.ProcessorException;
|
||||
import org.talend.designer.runprocess.ProcessorUtilities;
|
||||
@@ -62,14 +60,12 @@ import org.talend.repository.ui.wizards.exportjob.scriptsmanager.JobScriptsManag
|
||||
import org.talend.repository.ui.wizards.exportjob.util.ExportJobUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* class global comment. Detailled comment
|
||||
*/
|
||||
public class JobExportAction implements IRunnableWithProgress {
|
||||
|
||||
private static final String LIB = "lib";
|
||||
|
||||
private List<? extends IRepositoryNode> nodes;
|
||||
private List<? extends IRepositoryNode> nodes;
|
||||
|
||||
private String jobVersion;
|
||||
|
||||
@@ -208,7 +204,6 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
manager.setTopFolder(resourcesToExport);
|
||||
}
|
||||
|
||||
cleanLibFolderBeforeExport();
|
||||
doArchiveExport(monitor, resourcesToExport);
|
||||
|
||||
clean();
|
||||
@@ -233,7 +228,7 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
|
||||
/**
|
||||
* DOC ggu Comment method "doArchiveExport".
|
||||
*
|
||||
*
|
||||
* @param monitor
|
||||
* @param resourcesToExport
|
||||
*/
|
||||
@@ -249,7 +244,7 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
|
||||
/**
|
||||
* DOC ggu Comment method "generatedCodes".
|
||||
*
|
||||
*
|
||||
* @param version
|
||||
* @param monitor
|
||||
* @param processes
|
||||
@@ -288,7 +283,7 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
|
||||
/**
|
||||
* DOC zli Comment method "getTempDestinationValue".
|
||||
*
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected String getTempDestinationValue() {
|
||||
@@ -320,9 +315,9 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* DOC aiming Comment method "reBuildJobZipFile".
|
||||
*
|
||||
*
|
||||
* @param processes
|
||||
*/
|
||||
protected void reBuildJobZipFile(List<ExportFileResource> processes) {
|
||||
@@ -370,7 +365,7 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
/**
|
||||
* Added by Marvin Wang on Feb.1, 2012 for estimating if the file can be created. In win7 or other systems, have not
|
||||
* the permission to create a file directly under system disk(like C:\).
|
||||
*
|
||||
*
|
||||
* @param disZipFileStr
|
||||
* @return
|
||||
*/
|
||||
@@ -424,22 +419,4 @@ public class JobExportAction implements IRunnableWithProgress {
|
||||
return nodes.size() > 1;
|
||||
}
|
||||
|
||||
public void cleanLibFolderBeforeExport() {
|
||||
IRunProcessService runProcessService = CorePlugin.getDefault().getRunProcessService();
|
||||
ITalendProcessJavaProject talendProcessJavaProject = runProcessService
|
||||
.getTalendJobJavaProject(nodes.get(0).getObject().getProperty());
|
||||
|
||||
if (talendProcessJavaProject != null) {
|
||||
File libFolder = new File(talendProcessJavaProject.getBundleResourcesFolder().getLocation().toOSString()
|
||||
+ File.separator
|
||||
+ LIB);
|
||||
|
||||
if (libFolder.exists()) {
|
||||
for (File file : libFolder.listFiles())
|
||||
if (!file.isDirectory() && file.getName().endsWith(".jar"))
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,8 +12,11 @@
|
||||
// ============================================================================
|
||||
package org.talend.repository.ui.wizards.exportjob.handler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang.BooleanUtils;
|
||||
@@ -29,9 +32,11 @@ import org.talend.commons.utils.workbench.resources.ResourceUtils;
|
||||
import org.talend.core.CorePlugin;
|
||||
import org.talend.core.GlobalServiceRegister;
|
||||
import org.talend.core.ITDQSurvivorshipService;
|
||||
import org.talend.core.model.process.ProcessUtils;
|
||||
import org.talend.core.model.properties.Item;
|
||||
import org.talend.core.model.properties.ProcessItem;
|
||||
import org.talend.core.model.properties.Project;
|
||||
import org.talend.core.model.repository.IRepositoryViewObject;
|
||||
import org.talend.core.runtime.process.IBuildJobHandler;
|
||||
import org.talend.core.runtime.process.ITalendProcessJavaProject;
|
||||
import org.talend.core.runtime.process.LastGenerationInfo;
|
||||
@@ -42,7 +47,6 @@ import org.talend.core.runtime.repository.build.IBuildResourcesProvider;
|
||||
import org.talend.core.runtime.util.ParametersUtil;
|
||||
import org.talend.designer.core.model.utils.emf.talendfile.NodeType;
|
||||
import org.talend.designer.maven.model.TalendMavenConstants;
|
||||
import org.talend.designer.runprocess.IProcessor;
|
||||
import org.talend.designer.runprocess.IRunProcessService;
|
||||
import org.talend.designer.runprocess.ProcessorUtilities;
|
||||
import org.talend.repository.ProjectManager;
|
||||
@@ -331,9 +335,19 @@ public abstract class AbstractBuildJobHandler implements IBuildJobHandler, IBuil
|
||||
parameters.put(VERSION, version);
|
||||
parameters.put(OBJ_PROCESS_JAVA_PROJECT, talendProcessJavaProject);
|
||||
|
||||
//
|
||||
List<Item> dependenciesItems = new ArrayList<Item>();
|
||||
Collection<IRepositoryViewObject> allProcessDependencies = ProcessUtils.getAllProcessDependencies(Arrays
|
||||
.asList(processItem));
|
||||
if (!allProcessDependencies.isEmpty()) {
|
||||
for (IRepositoryViewObject repositoryObject : allProcessDependencies) {
|
||||
dependenciesItems.add(repositoryObject.getProperty().getItem());
|
||||
}
|
||||
parameters.put(OBJ_ITEM_DEPENDENCIES, dependenciesItems);
|
||||
}
|
||||
|
||||
// generate sources
|
||||
IProcessor processor = generateJobFiles(monitor);
|
||||
parameters.put(OBJ_ITEM_DEPENDENCIES, processor.getBuildChildrenJobs());
|
||||
generateJobFiles(monitor);
|
||||
|
||||
// export items
|
||||
if (ParametersUtil.hasBoolFlag(parameters, OPTION_ITEMS)) {
|
||||
|
||||
Reference in New Issue
Block a user