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

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

package org.javers.core.diff;

import org.javers.common.string.PrettyValuePrinter;
import org.javers.core.commit.CommitMetadata;

import java.util.*;

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

    public DiffBuilder() {
        this(PrettyValuePrinter.getDefault());
    }

    public DiffBuilder(PrettyValuePrinter valuePrinter) {
        this.valuePrinter = valuePrinter;
    }

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

    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) {

        changeSet.forEach(change -> {
            addChange(change);
        });

        return this;
    }

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