
io.vertx.tp.plugin.booting.AbstractBoot Maven / Gradle / Ivy
package io.vertx.tp.plugin.booting;
import com.fasterxml.jackson.core.type.TypeReference;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.up.eon.Strings;
import io.vertx.up.log.Annal;
import io.vertx.up.util.Ut;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors;
/**
* @author Lang
*/
public abstract class AbstractBoot implements KBoot {
private transient final ConcurrentMap connects =
new ConcurrentHashMap<>();
private transient final ConcurrentMap modules =
new ConcurrentHashMap<>();
private transient final ConcurrentMap columns =
new ConcurrentHashMap<>();
private transient final List files = new ArrayList<>();
private transient final String root;
public AbstractBoot(final String module) {
this.root = "plugin/" + module + "/oob/";
}
protected Annal logger() {
return Annal.get(this.getClass());
}
@Override
public ConcurrentMap configure() {
if (this.connects.isEmpty()) {
final String excelYaml = this.root + "initialize.yml";
final JsonArray data = Ut.ioYaml(excelYaml);
final List connectList = Ut.deserialize(data, new TypeReference>() {
});
connectList.stream().filter(Objects::nonNull)
.filter(connect -> Objects.nonNull(connect.getTable()))
.forEach(connect -> this.connects.put(connect.getTable(), connect));
final JsonArray fileData = Ut.ioJArray(this.root + "initialize.json");
Ut.itJArray(fileData, String.class, (item, index) -> this.files.add(item));
// Extension Built In
this.files.addAll(this.configureBuiltIn());
}
return this.connects;
}
protected Set configureBuiltIn() {
return new HashSet<>();
}
@Override
public List oob() {
return this.files;
}
@Override
public List oob(final String prefix) {
// Fix Issue of Null Pointer
final String prefixFile = Objects.isNull(prefix) ? Strings.EMPTY : prefix;
return this.files.stream()
.filter(item -> item.contains(prefixFile))
.collect(Collectors.toList());
}
@Override
public ConcurrentMap module() {
if (this.modules.isEmpty()) {
final Set modules = this.moduleSet();
modules.forEach(item -> {
final String moduleJson = this.root + "module/crud/" + item + ".json";
final JsonObject module = Ut.ioJObject(moduleJson);
if (Ut.notNil(module)) {
this.modules.put(item, module);
}
});
}
return this.modules;
}
@Override
public ConcurrentMap column() {
if (this.columns.isEmpty()) {
final Set modules = this.moduleSet();
modules.forEach(item -> {
final String moduleJson = this.root + "module/ui/" + item + ".json";
final JsonArray module = Ut.ioJArray(moduleJson);
if (Ut.notNil(module)) {
this.columns.put(item, module);
}
});
}
return this.columns;
}
private Set moduleSet() {
final String moduleJson = this.root + "module.json";
final JsonArray module = Ut.ioJArray(moduleJson);
return Ut.toSet(module);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy