// ============================================================================
//
// 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.ui.projectsetting;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.jface.preference.IPreferenceStore;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.core.language.ECodeLanguage;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.general.Project;
import org.talend.core.model.metadata.builder.connection.Connection;
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.Element;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.IProcess2;
import org.talend.core.model.properties.ConnectionItem;
import org.talend.core.model.properties.Item;
import org.talend.core.model.properties.PropertiesFactory;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.StatAndLogsSettings;
import org.talend.core.model.repository.IRepositoryViewObject;
import org.talend.core.model.utils.TalendTextUtils;
import org.talend.core.repository.model.ProxyRepositoryFactory;
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.utils.emf.talendfile.ParametersType;
import org.talend.designer.core.model.utils.emf.talendfile.TalendFileFactory;
import org.talend.designer.core.ui.AbstractMultiPageTalendEditor;
import org.talend.designer.core.ui.editor.cmd.ChangeValuesFromRepository;
import org.talend.designer.core.ui.preferences.StatsAndLogsConstants;
import org.talend.designer.core.ui.views.jobsettings.ImplicitContextLoadHelper;
import org.talend.designer.core.ui.views.statsandlogs.StatsAndLogsComposite;
import org.talend.librariesmanager.model.ModulesNeededProvider;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
* Helper class for Load StatsAndLogs Preferences to EMF project in Project setting
*/
public class StatsAndLogsHelper extends Utils {
public static final String ENCODING_TYPE_UTF_8 = "UTF-8"; //$NON-NLS-1$
public static final String ENCODING_TYPE_ISO_8859_15 = "ISO-8859-15"; //$NON-NLS-1$
public static final String ENCODING_TYPE_CUSTOM = "CUSTOM"; //$NON-NLS-1$
/**
*
* Load StatsAndLogs Preference setting to Project Only load Once
*
* @param pro
*/
static void loadPreferenceToProject(Project pro) {
TalendFileFactory talendF = TalendFileFactory.eINSTANCE;
StatAndLogsSettings stats = PropertiesFactory.eINSTANCE.createStatAndLogsSettings();
pro.getEmfProject().setStatAndLogsSettings(stats);
stats.setParameters(talendF.createParametersType());
ParametersType pType = stats.getParameters();
StatsAndLogsElement elem = new StatsAndLogsElement();
pro.setStatsAndLog(elem);
StatsAndLogsHelper.createStatsAndLogsParameters(elem);
ElementParameter2ParameterType.saveElementParameters(elem, pType);
}
static void createStatsAndLogsParameters(Element elem) {
statsAndLogsParametersTitlePart(elem);
statsAndLogsParametersFilePart(elem);
statsAndLogsParametersDBPart(elem);
statsAndLogsParametersFinalPart(elem);
}
private static void statsAndLogsParametersTitlePart(Element elem) {
ElementParameter param;
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
List<IElementParameter> paramList = (List<IElementParameter>) elem.getElementParameters();
String languagePrefix = LanguageManager.getCurrentLanguage().toString() + "_"; //$NON-NLS-1$
param = new ElementParameter(elem);
param.setName(EParameterName.UPDATE_COMPONENTS.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.UPDATE_COMPONENTS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(1);
param.setReadOnly(true);
param.setRequired(false);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.STATS_DEFAULT_PROJECTSETTING.getName());
param.setValue(Boolean.TRUE);
param.setGroupDisplayName(EParameterName.STATS_DEFAULT_PROJECTSETTING.getDisplayName());
param.setDisplayName(EParameterName.STATS_DEFAULT_PROJECTSETTING.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(3);
param.setShow(false);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.ON_STATCATCHER_FLAG.getName());
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.ON_STATCATCHER_FLAG.getName()));
param.setDisplayName(EParameterName.ON_STATCATCHER_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(1);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.ON_LOGCATCHER_FLAG.getName());
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.ON_LOGCATCHER_FLAG.getName()));
param.setDisplayName(EParameterName.ON_LOGCATCHER_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(1);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.ON_METERCATCHER_FLAG.getName());
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.ON_METERCATCHER_FLAG.getName()));
param.setDisplayName(EParameterName.ON_METERCATCHER_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(1);
paramList.add(param);
// on console
param = new ElementParameter(elem);
param.setName(EParameterName.ON_CONSOLE_FLAG.getName());
param.setValue(Boolean.FALSE);
param.setDisplayName(EParameterName.ON_CONSOLE_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(2);
param.setShowIf("(ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
}
private static void statsAndLogsParametersFilePart(Element elem) {
ElementParameter param;
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
List<IElementParameter> paramList = (List<IElementParameter>) elem.getElementParameters();
String languagePrefix = LanguageManager.getCurrentLanguage().toString() + "_"; //$NON-NLS-1$
// on files
param = new ElementParameter(elem);
param.setName(EParameterName.ON_FILES_FLAG.getName());
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.ON_FILES_FLAG.getName()));
param.setDisplayName(EParameterName.ON_FILES_FLAG.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(10);
param.setShowIf("(ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// file path
param = new ElementParameter(elem);
param.setName(EParameterName.FILE_PATH.getName());
param.setValue(addQuotes(replaceSlash(preferenceStore.getString(languagePrefix + EParameterName.FILE_PATH.getName()))));
param.setDisplayName(EParameterName.FILE_PATH.getDisplayName());
param.setFieldType(EParameterFieldType.DIRECTORY);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setShowIf("(ON_FILES_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
param.setNumRow(11);
paramList.add(param);
// stats file name
param = new ElementParameter(elem);
param.setName(EParameterName.FILENAME_STATS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.FILENAME_STATS.getName())));
param.setDisplayName(EParameterName.FILENAME_STATS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setShowIf("(ON_FILES_FLAG == 'true' and ON_STATCATCHER_FLAG == 'true')"); //$NON-NLS-1$
param.setRequired(true);
param.setNumRow(12);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.FILENAME_LOGS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.FILENAME_LOGS.getName())));
param.setDisplayName(EParameterName.FILENAME_LOGS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setShowIf("(ON_FILES_FLAG == 'true' and ON_LOGCATCHER_FLAG == 'true')"); //$NON-NLS-1$
param.setNumRow(13);
param.setRequired(true);
paramList.add(param);
param = new ElementParameter(elem);
param.setName(EParameterName.FILENAME_METTER.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.FILENAME_METTER.getName())));
param.setDisplayName(EParameterName.FILENAME_METTER.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setShowIf("(ON_FILES_FLAG == 'true' and ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
param.setRequired(true);
param.setNumRow(14);
paramList.add(param);
// stats log encoding
ElementParameter encodingParam = new ElementParameter(elem);
encodingParam.setName(EParameterName.ENCODING.getName()); //$NON-NLS-1$
encodingParam.setDisplayName(EParameterName.ENCODING.getDisplayName());//$NON-NLS-1$
encodingParam.setCategory(EComponentCategory.STATSANDLOGS);
encodingParam.setFieldType(EParameterFieldType.ENCODING_TYPE);
encodingParam
.setShowIf("(ON_FILES_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
encodingParam.setValue(ENCODING_TYPE_ISO_8859_15);
encodingParam.setNumRow(15);
paramList.add(encodingParam);
ElementParameter childPram = new ElementParameter(elem);
childPram.setName(EParameterName.ENCODING_TYPE.getName());
childPram.setDisplayName(EParameterName.ENCODING_TYPE.getDisplayName());
childPram.setFieldType(EParameterFieldType.TECHNICAL);
childPram.setCategory(EComponentCategory.STATSANDLOGS);
childPram.setListItemsDisplayName(new String[] { ENCODING_TYPE_ISO_8859_15, ENCODING_TYPE_UTF_8, ENCODING_TYPE_CUSTOM });
childPram
.setListItemsDisplayCodeName(new String[] { ENCODING_TYPE_ISO_8859_15, ENCODING_TYPE_UTF_8, ENCODING_TYPE_CUSTOM });
childPram.setListItemsValue(new String[] { ENCODING_TYPE_ISO_8859_15, ENCODING_TYPE_UTF_8, ENCODING_TYPE_CUSTOM });
childPram.setValue(ENCODING_TYPE_ISO_8859_15);
childPram.setNumRow(15);
childPram
.setShowIf("(ON_FILES_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
childPram.setParentParameter(encodingParam);
}
static void changeRepositoryConnection(Element process, StatsAndLogsComposite statsComposite) {
String propertyType = (String) ElementParameter2ParameterType.getParameterValue(process,
EParameterName.PROPERTY_TYPE.getName());
String id = (String) (ElementParameter2ParameterType.getParameterValue(process, EParameterName.PROPERTY_TYPE.getName()));
Connection repositoryConnection = null;
/* 16969 */
IProxyRepositoryFactory factory = ProxyRepositoryFactory.getInstance();
Item item = null;
try {
IRepositoryViewObject repobj = factory.getLastVersion(id);
if (repobj != null) {
Property tmpproperty = repobj.getProperty();
if (tmpproperty != null) {
item = tmpproperty.getItem();
}
}
} catch (PersistenceException e) {
ExceptionHandler.process(e);
}
if (item != null && item instanceof ConnectionItem) {
repositoryConnection = ((ConnectionItem) item).getConnection();
} else {
repositoryConnection = null;
}
ChangeValuesFromRepository cmd1 = new ChangeValuesFromRepository(process, repositoryConnection,
ImplicitContextLoadHelper.getExtraParameterName(EParameterName.PROPERTY_TYPE)
+ ":" + EParameterName.PROPERTY_TYPE.getName(), propertyType); //$NON-NLS-1$
ChangeValuesFromRepository cmd2 = new ChangeValuesFromRepository(process, repositoryConnection,
ImplicitContextLoadHelper.getExtraParameterName(EParameterName.PROPERTY_TYPE)
+ ":" + EParameterName.REPOSITORY_PROPERTY_TYPE.getName(), id); //$NON-NLS-1$
AbstractMultiPageTalendEditor part = (AbstractMultiPageTalendEditor) ((IProcess2) process).getEditor();
if (part instanceof AbstractMultiPageTalendEditor) {
Object adapter = (part).getTalendEditor().getAdapter(CommandStack.class);
if (adapter != null) {
CommandStack commandStack = ((CommandStack) adapter);
commandStack.execute(cmd1);
commandStack.execute(cmd2);
}
}
}
private static void statsAndLogsParametersDBPart(Element elem) {
ElementParameter param;
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
List<IElementParameter> paramList = (List<IElementParameter>) elem.getElementParameters();
// 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;
}
String languagePrefix = LanguageManager.getCurrentLanguage().toString() + "_"; //$NON-NLS-1$
// on database
param = new ElementParameter(elem);
param.setName(EParameterName.ON_DATABASE_FLAG.getName());
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.ON_DATABASE_FLAG.getName()));
param.setDisplayName(EParameterName.ON_DATABASE_FLAG.getDisplayName()); // On Database
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(50);
param.setShowIf("(ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
ElementParameter parentPropertyType = new ElementParameter(elem);
parentPropertyType.setName(EParameterName.PROPERTY_TYPE.getName());
parentPropertyType.setDisplayName(EParameterName.PROPERTY_TYPE.getDisplayName());
parentPropertyType.setValue(""); //$NON-NLS-1$
parentPropertyType.setCategory(EComponentCategory.STATSANDLOGS);
parentPropertyType.setFieldType(EParameterFieldType.PROPERTY_TYPE);
parentPropertyType.setRepositoryValue(ERepositoryCategoryType.DATABASE.getName());
parentPropertyType.setNumRow(51);
parentPropertyType
.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(parentPropertyType);
param = new ElementParameter(elem);
param.setCategory(EComponentCategory.STATSANDLOGS);
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(preferenceStore.getString(languagePrefix + EParameterName.PROPERTY_TYPE.getName()));
param.setNumRow(51);
param.setFieldType(EParameterFieldType.TECHNICAL);
param.setRepositoryValue(ERepositoryCategoryType.DATABASE.getName());
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
param.setParentParameter(parentPropertyType);
// paramList.add(param);
param = new ElementParameter(elem);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setName(EParameterName.REPOSITORY_PROPERTY_TYPE.getName());
param.setDisplayName(EParameterName.REPOSITORY_PROPERTY_TYPE.getDisplayName());
param.setListItemsDisplayName(new String[] {});
param.setListItemsValue(new String[] {});
param.setNumRow(51);
param.setFieldType(EParameterFieldType.TECHNICAL);
param.setValue(preferenceStore.getString(languagePrefix + EParameterName.REPOSITORY_PROPERTY_TYPE.getName()// +
// ProjectSettingManager
// .
// CONNECTION_ITEM_LABEL
)); //$NON-NLS-1$
param.setShow(false);
param.setRequired(true);
// paramList.add(param);
param.setParentParameter(parentPropertyType);
// dbType
param = new ElementParameter(elem);
param.setName(EParameterName.DB_TYPE.getName());
String type = preferenceStore.getString(languagePrefix + EParameterName.DB_TYPE.getName());
if (type == null || "".equals(type.trim())) { //$NON-NLS-1$
type = StatsAndLogsConstants.DB_COMPONENTS[languageType][0];
}
param.setValue(type);
param.setDisplayName(EParameterName.DB_TYPE.getDisplayName());
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setListItemsDisplayName(StatsAndLogsConstants.DISPLAY_DBNAMES[languageType]);
param.setListItemsValue(StatsAndLogsConstants.DB_COMPONENTS[languageType]);
param.setListRepositoryItems(StatsAndLogsConstants.REPOSITORY_ITEMS[languageType]);
param.setListItemsDisplayCodeName(StatsAndLogsConstants.CODE_LIST[languageType]);
param.setNumRow(52);
param.setRepositoryValue("TYPE"); //$NON-NLS-1$
param.setRequired(true);
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// dbVersion
param = new ElementParameter(elem);
param.setName(EParameterName.DB_VERSION.getName());
param.setValue(StatsAndLogsConstants.DB_VERSION_DRIVER[1]);
param.setDisplayName(EParameterName.DB_VERSION.getDisplayName());
param.setFieldType(EParameterFieldType.CLOSED_LIST);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setListItemsDisplayName(StatsAndLogsConstants.DB_VERSION_DISPLAY);
param.setListItemsValue(StatsAndLogsConstants.DB_VERSION_DRIVER);
param.setListItemsDisplayCodeName(StatsAndLogsConstants.DB_VERSION_CODE);
param.setNumRow(52);
param.setRepositoryValue("DB_VERSION"); //$NON-NLS-1$
param.setRequired(true);
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (DB_TYPE == 'OCLE' or DB_TYPE == 'OCLE_OCI' or DB_TYPE == 'ACCESS' or DB_TYPE == 'MYSQL') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// jdbc url
param = new ElementParameter(elem);
param.setName(EParameterName.URL.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.URL.getName())));
param.setDisplayName(EParameterName.URL.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(53);
param.setRepositoryValue("URL"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE=='JDBC')"); //$NON-NLS-1$
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(elem);
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(elem);
param.setName(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.STATSANDLOGS);
param.setNumRow(54);
param.setRepositoryValue("DRIVER_JAR"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE=='JDBC')"); //$NON-NLS-1$
paramList.add(param);
// class name for jdbc
param = new ElementParameter(elem);
param.setName(EParameterName.DRIVER_CLASS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.DRIVER_CLASS.getName())));
param.setDisplayName(EParameterName.DRIVER_CLASS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(57);
param.setRepositoryValue("DRIVER_CLASS"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE=='JDBC')"); //$NON-NLS-1$
paramList.add(param);
// host
param = new ElementParameter(elem);
param.setName(EParameterName.HOST.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.HOST.getName())));
param.setDisplayName(EParameterName.HOST.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(53);
param.setRepositoryValue("SERVER_NAME"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE!='SQLITE' and DB_TYPE!='ACCESS' and DB_TYPE!='OCLE_OCI' and DB_TYPE!='JDBC')"); //$NON-NLS-1$
paramList.add(param);
// port
param = new ElementParameter(elem);
param.setName(EParameterName.PORT.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.PORT.getName())));
param.setDisplayName(EParameterName.PORT.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(53);
param.setRepositoryValue("PORT"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE!='SQLITE' and DB_TYPE!='ACCESS' and DB_TYPE!='FIREBIRD' and DB_TYPE!='OCLE_OCI' and DB_TYPE!='JDBC')"); //$NON-NLS-1$
paramList.add(param);
// dbName
param = new ElementParameter(elem);
param.setName(EParameterName.DBNAME.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.DBNAME.getName())));
param.setDisplayName(EParameterName.DBNAME.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(54);
param.setRepositoryValue("SID"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE!='SQLITE' and DB_TYPE!='ACCESS' and DB_TYPE!='FIREBIRD' and DB_TYPE!='OCLE_OCI' and DB_TYPE!='JDBC')"); //$NON-NLS-1$
paramList.add(param);
// local service name
param = new ElementParameter(elem);
param.setName(EParameterName.LOCAL_SERVICE_NAME.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.LOCAL_SERVICE_NAME.getName())));
param.setDisplayName(EParameterName.LOCAL_SERVICE_NAME.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(54);
param.setRepositoryValue("SID"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and DB_TYPE =='OCLE_OCI'"); //$NON-NLS-1$
paramList.add(param);
// additional parameters
param = new ElementParameter(elem);
param.setName(EParameterName.PROPERTIES.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.PROPERTIES.getName())));
param.setDisplayName(EParameterName.PROPERTIES.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(54);
param.setRepositoryValue("PROPERTIES_STRING"); //$NON-NLS-1$
param.setShowIf("(DB_TYPE=='MSSQL' or DB_TYPE=='MYSQL' or DB_TYPE=='INFORMIX' or DB_TYPE=='OCLE' or DB_TYPE=='OCLE_OCI' or DB_TYPE=='SYBASE') and (ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// schema
param = new ElementParameter(elem);
param.setName(EParameterName.SCHEMA_DB.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.SCHEMA_DB.getName())));
param.setDisplayName(EParameterName.SCHEMA_DB.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(54);
param.setRepositoryValue("SCHEMA"); //$NON-NLS-1$
param.setShowIf("(DB_TYPE=='OCLE' or DB_TYPE=='OCLE_OCI' or DB_TYPE=='POSTGRESQL' or DB_TYPE=='POSTGRESPLUS' or DB_TYPE=='MSSQL' or DB_TYPE=='INFORMIX') and (ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// username
param = new ElementParameter(elem);
param.setName(EParameterName.USER.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.USER.getName())));
param.setDisplayName(EParameterName.USER.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(55);
param.setRequired(true);
param.setRepositoryValue("USERNAME"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')and (DB_TYPE!='SQLITE')"); //$NON-NLS-1$
paramList.add(param);
// password
param = new ElementParameter(elem);
param.setName(EParameterName.PASS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.PASS.getName())));
param.setDisplayName(EParameterName.PASS.getDisplayName());
param.setFieldType(EParameterFieldType.TEXT);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(55);
param.setRequired(true);
param.setRepositoryValue("PASSWORD"); //$NON-NLS-1$
param.setShowIf("(ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true') and (DB_TYPE!='SQLITE')"); //$NON-NLS-1$
paramList.add(param);
// databse file path
param = new ElementParameter(elem);
param.setName(EParameterName.DBFILE.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.DBFILE.getName())));
param.setDisplayName(EParameterName.DBFILE.getDisplayName());
param.setFieldType(EParameterFieldType.FILE);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(56);
param.setRepositoryValue("FILE"); //$NON-NLS-1$
param.setShowIf("(DB_TYPE=='SQLITE' or DB_TYPE=='ACCESS' or DB_TYPE=='FIREBIRD') and (ON_DATABASE_FLAG == 'true') and (ON_STATCATCHER_FLAG == 'true' or ON_LOGCATCHER_FLAG == 'true' or ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// Stats table
param = new ElementParameter(elem);
param.setName(EParameterName.TABLE_STATS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.TABLE_STATS.getName())));
param.setDisplayName(EParameterName.TABLE_STATS.getDisplayName());
param.setFieldType(EParameterFieldType.DBTABLE);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(57);
param.setShowIf("(ON_DATABASE_FLAG == 'true' and ON_STATCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// Log table
param = new ElementParameter(elem);
param.setName(EParameterName.TABLE_LOGS.getName());
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.TABLE_LOGS.getName())));
param.setDisplayName(EParameterName.TABLE_LOGS.getDisplayName());
param.setFieldType(EParameterFieldType.DBTABLE);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(58);
param.setShowIf("(ON_DATABASE_FLAG == 'true' and ON_LOGCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
// Metter table
param = new ElementParameter(elem);
param.setName(EParameterName.TABLE_METER.getName()); //$NON-NLS-1$
param.setValue(addQuotes(preferenceStore.getString(languagePrefix + EParameterName.TABLE_METER.getName())));
param.setDisplayName(EParameterName.TABLE_METER.getDisplayName());
param.setFieldType(EParameterFieldType.DBTABLE);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(59);
param.setShowIf("(ON_DATABASE_FLAG == 'true' and ON_METERCATCHER_FLAG == 'true')"); //$NON-NLS-1$
paramList.add(param);
}
private final static class IgnoreCaseComparator implements Comparator<String> {
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}
private static void statsAndLogsParametersFinalPart(Element elem) {
ElementParameter param;
IPreferenceStore preferenceStore = DesignerPlugin.getDefault().getPreferenceStore();
List<IElementParameter> paramList = (List<IElementParameter>) elem.getElementParameters();
String languagePrefix = LanguageManager.getCurrentLanguage().toString() + "_"; //$NON-NLS-1$
// Catch runtime errors
param = new ElementParameter(elem);
param.setName("CATCH_RUNTIME_ERRORS"); //$NON-NLS-1$
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.CATCH_RUNTIME_ERRORS.getName()));
param.setDisplayName(EParameterName.CATCH_RUNTIME_ERRORS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(90);
param.setShowIf("ON_LOGCATCHER_FLAG == 'true'"); //$NON-NLS-1$
paramList.add(param);
// Catch user errors
param = new ElementParameter(elem);
param.setName("CATCH_USER_ERRORS"); //$NON-NLS-1$
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.CATCH_USER_ERRORS.getName()));
param.setDisplayName(EParameterName.CATCH_USER_ERRORS.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(90);
param.setShowIf("ON_LOGCATCHER_FLAG == 'true'"); //$NON-NLS-1$
paramList.add(param);
// Catch user warning
param = new ElementParameter(elem);
param.setName("CATCH_USER_WARNING"); //$NON-NLS-1$
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.CATCH_USER_WARNING.getName()));
param.setDisplayName(EParameterName.CATCH_USER_WARNING.getDisplayName());
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(90);
param.setShowIf("ON_LOGCATCHER_FLAG == 'true'"); //$NON-NLS-1$
paramList.add(param);
// Catch realtime statistics
param = new ElementParameter(elem);
param.setName("CATCH_REALTIME_STATS"); //$NON-NLS-1$
param.setValue(preferenceStore.getBoolean(languagePrefix + EParameterName.CATCH_REALTIME_STATS.getName()));
param.setDisplayName(EParameterName.CATCH_REALTIME_STATS.getDisplayName() + " (" //$NON-NLS-1$
+ EParameterName.TSTATCATCHER_STATS.getDisplayName() + ")"); //$NON-NLS-1$
param.setFieldType(EParameterFieldType.CHECK);
param.setCategory(EComponentCategory.STATSANDLOGS);
param.setNumRow(91);
param.setShowIf("ON_STATCATCHER_FLAG == 'true'"); //$NON-NLS-1$
paramList.add(param);
}
}