/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.neo4j.remote.common.dialect.impl;
import java.util.Iterator;
import java.util.List;
import org.hibernate.ogm.dialect.query.spi.ClosableIterator;
import org.hibernate.ogm.model.spi.Tuple;
import org.hibernate.ogm.model.spi.Tuple.SnapshotType;
import org.hibernate.ogm.model.spi.TupleSnapshot;
/**
* @author Davide D'Alto
*/
public abstract class RemoteNeo4jMapsTupleIterator<T> implements ClosableIterator<Tuple> {
private final Iterator<T> iterator;
private final List<String> columns;
public RemoteNeo4jMapsTupleIterator(Iterator<T> iterator, List<String> columns) {
this.iterator = iterator;
this.columns = columns;
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Tuple next() {
T row = iterator.next();
return new Tuple( tupleSnapshot( row, columns ), SnapshotType.UPDATE );
}
protected abstract TupleSnapshot tupleSnapshot(T next, List<String> columns);
@Override
public void remove() {
iterator.remove();
}
@Override
public void close() {
}
}