hydra.langs.tinkerpop.validate.Validate Maven / Gradle / Ivy
package hydra.langs.tinkerpop.validate;
/**
* Utilities for validating property graphs against property graph schemas
*/
public interface Validate {
static java.util.function.Function, java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>> validateEdge(java.util.function.Function>> checkValue) {
return (java.util.function.Function, java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>>) (showValue -> (java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>) (labelForVertexId -> (java.util.function.Function, java.util.function.Function, java.util.Optional>>) (typ -> (java.util.function.Function, java.util.Optional>) (el -> {
java.util.function.Function failWith = (hydra.langs.tinkerpop.validate.Validate.edgeError((showValue))).apply((el));
java.util.Optional checkProperties = hydra.lib.optionals.Map.apply(
(java.util.function.Function) (s2 -> ((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Invalid property")).apply((s2)))),
((hydra.langs.tinkerpop.validate.Validate.validateProperties((checkValue))).apply(((typ)).properties)).apply(((el)).properties));
java.util.Optional checkOut = (((labelForVertexId)).map((java.util.function.Function>, java.util.Optional>) (s0 -> ((((s0)).apply(((el)).out)).map((java.util.function.Function>) (s1 -> (hydra.langs.tinkerpop.validate.Validate.verify(hydra.lib.equality.EqualString.apply(
((s1)).value,
(((typ)).out).value))).apply(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Wrong out-vertex label")).apply((hydra.langs.tinkerpop.validate.Validate.vertexLabelMismatch(((typ)).out.value)).apply((s1)))))))).orElse(java.util.Optional.of(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Out-vertex does not exist")).apply(((showValue)).apply(((el)).out)))))))).orElse(java.util.Optional.empty());
hydra.langs.tinkerpop.propertyGraph.EdgeLabel checkLabel_expected = ((typ)).label;
hydra.langs.tinkerpop.propertyGraph.EdgeLabel checkLabel_actual = ((el)).label;
java.util.Optional checkLabel = (hydra.langs.tinkerpop.validate.Validate.verify(hydra.lib.equality.EqualString.apply(
((checkLabel_actual)).value,
((checkLabel_expected)).value))).apply(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Wrong label")).apply((hydra.langs.tinkerpop.validate.Validate.edgeLabelMismatch((checkLabel_expected.value))).apply((checkLabel_actual)))));
java.util.Optional checkIn = (((labelForVertexId)).map((java.util.function.Function>, java.util.Optional>) (f -> ((((f)).apply(((el)).in)).map((java.util.function.Function>) (label -> (hydra.langs.tinkerpop.validate.Validate.verify(hydra.lib.equality.EqualString.apply(
((label)).value,
(((typ)).in).value))).apply(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Wrong in-vertex label")).apply((hydra.langs.tinkerpop.validate.Validate.vertexLabelMismatch(((typ)).in.value)).apply((label)))))))).orElse(java.util.Optional.of(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("In-vertex does not exist")).apply(((showValue)).apply(((el)).in)))))))).orElse(java.util.Optional.empty());
java.util.Optional checkId = hydra.lib.optionals.Map.apply(
(java.util.function.Function) (x -> ((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Invalid id")).apply((x)))),
(((checkValue)).apply(((typ)).id)).apply(((el)).id));
return hydra.langs.tinkerpop.validate.Validate.checkAll(java.util.Arrays.asList(
(checkLabel),
(checkId),
(checkProperties),
(checkOut),
(checkIn)));
}))));
}
static java.util.function.Function, java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>> validateElement(java.util.function.Function>> checkValue) {
return (java.util.function.Function, java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>>) (showValue -> (java.util.function.Function>>, java.util.function.Function, java.util.function.Function, java.util.Optional>>>) (labelForVertexId -> (java.util.function.Function, java.util.function.Function, java.util.Optional>>) (typ -> (java.util.function.Function, java.util.Optional>) (el -> ((typ)).accept(new hydra.langs.tinkerpop.propertyGraph.ElementType.Visitor>() {
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.ElementType.Vertex instanceT) {
return ((el)).accept(new hydra.langs.tinkerpop.propertyGraph.Element.Visitor>() {
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.Element.Edge instance) {
return java.util.Optional.of((hydra.langs.tinkerpop.validate.Validate.prepend("Edge instead of vertex")).apply(((showValue)).apply(((instance.value)).id)));
}
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.Element.Vertex instance) {
return (((hydra.langs.tinkerpop.validate.Validate.validateVertex((checkValue))).apply((showValue))).apply((instanceT.value))).apply((instance.value));
}
});
}
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.ElementType.Edge instanceT) {
return ((el)).accept(new hydra.langs.tinkerpop.propertyGraph.Element.Visitor>() {
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.Element.Vertex instance) {
return java.util.Optional.of((hydra.langs.tinkerpop.validate.Validate.prepend("Vertex instead of edge")).apply(((showValue)).apply(((instance.value)).id)));
}
@Override
public java.util.Optional visit(hydra.langs.tinkerpop.propertyGraph.Element.Edge instance) {
return ((((hydra.langs.tinkerpop.validate.Validate.validateEdge((checkValue))).apply((showValue))).apply((labelForVertexId))).apply((instanceT.value))).apply((instance.value));
}
});
}
})))));
}
static java.util.function.Function, java.util.function.Function, java.util.function.Function, java.util.Optional>>> validateGraph(java.util.function.Function>> checkValue) {
return (java.util.function.Function, java.util.function.Function, java.util.function.Function, java.util.Optional>>>) (showValue -> (java.util.function.Function, java.util.function.Function, java.util.Optional>>) (schema -> (java.util.function.Function, java.util.Optional>) (graph -> {
java.util.function.Function, java.util.Optional> checkVertices_checkVertex = (java.util.function.Function, java.util.Optional>) (s0 -> ((hydra.lib.maps.Lookup.apply(
((s0)).label,
((schema)).vertices)).map((java.util.function.Function, java.util.Optional>) (s1 -> (((hydra.langs.tinkerpop.validate.Validate.validateVertex((checkValue))).apply((showValue))).apply((s1))).apply((s0))))).orElse(java.util.Optional.of(((hydra.langs.tinkerpop.validate.Validate.vertexError((showValue))).apply((s0))).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Unexpected label")).apply((((s0)).label).value)))));
java.util.Optional checkVertices = hydra.langs.tinkerpop.validate.Validate.checkAll(hydra.lib.lists.Map.apply(
(checkVertices_checkVertex),
hydra.lib.maps.Values.apply(((graph)).vertices)));
java.util.Optional>> checkEdges_labelForVertexId = java.util.Optional.of((java.util.function.Function>) (i -> hydra.lib.optionals.Map.apply(
(java.util.function.Function, hydra.langs.tinkerpop.propertyGraph.VertexLabel>) (v1 -> ((v1)).label),
hydra.lib.maps.Lookup.apply(
(i),
((graph)).vertices))));
java.util.function.Function, java.util.Optional> checkEdges_checkEdge = (java.util.function.Function, java.util.Optional>) (el -> ((hydra.lib.maps.Lookup.apply(
((el)).label,
((schema)).edges)).map((java.util.function.Function, java.util.Optional>) (t -> ((((hydra.langs.tinkerpop.validate.Validate.validateEdge((checkValue))).apply((showValue))).apply((checkEdges_labelForVertexId))).apply((t))).apply((el))))).orElse(java.util.Optional.of(((hydra.langs.tinkerpop.validate.Validate.edgeError((showValue))).apply((el))).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Unexpected label")).apply((((el)).label).value)))));
java.util.Optional checkEdges = hydra.langs.tinkerpop.validate.Validate.checkAll(hydra.lib.lists.Map.apply(
(checkEdges_checkEdge),
hydra.lib.maps.Values.apply(((graph)).edges)));
return hydra.langs.tinkerpop.validate.Validate.checkAll(java.util.Arrays.asList(
(checkVertices),
(checkEdges)));
})));
}
static java.util.function.Function>, java.util.function.Function, java.util.Optional>> validateProperties(java.util.function.Function>> checkValue) {
return (java.util.function.Function>, java.util.function.Function, java.util.Optional>>) (types -> (java.util.function.Function, java.util.Optional>) (props -> {
java.util.Map checkValues_m = hydra.lib.maps.FromList.apply(hydra.lib.lists.Map.apply(
(java.util.function.Function, hydra.core.Tuple.Tuple2>) (p -> new hydra.core.Tuple.Tuple2(((p)).key, ((p)).value)),
(types)));
java.util.function.Function, java.util.Optional> checkValues_checkPair = (java.util.function.Function, java.util.Optional>) (pair -> {
V val = ((pair)).object2;
hydra.langs.tinkerpop.propertyGraph.PropertyKey key = ((pair)).object1;
return ((hydra.lib.maps.Lookup.apply(
(key),
(checkValues_m))).map((java.util.function.Function>) (typ -> hydra.lib.optionals.Map.apply(
hydra.langs.tinkerpop.validate.Validate.prepend("Invalid value"),
(((checkValue)).apply((typ))).apply((val)))))).orElse(java.util.Optional.of((hydra.langs.tinkerpop.validate.Validate.prepend("Unexpected key")).apply(((key)).value)));
});
java.util.Optional checkValues = hydra.langs.tinkerpop.validate.Validate.checkAll(hydra.lib.lists.Map.apply(
(checkValues_checkPair),
hydra.lib.maps.ToList.apply((props))));
java.util.function.Function, java.util.Optional> checkType = (java.util.function.Function, java.util.Optional>) (t -> hydra.lib.logic.IfElse.apply(
((hydra.lib.maps.Lookup.apply(
((t)).key,
(props))).map((java.util.function.Function>) (ignored -> java.util.Optional.empty()))).orElse(java.util.Optional.of((hydra.langs.tinkerpop.validate.Validate.prepend("Missing value for ")).apply((((t)).key).value))),
java.util.Optional.empty(),
((t)).required));
java.util.Optional checkTypes = hydra.langs.tinkerpop.validate.Validate.checkAll(hydra.lib.lists.Map.apply(
(checkType),
(types)));
return hydra.langs.tinkerpop.validate.Validate.checkAll(java.util.Arrays.asList(
(checkTypes),
(checkValues)));
}));
}
static java.util.function.Function, java.util.function.Function, java.util.function.Function, java.util.Optional>>> validateVertex(java.util.function.Function>> checkValue) {
return (java.util.function.Function, java.util.function.Function, java.util.function.Function, java.util.Optional>>>) (showValue -> (java.util.function.Function, java.util.function.Function, java.util.Optional>>) (typ -> (java.util.function.Function, java.util.Optional>) (el -> {
java.util.function.Function failWith = (hydra.langs.tinkerpop.validate.Validate.vertexError((showValue))).apply((el));
java.util.Optional checkProperties = hydra.lib.optionals.Map.apply(
(java.util.function.Function) (s0 -> ((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Invalid property")).apply((s0)))),
((hydra.langs.tinkerpop.validate.Validate.validateProperties((checkValue))).apply(((typ)).properties)).apply(((el)).properties));
hydra.langs.tinkerpop.propertyGraph.VertexLabel checkLabel_expected = ((typ)).label;
hydra.langs.tinkerpop.propertyGraph.VertexLabel checkLabel_actual = ((el)).label;
java.util.Optional checkLabel = (hydra.langs.tinkerpop.validate.Validate.verify(hydra.lib.equality.EqualString.apply(
((checkLabel_actual)).value,
((checkLabel_expected)).value))).apply(((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Wrong label")).apply((hydra.langs.tinkerpop.validate.Validate.vertexLabelMismatch((checkLabel_expected.value))).apply((checkLabel_actual)))));
java.util.Optional checkId = hydra.lib.optionals.Map.apply(
(java.util.function.Function) (x -> ((failWith)).apply((hydra.langs.tinkerpop.validate.Validate.prepend("Invalid id")).apply((x)))),
(((checkValue)).apply(((typ)).id)).apply(((el)).id));
return hydra.langs.tinkerpop.validate.Validate.checkAll(java.util.Arrays.asList(
(checkLabel),
(checkId),
(checkProperties)));
})));
}
static java.util.Optional checkAll(java.util.List> checks) {
java.util.List errors = hydra.lib.optionals.Cat.apply((checks));
return hydra.lib.lists.Null.apply((errors))
? java.util.Optional.empty()
: java.util.Optional.of(hydra.lib.lists.Head.apply((errors)));
}
static java.util.function.Function, java.util.function.Function> edgeError(java.util.function.Function a1) {
return (java.util.function.Function, java.util.function.Function>) (e -> hydra.langs.tinkerpop.validate.Validate.prepend(hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
"Invalid edge with id ",
((a1)).apply(((e)).id)))));
}
static java.util.function.Function edgeLabelMismatch(String expected) {
return (java.util.function.Function) (actual -> hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
"expected ",
((expected)))),
", found ")),
((actual)).value)));
}
static java.util.function.Function prepend(String prefix) {
return (java.util.function.Function) (msg -> hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
(prefix),
": ")),
(msg))));
}
static java.util.function.Function> verify(Boolean b) {
return (java.util.function.Function>) (err -> hydra.lib.logic.IfElse.apply(
java.util.Optional.empty(),
java.util.Optional.of((err)),
(b)));
}
static java.util.function.Function, java.util.function.Function> vertexError(java.util.function.Function a1) {
return (java.util.function.Function, java.util.function.Function>) (v -> hydra.langs.tinkerpop.validate.Validate.prepend(hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
"Invalid vertex with id ",
((a1)).apply(((v)).id)))));
}
static java.util.function.Function vertexLabelMismatch(String expected) {
return (java.util.function.Function) (actual -> hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
hydra.lib.strings.Cat.apply(java.util.Arrays.asList(
"expected ",
((expected)))),
", found ")),
((actual)).value)));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy