All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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