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

com.github.lontime.extcosid.jdbi.JdbiIdSegmentDistributorFactory Maven / Gradle / Ivy

package com.github.lontime.extcosid.jdbi;

import me.ahoo.cosid.segment.IdSegmentDistributor;
import me.ahoo.cosid.segment.IdSegmentDistributorDefinition;
import me.ahoo.cosid.segment.IdSegmentDistributorFactory;
import org.jdbi.v3.core.Jdbi;

/**
 * JdbiIdSegmentDistributorFactory.
 * @author lontime
 * @since 1.0
 */
public class JdbiIdSegmentDistributorFactory implements IdSegmentDistributorFactory {
    private final Jdbi jdbi;
    private final Boolean enableAutoInitIdSegment;
    private final JdbiIdSegmentInitializer jdbiIdSegmentInitializer;
    private final String incrementMaxIdSql;
    private final String fetchMaxIdSql;

    public JdbiIdSegmentDistributorFactory(Jdbi jdbi, JdbiIdSegmentInitializer jdbiIdSegmentInitializer, String incrementMaxIdSql, String fetchMaxIdSql) {
        this(jdbi, Boolean.FALSE, jdbiIdSegmentInitializer, incrementMaxIdSql, fetchMaxIdSql);
    }

    public JdbiIdSegmentDistributorFactory(Jdbi jdbi, Boolean enableAutoInitIdSegment, JdbiIdSegmentInitializer jdbiIdSegmentInitializer, String incrementMaxIdSql, String fetchMaxIdSql) {
        this.jdbi = jdbi;
        this.enableAutoInitIdSegment = enableAutoInitIdSegment;
        this.jdbiIdSegmentInitializer = jdbiIdSegmentInitializer;
        this.incrementMaxIdSql = incrementMaxIdSql;
        this.fetchMaxIdSql = fetchMaxIdSql;
    }

    @Override
    public IdSegmentDistributor create(IdSegmentDistributorDefinition definition) {
        if (enableAutoInitIdSegment) {
            jdbiIdSegmentInitializer.tryInitIdSegment(definition.getNamespacedName(), definition.getOffset());
        }
        return new JdbiIdSegmentDistributor(
                definition.getNamespace(), definition.getName(), definition.getStep(),
                incrementMaxIdSql, fetchMaxIdSql, jdbi
        );
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy