// ============================================================================
//
// 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.components;
import java.util.List;
import org.talend.core.language.LanguageManager;
import org.talend.core.model.metadata.types.JavaTypesManager;
import org.talend.core.model.process.IElementParameter;
import org.talend.core.model.process.INodeReturn;
import org.talend.designer.core.i18n.Messages;
/**
* Return parameters for each component. These returns are described in the xml file of the component. <br/>
*
* $Id: NodeReturn.java 77219 2012-01-24 01:14:15Z mhirt $
*
*/
public class NodeReturn implements INodeReturn {
private String name;
private String displayName;
private String type = "String"; //$NON-NLS-1$
private String availability;
private String varName;
private String showIf;
protected final static String UNIQUE_NAME = "__UNIQUE_NAME__"; //$NON-NLS-1$
/*
*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#getAvailability()
*/
public String getAvailability() {
return this.availability;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#setAvailability(java.lang.String)
*/
public void setAvailability(final String availability) {
this.availability = Messages.getString("NodeReturn.Availability." + availability); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#getCode()
*/
public String getVarName() {
switch (LanguageManager.getCurrentLanguage()) {
case PERL:
return "$_globals{" + UNIQUE_NAME + "}{" + varName + "}"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
case JAVA:
return "((" + getDisplayType() + ")globalMap.get(\"" + UNIQUE_NAME + "_" + name + "\"))"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
default:
return "$_globals{" + UNIQUE_NAME + "}{" + varName + "}"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#setCode(java.lang.String)
*/
public void setVarName(final String variableName) {
varName = variableName;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#getDisplayName()
*/
public String getDisplayName() {
return this.displayName;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#setDisplayName(java.lang.String)
*/
public void setDisplayName(final String displayName) {
this.displayName = displayName;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#getName()
*/
public String getName() {
return this.name;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#setName(java.lang.String)
*/
public void setName(final String name) {
this.name = name;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#getType()
*/
public String getType() {
return this.type;
}
/*
* (non-Javadoc)
*
* @see org.talend.designer.core.model.components.INodeReturn#setType(org.talend.core.model.metadata.EMetadataType)
*/
public void setType(final String type) {
this.type = type;
}
public String getDisplayType() {
switch (LanguageManager.getCurrentLanguage()) {
case PERL:
return type;
case JAVA:
String displayType;
if ((type.compareTo("String") == 0) || (type.compareTo("Integer") == 0)) { //$NON-NLS-1$ //$NON-NLS-2$
type = "id_" + type; //$NON-NLS-1$
}
try {
displayType = JavaTypesManager.getTypeToGenerate(type, true);
} catch (Exception e) {
if (e instanceof IllegalArgumentException) {
displayType = type;//$NON-NLS-1$
} else {
displayType = "String"; //$NON-NLS-1$
}
}
return displayType;
default:
return type;
}
}
public void setShowIf(String showIf) {
this.showIf = showIf;
}
public boolean isShow(List<? extends IElementParameter> listParam) {
if (showIf == null || "".equals(showIf)) {
return true;
} else {
return Expression.evaluate(showIf, listParam);
}
}
}