diff --git a/main/plugins/org.talend.sdk.component.studio-integration/plugin.xml b/main/plugins/org.talend.sdk.component.studio-integration/plugin.xml index 3a8f87d733c..f71f8581d9e 100644 --- a/main/plugins/org.talend.sdk.component.studio-integration/plugin.xml +++ b/main/plugins/org.talend.sdk.component.studio-integration/plugin.xml @@ -368,4 +368,17 @@ serviceId="IRepositoryContextUpdateService"> + + + + + + + + diff --git a/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/service/TaCoKitAzureContextUpdateService.java b/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/service/TaCoKitAzureContextUpdateService.java new file mode 100644 index 00000000000..7343ae6cd00 --- /dev/null +++ b/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/service/TaCoKitAzureContextUpdateService.java @@ -0,0 +1,87 @@ +// ============================================================================ +// +// 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.sdk.component.studio.service; + +import org.apache.commons.lang3.StringUtils; +import org.talend.commons.exception.ExceptionHandler; +import org.talend.core.AbstractRepositoryContextUpdateService; +import org.talend.core.model.metadata.builder.connection.Connection; +import org.talend.sdk.component.server.front.model.ConfigTypeNode; +import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel; +import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel.ValueModel; + +public class TaCoKitAzureContextUpdateService extends AbstractRepositoryContextUpdateService { + + @Override + public boolean updateContextParameter(Connection conn, String oldValue, String newValue) { + boolean isModified = false; + if (conn.isContextMode()) { + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(conn); + ValueModel endpointSuffixValue; + ValueModel sharedKeyValue; + ValueModel accountNameValue; + ValueModel sasValue; + ValueModel tenantIdValue; + ValueModel clientSecretValue; + ValueModel clientIdValue; + + try { + endpointSuffixValue = taCoKitConfigurationModel.getValue("configuration.endpointSuffix"); + sharedKeyValue = taCoKitConfigurationModel.getValue("configuration.sharedKey"); + accountNameValue = taCoKitConfigurationModel.getValue("configuration.accountName"); + sasValue = taCoKitConfigurationModel.getValue("configuration.sas"); + tenantIdValue = taCoKitConfigurationModel.getValue("configuration.tenantId"); + clientSecretValue = taCoKitConfigurationModel.getValue("configuration.clientSecret"); + clientIdValue = taCoKitConfigurationModel.getValue("configuration.clientId"); + if (endpointSuffixValue != null && StringUtils.equals(oldValue, endpointSuffixValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.endpointSuffix", endpointSuffixValue.getValue()); + isModified = true; + } else if (sharedKeyValue != null && StringUtils.equals(oldValue, sharedKeyValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.sharedKey", sharedKeyValue.getValue()); + isModified = true; + } else if (accountNameValue != null && StringUtils.equals(oldValue, accountNameValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.accountName", accountNameValue.getValue()); + isModified = true; + } else if (sasValue != null && StringUtils.equals(oldValue, sasValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.sas", sasValue.getValue()); + isModified = true; + } else if (tenantIdValue != null && StringUtils.equals(oldValue, tenantIdValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.tenantId", tenantIdValue.getValue()); + isModified = true; + } else if (clientSecretValue != null && StringUtils.equals(oldValue, clientSecretValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.clientSecret", clientSecretValue.getValue()); + isModified = true; + } else if (clientIdValue != null && StringUtils.equals(oldValue, clientIdValue.getValue())) { + taCoKitConfigurationModel.setValue("configuration.clientId", clientIdValue.getValue()); + isModified = true; + } + } catch (Exception e) { + ExceptionHandler.process(e); + } + + } + return isModified; + } + + @Override + public boolean accept(Connection connection) { + String name = null; + boolean isTacokit = TaCoKitConfigurationModel.isTacokit(connection); + if (isTacokit) { + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(connection); + ConfigTypeNode configTypeNode = taCoKitConfigurationModel.getConfigTypeNode(); + name = configTypeNode.getDisplayName(); + } + return StringUtils.equals(name, "Azure"); + } +} diff --git a/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/ui/wizard/page/TaCoKitAzureContextHandler.java b/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/ui/wizard/page/TaCoKitAzureContextHandler.java new file mode 100644 index 00000000000..0713f97101c --- /dev/null +++ b/main/plugins/org.talend.sdk.component.studio-integration/src/main/java/org/talend/sdk/component/studio/ui/wizard/page/TaCoKitAzureContextHandler.java @@ -0,0 +1,218 @@ +package org.talend.sdk.component.studio.ui.wizard.page; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.talend.commons.exception.ExceptionHandler; +import org.talend.core.model.metadata.builder.connection.Connection; +import org.talend.core.model.process.IContextParameter; +import org.talend.core.model.properties.ContextItem; +import org.talend.core.model.utils.ContextParameterUtils; +import org.talend.core.ui.context.model.table.ConectionAdaptContextVariableModel; +import org.talend.core.utils.TalendQuoteUtils; +import org.talend.designer.core.model.utils.emf.talendfile.ContextType; +import org.talend.metadata.managment.ui.model.IConnParamName; +import org.talend.metadata.managment.ui.utils.ConnectionContextHelper; +import org.talend.metadata.managment.ui.utils.TaCoKitConnectionContextUtils.ETaCoKitParamName; +import org.talend.metadata.managment.ui.wizard.context.AbstractRepositoryContextHandler; +import org.talend.sdk.component.server.front.model.ConfigTypeNode; +import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel; +import org.talend.sdk.component.studio.metadata.model.TaCoKitConfigurationModel.ValueModel; + +public class TaCoKitAzureContextHandler extends AbstractRepositoryContextHandler { + + @Override + public boolean isRepositoryConType(Connection connection) { + String name = null; + boolean isTacokit = TaCoKitConfigurationModel.isTacokit(connection); + if (isTacokit) { + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(connection); + ConfigTypeNode configTypeNode = taCoKitConfigurationModel.getConfigTypeNode(); + name = configTypeNode.getDisplayName(); + } + return StringUtils.equals(name, "Azure"); + } + + @Override + public Set collectConParameters() { + + Set set = new HashSet(); + set.add(ETaCoKitParamName.EndpointSuffix); + set.add(ETaCoKitParamName.SharedKey); + set.add(ETaCoKitParamName.AccountName); + set.add(ETaCoKitParamName.Sas); + set.add(ETaCoKitParamName.TenantId); + set.add(ETaCoKitParamName.ClientSecret); + set.add(ETaCoKitParamName.ClientId); + + return set; + } + + @Override + public List createContextParameters(String prefixName, Connection connection, + Set paramSet) { + + List varList = new ArrayList(); + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(connection); + Map properties = taCoKitConfigurationModel.getProperties(); + String paramPrefix = prefixName + ConnectionContextHelper.LINE; + String paramName = null; + + for (IConnParamName param : paramSet) { + if (param instanceof ETaCoKitParamName) { + ETaCoKitParamName hadoopParam = (ETaCoKitParamName) param; + paramName = paramPrefix + hadoopParam; + switch (hadoopParam) { + + case EndpointSuffix: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.endpointSuffix")); + break; + case SharedKey: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.sharedKey")); + break; + case AccountName: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.accountName")); + break; + case Sas: + ConnectionContextHelper.createParameters(varList, paramName, properties.get("configuration.sas")); + break; + case TenantId: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.tenantId")); + break; + case ClientSecret: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.clientSecret")); + break; + case ClientId: + ConnectionContextHelper.createParameters(varList, paramName, + properties.get("configuration.clientId")); + break; + default: + } + } + } + + return varList; + + } + + @Override + public void setPropertiesForContextMode(String prefixName, Connection connection, Set paramSet) { + if (connection == null) { + return; + } + + String originalVariableName = prefixName + ConnectionContextHelper.LINE; + String hadoopVariableName = null; + for (IConnParamName param : paramSet) { + if (param instanceof ETaCoKitParamName) { + ETaCoKitParamName hadoopConnectionParam = (ETaCoKitParamName) param; + originalVariableName = prefixName + ConnectionContextHelper.LINE; + hadoopVariableName = originalVariableName + hadoopConnectionParam; + matchContextForAttribues(connection, hadoopConnectionParam, hadoopVariableName); + } + } + + } + + @Override + public void setPropertiesForExistContextMode(Connection connection, Set paramSet, + Map> adaptMap) { + // TODO Auto-generated method stub + + } + + @Override + public void revertPropertiesForContextMode(Connection connection, ContextType contextType) { + + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(connection); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.endpointSuffix"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.sharedKey"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.accountName"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.sas"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.tenantId"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.clientSecret"); + revertProperties(taCoKitConfigurationModel, contextType, "configuration.clientId"); + } + + private void revertProperties(TaCoKitConfigurationModel taCoKitConfigurationModel, ContextType contextType, + String key) { + try { + ValueModel valueModel = taCoKitConfigurationModel.getValue(key); + if (valueModel != null) { + String applicationId = TalendQuoteUtils + .removeQuotes(ContextParameterUtils.getOriginalValue(contextType, valueModel.getValue())); + taCoKitConfigurationModel.setValue(key, applicationId); + + } + + } catch (Exception e) { + ExceptionHandler.process(e); + } + } + + @Override + public Set getConAdditionPropertiesForContextMode(Connection conn) { + // TODO Auto-generated method stub + return new HashSet(); + } + + @Override + protected void matchContextForAttribues(Connection connection, IConnParamName param, String contextVariableName) { + // TODO Auto-generated method stub + TaCoKitConfigurationModel taCoKitConfigurationModel = new TaCoKitConfigurationModel(connection); + Map properties = taCoKitConfigurationModel.getProperties(); + String paramName = null; + if (param instanceof ETaCoKitParamName) { + ETaCoKitParamName hadoopParam = (ETaCoKitParamName) param; + switch (hadoopParam) { + case EndpointSuffix: + taCoKitConfigurationModel.setValue("configuration.endpointSuffix", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case SharedKey: + taCoKitConfigurationModel.setValue("configuration.sharedKey", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case AccountName: + taCoKitConfigurationModel.setValue("configuration.accountName", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case Sas: + taCoKitConfigurationModel.setValue("configuration.sas", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case TenantId: + taCoKitConfigurationModel.setValue("configuration.tenantId", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case ClientSecret: + taCoKitConfigurationModel.setValue("configuration.clientSecret", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + case ClientId: + taCoKitConfigurationModel.setValue("configuration.clientId", + ContextParameterUtils.getNewScriptCode(contextVariableName, LANGUAGE)); + break; + + default: + } + } + + } + + @Override + protected void matchAdditionProperties(Connection conn, + Map> adaptMap) { + + } + +}