
org.postgresql.adba.submissions.ProcessorSubmission Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pgadba Show documentation
Show all versions of pgadba Show documentation
ADBA implementation for PostgreSQL
The newest version!
package org.postgresql.adba.submissions;
import jdk.incubator.sql2.Result;
import org.postgresql.adba.PgSubmission;
import org.postgresql.adba.communication.packets.DataRow;
import org.postgresql.adba.operations.helpers.ParameterHolder;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.SubmissionPublisher;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.stream.Collector;
public class ProcessorSubmission implements PgSubmission {
private final Supplier cancel;
private CompletableFuture publicStage;
private Consumer errorHandler;
private String sql;
private ParameterHolder holder;
private SubmissionPublisher publisher;
private GroupSubmission groupSubmission;
private final AtomicBoolean sendConsumed = new AtomicBoolean(false);
/**
* A submission for a Processor operation.
*
* @param cancel cancel method
* @param errorHandler error handler method
* @param sql the query
* @param publisher publisher that consumes rows
* @param holder holder for parameter values
* @param groupSubmission group submission this submission is a part of
*/
public ProcessorSubmission(Supplier cancel, Consumer errorHandler, String sql,
SubmissionPublisher publisher, ParameterHolder holder, GroupSubmission groupSubmission) {
this.cancel = cancel;
this.errorHandler = errorHandler;
this.sql = sql;
this.publisher = publisher;
this.holder = holder;
this.groupSubmission = groupSubmission;
}
@Override
public String getSql() {
return sql;
}
@Override
public AtomicBoolean getSendConsumed() {
return sendConsumed;
}
@Override
public ParameterHolder getHolder() {
return holder;
}
@Override
public Types getCompletionType() {
return PgSubmission.Types.PROCESSOR;
}
@Override
public void setCollector(Collector collector) {
}
@Override
public Object finish(Object finishObject) {
publisher.close();
return null;
}
@Override
public void addRow(DataRow row) {
publisher.offer(row, (subscriber, rowItem) -> {
subscriber.onError(new IllegalStateException("failed to offer item to subscriber"));
return false;
});
}
@Override
public List getParamTypes() throws ExecutionException, InterruptedException {
return holder.getParamTypes();
}
@Override
public int numberOfQueryRepetitions() {
return 1;
}
@Override
public Consumer getErrorHandler() {
return errorHandler;
}
@Override
public CompletionStage cancel() {
return null;
}
@Override
public CompletionStage getCompletionStage() {
if (publicStage == null) {
publicStage = new CompletableFuture<>();
}
return publicStage;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy