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

com.brettonw.bag.Builder Maven / Gradle / Ivy

package com.brettonw.bag;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

abstract class Builder {
    public static final String DEFAULT_FORMAT = "default";

    protected static final String[] QUOTES = { "\"" };

    String enclose (String input, String[] bracket) {
        String bracket0 = bracket[0];
        String bracket1 = (bracket.length > 1) ? bracket[1] : bracket0;
        return bracket0 + input + bracket1;
    }

    String quote (String input) {
        return enclose (input, QUOTES);
    }

    abstract public String from (BagObject bagObject);
    abstract public String from (BagArray bagArray);

    // static type registration by name
    private static Map builders = new HashMap<>();
    public static void registerBuilder (String format, boolean replace, Supplier supplier) {
        if ((! replace) || (! builders.containsKey(format))) {
            builders.put(format, supplier.get());
        }
    }

    public static String from (BagObject bagObject, String format) {
        if (builders.containsKey(format)) {
            return builders.get(format).from (bagObject);
        }
        return null;
    }

    public static String from (BagArray bagArray, String format) {
        if (builders.containsKey(format)) {
            return builders.get(format).from (bagArray);
        }
        return null;
    }

    // JSON is the default format
    static {
        Builder.registerBuilder(DEFAULT_FORMAT, false, () -> new BuilderJson());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy