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

org.javers.core.diff.DiffBuilder Maven / Gradle / Ivy

There is a newer version: 7.6.1
Show newest version
package org.javers.core.diff;

import org.javers.core.commit.CommitMetadata;

import java.util.*;

/**
 * @author bartosz walacik
 */
class DiffBuilder {
    private final List changes = new ArrayList<>();

    private DiffBuilder() {
    }

    public static DiffBuilder diff() {
        return new DiffBuilder();
    }

    public static Diff empty() {
        return new Diff(Collections.emptyList());
    }

    public DiffBuilder addChange(Change change, Optional affectedCdo) {
        addChange(change);
        affectedCdo.ifPresent(change::setAffectedCdo);
        return this;
    }

    public DiffBuilder addChange(Change change) {
        changes.add(change);
        return this;
    }

    public DiffBuilder addChanges(Collection changeSet, final Optional commitMetadata) {

        changeSet.forEach(change -> {
            addChange(change);
            commitMetadata.ifPresent(it -> change.bindToCommit(it));
        });

        return this;
    }

    public Diff build() {
        return new Diff(changes);
    }
}