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

ai.stapi.graphoperations.serializableGraph.deserializer.SerializableGraphDeserializer Maven / Gradle / Ivy

There is a newer version: 0.3.2
Show newest version
package ai.stapi.graphoperations.serializableGraph.deserializer;

import ai.stapi.graph.Graph;
import ai.stapi.graph.graphelements.Edge;
import ai.stapi.graph.graphelements.Node;
import ai.stapi.graphoperations.serializableGraph.SerializableEdge;
import ai.stapi.graphoperations.serializableGraph.SerializableGraph;
import ai.stapi.graphoperations.serializableGraph.SerializableNode;
import java.util.HashMap;

public class SerializableGraphDeserializer {

  private final SerializableNodeDeserializer nodeDeserializer;
  private final SerializableEdgeDeserializer edgeDeserializer;

  public SerializableGraphDeserializer(
      SerializableNodeDeserializer nodeDeserializer,
      SerializableEdgeDeserializer edgeDeserializer
  ) {
    this.nodeDeserializer = nodeDeserializer;
    this.edgeDeserializer = edgeDeserializer;
  }

  public Graph deserialize(SerializableGraph serializableGraph) {
    var nodes = new HashMap();
    serializableGraph.getNodes().values()
        .stream()
        .map(this.nodeDeserializer::deserialize)
        .forEach(node -> nodes.put(new Graph.GloballyUniqueIdentifier(node.getId(), node.getType()), node));

    var edges = new HashMap();
    serializableGraph.getEdges().values()
        .stream()
        .map(this.edgeDeserializer::deserialize)
        .forEach(edge -> edges.put(new Graph.GloballyUniqueIdentifier(edge.getId(), edge.getType()), edge));

    return Graph.unsafe(nodes, edges);
  }

  public Edge deserializeEdge(SerializableEdge serializableEdge) {
    return this.edgeDeserializer.deserialize(serializableEdge);
  }

  public Node deserializeNode(SerializableNode serializableNode) {
    return this.nodeDeserializer.deserialize(serializableNode);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy