Package org.teiid.translator.odata
Class ODataExecutionFactory
- java.lang.Object
-
- org.teiid.translator.ExecutionFactory<ConnectionFactory,WSConnection>
-
- org.teiid.translator.odata.ODataExecutionFactory
-
- Direct Known Subclasses:
SAPODataExecutionFactory
@Translator(name="odata", description="A translator for making OData data service calls") public class ODataExecutionFactory extends ExecutionFactory<ConnectionFactory,WSConnection>
TODO: Type comparison isof(T), isof(x, T) Whether targeted instance can be converted to the specified type. media streams are generally not supported yet. (blobs, clobs)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.teiid.translator.ExecutionFactory
ExecutionFactory.Format, ExecutionFactory.NullOrder, ExecutionFactory.SupportedJoinCriteria, ExecutionFactory.TransactionSupport
-
-
Field Summary
Fields Modifier and Type Field Description static TimeZoneDEFAULT_TIME_ZONEprotected Map<String,FunctionModifier>functionModifiers-
Fields inherited from class org.teiid.translator.ExecutionFactory
DEFAULT_MAX_FROM_GROUPS, DEFAULT_MAX_IN_CRITERIA_SIZE, DEFAULT_MAX_PROJECTED_COLUMNS
-
-
Constructor Summary
Constructors Constructor Description ODataExecutionFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconvertToODataInput(Literal obj, StringBuilder sb)ProcedureExecutioncreateProcedureExecution(Call command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection)ResultSetExecutioncreateResultSetExecution(QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection)UpdateExecutioncreateUpdateExecution(Command command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection)protected StringescapeString(String str, String quote)StringgetDatabaseTimeZone()List<String>getDefaultSupportedFunctions()Map<String,FunctionModifier>getFunctionModifiers()Return a map of function name to FunctionModifier.voidgetMetadata(MetadataFactory metadataFactory, WSConnection conn)Implement to provide metadata to the metadata for use by the engine.MetadataProcessor<WSConnection>getMetadataProcessor()Get a MetadataProcessor for the translator to read the metadata.List<String>getSupportedFunctions()Get list of all supported function names.voidregisterFunctionModifier(String name, FunctionModifier modifier)Add theFunctionModifierto the set of known modifiers.ObjectretrieveValue(Object value, Class<?> expectedType)voidsetDatabaseTimeZone(String databaseTimeZone)voidsetSupportsOdataBooleanFunctionsWithComparison(boolean supports)voidsetSupportsOdataCount(boolean supports)voidsetSupportsOdataFilter(boolean supports)voidsetSupportsOdataOrderBy(boolean supports)voidsetSupportsOdataSkip(boolean supports)voidsetSupportsOdataTop(boolean supports)voidstart()Initialize the connector with supplied configurationbooleansupportsAggregatesCount()Support indicates connector can accept the COUNT aggregate functionbooleansupportsAggregatesCountStar()Support indicates connector can accept the COUNT(*) aggregate functionbooleansupportsCompareCriteriaEquals()Support indicates connector accepts criteria of form (element = constant)booleansupportsCompareCriteriaOrdered()Support indicates connector accepts criteria of form (element <=|>= constant)
The query engine will may pushdown queries containing < or > if NOT is also supported.booleansupportsIsNullCriteria()Support indicates connector accepts criteria of form (element IS NULL)booleansupportsNotCriteria()Support indicates connector accepts logical criteria NOTbooleansupportsOdataBooleanFunctionsWithComparison()booleansupportsOdataCount()booleansupportsOdataFilter()booleansupportsOdataOrderBy()booleansupportsOdataSkip()booleansupportsOdataTop()booleansupportsOnlyLiteralComparison()booleansupportsOrCriteria()Support indicates connector accepts logical criteria connected by ORbooleansupportsOrderBy()Support indicates connector accepts ORDER BY clause, including multiple elements and ascending and descending sorts.booleansupportsOrderByUnrelated()Support indicates connector accepts ORDER BY clause with columns not from the selectbooleansupportsQuantifiedCompareCriteriaAll()Support indicates connector accepts the quantified comparison criteria that use ALLbooleansupportsQuantifiedCompareCriteriaSome()Support indicates connector accepts the quantified comparison criteria that use SOMEbooleansupportsRowLimit()Gets whether the connector can limit the number of rows returned by a query.booleansupportsRowOffset()Gets whether the connector supports a SQL clause (similar to the LIMIT with an offset) that can return result sets that start in the middle of the resulting rows returned by a querybooleanuseAnsiJoin()Whether the source prefers to use ANSI style joins.-
Methods inherited from class org.teiid.translator.ExecutionFactory
addPushDownFunction, areLobsUsableAfterClose, closeConnection, createDirectExecution, createExecution, getCacheDirective, getCollationLocale, getConnection, getConnection, getDefaultNullOrder, getDirectQueryProcedureName, getExcludedCommonTableExpressionName, getInstance, getLanguageFactory, getMaxDependentInPredicates, getMaxFromGroups, getMaxInCriteriaSize, getMaxProjectedColumns, getNativeQueryProcedureName, getPushDownFunctions, getRequiredLikeEscape, getSupportedJoinCriteria, getTransactionSupport, getTypeFacility, initCapabilities, isCopyLobs, isForkable, isImmutable, isSourceRequired, isSourceRequiredForCapabilities, isSourceRequiredForMetadata, isThreadBound, requiresCriteria, returnsSingleUpdateCount, setCollationLocale, setCopyLobs, setDirectQueryProcedureName, setExcludedCommonTableExpressionName, setImmutable, setMaxDependentInPredicates, setMaxInCriteriaSize, setNativeQueryProcedureName, setRequiresCriteria, setSourceRequired, setSourceRequiredForMetadata, setSupportedJoinCriteria, setSupportsDirectQueryProcedure, setSupportsFullOuterJoins, setSupportsInnerJoins, setSupportsNativeQueries, setSupportsOrderBy, setSupportsOuterJoins, setSupportsSelectDistinct, setThreadBound, setTransactionSupport, supportsAdvancedOlapOperations, supportsAggregatesAvg, supportsAggregatesCountBig, supportsAggregatesDistinct, supportsAggregatesEnhancedNumeric, supportsAggregatesMax, supportsAggregatesMin, supportsAggregatesSum, supportsAliasedTable, supportsArrayAgg, supportsArrayType, supportsBatchedUpdates, supportsBulkUpdate, supportsCommonTableExpressions, supportsCompareCriteriaOrderedExclusive, supportsConvert, supportsCorrelatedSubqueries, supportsCorrelatedSubqueryLimit, supportsDependentJoins, supportsDirectQueryProcedure, supportsElementaryOlapOperations, supportsExcept, supportsExistsCriteria, supportsFormatLiteral, supportsFullDependentJoins, supportsFullOuterJoins, supportsFunctionsInGroupBy, supportsGeographyType, supportsGroupBy, supportsGroupByMultipleDistinctAggregates, supportsGroupByRollup, supportsHaving, supportsInCriteria, supportsInCriteriaSubquery, supportsInlineViews, supportsInnerJoins, supportsInsertWithQueryExpression, supportsIntersect, supportsIsDistinctCriteria, supportsLateralJoin, supportsLateralJoinCondition, supportsLikeCriteria, supportsLikeCriteriaEscapeCharacter, supportsLikeRegex, supportsListAgg, supportsMultipleOpenExecutions, supportsNativeQueries, supportsOnlyCorrelatedSubqueries, supportsOnlyFormatLiterals, supportsOnlyLateralJoinProcedure, supportsOnlySingleTableGroupBy, supportsOnlyTimestampAddLiteral, supportsOrderByNullOrdering, supportsOrderByWithExtendedGrouping, supportsOuterJoins, supportsPartialFiltering, supportsProcedureParameterExpression, supportsProcedureTable, supportsRecursiveCommonTableExpressions, supportsScalarSubqueries, supportsScalarSubqueryProjection, supportsSearchedCaseExpressions, supportsSelectDistinct, supportsSelectExpression, supportsSelectExpressionArrayType, supportsSelectWithoutFrom, supportsSelfJoins, supportsSetQueryLimitOffset, supportsSetQueryOrderBy, supportsSimilarTo, supportsStringAgg, supportsSubqueryCommonTableExpressions, supportsSubqueryInOn, supportsUnions, supportsUpsert, supportsWindowDistinctAggregates, supportsWindowFrameClause, supportsWindowFunctionCumeDist, supportsWindowFunctionNthValue, supportsWindowFunctionNtile, supportsWindowFunctionPercentRank, supportsWindowOrderByWithAggregates, useBindingsForDependentJoin
-
-
-
-
Field Detail
-
DEFAULT_TIME_ZONE
public static final TimeZone DEFAULT_TIME_ZONE
-
functionModifiers
protected Map<String,FunctionModifier> functionModifiers
-
-
Method Detail
-
start
public void start() throws TranslatorExceptionDescription copied from class:ExecutionFactoryInitialize the connector with supplied configuration- Overrides:
startin classExecutionFactory<ConnectionFactory,WSConnection>- Throws:
TranslatorException
-
getDatabaseTimeZone
@TranslatorProperty(display="Database time zone", description="Time zone of the database, if different than Integration Server", advanced=true) public String getDatabaseTimeZone()
-
setDatabaseTimeZone
public void setDatabaseTimeZone(String databaseTimeZone)
-
getMetadata
public void getMetadata(MetadataFactory metadataFactory, WSConnection conn) throws TranslatorException
Description copied from class:ExecutionFactoryImplement to provide metadata to the metadata for use by the engine. This is the primary method of creating metadata for dynamic VDBs.- Overrides:
getMetadatain classExecutionFactory<ConnectionFactory,WSConnection>conn- may be null if the source is not required- Throws:
TranslatorException- to indicate a recoverable error, otherwise a RuntimeException- See Also:
ExecutionFactory.isSourceRequiredForMetadata()
-
getMetadataProcessor
public MetadataProcessor<WSConnection> getMetadataProcessor()
Description copied from class:ExecutionFactoryGet a MetadataProcessor for the translator to read the metadata. Typically this will return a new instance.- Overrides:
getMetadataProcessorin classExecutionFactory<ConnectionFactory,WSConnection>- Returns:
-
createResultSetExecution
public ResultSetExecution createResultSetExecution(QueryExpression command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection) throws TranslatorException
- Overrides:
createResultSetExecutionin classExecutionFactory<ConnectionFactory,WSConnection>- Throws:
TranslatorException
-
createProcedureExecution
public ProcedureExecution createProcedureExecution(Call command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection) throws TranslatorException
- Overrides:
createProcedureExecutionin classExecutionFactory<ConnectionFactory,WSConnection>- Throws:
TranslatorException
-
createUpdateExecution
public UpdateExecution createUpdateExecution(Command command, ExecutionContext executionContext, RuntimeMetadata metadata, WSConnection connection) throws TranslatorException
- Overrides:
createUpdateExecutionin classExecutionFactory<ConnectionFactory,WSConnection>- Throws:
TranslatorException
-
getSupportedFunctions
public List<String> getSupportedFunctions()
Description copied from class:ExecutionFactoryGet list of all supported function names. Arithmetic functions have names like "+".- Overrides:
getSupportedFunctionsin classExecutionFactory<ConnectionFactory,WSConnection>- See Also:
for a listing of system pushdown functions. Note that not all system functions are listed as some functions will use a common name such as CONCAT vs. the || operator, and other functions will be rewritten and not pushed down, such as SPACE. Note: User defined functions should be specified fully qualified.
-
getFunctionModifiers
public Map<String,FunctionModifier> getFunctionModifiers()
Return a map of function name to FunctionModifier.- Returns:
- Map of function name to FunctionModifier.
-
registerFunctionModifier
public void registerFunctionModifier(String name, FunctionModifier modifier)
Add theFunctionModifierto the set of known modifiers.- Parameters:
name-modifier-
-
supportsOdataFilter
@TranslatorProperty(display="Supports $Filter", description="True, $filter is supported", advanced=true) public boolean supportsOdataFilter()
-
setSupportsOdataFilter
public void setSupportsOdataFilter(boolean supports)
-
supportsOdataOrderBy
@TranslatorProperty(display="Supports $OrderBy", description="True, $orderby is supported", advanced=true) public boolean supportsOdataOrderBy()
-
setSupportsOdataOrderBy
public void setSupportsOdataOrderBy(boolean supports)
-
supportsOdataCount
@TranslatorProperty(display="Supports $count", description="True, $count is supported", advanced=true) public boolean supportsOdataCount()
-
setSupportsOdataCount
public void setSupportsOdataCount(boolean supports)
-
supportsOdataSkip
@TranslatorProperty(display="Supports $skip", description="True, $skip is supported", advanced=true) public boolean supportsOdataSkip()
-
setSupportsOdataSkip
public void setSupportsOdataSkip(boolean supports)
-
supportsOdataTop
@TranslatorProperty(display="Supports $top", description="True, $top is supported", advanced=true) public boolean supportsOdataTop()
-
setSupportsOdataTop
public void setSupportsOdataTop(boolean supports)
-
supportsOdataBooleanFunctionsWithComparison
@TranslatorProperty(display="Supports boolean functions with comparison", description="True, you can use \'substringsof(a, b) eq true\' for instance", advanced=true) public boolean supportsOdataBooleanFunctionsWithComparison()
-
setSupportsOdataBooleanFunctionsWithComparison
public void setSupportsOdataBooleanFunctionsWithComparison(boolean supports)
-
supportsCompareCriteriaEquals
public boolean supportsCompareCriteriaEquals()
Description copied from class:ExecutionFactorySupport indicates connector accepts criteria of form (element = constant)- Overrides:
supportsCompareCriteriaEqualsin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsCompareCriteriaOrdered
public boolean supportsCompareCriteriaOrdered()
Description copied from class:ExecutionFactorySupport indicates connector accepts criteria of form (element <=|>= constant)
The query engine will may pushdown queries containing < or > if NOT is also supported.- Overrides:
supportsCompareCriteriaOrderedin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsIsNullCriteria
public boolean supportsIsNullCriteria()
Description copied from class:ExecutionFactorySupport indicates connector accepts criteria of form (element IS NULL)- Overrides:
supportsIsNullCriteriain classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsOrCriteria
public boolean supportsOrCriteria()
Description copied from class:ExecutionFactorySupport indicates connector accepts logical criteria connected by OR- Overrides:
supportsOrCriteriain classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsNotCriteria
public boolean supportsNotCriteria()
Description copied from class:ExecutionFactorySupport indicates connector accepts logical criteria NOT- Overrides:
supportsNotCriteriain classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsQuantifiedCompareCriteriaSome
public boolean supportsQuantifiedCompareCriteriaSome()
Description copied from class:ExecutionFactorySupport indicates connector accepts the quantified comparison criteria that use SOME- Overrides:
supportsQuantifiedCompareCriteriaSomein classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsQuantifiedCompareCriteriaAll
public boolean supportsQuantifiedCompareCriteriaAll()
Description copied from class:ExecutionFactorySupport indicates connector accepts the quantified comparison criteria that use ALL- Overrides:
supportsQuantifiedCompareCriteriaAllin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsOrderBy
@TranslatorProperty(display="Supports ORDER BY", description="True, if this connector supports ORDER BY", advanced=true) public boolean supportsOrderBy()
Description copied from class:ExecutionFactorySupport indicates connector accepts ORDER BY clause, including multiple elements and ascending and descending sorts.- Overrides:
supportsOrderByin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsOrderByUnrelated
public boolean supportsOrderByUnrelated()
Description copied from class:ExecutionFactorySupport indicates connector accepts ORDER BY clause with columns not from the select- Overrides:
supportsOrderByUnrelatedin classExecutionFactory<ConnectionFactory,WSConnection>- Returns:
-
supportsAggregatesCount
public boolean supportsAggregatesCount()
Description copied from class:ExecutionFactorySupport indicates connector can accept the COUNT aggregate function- Overrides:
supportsAggregatesCountin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsAggregatesCountStar
public boolean supportsAggregatesCountStar()
Description copied from class:ExecutionFactorySupport indicates connector can accept the COUNT(*) aggregate function- Overrides:
supportsAggregatesCountStarin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsRowLimit
public boolean supportsRowLimit()
Description copied from class:ExecutionFactoryGets whether the connector can limit the number of rows returned by a query.- Overrides:
supportsRowLimitin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsRowOffset
public boolean supportsRowOffset()
Description copied from class:ExecutionFactoryGets whether the connector supports a SQL clause (similar to the LIMIT with an offset) that can return result sets that start in the middle of the resulting rows returned by a query- Overrides:
supportsRowOffsetin classExecutionFactory<ConnectionFactory,WSConnection>
-
supportsOnlyLiteralComparison
public boolean supportsOnlyLiteralComparison()
- Overrides:
supportsOnlyLiteralComparisonin classExecutionFactory<ConnectionFactory,WSConnection>- Returns:
- true if only Literal comparisons (equality, ordered, like, etc.) are supported for non-join conditions.
-
useAnsiJoin
public boolean useAnsiJoin()
Description copied from class:ExecutionFactoryWhether the source prefers to use ANSI style joins.- Overrides:
useAnsiJoinin classExecutionFactory<ConnectionFactory,WSConnection>
-
retrieveValue
public Object retrieveValue(Object value, Class<?> expectedType)
- Parameters:
value-expectedType-- Returns:
-
convertToODataInput
public void convertToODataInput(Literal obj, StringBuilder sb)
-
-