@Override public void start() throws TranslatorException { super.start(); }
@Override public ProcedureExecution createProcedureExecution(Call command, ExecutionContext executionContext, RuntimeMetadata metadata, C connection) throws TranslatorException { return (ProcedureExecution) delegate.createExecution(command, executionContext, metadata, connection); } @Override
@Override public void getMetadata(MetadataFactory metadataFactory, C conn) throws TranslatorException { delegate.getMetadata(metadataFactory, conn); }
public static BasicSourceCapabilities convertCapabilities(ExecutionFactory srcCaps, Object connectorID) { BasicSourceCapabilities tgtCaps = new BasicSourceCapabilities(); tgtCaps.setTranslator(srcCaps); tgtCaps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, srcCaps.supportsSelectExpression()); tgtCaps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, srcCaps.supportsSelectDistinct()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, srcCaps.supportsAliasedTable()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, srcCaps.supportsInnerJoins()); setSupports(connectorID, tgtCaps, Capability.QUERY_FROM_JOIN_SELFJOIN, srcCaps.supportsSelfJoins(), Capability.QUERY_FROM_GROUP_ALIAS); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER, srcCaps.supportsOuterJoins()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER_FULL, srcCaps.supportsFullOuterJoins()); setSupports(connectorID, tgtCaps, Capability.QUERY_FROM_INLINE_VIEWS, srcCaps.supportsInlineViews(), Capability.QUERY_FROM_GROUP_ALIAS); tgtCaps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, srcCaps.supportsCompareCriteriaEquals()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, srcCaps.supportsCompareCriteriaOrdered()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_LIKE, srcCaps.supportsLikeCriteria()); setSupports(connectorID, tgtCaps, Capability.CRITERIA_LIKE_ESCAPE, srcCaps.supportsLikeCriteriaEscapeCharacter(), Capability.CRITERIA_LIKE); tgtCaps.setCapabilitySupport(Capability.CRITERIA_IN, srcCaps.supportsInCriteria() || (srcCaps.supportsCompareCriteriaEquals() && srcCaps.supportsOrCriteria())); tgtCaps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, srcCaps.supportsInCriteriaSubquery()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_ISNULL, srcCaps.supportsIsNullCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_OR, srcCaps.supportsOrCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_NOT, srcCaps.supportsNotCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_EXISTS, srcCaps.supportsExistsCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_QUANTIFIED_SOME, srcCaps.supportsQuantifiedCompareCriteriaSome()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_QUANTIFIED_ALL, srcCaps.supportsQuantifiedCompareCriteriaAll()); tgtCaps.setCapabilitySupport(Capability.QUERY_ORDERBY, srcCaps.supportsOrderBy()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_SUM, srcCaps.supportsAggregatesSum()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_AVG, srcCaps.supportsAggregatesAvg()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MIN, srcCaps.supportsAggregatesMin()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, srcCaps.supportsAggregatesMax()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT, srcCaps.supportsAggregatesCount()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT_STAR, srcCaps.supportsAggregatesCountStar());
Object connection = null; try { connection = executionFactory.getConnection(connectionFactory, null); } catch (Throwable e) { if (executionFactory.isSourceRequiredForMetadata()) { throw new TranslatorException(QueryPlugin.Event.TEIID31178, e, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31178, factory.getName())); unwrapped = ((WrappedConnection)connection).unwrap(); } catch (Exception e) { if (executionFactory.isSourceRequiredForMetadata()) { throw new TranslatorException(QueryPlugin.Event.TEIID30477, e, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30477, factory.getName())); executionFactory.getMetadata(factory, (unwrapped == null) ? connection:unwrapped); } finally { executionFactory.closeConnection(connection, connectionFactory); List<FunctionMethod> functions = executionFactory.getPushDownFunctions();
private BasicSourceCapabilities buildCapabilities(ExecutionFactory<Object, Object> translator) throws TranslatorException { if (translator.isSourceRequiredForCapabilities()) { Object connection = null; Object connectionFactory = null; connection = translator.getConnection(connectionFactory, null); executionFactory.initCapabilities(connection); translator.closeConnection(connection, connectionFactory);
this.connectionFactory = this.manager.getConnectionFactory(); } catch (TranslatorException e) { if (this.connector.isSourceRequired()) { throw e; this.connection = this.connector.getConnection(this.connectionFactory, securityContext); if (this.connection == null && this.connector.isSourceRequired()) { throw new TranslatorException(QueryPlugin.Event.TEIID31108, QueryPlugin.Util.getString("datasource_not_found", this.manager.getConnectionName())); //$NON-NLS-1$); ((ReusableExecution)exec).reset(translatedCommand, this.securityContext, connection); } else { exec = connector.createExecution(translatedCommand, this.securityContext, queryMetadata, (unwrapped == null) ? this.connection:unwrapped);
factory.setConvertIn(!this.connector.supportsInCriteria()); this.isLob[i] = DataTypeManager.isLOB(this.schema[i]); this.areLobsUsableAfterClose = this.connector.areLobsUsableAfterClose(); this.copyLobs = this.connector.isCopyLobs(); if (!this.copyLobs && message.isCopyStreamingLobs()) { this.copyLobs = true;
@TranslatorProperty(display="Is Source Required", advanced=true) @Override public boolean isSourceRequired() { return delegate.isSourceRequired(); } public void setSourceRequired(boolean value) {
@Override public CacheDirective getCacheDirective() throws TranslatorException { CacheDirective cd = connector.getCacheDirective(this.translatedCommand, this.securityContext, this.queryMetadata); this.securityContext.setCacheDirective(cd); return cd; }
@Override public void closeConnection(C connection, F factory) { delegate.closeConnection(connection, factory); } @Override
@Override public boolean areLobsUsableAfterClose() { return delegate.areLobsUsableAfterClose(); } @Override
@Override public String getCollationLocale() { return delegate.getCollationLocale(); } public void setCollationLocale(String value) {
public static BasicSourceCapabilities convertCapabilities(ExecutionFactory srcCaps, Object connectorID) { BasicSourceCapabilities tgtCaps = new BasicSourceCapabilities(); tgtCaps.setTranslator(srcCaps); tgtCaps.setCapabilitySupport(Capability.QUERY_SELECT_EXPRESSION, srcCaps.supportsSelectExpression()); tgtCaps.setCapabilitySupport(Capability.QUERY_SELECT_DISTINCT, srcCaps.supportsSelectDistinct()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_GROUP_ALIAS, srcCaps.supportsAliasedTable()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, srcCaps.supportsInnerJoins()); setSupports(connectorID, tgtCaps, Capability.QUERY_FROM_JOIN_SELFJOIN, srcCaps.supportsSelfJoins(), Capability.QUERY_FROM_GROUP_ALIAS); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER, srcCaps.supportsOuterJoins()); tgtCaps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_OUTER_FULL, srcCaps.supportsFullOuterJoins()); setSupports(connectorID, tgtCaps, Capability.QUERY_FROM_INLINE_VIEWS, srcCaps.supportsInlineViews(), Capability.QUERY_FROM_GROUP_ALIAS); tgtCaps.setCapabilitySupport(Capability.CRITERIA_IS_DISTINCT, srcCaps.supportsIsDistinctCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_COMPARE_EQ, srcCaps.supportsCompareCriteriaEquals()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_COMPARE_ORDERED, srcCaps.supportsCompareCriteriaOrdered()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_LIKE, srcCaps.supportsLikeCriteria()); setSupports(connectorID, tgtCaps, Capability.CRITERIA_LIKE_ESCAPE, srcCaps.supportsLikeCriteriaEscapeCharacter(), Capability.CRITERIA_LIKE); tgtCaps.setCapabilitySupport(Capability.CRITERIA_IN, srcCaps.supportsInCriteria() || (srcCaps.supportsCompareCriteriaEquals() && srcCaps.supportsOrCriteria())); tgtCaps.setCapabilitySupport(Capability.CRITERIA_IN_SUBQUERY, srcCaps.supportsInCriteriaSubquery()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_ISNULL, srcCaps.supportsIsNullCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_OR, srcCaps.supportsOrCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_NOT, srcCaps.supportsNotCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_EXISTS, srcCaps.supportsExistsCriteria()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_QUANTIFIED_SOME, srcCaps.supportsQuantifiedCompareCriteriaSome()); tgtCaps.setCapabilitySupport(Capability.CRITERIA_QUANTIFIED_ALL, srcCaps.supportsQuantifiedCompareCriteriaAll()); tgtCaps.setCapabilitySupport(Capability.QUERY_ORDERBY, srcCaps.supportsOrderBy()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_SUM, srcCaps.supportsAggregatesSum()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_AVG, srcCaps.supportsAggregatesAvg()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MIN, srcCaps.supportsAggregatesMin()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_MAX, srcCaps.supportsAggregatesMax()); tgtCaps.setCapabilitySupport(Capability.QUERY_AGGREGATES_COUNT, srcCaps.supportsAggregatesCount());
Object connection = null; try { connection = executionFactory.getConnection(connectionFactory, null); } catch (Throwable e) { if (executionFactory.isSourceRequiredForMetadata()) { throw new TranslatorException(QueryPlugin.Event.TEIID31178, e, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31178, factory.getName())); unwrapped = ((WrappedConnection)connection).unwrap(); } catch (Exception e) { if (executionFactory.isSourceRequiredForMetadata()) { throw new TranslatorException(QueryPlugin.Event.TEIID30477, e, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30477, factory.getName())); executionFactory.getMetadata(factory, (unwrapped == null) ? connection:unwrapped); } finally { executionFactory.closeConnection(connection, connectionFactory); List<FunctionMethod> functions = executionFactory.getPushDownFunctions();
private BasicSourceCapabilities buildCapabilities(ExecutionFactory<Object, Object> translator) throws TranslatorException { if (translator.isSourceRequiredForCapabilities()) { Object connection = null; Object connectionFactory = null; connection = translator.getConnection(connectionFactory, null); executionFactory.initCapabilities(connection); translator.closeConnection(connection, connectionFactory);
this.connectionFactory = this.manager.getConnectionFactory(); } catch (TranslatorException e) { if (this.connector.isSourceRequired()) { throw e; this.connection = this.connector.getConnection(this.connectionFactory, securityContext); if (this.connection == null && this.connector.isSourceRequired()) { throw new TranslatorException(QueryPlugin.Event.TEIID31108, QueryPlugin.Util.getString("datasource_not_found", this.manager.getConnectionName())); //$NON-NLS-1$); ((ReusableExecution)exec).reset(translatedCommand, this.securityContext, connection); } else { exec = connector.createExecution(translatedCommand, this.securityContext, queryMetadata, (unwrapped == null) ? this.connection:unwrapped);
factory.setConvertIn(!this.connector.supportsInCriteria()); this.isLob[i] = DataTypeManager.isLOB(this.schema[i]); this.areLobsUsableAfterClose = this.connector.areLobsUsableAfterClose(); this.copyLobs = this.connector.isCopyLobs(); if (!this.copyLobs && message.isCopyStreamingLobs()) { this.copyLobs = true;
public String getStausMessage() { String msg = ""; //$NON-NLS-1$ ExecutionFactory<Object, Object> ef = getExecutionFactory(); if(ef != null) { if (ef.isSourceRequired()) { Object conn = null; try { conn = getConnectionFactory(); } catch (TranslatorException e) { // treat this as connection not found. } if (conn == null) { msg = QueryPlugin.Util.getString("datasource_not_found", this.connectionName); //$NON-NLS-1$ } } } else { msg = QueryPlugin.Util.getString("translator_not_found", this.translatorName); //$NON-NLS-1$ } return msg; }
@Override public CacheDirective getCacheDirective() throws TranslatorException { CacheDirective cd = connector.getCacheDirective(this.translatedCommand, this.securityContext, this.queryMetadata); this.securityContext.setCacheDirective(cd); return cd; }