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

org.guppy4j.NamedStringsImpl Maven / Gradle / Ivy

There is a newer version: 0.0.7
Show newest version
package org.guppy4j;

import org.guppy4j.io.Resources;
import org.guppy4j.log.Log;
import org.guppy4j.log.LogProvider;

import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.function.Predicate;

import static java.util.Map.Entry;
import static java.util.stream.Collectors.toList;
import static org.guppy4j.log.Log.Level.info;

/**
 * Settings based on a properties file
 */
public class NamedStringsImpl implements NamedStrings {

    private final Map map;

    public NamedStringsImpl(LogProvider logProvider,
                            Resources resources,
                            URL propertiesLocation) {
        this(logProvider,
                resources.properties(propertiesLocation),
                propertiesLocation.toString());
    }

    public NamedStringsImpl(LogProvider logProvider,
                            Properties properties,
                            String propertiesOrigin) {

        map = toNamedValuesMap(properties);

        final Log log = logProvider.getLog(getClass());
        log.as(info, "Settings loaded from {}", propertiesOrigin);
        log.as(info, "Number of name/value pairs: {}", map.size());
    }

    @Override
    public NamedString get(String name) {
        return map.get(name);
    }

    @Override
    public Iterable all() {
        return map.values();
    }

    @Override
    public Iterable matches(Predicate condition) {
        return map.values().stream().filter(condition).collect(toList());
    }

    private static Map toNamedValuesMap(Properties properties) {
        final Map map = new HashMap<>(properties.size());
        for (Entry e : properties.entrySet()) {
            final String name = e.getKey().toString();
            final String value = e.getValue().toString();
            map.put(name, new NamedStringImpl(name, value));
        }
        return map;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy