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

me.redtea.carcadex.repo.builder.RepoBuilder Maven / Gradle / Ivy

package me.redtea.carcadex.repo.builder;

import me.redtea.carcadex.repo.MutableRepo;
import me.redtea.carcadex.repo.builder.impl.RepoBuilderImpl;
import me.redtea.carcadex.schema.SchemaStrategy;
import me.redtea.carcadex.serializer.CommonSerializer;
import org.bukkit.plugin.Plugin;
import org.slf4j.Logger;

import java.io.File;
import java.nio.file.Path;

public interface RepoBuilder {
    RepoBuilder folder(File folder);
    RepoBuilder folder(String filename); //requires plugin. didnt need if dir set
    RepoBuilder plugin(Plugin plugin);
    RepoBuilder serializer(CommonSerializer serializer);
    RepoBuilder binary(); //requires that V extends Serializable
    RepoBuilder schema(SchemaStrategy schemaStrategy);
    RepoBuilder logging();
    RepoBuilder debugLogging();
    RepoBuilder logging(Logger logger);
    RepoBuilder debugLogging(Logger logger);
    RepoBuilder autoSave(long period); //in milisec
    RepoBuilder sync();
    RepoBuilder cacheCollectionAll();
    RepoBuilder concurrent();

    MutableRepo build();

    static RepoBuilder get() {
        return new RepoBuilderImpl<>();
    }

    static  RepoBuilder of(File folder) {
        return RepoBuilder.get().folder(folder);
    }

    static  RepoBuilder of(Path folder) {
        return RepoBuilder.get().folder(folder.toFile());
    }

    static  RepoBuilder of(Plugin plugin) {
        return RepoBuilder.get().plugin(plugin);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy