// ============================================================================
//
// Copyright (C) 2006-2012 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.core.utils;
import java.util.List;
import java.util.Map;
import org.talend.core.model.metadata.builder.connection.Connection;
import org.talend.core.model.metadata.builder.connection.SAPConnection;
import org.talend.core.model.metadata.builder.connection.SAPFunctionUnit;
import org.talend.core.model.metadata.builder.connection.SAPIDocUnit;
import org.talend.core.model.metadata.designerproperties.RepositoryToComponentProperty;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.Element;
import org.talend.core.model.process.IElement;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.utils.TalendTextUtils;
import org.talend.core.utils.SAPConnectionUtils;
/**
* DOC YeXiaowei class global comment. Detailled comment
*/
public final class SAPParametersUtils {
/**
* DOC zli Comment method "getSAPIDocParams".
*
* @param elem
* @param connection
* @param param
* @param sapIDocName
*/
public static void getSAPIDocParams(final IElement elem, final Connection connection, final IElementParameter param,
final String sapIDocName) {
if (param.getRepositoryValue() == null) {
return;
}
if (connection != null && sapIDocName != null) {
SAPConnection sapConnection = (SAPConnection) connection;
SAPIDocUnit iDocUnit = SAPConnectionUtils.findExistIDocUnit(sapConnection, sapIDocName);
if (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getRepositoryValue().equals("GATEWAYSERVICE")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getGatewayService()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getRepositoryValue().equals("PROGRAMID")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getProgramId()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.CHECK) && param.getRepositoryValue().equals("FORMAT_XML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(iDocUnit.isUseXmlOutput());
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.FILE) && param.getRepositoryValue().equals("FILE_IDOC_XML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getXmlFile()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.CHECK) && param.getRepositoryValue().equals("FORMAT_HTML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(iDocUnit.isUseHtmlOutput());
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.FILE) && param.getRepositoryValue().equals("FILE_IDOC_HTML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getHtmlFile()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
}
}
/**
* DOC zli Comment method "retrieveSAPIDocParams".
*
* @param elem
* @param connection
* @param param
* @param sapFunctionName
*/
public static void retrieveSAPIDocParams(final Element elem, final Connection connection, final IElementParameter param,
final String sapFunctionName) {
if (param.getRepositoryValue() == null) {
return;
}
SAPIDocUnit iDocUnit = null;
if (connection != null && sapFunctionName != null) {
SAPConnection sapConnection = (SAPConnection) connection;
iDocUnit = SAPConnectionUtils.findExistIDocUnit(sapConnection, sapFunctionName);
}
if (param.getRepositoryValue().equals("SAPIDOC")) { //$NON-NLS-1$
if (connection != null && sapFunctionName != null) {
param.setValue(TalendTextUtils.addQuotes(sapFunctionName));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getRepositoryValue().equals("GATEWAYSERVICE")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getGatewayService()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getRepositoryValue().equals("PROGRAMID")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getProgramId()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.CHECK) && param.getRepositoryValue().equals("FORMAT_XML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(iDocUnit.isUseXmlOutput());
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.FILE) && param.getRepositoryValue().equals("FILE_IDOC_XML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getXmlFile()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.CHECK) && param.getRepositoryValue().equals("FORMAT_HTML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(iDocUnit.isUseHtmlOutput());
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
if (param.getFieldType().equals(EParameterFieldType.FILE) && param.getRepositoryValue().equals("FILE_IDOC_HTML")) { //$NON-NLS-1$
if (iDocUnit != null) {
param.setValue(TalendTextUtils.addQuotes(iDocUnit.getHtmlFile()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
}
public static void setNoRepositoryIDocParams(final IElementParameter param) {
if (param == null) {
return;
}
if ((param.getFieldType().equals(EParameterFieldType.TEXT) && param.getName().equals("GATEWAYSERVICE")) //$NON-NLS-1$
|| (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getName().equals("PROGRAMID")) //$NON-NLS-1$
|| (param.getFieldType().equals(EParameterFieldType.CHECK) && (param.getName().equals("FORMAT_XML"))) || (param.getFieldType().equals(EParameterFieldType.FILE) && param.getName().equals("FILE_IDOC_XML")) //$NON-NLS-1$ //$NON-NLS-2$
|| (param.getFieldType().equals(EParameterFieldType.CHECK) && param.getName().equals("FORMAT_HTML")) || (param.getFieldType().equals(EParameterFieldType.FILE) && param.getName().equals("FILE_IDOC_HTML"))) { //$NON-NLS-1$
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
/**
* DOC xye Comment method "retrieveSAPParams".
*
* @param param
*/
@SuppressWarnings("unchecked")
public static void retrieveSAPParams(final IElement elem, final Connection connection, final IElementParameter param,
final String sapFunctionLabel) {
if (param.getRepositoryValue() == null || !(connection instanceof SAPConnection)) {
return;
}
if (param.getFieldType().equals(EParameterFieldType.TEXT) && param.getRepositoryValue().equals("SAP_FUNCTION")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
SAPFunctionUnit unit = null;
for (int i = 0; i < ((SAPConnection) connection).getFuntions().size(); i++) {
SAPFunctionUnit tmp = (SAPFunctionUnit) ((SAPConnection) connection).getFuntions().get(i);
if (tmp.getLabel().equals(sapFunctionLabel)) {
unit = tmp;
break;
}
}
if (unit == null) {
return;
}
param.setValue(TalendTextUtils.addQuotes(unit.getName()));
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
} else if (param.getFieldType().equals(EParameterFieldType.TABLE) && param.getRepositoryValue().equals("INPUT_PARAMS")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
List<Map<String, Object>> table = (List<Map<String, Object>>) elem.getPropertyValue(param.getName());
RepositoryToComponentProperty
.getSAPInputAndOutputValue((SAPConnection) connection, table, sapFunctionLabel, true);
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
} else if (param.getFieldType().equals(EParameterFieldType.TABLE) && param.getRepositoryValue().equals("OUTPUT_PARAMS")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
List<Map<String, Object>> table = (List<Map<String, Object>>) elem.getPropertyValue(param.getName());
RepositoryToComponentProperty.getSAPInputAndOutputValue((SAPConnection) connection, table, sapFunctionLabel,
false);
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
} else if (param.getRepositoryValue().equals("SAP_ITERATE_OUT_TYPE")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
param.setValue(RepositoryToComponentProperty.getSAPValuesForFunction((SAPConnection) connection,
sapFunctionLabel, "SAP_ITERATE_OUT_TYPE")); //$NON-NLS-1$
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
} else if (param.getRepositoryValue().equals("SAP_ITERATE_OUT_TABLENAME")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
param.setValue(RepositoryToComponentProperty.getSAPValuesForFunction((SAPConnection) connection,
sapFunctionLabel, "SAP_ITERATE_OUT_TABLENAME")); //$NON-NLS-1$
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
} else if (param.getRepositoryValue().equals("SAP_TABLE_NAME")) { //$NON-NLS-1$
if (connection != null && sapFunctionLabel != null) {
param.setValue(RepositoryToComponentProperty.getSAPValuesForFunction((SAPConnection) connection,
sapFunctionLabel, "SAP_TABLE_NAME")); //$NON-NLS-1$
param.setRepositoryValueUsed(true);
param.setReadOnly(true);
} else {
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
}
public static void setNoRepositoryParams(final IElementParameter param) {
if (param == null) {
return;
}
if ((param.getFieldType().equals(EParameterFieldType.TABLE) && param.getName().equals("MAPPING_INPUT")) //$NON-NLS-1$
|| (param.getFieldType().equals(EParameterFieldType.TABLE) && param.getName().equals("MAPPING_OUTPUT")) //$NON-NLS-1$
|| (param.getName().equals("SAP_ITERATE_OUT_TYPE")) || param.getName().equals("SAP_ITERATE_OUT_TABLENAME") //$NON-NLS-1$ //$NON-NLS-2$
|| param.getName().equals("SAP_FUNCTION")) { //$NON-NLS-1$
param.setRepositoryValueUsed(false);
param.setReadOnly(false);
}
}
}