package com.constellio.data.dao.services.transactionLog; import java.io.BufferedReader; import java.io.File; import java.util.Iterator; import java.util.List; import com.constellio.data.conf.DataLayerConfiguration; import com.constellio.data.dao.services.bigVault.solr.BigVaultServerTransaction; import com.constellio.data.dao.services.transactionLog.reader1.ReaderLinesIteratorV1; import com.constellio.data.dao.services.transactionLog.reader1.ReaderTransactionLinesIteratorV1; import com.constellio.data.dao.services.transactionLog.reader1.ReaderTransactionsIteratorV1; import com.constellio.data.dao.services.transactionLog.writer1.TransactionWriterV1; import com.constellio.data.extensions.DataLayerSystemExtensions; import com.constellio.data.io.services.facades.IOServices; public class TransactionLogReadWriteServices { static final String READ_LOG_FOR_REPLAY = XMLSecondTransactionLogManager.class.getSimpleName() + "_readLogForReplay"; private DataLayerSystemExtensions extensions; private IOServices ioServices; private DataLayerConfiguration configuration; public TransactionLogReadWriteServices(IOServices ioServices, DataLayerConfiguration configuration, DataLayerSystemExtensions extensions) { this.ioServices = ioServices; this.configuration = configuration; this.extensions = extensions; } public Iterator<BigVaultServerTransaction> newOperationsIterator(File tLog) { final BufferedReader tLogBufferedReader = ioServices.newBufferedFileReader(tLog, READ_LOG_FOR_REPLAY); Iterator<String> linesIterator = new ReaderLinesIteratorV1(ioServices, tLogBufferedReader); final Iterator<List<String>> transactionLinesIterator = new ReaderTransactionLinesIteratorV1(linesIterator); return new ReaderTransactionsIteratorV1(tLog.getName(), transactionLinesIterator, configuration); } public String toLogEntry(BigVaultServerTransaction transaction) { return new TransactionWriterV1(configuration.isWriteZZRecords(), extensions).toLogEntry(transaction); } public String toSetSequenceLogEntry(String sequenceId, long value) { return new TransactionWriterV1(configuration.isWriteZZRecords(), extensions).toSetSequenceLogEntry(sequenceId, value); } public String toNextSequenceLogEntry(String sequenceId) { return new TransactionWriterV1(configuration.isWriteZZRecords(), extensions).toNextSequenceLogEntry(sequenceId); } }