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

tech.tablesaw.io.ReaderRegistry Maven / Gradle / Ivy

There is a newer version: 0.44.1
Show newest version
package tech.tablesaw.io;

import java.util.HashMap;
import java.util.Map;

public class ReaderRegistry {

    private final Map> optionTypesRegistry = new HashMap<>();

    private final Map> extensionsRegistry = new HashMap<>();

    private final Map> mimeTypesRegistry = new HashMap<>();


    public void registerOptions(Class optionsType, DataReader reader) {
        optionTypesRegistry.put(optionsType.getCanonicalName(), reader);
    }

    public void registerExtension(String extension, DataReader reader) {
        extensionsRegistry.put(extension, reader);
    }

    public void registerMimeType(String mimeType, DataReader reader) {
        mimeTypesRegistry.put(mimeType, reader);
    }

    @SuppressWarnings("unchecked")
    public  DataReader getReaderForOptions(T options) {
	String clazz = options.getClass().getCanonicalName();
	DataReader reader = (DataReader) optionTypesRegistry.get(clazz);
	if (reader == null) {
	    throw new IllegalArgumentException("No reader registered for class " + clazz);
	}
	return reader;
    }

    public DataReader getReaderForExtension(String extension) {
	DataReader reader = extensionsRegistry.get(extension);
	if (reader == null) {
	    throw new IllegalArgumentException("No reader registered for extension " + extension);
	}
	return reader;
    }

    public DataReader getReaderForMimeType(String mimeType) {
	DataReader reader = mimeTypesRegistry.get(mimeType);
	if (reader == null) {
	    throw new IllegalArgumentException("No reader registered for mime-type " + mimeType);
	}
	return reader;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy