/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
/*
*/
package org.teiid.translator.jdbc;
import java.util.List;
import org.teiid.core.types.DataTypeManager;
import org.teiid.language.Function;
import org.teiid.language.LanguageObject;
/**
* Implementations of this interface are used to modify Teiid functions
* coming in to the connector into alternate datasource-specific language, if
* necessary.
*/
public abstract class FunctionModifier {
/*
* Public sharing part for the mapping between class and type in format of Map<class->Integer>.
*/
public static final int STRING = DataTypeManager.DefaultTypeCodes.STRING;
public static final int CHAR = DataTypeManager.DefaultTypeCodes.CHAR;
public static final int BOOLEAN = DataTypeManager.DefaultTypeCodes.BOOLEAN;
public static final int BYTE = DataTypeManager.DefaultTypeCodes.BYTE;
public static final int SHORT = DataTypeManager.DefaultTypeCodes.SHORT;
public static final int INTEGER = DataTypeManager.DefaultTypeCodes.INTEGER;
public static final int LONG = DataTypeManager.DefaultTypeCodes.LONG;
public static final int BIGINTEGER = DataTypeManager.DefaultTypeCodes.BIGINTEGER;
public static final int FLOAT = DataTypeManager.DefaultTypeCodes.FLOAT;
public static final int DOUBLE = DataTypeManager.DefaultTypeCodes.DOUBLE;
public static final int BIGDECIMAL = DataTypeManager.DefaultTypeCodes.BIGDECIMAL;
public static final int DATE = DataTypeManager.DefaultTypeCodes.DATE;
public static final int TIME = DataTypeManager.DefaultTypeCodes.TIME;
public static final int TIMESTAMP = DataTypeManager.DefaultTypeCodes.TIMESTAMP;
public static final int OBJECT = DataTypeManager.DefaultTypeCodes.OBJECT;
public static final int BLOB = DataTypeManager.DefaultTypeCodes.BLOB;
public static final int CLOB = DataTypeManager.DefaultTypeCodes.CLOB;
public static final int XML = DataTypeManager.DefaultTypeCodes.XML;
public static final int NULL = DataTypeManager.DefaultTypeCodes.NULL;
public static final int VARBINARY = DataTypeManager.DefaultTypeCodes.VARBINARY;
public static final int GEOMETRY = DataTypeManager.DefaultTypeCodes.GEOMETRY;
public static int getCode(Class<?> source) {
return DataTypeManager.getTypeCode(source);
}
/**
* Return a List of translated parts ({@link LanguageObject}s and Objects), or null
* if this FunctionModifier wishes to rely on the default translation of the
* conversion visitor.
* @param function IFunction to be translated
* @return List of translated parts, or null
* @since 4.2
*/
public abstract List<?> translate(Function function);
}