package org.infinispan.tools.jdbc.migrator;
import java.util.Iterator;
import org.infinispan.commons.marshall.StreamingMarshaller;
import org.infinispan.marshall.core.MarshalledEntry;
import org.infinispan.persistence.jdbc.connectionfactory.ConnectionFactory;
import org.infinispan.persistence.jdbc.table.management.TableManager;
import org.infinispan.persistence.keymappers.TwoWayKey2StringMapper;
/**
* @author Ryan Emerson
* @since 9.0
*/
class MixedJdbcIterator implements Iterator<MarshalledEntry>, AutoCloseable {
private BinaryJdbcIterator binaryIt;
private StringJdbcIterator stringIt;
MixedJdbcIterator(ConnectionFactory connectionFactory, TableManager binaryTm, TableManager stringTm,
StreamingMarshaller marshaller, TwoWayKey2StringMapper key2StringMapper) {
binaryIt = new BinaryJdbcIterator(connectionFactory, binaryTm, marshaller);
stringIt = new StringJdbcIterator(connectionFactory, stringTm, marshaller, key2StringMapper);
}
@Override
public boolean hasNext() {
return binaryIt.hasNext() || stringIt.hasNext();
}
@Override
public MarshalledEntry next() {
if (binaryIt.hasNext())
return binaryIt.next();
return stringIt.next();
}
@Override
public void close() throws Exception {
binaryIt.close();
stringIt.close();
}
}