package org.javers.core.snapshot; import org.javers.common.validation.Validate; import org.javers.core.graph.ObjectNode; import org.javers.core.metamodel.object.GlobalId; import org.javers.repository.api.JaversExtendedRepository; import java.util.*; import java.util.stream.Collectors; /** * Builds SnapshotGraph from latest snapshots loaded from javersRepository */ public class SnapshotGraphFactory { private final JaversExtendedRepository javersRepository; SnapshotGraphFactory(JaversExtendedRepository javersRepository) { this.javersRepository = javersRepository; } public SnapshotGraph createLatest(Set<GlobalId> globalIds){ Validate.argumentIsNotNull(globalIds); Set<ObjectNode> snapshotNodes = globalIds.stream() .map(javersRepository::getLatest) .filter(Optional::isPresent).map(Optional::get) .map(ObjectNode::new) .collect(Collectors.toSet()); return new SnapshotGraph(snapshotNodes); } }