![JAR search and dependency download from the Maven repository](/logo.png)
org.neo4j.server.http.cypher.OutputEventStreamImpl Maven / Gradle / Ivy
/*
* Copyright (c) "Neo4j"
* Neo4j Sweden AB [http://neo4j.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package org.neo4j.server.http.cypher;
import java.net.URI;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import org.neo4j.graphdb.ExecutionPlanDescription;
import org.neo4j.graphdb.Notification;
import org.neo4j.graphdb.QueryExecutionType;
import org.neo4j.graphdb.QueryStatistics;
import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.server.http.cypher.format.api.FailureEvent;
import org.neo4j.server.http.cypher.format.api.OutputEvent;
import org.neo4j.server.http.cypher.format.api.OutputEventSource;
import org.neo4j.server.http.cypher.format.api.RecordEvent;
import org.neo4j.server.http.cypher.format.api.Statement;
import org.neo4j.server.http.cypher.format.api.StatementEndEvent;
import org.neo4j.server.http.cypher.format.api.StatementStartEvent;
import org.neo4j.server.http.cypher.format.api.TransactionInfoEvent;
import org.neo4j.server.http.cypher.format.api.TransactionNotificationState;
import org.neo4j.server.http.cypher.format.api.TransactionUriScheme;
class OutputEventStreamImpl implements OutputEventSource, OutputEventStream
{
private final Consumer startListener;
private final Map parameters;
private final TransactionUriScheme uriInfo;
private Consumer eventListener;
OutputEventStreamImpl( Map parameters, TransactionUriScheme uriInfo, Consumer startListener )
{
this.parameters = parameters;
this.startListener = startListener;
this.uriInfo = uriInfo;
}
@Override
public void produceEvents( Consumer eventListener )
{
this.eventListener = eventListener;
startListener.accept( this );
}
@Override
public Map getParameters()
{
return parameters;
}
@Override
public void writeStatementStart( Statement statement, List columns )
{
notifyListener( new StatementStartEvent( statement, columns ) );
}
@Override
public void writeStatementEnd( QueryExecutionType queryExecutionType, QueryStatistics queryStatistics, ExecutionPlanDescription executionPlanDescription,
Iterable notifications )
{
notifyListener( new StatementEndEvent( queryExecutionType, queryStatistics, executionPlanDescription, notifications ) );
}
@Override
public void writeRecord( List columns, Function valueSupplier )
{
notifyListener( new RecordEvent( columns, valueSupplier ) );
}
@Override
public void writeTransactionInfo( TransactionNotificationState notification, URI commitUri, long expirationTimestamp )
{
notifyListener( new TransactionInfoEvent( notification, commitUri, expirationTimestamp ) );
}
@Override
public void writeFailure( Status status, String message )
{
notifyListener( new FailureEvent( status, message ) );
}
private void notifyListener( OutputEvent event )
{
eventListener.accept( event );
}
@Override
public TransactionUriScheme getUriInfo()
{
return uriInfo;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy