
io.castled.apps.BufferedObjectSink Maven / Gradle / Ivy
package io.castled.apps;
import com.google.common.collect.Lists;
import io.castled.commons.models.AppSyncStats;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
@Slf4j
public abstract class BufferedObjectSink {
protected final List objects = Lists.newArrayList();
public void writeRecord(T object) {
objects.add(object);
if (objects.size() >= getMaxBufferedObjects()) {
flushBufferedRecords(objects);
objects.clear();
}
}
public void flushBufferedRecords(List records) {
if (CollectionUtils.isNotEmpty(records)) {
writeRecords(records);
}
}
protected abstract void writeRecords(List records);
public void flushRecords() throws Exception {
if (objects.size() > 0) {
flushBufferedRecords(objects);
objects.clear();
}
afterRecordsFlush();
}
public void afterRecordsFlush() {
}
public abstract long getMaxBufferedObjects();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy