
jdplus.toolkit.desktop.plugin.util.Persistence Maven / Gradle / Ivy
package jdplus.toolkit.desktop.plugin.util;
import jdplus.toolkit.desktop.plugin.Config;
import jdplus.toolkit.desktop.plugin.beans.BeanHandler;
import jdplus.toolkit.base.tsp.util.PropertyHandler;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
@lombok.Value
@lombok.Builder
public class Persistence {
@lombok.NonNull
String domain;
@lombok.NonNull
String name;
@lombok.NonNull
String version;
@lombok.Singular
List> getters;
@lombok.Singular
List> setters;
public Config loadConfig(T target) {
Config.Builder config = Config.builder(domain, name, version);
getters.forEach(item -> item.accept(target, config));
return config.build();
}
public void storeConfig(T target, Config config) {
Config.checkDomain(config, domain);
setters.forEach(item -> item.accept(target, config));
}
public static Builder builderOf(Class type) {
return new Builder().domain(type.getName());
}
public static final class Builder {
public Builder with(PropertyHandler p, Function getter, BiConsumer setter) {
return with(p, BeanHandler.of(getter, setter));
}
public Builder with(PropertyHandler p, BeanHandler handler) {
Config.Converter converter = Config.Converter.of(p);
getter((target, config) -> converter.set(config, handler.load(target)));
setter((target, config) -> handler.store(target, converter.get(config)));
return this;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy