All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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