
org.guppy4j.NamedStringsImpl Maven / Gradle / Ivy
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