// ============================================================================
//
// 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.statsandlogs;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.resource.ImageDescriptor;
import org.talend.core.model.components.IComponent;
import org.talend.core.model.components.IMultipleComponentItem;
import org.talend.core.model.components.IMultipleComponentManager;
import org.talend.core.model.general.ModuleNeeded;
import org.talend.core.model.process.EParameterFieldType;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.INode;
import org.talend.core.model.process.INodeConnector;
import org.talend.core.model.process.INodeReturn;
import org.talend.core.model.temp.ECodePart;
import org.talend.core.model.utils.TalendTextUtils;
import org.talend.designer.core.model.components.ElementParameter;
import org.talend.designer.core.model.components.MultipleComponentConnection;
import org.talend.designer.core.model.components.MultipleComponentManager;
/**
* These components won't be used in the designer part, only for the generation. <br/>
*
*/
public abstract class AbstractStatsLogsComponent implements IComponent {
protected boolean useDb = false;
protected boolean useConsole = false;
protected String dbComponent;
protected boolean useFile = false;
protected String componentId;
protected String subComponent;
protected List<IMultipleComponentManager> multipleComponentManagers = new ArrayList<IMultipleComponentManager>();
// no use for virtual component
public List<? extends INodeConnector> createConnectors(INode node) {
return null;
}
// no use for virtual component
public List<? extends INodeReturn> createReturns() {
return null;
}
// no use for virtual component
public List<ECodePart> getAvailableCodeParts() {
return null;
}
// no use for virtual component
public String getOriginalFamilyName() {
return "Virtual"; //$NON-NLS-1$
}
public String getTranslatedFamilyName() {
return "Virtual"; //$NON-NLS-1$
}
// no use for virtual component
public ImageDescriptor getIcon16() {
return null;
}
// no use for virtual component
public ImageDescriptor getIcon24() {
return null;
}
// no use for virtual component
public ImageDescriptor getIcon32() {
return null;
}
// no use for virtual component
public String getLongName() {
return null;
}
// no use for virtual component ?
public List<ModuleNeeded> getModulesNeeded() {
return null;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#getName()
*/
public String getName() {
return this.getClass().getName();
}
// no use for virtual component
public String getPathSource() {
return null;
}
// no use for virtual component
public List<String> getPluginDependencies() {
return null;
}
// no use for virtual component
public String getPluginExtension() {
return null;
}
// no use for virtual component
public String getTranslatedName() {
return null;
}
// no use for virtual component
public boolean hasConditionalOutputs() {
return false;
}
// no use for virtual component
public boolean isMultiplyingOutputs() {
return false;
}
// no use for virtual component
public boolean isDataAutoPropagated() {
return false;
}
// no use for virtual component
public boolean isLoaded() {
return true;
}
// no use for virtual component
public boolean isSchemaAutoPropagated() {
return false;
}
// no use for virtual component
public boolean isVisible() {
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#isVisible(java.lang.String)
*/
public boolean isVisible(String family) {
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#isVisibleInComponentDefinition()
*/
public boolean isVisibleInComponentDefinition() {
return false;
}
// no use for virtual component
public void setImageRegistry(java.util.Map<String, ImageDescriptor> imageRegistry) {
};
// no use for virtual component
public boolean useMerge() {
return false;
}
public String getRepositoryType() {
return null;
}
public List<? extends IElementParameter> createElementParameters(INode node) {
List<IElementParameter> elemParamList = new ArrayList<IElementParameter>();
addFileOutputParameters(elemParamList, node);
addDbParameters(elemParamList, node);
return elemParamList;
}
protected void addDbParameters(List<IElementParameter> elemParamList, INode node) {
// parameters for db output.
IElementParameter newParam = new ElementParameter(node);
newParam.setName("HOST"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
// This parameter is use for Connection Component
newParam = new ElementParameter(node);
newParam.setName("USE_EXISTING_CONNECTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.CHECK);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("CONNECTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
// This parameter is use for Oracle component
newParam = new ElementParameter(node);
newParam.setName("CONNECTION_TYPE"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setShow(false);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("SERVER"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("DSN"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("PORT"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("DBNAME"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("DB_VERSION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("PROPERTIES"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("SCHEMA_DB"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("USER"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("PASS"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("TABLE"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("TABLE_ACTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue("CREATE_IF_NOT_EXISTS"); //$NON-NLS-1$
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("DATA_ACTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue("INSERT"); //$NON-NLS-1$
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("COMMIT_EVERY"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue("1"); //$NON-NLS-1$
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("USE_SHARED_CONNECTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.CHECK);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("SHARED_CONNECTION_NAME"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("USE_TRANSACTION"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.CHECK);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("LOCAL_SERVICE_NAME"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
}
protected void addFileOutputParameters(List<IElementParameter> elemParamList, INode node) {
// parameters for file output.
IElementParameter newParam = new ElementParameter(node);
newParam.setName("FILENAME"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("ROWSEPARATOR"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue(TalendTextUtils.addQuotes("\\n", TalendTextUtils.QUOTATION_MARK)); //$NON-NLS-1$
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("FIELDSEPARATOR"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue(TalendTextUtils.addQuotes(";")); //$NON-NLS-1$
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("APPEND"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.CHECK);
newParam.setValue(Boolean.TRUE);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("INCLUDEHEADER"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.CHECK);
newParam.setValue(Boolean.FALSE);
elemParamList.add(newParam);
newParam = new ElementParameter(node);
newParam.setName("ENCODING"); //$NON-NLS-1$
newParam.setFieldType(EParameterFieldType.TEXT);
newParam.setValue(TalendTextUtils.addQuotes("ISO-8859-15")); //$NON-NLS-1$
elemParamList.add(newParam);
}
protected void loadMultipleComponentManager() {
String lastComponent = null;
if (useConsole) {
lastComponent = "CONSOLE"; //$NON-NLS-1$
} else if (useDb) {
lastComponent = "DB"; //$NON-NLS-1$
} else {
lastComponent = "FILE"; //$NON-NLS-1$
}
// create base items
IMultipleComponentManager multipleComponentManager = new MultipleComponentManager(componentId, lastComponent);
IMultipleComponentItem currentItem = multipleComponentManager.addItem(componentId, subComponent);
if (useFile) {
currentItem.getOutputConnections().add(new MultipleComponentConnection("FLOW", "FILE")); //$NON-NLS-1$ //$NON-NLS-2$
currentItem = multipleComponentManager.addItem("FILE", "tFileOutputDelimited"); //$NON-NLS-1$ //$NON-NLS-2$
}
if (useDb) {
currentItem.getOutputConnections().add(new MultipleComponentConnection("FLOW", "DB")); //$NON-NLS-1$ //$NON-NLS-2$
currentItem = multipleComponentManager.addItem("DB", dbComponent); //$NON-NLS-1$
}
if (useConsole) {
currentItem.getOutputConnections().add(new MultipleComponentConnection("FLOW", "CONSOLE")); //$NON-NLS-1$ //$NON-NLS-2$
currentItem = multipleComponentManager.addItem("CONSOLE", "tLogRow"); //$NON-NLS-1$ //$NON-NLS-2$
}
multipleComponentManager.validateItems();
multipleComponentManagers.add(multipleComponentManager);
createMultipleComponentsParameters();
}
protected void createMultipleComponentsParameters() {
// create parameters
if ((multipleComponentManagers != null) && (multipleComponentManagers.size() > 0)) {
IMultipleComponentManager multipleComponentManager = multipleComponentManagers.get(0);
if (useFile) {
multipleComponentManager.addParam("self.FILENAME", "FILE.FILENAME"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.ROWSEPARATOR", "FILE.ROWSEPARATOR"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.FIELDSEPARATOR", "FILE.FIELDSEPARATOR"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.APPEND", "FILE.APPEND"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.INCLUDEHEADER", "FILE.INCLUDEHEADER"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.ENCODING", "FILE.ENCODING"); //$NON-NLS-1$ //$NON-NLS-2$
}
if (useDb) {
multipleComponentManager.addParam("self.USE_EXISTING_CONNECTION", "DB.USE_EXISTING_CONNECTION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.CONNECTION", "DB.CONNECTION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.COMMIT_EVERY", "DB.COMMIT_EVERY"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.HOST", "DB.HOST"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.HOST", "DB.SERVER"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.HOST", "DB.DSN"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.PORT", "DB.PORT"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.DBNAME", "DB.DBNAME"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.DB_VERSION", "DB.DB_VERSION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.PROPERTIES", "DB.PROPERTIES"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.USER", "DB.USER"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.PASS", "DB.PASS"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.TABLE", "DB.TABLE"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.TABLE_ACTION", "DB.TABLE_ACTION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.DATA_ACTION", "DB.DATA_ACTION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.COMMIT_EVERY", "DB.COMMIT_EVERY"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.SCHEMA_DB", "DB.SCHEMA_DB"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.DB_TYPE", "DB.DB_TYPE"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.CONNECTION_TYPE", "DB.CONNECTION_TYPE"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.USE_TRANSACTION", "DB.USE_TRANSACTION"); //$NON-NLS-1$ //$NON-NLS-2$
multipleComponentManager.addParam("self.LOCAL_SERVICE_NAME", "DB.LOCAL_SERVICE_NAME"); //$NON-NLS-1$ //$NON-NLS-2$
}
}
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#getMultipleComponentManager()
*/
public List<IMultipleComponentManager> getMultipleComponentManagers() {
return multipleComponentManagers;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#getComponentType()
*/
public boolean isMultipleOutput() {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#useLookup()
*/
public boolean useLookup() {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#useImport()
*/
public boolean useImport() {
// TODO Auto-generated method stub
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#isHashComponent()
*/
public boolean isHashComponent() {
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#isTechnical()
*/
public boolean isTechnical() {
return false;
}
public boolean isSingleton() {
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#isMainCodeCalled()
*/
public boolean isMainCodeCalled() {
return true;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#canParallelize()
*/
public boolean canParallelize() {
return false;
}
/*
* (non-Javadoc)
*
* @see org.talend.core.model.components.IComponent#getShortName()
*/
public String getShortName() {
return "slog";
}
public String getCombine() {
return null;
}
public String getPaletteType() {
return "HIDDEN";
}
public void setPaletteType(String paletteType) {
// TODO Auto-generated method stub
}
}