package org.javers.core.diff; import org.javers.core.graph.ObjectNode; import org.javers.core.metamodel.object.Cdo; import org.javers.core.metamodel.object.GlobalId; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; /** * @author bartosz walacik */ public abstract class ObjectGraph<T extends Cdo> { private final Set<ObjectNode> nodes; public ObjectGraph(Set<ObjectNode> nodes) { this.nodes = nodes; } public Set<ObjectNode> nodes() { return nodes; } public Set<T> cdos() { return nodes().stream().map(node -> (T) node.getCdo()).collect(Collectors.toSet()); } public Set<GlobalId> globalIds() { return nodes().stream().map(ObjectNode::getGlobalId).collect(Collectors.toSet()); } public Optional<T> get(GlobalId globalId) { return nodes.stream() .filter(node -> globalId.equals(node.getGlobalId())) .findFirst() .map(node -> (T) node.getCdo()); } }