package com.teiid.quickstart;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import org.teiid.language.Command;
import org.teiid.language.QueryExpression;
import org.teiid.metadata.Column;
import org.teiid.metadata.MetadataFactory;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
import org.teiid.translator.DataNotAvailableException;
import org.teiid.translator.ExecutionContext;
import org.teiid.translator.ExecutionFactory;
import org.teiid.translator.ResultSetExecution;
import org.teiid.translator.TranslatorException;
import org.teiid.translator.TypeFacility;
import org.teiid.translator.UpdateExecution;
public class MyTranslator extends ExecutionFactory<AtomicInteger, Object> {
public Object getConnection(AtomicInteger factory, ExecutionContext executionContext) throws TranslatorException {
return factory.incrementAndGet();
}
public void closeConnection(Object connection, AtomicInteger factory) {
}
public void getMetadata(MetadataFactory metadataFactory, Object conn) throws TranslatorException {
Table t = metadataFactory.addTable("my-table");
t.setSupportsUpdate(true);
Column c = metadataFactory.addColumn("my-column", TypeFacility.RUNTIME_NAMES.STRING, t);
c.setUpdatable(true);
}
public ResultSetExecution createResultSetExecution(
QueryExpression command, ExecutionContext executionContext,
RuntimeMetadata metadata, Object connection)
throws TranslatorException {
ResultSetExecution rse = new ResultSetExecution() {
@Override
public void execute() throws TranslatorException {
}
@Override
public void close() {
}
@Override
public void cancel() throws TranslatorException {
}
@Override
public List<?> next() throws TranslatorException,
DataNotAvailableException {
return null;
}
};
return rse;
}
public UpdateExecution createUpdateExecution(Command command,
ExecutionContext executionContext,
RuntimeMetadata metadata, Object connection)
throws TranslatorException {
UpdateExecution ue = new UpdateExecution() {
@Override
public void execute() throws TranslatorException {
}
@Override
public void close() {
}
@Override
public void cancel() throws TranslatorException {
}
@Override
public int[] getUpdateCounts() throws DataNotAvailableException, TranslatorException {
return new int[] {2};
}
};
return ue;
}
}