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

com.brettonw.bedrock.bag.formats.FormatReaderComposite Maven / Gradle / Ivy

package com.brettonw.bedrock.bag.formats;

import com.brettonw.bedrock.bag.BagArray;
import com.brettonw.bedrock.bag.BagObject;
import com.brettonw.bedrock.bag.entry.Handler;
import com.brettonw.bedrock.bag.entry.HandlerArrayFromDelimited;
import com.brettonw.bedrock.bag.entry.HandlerObjectFromPairsArray;

public class FormatReaderComposite extends FormatReader implements ArrayFormatReader, ObjectFormatReader {
    private Handler handler;

    public FormatReaderComposite () {}

    public FormatReaderComposite (String input, Handler handler) {
        super (input);
        this.handler = handler;
    }

    @Override
    public BagArray readBagArray () {
        return (BagArray) handler.getEntry (input);
    }

    @Override
    public BagObject readBagObject () {
        return (BagObject) handler.getEntry (input);
    }

    /*
    public static FormatReaderComposite basicArrayReader (String input, String arrayDelimiter, String ignore) {
        return new FormatReaderComposite (input, new HandlerArrayFromDelimited (arrayDelimiter).ignore (ignore));
    }
    */

    public static FormatReaderComposite basicArrayReader (String input, String arrayDelimiter) {
        return new FormatReaderComposite (input, new HandlerArrayFromDelimited (arrayDelimiter));
    }

    public static FormatReaderComposite basicObjectReader (String input, String arrayDelimiter, String pairDelimiter, boolean accumulateEntries) {
        return new FormatReaderComposite (input, new HandlerObjectFromPairsArray (
                new HandlerArrayFromDelimited (arrayDelimiter, new HandlerArrayFromDelimited (pairDelimiter))
        ).accumulateEntries (accumulateEntries));
    }

    public static FormatReaderComposite basicObjectReader (String input, String arrayDelimiter, String pairDelimiter) {
        return basicObjectReader (input, arrayDelimiter, pairDelimiter, false);
    }

    static {
        MimeType.addExtensionMapping (MimeType.PROP, "properties");
        registerFormatReader (MimeType.PROP, false, (input) -> basicObjectReader (input, "\n", "="));

        MimeType.addExtensionMapping (MimeType.URL, "url");
        registerFormatReader (MimeType.URL, false, (input) -> basicObjectReader (input, "&", "="));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy