40 lines
1.4 KiB
Java
40 lines
1.4 KiB
Java
package ${package}.model;
|
|
|
|
import static ${package}.model.Constants.*;
|
|
|
|
import java.util.Optional;
|
|
|
|
import com.google.gson.JsonArray;
|
|
import li.strolch.model.StrolchElement;
|
|
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
|
import li.strolch.persistence.api.StrolchTransaction;
|
|
|
|
public class JsonVisitors {
|
|
|
|
public static StrolchRootElementToJsonVisitor toJson() {
|
|
return new StrolchRootElementToJsonVisitor().withoutPolicies();
|
|
}
|
|
|
|
public static StrolchRootElementToJsonVisitor flatToJson() {
|
|
return toJson().withoutVersion().flat();
|
|
}
|
|
|
|
public static StrolchRootElementToJsonVisitor bookToJson() {
|
|
return flatToJson();
|
|
}
|
|
|
|
public static StrolchRootElementToJsonVisitor stockBagToJson(StrolchTransaction tx) {
|
|
return flatToJson().bagHook((stockBag, stockJ) -> stockJ.addProperty(PARAM_BOOK_NAME,
|
|
Optional.ofNullable(tx.getResourceBy(stockBag.getParameter(PARAM_BOOK), false))
|
|
.map(StrolchElement::getName).orElse("???")));
|
|
}
|
|
|
|
public static StrolchRootElementToJsonVisitor locationToJson(StrolchTransaction tx) {
|
|
StrolchRootElementToJsonVisitor stockVisitor = stockBagToJson(tx);
|
|
return flatToJson().ignoreBagByType(TYPE_STOCK).resourceHook(
|
|
(location, locationJ) -> locationJ.add(PARAM_STOCKS,
|
|
location.streamOfParameterBagsByType(TYPE_STOCK).map(b -> b.accept(stockVisitor))
|
|
.collect(JsonArray::new, JsonArray::add, JsonArray::addAll)));
|
|
}
|
|
}
|