// ============================================================================
//
// 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.model.process.jobsettings;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.preference.IPreferenceStore;
import org.talend.core.CorePlugin;
import org.talend.core.PluginChecker;
import org.talend.core.database.EDatabaseTypeName;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.metadata.IMetadataColumn;
import org.talend.core.model.metadata.IMetadataTable;
import org.talend.core.model.metadata.QueryUtil;
import org.talend.core.model.metadata.builder.database.ExtractMetaDataUtils;
import org.talend.core.model.param.ERepositoryCategoryType;
import org.talend.core.model.process.EComponentCategory;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.ElementParameterParser;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.IProcess;
import org.talend.core.model.utils.ContextParameterUtils;
import org.talend.core.model.utils.TalendTextUtils;
import org.talend.core.prefs.ITalendCorePrefConstants;
import org.talend.designer.core.DesignerPlugin;
import org.talend.designer.core.model.components.EParameterName;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.designer.core.model.components.EmfComponent;
import org.talend.designer.core.model.process.AbstractProcessProvider;
import org.talend.designer.core.model.process.DataNode;
import org.talend.designer.core.model.process.jobsettings.JobSettingsConstants.ContextLoadInfo;
import org.talend.designer.core.model.process.statsandlogs.OracleComponentHelper;
import org.talend.designer.core.model.process.statsandlogs.StatsAndLogsManager;
import org.talend.designer.core.ui.preferences.StatsAndLogsConstants;
import org.talend.designer.core.utils.JavaProcessUtil;
import org.talend.librariesmanager.model.ModulesNeededProvider;
import org.talend.repository.model.ComponentsFactoryProvider;
/**
* DOC ggu class global comment. Detailled comment
*/
public class JobSettingsManager {
private static final String IMPLICIT_GROUP = "IMPLICIT_GROUP"; //$NON-NLS-1$
public static List<IElementParameter> getJobSettingsParameters(IProcess process) {
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
// for extra
paramList.addAll(getExtraParameters(process));
// for stats & logs
boolean isJoblet = AbstractProcessProvider.isExtensionProcessForJoblet(process);
if (!isJoblet) {
paramList.addAll(StatsAndLogsManager.getStatsAndLogsParameters(process));
}
// for feature 13940
paramList.addAll(getHeaderFooterParameters(process));
return paramList;
}
private static final String CONTEXTLOAD_CONDITION = EParameterName.IMPLICIT_TCONTEXTLOAD.getName() + " == 'true'"; //$NON-NLS-1$
private static final String QUOTE = TalendTextUtils.getQuoteChar();
private static final String CONNECTOR = TalendTextUtils.getStringConnect();
private static List<IElementParameter> getHeaderFooterParameters(IProcess process) {
// for headerFooter Code
ElementParameter param;
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
param = new ElementParameter(process);
param.setName(EParameterName.HEADERFOOTER_HEADERID.getName());
param.setValue("");
param.setDisplayName(EParameterName.FOOTER_ENABLED.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(2);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.HEADER_ENABLED.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.HEADER_ENABLED.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(2);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.HEADER_LIBRARY.getName());
param.setValue("");
param.setDisplayName(EParameterName.HEADER_LIBRARY.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(3);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.HEADER_CODE.getName());
param.setValue("");
param.setDisplayName(EParameterName.HEADER_CODE.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(4);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.HEADER_IMPORT.getName());
param.setValue("");
param.setDisplayName(EParameterName.HEADER_IMPORT.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(4);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.HEADERFOOTER_FOOTERID.getName());
param.setValue("");
param.setDisplayName(EParameterName.FOOTER_ENABLED.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(2);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.FOOTER_ENABLED.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.FOOTER_ENABLED.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(5);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.FOOTER_LIBRARY.getName());
param.setValue("");
param.setDisplayName(EParameterName.FOOTER_LIBRARY.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(6);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.FOOTER_CODE.getName());
param.setValue("");
param.setDisplayName(EParameterName.FOOTER_CODE.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(7);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.FOOTER_IMPORT.getName());
param.setValue("");
param.setDisplayName(EParameterName.FOOTER_IMPORT.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.HEADERFOOTER);
param.setNumRow(4);
param.setShow(false);
paramList.add(param);
return paramList;
}
/**
*
* create parameter for extra tab.
*/
private static List<IElementParameter> getExtraParameters(IProcess process) {
ElementParameter param;
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
// use project settings
param = new ElementParameter(process);
param.setName(EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.IMPLICITCONTEXT_USE_PROJECT_SETTINGS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(2);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.STATANDLOG_USE_PROJECT_SETTINGS.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.STATANDLOG_USE_PROJECT_SETTINGS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(2);
param.setShow(false);
paramList.add(param);
// end
boolean isJoblet = AbstractProcessProvider.isExtensionProcessForJoblet(process);
IPreferenceStore preferenceStore = CorePlugin.getDefault().getPreferenceStore();
param = new ElementParameter(process);
param.setName(EParameterName.MULTI_THREAD_EXECATION.getName());
param.setValue(preferenceStore.getBoolean(ITalendCorePrefConstants.RUN_IN_MULTI_THREAD));
param.setDisplayName(EParameterName.MULTI_THREAD_EXECATION.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(2);
param.setShow(!isJoblet);
param.setShowIf("(MULTI_THREAD_EXECATION=='true' or MULTI_THREAD_EXECATION=='false')"); //$NON-NLS-1$
paramList.add(param);
if (PluginChecker.isTeamEdition()) {
param = new ElementParameter(process);
param.setName(EParameterName.PARALLELIZE_UNIT_SIZE.getName());
param.setValue("25000"); //$NON-NLS-1$
param.setDisplayName(EParameterName.PARALLELIZE_UNIT_SIZE.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(2);
param.setShow(!isJoblet);
paramList.add(param);
}
// achen modify to fix bug 0006241
if (isJoblet) {
param = new ElementParameter(process);
param.setName(EParameterName.STARTABLE.getName());
param.setValue(false);
param.setDisplayName(EParameterName.STARTABLE.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(2);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.UPDATE_COMPONENTS.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.UPDATE_COMPONENTS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(1);
param.setReadOnly(true);
param.setRequired(false);
param.setShow(false);
paramList.add(param);
// zywang added to fix feature 5545
param = new ElementParameter(process);
param.setName(EParameterName.ICONSELECTION.getName());
param.setValue(""); //$NON-NLS-1$
param.setDisplayName(EParameterName.ICONSELECTION.getDisplayName());
param.setFieldType(EParameterFieldType.ICON_SELECTION);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(3);
param.setReadOnly(false);
param.setRequired(false);
paramList.add(param);
}
param = new ElementParameter(process);
param.setName(EParameterName.IMPLICIT_TCONTEXTLOAD.getName());
param.setValue(false);
param.setGroupDisplayName(EParameterName.IMPLICIT_TCONTEXTLOAD.getDisplayName()); //$NON-NLS-1$
param.setDisplayName(EParameterName.IMPLICIT_TCONTEXTLOAD.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setGroup(IMPLICIT_GROUP);
param.setNumRow(3);
param.setShow(!isJoblet);
paramList.add(param);
// on files
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.FROM_FILE_FLAG.getName()));
param.setValue(false);
param.setDisplayName(EParameterName.FROM_FILE_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(4);
param.setShowIf(JobSettingsConstants.addBrackets(CONTEXTLOAD_CONDITION));
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// on database
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.FROM_DATABASE_FLAG.getName()));
param.setValue(false);
param.setDisplayName(EParameterName.FROM_DATABASE_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.RADIO);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(5);
param.setShowIf(JobSettingsConstants.addBrackets(CONTEXTLOAD_CONDITION));
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// on file
paramList.addAll(getExtraOnFileParameters(process));
// on database
paramList.addAll(getExtraOnDBParameters(process));
// tContextLoad
paramList.addAll(getExtraContextLoadParameters(process));
return paramList;
}
private static List<IElementParameter> getExtraOnFileParameters(IProcess process) {
ElementParameter param;
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
// set Implicit tContextLoad file
String fileName = ElementParameterParser.parse(process, "__COMP_DEFAULT_FILE_DIR__/in.csv"); //$NON-NLS-1$
IPath path = Path.fromOSString(fileName);
fileName = TalendTextUtils.addQuotes(path.toPortableString());
param = new ElementParameter(process);
param.setName(EParameterName.IMPLICIT_TCONTEXTLOAD_FILE.getName());
param.setValue(fileName);
param.setDisplayName(EParameterName.IMPLICIT_TCONTEXTLOAD_FILE.getDisplayName());
param.setFieldType(EParameterFieldType.FILE);
param.setCategory(EComponentCategory.EXTRA);
param.setGroup(IMPLICIT_GROUP);
param.setNumRow(31);
String condition = JobSettingsConstants.addBrackets(CONTEXTLOAD_CONDITION)
+ " and " //$NON-NLS-1$
+ JobSettingsConstants.addBrackets(JobSettingsConstants.getExtraParameterName(EParameterName.FROM_FILE_FLAG
.getName()) + " == 'true'"); //$NON-NLS-1$
param.setShowIf(condition);
paramList.add(param);
param = new ElementParameter(process);
param.setName(EParameterName.FIELDSEPARATOR.getName());
String value = ";"; //$NON-NLS-1$
value = TalendTextUtils.addQuotes(value);
param.setValue(value);
param.setDisplayName(EParameterName.FIELDSEPARATOR.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setGroup(IMPLICIT_GROUP);
param.setNumRow(32);
condition = JobSettingsConstants.addBrackets(CONTEXTLOAD_CONDITION)
+ " and " //$NON-NLS-1$
+ JobSettingsConstants.addBrackets(JobSettingsConstants.getExtraParameterName(EParameterName.FROM_FILE_FLAG
.getName()) + " == 'true'"); //$NON-NLS-1$
param.setShowIf(condition);
paramList.add(param);
return paramList;
}
private static List<IElementParameter> getExtraOnDBParameters(IProcess process) {
ElementParameter param;
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
String languagePrefix = LanguageManager.getCurrentLanguage().toString() + "_"; //$NON-NLS-1$
// checks current language, if it is perl, set languageType to 0(default value), otherwise to 1.
int languageType = 0;
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
languageType = 1;
}
final String onDBCondition = JobSettingsConstants.getExtraParameterName(EParameterName.FROM_DATABASE_FLAG.getName())
+ " == 'true'"; //$NON-NLS-1$
final String dbCondition = JobSettingsConstants.addBrackets(CONTEXTLOAD_CONDITION)
+ " and " + JobSettingsConstants.addBrackets(onDBCondition); //$NON-NLS-1$
// property type
ElementParameter parentPropertyType = new ElementParameter(process);
parentPropertyType.setName(JobSettingsConstants.getExtraParameterName(EParameterName.PROPERTY_TYPE.getName()));
parentPropertyType.setDisplayName(EParameterName.PROPERTY_TYPE.getDisplayName());
parentPropertyType.setValue(""); //$NON-NLS-1$
parentPropertyType.setCategory(EComponentCategory.EXTRA);
parentPropertyType.setFieldType(EParameterFieldType.PROPERTY_TYPE);
parentPropertyType.setRepositoryValue(ERepositoryCategoryType.DATABASE.getName());
parentPropertyType.setNumRow(41);
parentPropertyType.setShowIf(dbCondition);
parentPropertyType.setGroup(IMPLICIT_GROUP);
paramList.add(parentPropertyType);
param = new ElementParameter(process);
param.setName(EParameterName.PROPERTY_TYPE.getName());
param.setDisplayName(EParameterName.PROPERTY_TYPE.getDisplayName());
param.setListItemsDisplayName(new String[] { EmfComponent.TEXT_BUILTIN, EmfComponent.TEXT_REPOSITORY });
param.setListItemsDisplayCodeName(new String[] { EmfComponent.BUILTIN, EmfComponent.REPOSITORY });
param.setListItemsValue(new String[] { EmfComponent.BUILTIN, EmfComponent.REPOSITORY });
param.setValue(EmfComponent.BUILTIN);
param.setCategory(EComponentCategory.EXTRA);
param.setFieldType(EParameterFieldType.TECHNICAL);
param.setRepositoryValue(ERepositoryCategoryType.DATABASE.getName());
param.setNumRow(41);
param.setShowIf(dbCondition);
param.setGroup(IMPLICIT_GROUP);
param.setParentParameter(parentPropertyType);
// paramList.add(param);
// repository property type
param = new ElementParameter(process);
param.setName(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
param.setDisplayName(EParameterName.REPOSITORY_PROPERTY_TYPE.getDisplayName());
param.setListItemsDisplayName(new String[] {});
param.setListItemsValue(new String[] {});
// param.setValue(""); //$NON-NLS-1$
param.setCategory(EComponentCategory.EXTRA);
param.setFieldType(EParameterFieldType.TECHNICAL);
param.setShow(false);
param.setRequired(true);
param.setNumRow(41);
param.setGroup(IMPLICIT_GROUP);
param.setParentParameter(parentPropertyType);
// paramList.add(param);
// dbType
final String dbTypeName = JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName());
param = new ElementParameter(process);
param.setName(dbTypeName);
param.setDisplayName(EParameterName.DB_TYPE.getDisplayName());
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.EXTRA);
param.setListItemsDisplayName(StatsAndLogsConstants.DISPLAY_DBNAMES[languageType]);
param.setListItemsValue(JobSettingsConstants.DB_INPUT_COMPONENTS[languageType]);
param.setListRepositoryItems(StatsAndLogsConstants.REPOSITORY_ITEMS[languageType]);
param.setListItemsDisplayCodeName(StatsAndLogsConstants.CODE_LIST[languageType]);
param.setValue("");
param.setNumRow(42);
param.setRepositoryValue("TYPE"); //$NON-NLS-1$
param.setRequired(true);
param.setShowIf(dbCondition);
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// dbVersion
final String dbVersionName = JobSettingsConstants.getExtraParameterName(EParameterName.DB_VERSION.getName());
if (process.getElementParameter(dbVersionName) == null) {
param = new ElementParameter(process);
param.setName(dbVersionName);
param.setValue(StatsAndLogsConstants.DB_VERSION_DRIVER[1]);
param.setDisplayName(EParameterName.DB_VERSION.getDisplayName());
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.EXTRA);
param.setListItemsDisplayName(StatsAndLogsConstants.DB_VERSION_DISPLAY);
param.setListItemsValue(StatsAndLogsConstants.DB_VERSION_DRIVER);
param.setListItemsDisplayCodeName(StatsAndLogsConstants.DB_VERSION_CODE);
param.setNumRow(42);
param.setRepositoryValue("DB_VERSION"); //$NON-NLS-1$
param.setRequired(true);
param.setShowIf(dbCondition
+ " and (" + dbTypeName + " == 'OCLE' or " + dbTypeName + " == 'OCLE_OCI' or " + dbTypeName + " =='ACCESS' or " + dbTypeName + " =='MYSQL') "); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
}
// jdbc url
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.URL.getName()));
param.setValue(StatsAndLogsManager.addQuotes(preferenceStore.getString(languagePrefix + EParameterName.URL.getName())));
param.setDisplayName(EParameterName.URL.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(43);
param.setRepositoryValue("URL"); //$NON-NLS-1$
String dbCon = dbTypeName + " == 'JDBC'";
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// jdbc child param
List<ModuleNeeded> moduleNeededList = ModulesNeededProvider.getModulesNeeded();
Set<String> moduleNameList = new TreeSet<String>();
Set<String> moduleValueList = new TreeSet<String>();
for (ModuleNeeded module : moduleNeededList) {
String moduleName = module.getModuleName();
if (moduleName != null) {
moduleNameList.add(moduleName);
moduleValueList.add(TalendTextUtils.addQuotes(moduleName));
}
}
Comparator<String> comprarator = new IgnoreCaseComparator();
String[] moduleNameArray = moduleNameList.toArray(new String[0]);
String[] moduleValueArray = moduleValueList.toArray(new String[0]);
Arrays.sort(moduleNameArray, comprarator);
Arrays.sort(moduleValueArray, comprarator);
ElementParameter childParam = new ElementParameter(process);
childParam.setName("JAR_NAME");
childParam.setDisplayName("JAR_NAME");
childParam.setFieldType(EParameterFieldType.MODULE_LIST);
childParam.setListItemsDisplayName(moduleNameArray);
childParam.setListItemsValue(moduleValueArray);
// driver jar for jdbc
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_JAR.getName()));
param.setDisplayName(EParameterName.DRIVER_JAR.getDisplayName());
param.setFieldType(EParameterFieldType.TABLE);
param.setListItemsDisplayCodeName(new String[] { "JAR_NAME" });
param.setListItemsDisplayName(new String[] { "Jar Name" });
param.setListItemsValue(new ElementParameter[] { childParam });
param.setValue(new ArrayList<Map<String, Object>>());
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(44);
param.setRepositoryValue("DRIVER_JAR"); //$NON-NLS-1$
dbCon = dbTypeName + " == 'JDBC'";
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// class name for jdbc
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_CLASS.getName()));
param.setValue(StatsAndLogsManager.addQuotes(preferenceStore.getString(languagePrefix
+ EParameterName.DRIVER_CLASS.getName())));
param.setDisplayName(EParameterName.DRIVER_CLASS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(45);
param.setRepositoryValue("DRIVER_CLASS"); //$NON-NLS-1$
dbCon = dbTypeName + " == 'JDBC'";
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// host
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.HOST.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.HOST.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(46);
param.setRepositoryValue("SERVER_NAME"); //$NON-NLS-1$
dbCon = dbTypeName
+ " != 'SQLITE'" + " and " + dbTypeName + " != 'ACCESS'" + " and " + dbTypeName + "!='OCLE_OCI'" + " and " + dbTypeName + "!='JDBC'" + " and " + dbTypeName + "!='ODBC'"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$//$NON-NLS-5$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// port
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.PORT.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.PORT.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(46);
param.setRepositoryValue("PORT"); //$NON-NLS-1$
dbCon = dbTypeName
+ " != 'SQLITE'" + " and " + dbTypeName + " != 'ACCESS'" + " and " + dbTypeName + " != 'FIREBIRD'" + " and " + dbTypeName + "!='OCLE_OCI'" + " and " + dbTypeName + "!='JDBC'" + " and " + dbTypeName + "!='ODBC'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$//$NON-NLS-6$//$NON-NLS-7$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// dbName
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.DBNAME.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.DBNAME.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(47);
param.setRepositoryValue("SID"); //$NON-NLS-1$
dbCon = dbTypeName
+ " != 'SQLITE'" + " and " + dbTypeName + " != 'ACCESS'" + " and " + dbTypeName + " != 'FIREBIRD'" + " and " + dbTypeName + "!='OCLE_OCI'" + " and " + dbTypeName + "!='JDBC'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$//$NON-NLS-6$//$NON-NLS-7$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// local service name
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.LOCAL_SERVICE_NAME.getName()));
param.setValue(StatsAndLogsManager.addQuotes(""));
param.setDisplayName(EParameterName.LOCAL_SERVICE_NAME.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(47);
param.setRepositoryValue("SID"); //$NON-NLS-1$
dbCon = dbTypeName + " =='OCLE_OCI' ";
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
// additional parameters
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.PROPERTIES.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.PROPERTIES.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(47);
param.setRepositoryValue("PROPERTIES_STRING"); //$NON-NLS-1$
dbCon = dbTypeName
+ " == 'MSSQL'" + " or " + dbTypeName + " == 'MYSQL'" + " or " + dbTypeName //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ " == 'INFORMIX'" + " or " + dbTypeName + " == 'OCLE'" + " or " + dbTypeName + " == 'OCLE_OCI'" + " or " + dbTypeName + " == 'SYBASE'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
}
// schema
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.SCHEMA_DB.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.SCHEMA_DB.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(47);
param.setRepositoryValue("SCHEMA"); //$NON-NLS-1$
final String schemaCondition = JobSettingsConstants
.addBrackets(dbTypeName
+ " =='OCLE' or " + dbTypeName //$NON-NLS-1$
+ " =='POSTGRESQL' or " + dbTypeName + " =='POSTGRESPLUS' or " + dbTypeName + " =='OCLE_OCI' or " + dbTypeName + " =='MSSQL' or " + dbTypeName + " =='INFORMIX'"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$//$NON-NLS-5$
param.setShowIf(schemaCondition + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// username
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.USER.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.USER.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(48);
param.setRequired(true);
param.setRepositoryValue("USERNAME"); //$NON-NLS-1$
dbCon = dbTypeName + " != 'SQLITE'"; //$NON-NLS-1$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// password
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.PASS.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.PASS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(48);
param.setRequired(true);
param.setRepositoryValue("PASSWORD"); //$NON-NLS-1$
dbCon = dbTypeName + " != 'SQLITE'"; //$NON-NLS-1$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// databse file path
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.DBFILE.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.DBFILE.getDisplayName());
param.setFieldType(EParameterFieldType.FILE);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(49);
param.setRepositoryValue("FILE"); //$NON-NLS-1$
dbCon = dbTypeName + " == 'SQLITE'" + " or " + dbTypeName + " == 'ACCESS'" + " or " + dbTypeName + " == 'FIREBIRD'"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
param.setShowIf(JobSettingsConstants.addBrackets(dbCon) + " and " + dbCondition); //$NON-NLS-1$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// table
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.DBTABLE.getName()));
param.setValue(StatsAndLogsManager.addQuotes("")); //$NON-NLS-1$
param.setDisplayName(EParameterName.DBTABLE.getDisplayName());
param.setFieldType(EParameterFieldType.DBTABLE);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(50);
param.setShowIf(dbCondition);
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
// query condition
param = new ElementParameter(process);
param.setName(JobSettingsConstants.getExtraParameterName(EParameterName.QUERY_CONDITION.getName()));
param.setValue(QUOTE + QUOTE);
param.setDisplayName(EParameterName.QUERY_CONDITION.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(51);
param.setShowIf(dbCondition);
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
return paramList;
}
private final static class IgnoreCaseComparator implements Comparator<String> {
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}
private static List<IElementParameter> getExtraContextLoadParameters(IProcess process) {
ElementParameter param;
List<IElementParameter> paramList = new ArrayList<IElementParameter>();
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
final String[] itemValues = new String[] { ContextLoadInfo.ERROR.getDisplayName(),
ContextLoadInfo.WARNING.getDisplayName(), ContextLoadInfo.INFO.getDisplayName() };
//
param = new ElementParameter(process);
param.setName(EParameterName.LOAD_NEW_VARIABLE.getName());
param.setDisplayName(EParameterName.LOAD_NEW_VARIABLE.getDisplayName());
param.setValue(ContextLoadInfo.WARNING.getDisplayName());
param.setListItemsDisplayName(itemValues);
param.setListItemsValue(itemValues);
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(80);
param.setShowIf(CONTEXTLOAD_CONDITION);
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
//
param = new ElementParameter(process);
param.setName(EParameterName.NOT_LOAD_OLD_VARIABLE.getName());
param.setDisplayName(EParameterName.NOT_LOAD_OLD_VARIABLE.getDisplayName());
param.setValue(ContextLoadInfo.WARNING.getDisplayName());
param.setListItemsDisplayName(itemValues);
param.setListItemsValue(itemValues);
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(81);
param.setShowIf(CONTEXTLOAD_CONDITION);
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
}
// print operations
param = new ElementParameter(process);
param.setName(EParameterName.PRINT_OPERATIONS.getName());
param.setValue(false);
param.setDisplayName(EParameterName.PRINT_OPERATIONS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(82);
param.setRequired(true);
param.setShowIf("((PRINT_OPERATIONS == 'true' or PRINT_OPERATIONS == 'false') and " + CONTEXTLOAD_CONDITION + ")"); //$NON-NLS-1$ //$NON-NLS-2$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
// disable error
param = new ElementParameter(process);
param.setName(EParameterName.DISABLE_ERROR.getName());
param.setValue(false);
param.setDisplayName(EParameterName.DISABLE_ERROR.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(83);
param.setRequired(true);
param.setShowIf("((DISABLE_ERROR == 'true' or DISABLE_ERROR == 'false') and " + CONTEXTLOAD_CONDITION + ")"); //$NON-NLS-1$ //$NON-NLS-2$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
}
// disable warnings
param = new ElementParameter(process);
param.setName(EParameterName.DISABLE_WARNINGS.getName());
param.setValue(true);
param.setDisplayName(EParameterName.DISABLE_WARNINGS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(83);
param.setRequired(true);
param.setShowIf("((DISABLE_WARNINGS == 'true' or DISABLE_WARNINGS == 'false') and " + CONTEXTLOAD_CONDITION + ")"); //$NON-NLS-1$ //$NON-NLS-2$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
// disable info
param = new ElementParameter(process);
param.setName(EParameterName.DISABLE_INFO.getName());
param.setValue(true);
param.setDisplayName(EParameterName.DISABLE_INFO.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.EXTRA);
param.setNumRow(83);
param.setRequired(true);
param.setShowIf("((DISABLE_INFO == 'true' or DISABLE_INFO == 'false') and " + CONTEXTLOAD_CONDITION + ")"); //$NON-NLS-1$ //$NON-NLS-2$
param.setGroup(IMPLICIT_GROUP);
paramList.add(param);
}
return paramList;
}
/**
*
* DOC ggu Comment method "isStatsAndLogsActivated".
*
* for stats & logs settings
*/
public static boolean isStatsAndLogsActivated(IProcess process) {
return StatsAndLogsManager.isStatsAndLogsActivated(process);
}
public static List<DataNode> createStatsAndLogsNodes(IProcess process) {
return StatsAndLogsManager.getStatsAndLogsNodes(process);
}
/**
*
* DOC ggu Comment method "isImplicittContextLoadActived".
*
* for implictit tContextLoad in extra settings
*/
public static boolean isImplicittContextLoadActived(IProcess process) {
String paramName = EParameterName.IMPLICIT_TCONTEXTLOAD.getName();
boolean useContextLoad = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
if (!useContextLoad) {
// not used
return false;
}
// file
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.FROM_FILE_FLAG.getName());
boolean fileFlag = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
// db
String dbInput = null;
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.FROM_DATABASE_FLAG.getName());
boolean dbFlag = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
if (!dbFlag) {
dbInput = null;
} else {
dbInput = (String) process.getElementParameter(
JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName())).getValue();
if (dbInput == null || dbInput.equals("")) { //$NON-NLS-1$
dbInput = null;
dbFlag = false;
}
}
if (!fileFlag && !dbFlag) {
// not used
return false;
}
return true;
}
public static List<DataNode> createExtraContextLoadNodes(IProcess process) {
List<DataNode> nodeList = new ArrayList<DataNode>();
String paramName = EParameterName.IMPLICIT_TCONTEXTLOAD.getName();
boolean useContextLoad = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
if (!useContextLoad) {
// not used
return Collections.emptyList();
}
// file
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.FROM_FILE_FLAG.getName());
boolean fileFlag = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
// db
String dbInput = null;
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.FROM_DATABASE_FLAG.getName());
boolean dbFlag = ((Boolean) process.getElementParameter(paramName).getValue())
&& process.getElementParameter(paramName).isShow(process.getElementParameters());
if (!dbFlag) {
dbInput = null;
} else {
dbInput = (String) process.getElementParameter(
JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName())).getValue();
dbInput = OracleComponentHelper.filterOracleComponentName(dbInput);
if (dbInput == null || dbInput.equals("")) { //$NON-NLS-1$
dbInput = null;
dbFlag = false;
}
}
if (!fileFlag && !dbFlag) {
// not used
return Collections.emptyList();
}
IComponent tContextLoadComponent = new JobContextLoadComponent(fileFlag, dbInput);
final String uniqueName = "Implicit_Context"; //$NON-NLS-1$
DataNode tContextLoadNode = new DataNode(tContextLoadComponent, uniqueName);
tContextLoadNode.setStart(true);
tContextLoadNode.setSubProcessStart(true);
tContextLoadNode.setActivate(true);
IMetadataTable table = getSchemaTablefromComponent(JobContextLoadComponent.CONTEXTLOAD_COMPONENT, uniqueName);
if (table != null) {
tContextLoadNode.getMetadataList().clear();
tContextLoadNode.getMetadataList().add(table);
}
// set parameters
IElementParameter param = null;
if (fileFlag) {
// is file
String inputFile = (String) process.getElementParameter(EParameterName.IMPLICIT_TCONTEXTLOAD_FILE.getName())
.getValue();
String fileSparator = (String) process.getElementParameter(EParameterName.FIELDSEPARATOR.getName()).getValue();
tContextLoadNode.getElementParameter(EParameterName.IMPLICIT_TCONTEXTLOAD_FILE.getName()).setValue(inputFile);
tContextLoadNode.getElementParameter(EParameterName.FIELDSEPARATOR.getName()).setValue(fileSparator);
} else {
// is db
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.URL.getName());
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_JAR.getName());
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_CLASS.getName());
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.HOST.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.PORT.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DBNAME.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DB_VERSION.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.PROPERTIES.getName());
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.SCHEMA_DB.getName());
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
String schema = (String) process.getElementParameter(paramName).getValue();
if (schema != null) {
schema = TalendTextUtils.removeQuotes(schema);
}
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.USER.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.PASS.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.CONNECTION_TYPE.getName());
tContextLoadNode.getElementParameter(paramName).setValue(
OracleComponentHelper.filterOracleConnectionType((String) process.getElementParameter(
JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName())).getValue()));
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DBTABLE.getName());
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
// query
String dbTableName = (String) process.getElementParameter(paramName).getValue();
String realTableName = getCurrentTableName(dbTableName);
if (realTableName == null) {
realTableName = QueryUtil.DEFAULT_TABLE_NAME;
}
String dbType = getDatabaseTypeFromParameter(process);
if (dbType != null) {
// TDI-18161:the SQL script's syntax is not right because of the implicit context of General JDBC.
if (dbType.equals(EDatabaseTypeName.GENERAL_JDBC.getDisplayName())) {
dbType = findRealDbTypeForJDBC(process, dbType);
}
EDatabaseTypeName dbTypeName = EDatabaseTypeName.getTypeFromDbType(dbType);
if (EDatabaseTypeName.ORACLE_OCI.equals(dbTypeName) || EDatabaseTypeName.ORACLEFORSID.equals(dbTypeName)
|| EDatabaseTypeName.ORACLESN.equals(dbTypeName)) {
for (IMetadataColumn column : table.getListColumns()) {
column.setOriginalDbColumnName(column.getOriginalDbColumnName().toUpperCase());
}
}
if (realTableName.startsWith(TalendTextUtils.QUOTATION_MARK)
&& realTableName.endsWith(TalendTextUtils.QUOTATION_MARK) && realTableName.length() > 2) {
realTableName = realTableName.substring(1, realTableName.length() - 1);
}
String query = TalendTextUtils.addSQLQuotes(QueryUtil
.generateNewQuery(null, table, dbType, schema, realTableName));
paramName = JobSettingsConstants.getExtraParameterName(EParameterName.QUERY_CONDITION.getName());
String conditionStatement = (String) process.getElementParameter(paramName).getValue();
if (conditionStatement != null) {
String tmp = TalendTextUtils.removeQuotes(conditionStatement);
if (!"".equals(tmp)) { //$NON-NLS-1$
query = query + CONNECTOR + QUOTE + " WHERE " + QUOTE + CONNECTOR + conditionStatement; //$NON-NLS-1$
}
}
final String quoteByDBType = TalendTextUtils.getQuoteByDBType(dbType, false);
if (dbTypeName == EDatabaseTypeName.MSSQL) {
query = query.replaceAll("(?i)\bkey\b", //$NON-NLS-1$
"\\\\" + quoteByDBType + "key\\\\" + quoteByDBType); //$NON-NLS-1$ //$NON-NLS-2$
}
tContextLoadNode.getElementParameter(JobSettingsConstants.QUERY).setValue(query);
}
}
// tContextLoad
paramName = EParameterName.LOAD_NEW_VARIABLE.getName();
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = EParameterName.NOT_LOAD_OLD_VARIABLE.getName();
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = EParameterName.PRINT_OPERATIONS.getName();
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
paramName = EParameterName.DISABLE_ERROR.getName();
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = EParameterName.DISABLE_INFO.getName();
param = process.getElementParameter(paramName);
if (param != null) {
tContextLoadNode.getElementParameter(paramName).setValue(param.getValue());
}
paramName = EParameterName.DISABLE_WARNINGS.getName();
tContextLoadNode.getElementParameter(paramName).setValue(process.getElementParameter(paramName).getValue());
tContextLoadNode.setProcess(process);
nodeList.add(tContextLoadNode);
return nodeList;
}
private static IMetadataTable getSchemaTablefromComponent(final String componentName, final String tableName) {
IComponent tmpComponent = ComponentsFactoryProvider.getInstance().get(componentName);
DataNode tmpNode = new DataNode(tmpComponent, "tmp"); //$NON-NLS-1$
for (int k = 0; k < tmpNode.getElementParameters().size(); k++) {
IElementParameter currentParam = tmpNode.getElementParameters().get(k);
if (currentParam.getFieldType().equals(EParameterFieldType.SCHEMA_TYPE)) {
Object value = currentParam.getValue();
if (value instanceof IMetadataTable) {
IMetadataTable table = null;
if (LanguageManager.getCurrentLanguage().equals(ECodeLanguage.JAVA)) {
table = ((IMetadataTable) value).clone(true);
} else {
table = ((IMetadataTable) value).clone();
}
table.setTableName(tableName);
table.setAttachedConnector(currentParam.getContext());
return table;
}
}
}
return null;
}
private static String getCurrentTableName(String dbTableName) {
String currentTableName = null;
if (dbTableName == null) {
dbTableName = QueryUtil.DEFAULT_TABLE_NAME;
} else {
switch (LanguageManager.getCurrentLanguage()) {
case JAVA:
if (dbTableName.contains(TalendTextUtils.QUOTATION_MARK)) {
if (dbTableName.startsWith(TalendTextUtils.QUOTATION_MARK)
&& dbTableName.endsWith(TalendTextUtils.QUOTATION_MARK) && dbTableName.length() > 2) {
currentTableName = dbTableName.substring(1, dbTableName.length() - 1);
} else {
currentTableName = null;
}
} else {
currentTableName = dbTableName;
}
break;
default:
if (dbTableName.contains(TalendTextUtils.SINGLE_QUOTE)) {
if (dbTableName.startsWith(TalendTextUtils.SINGLE_QUOTE)
&& dbTableName.endsWith(TalendTextUtils.SINGLE_QUOTE) && dbTableName.length() > 2) {
currentTableName = dbTableName.substring(1, dbTableName.length() - 1);
} else {
currentTableName = null;
}
} else {
currentTableName = dbTableName;
}
}
}
return currentTableName;
}
private static String getDatabaseTypeFromParameter(IProcess process) {
String paramName = JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName());
IElementParameter param = process.getElementParameter(paramName);
String value = (String) param.getValue();
if (value != null && param.getName().equals(JobSettingsConstants.getExtraParameterName(EParameterName.DB_TYPE.getName()))) {
for (int i = 0; i < param.getListItemsValue().length; i++) {
Object obj = param.getListItemsValue()[i];
String itemValue = (String) obj;
if (itemValue.equals(value)) {
return param.getListItemsDisplayName()[i];
}
}
}
return null;
}
private static String findRealDbTypeForJDBC(IProcess process, String originalDbType) {
String realDbTypeForJDBC = null;
String driverJarValue = process
.getElementParameter(JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_JAR.getName())).getValue()
.toString();
String driverClassValue = process
.getElementParameter(JobSettingsConstants.getExtraParameterName(EParameterName.DRIVER_CLASS.getName()))
.getValue().toString();
driverClassValue = TalendTextUtils.removeQuotes(driverClassValue);
if (driverClassValue != null && !"".equals(driverClassValue)) {
boolean isContextModeDriverClass = ContextParameterUtils.containContextVariables(driverClassValue);
if (isContextModeDriverClass) {
driverClassValue = JavaProcessUtil.getContextOriginalValue(process, driverClassValue);
}
}
if (driverJarValue != null && driverJarValue.startsWith("[") && driverJarValue.endsWith("]")) { //$NON-NLS-N$ //$NON-NLS-N$
driverJarValue = driverJarValue.substring(1, driverJarValue.length() - 1);
if (driverJarValue != null && driverJarValue.startsWith("{") && driverJarValue.endsWith("}")) { //$NON-NLS-N$ //$NON-NLS-N$
driverJarValue = driverJarValue.substring(1, driverJarValue.length() - 1);
}
}
if (driverJarValue != null && !"".equals(driverJarValue)) {
boolean isContextMode = ContextParameterUtils.containContextVariables(driverJarValue);
if (isContextMode) {
driverJarValue = JavaProcessUtil.getContextOriginalValue(process, driverJarValue);
}
realDbTypeForJDBC = ExtractMetaDataUtils.getDbTypeByClassNameAndDriverJar(driverClassValue, driverJarValue);
} else {
realDbTypeForJDBC = ExtractMetaDataUtils.getDbTypeByClassName(driverClassValue);
}
return realDbTypeForJDBC;
}
}