package com.constellio.data.dao.services.transactionLog.reader1;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.constellio.data.utils.LazyIterator;
public class ReaderTransactionLinesIteratorV1 extends LazyIterator<List<String>> {
Iterator<String> linesIterator;
public ReaderTransactionLinesIteratorV1(Iterator<String> linesIterator) {
this.linesIterator = linesIterator;
}
@Override
protected List<String> getNextOrNull() {
List<String> currentLines = new ArrayList<>();
while (linesIterator.hasNext()) {
String line = linesIterator.next();
if (line != null && line.startsWith("__LINEBREAK__")) {
int lastLineIndex = currentLines.size() - 1;
String lastLine = currentLines.get(lastLineIndex);
currentLines.set(lastLineIndex, lastLine + line);
} else if (line != null && (!isFirstLineOfTransaction(line) || currentLines.isEmpty())) {
currentLines.add(line);
} else {
break;
}
}
return currentLines.isEmpty() ? null : currentLines;
}
private boolean isFirstLineOfTransaction(String line) {
return line.startsWith("--transaction--");
}
}