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

de.factoryfx.data.merge.MergeDiffInfo Maven / Gradle / Ivy

package de.factoryfx.data.merge;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import de.factoryfx.data.Data;
import de.factoryfx.data.jackson.ObjectMapperBuilder;

//JSON serializable
public class MergeDiffInfo {
    @JsonProperty
    private final Class rootClazz;

    public final List mergeInfos;
    public final List conflictInfos;
    public final List permissionViolations;

    @JsonIgnore
    private final R previousRoot;
    @JsonIgnore
    private final R newRoot;

    @JsonCreator
    public MergeDiffInfo(
            @JsonProperty("mergeInfos")List mergeInfos,
            @JsonProperty("conflictInfos")List conflictInfos,
            @JsonProperty("permissionViolations")List permissionViolations,
            @JsonProperty("previousRoot")String previousRoot,
            @JsonProperty("newRoot")String newRoot,
            @JsonProperty("rootClazz")Class rootClazz){
        this.mergeInfos=mergeInfos;
        this.conflictInfos=conflictInfos;
        this.permissionViolations = permissionViolations;
        this.previousRoot=ObjectMapperBuilder.build().readValue(previousRoot,rootClazz);
        this.newRoot=ObjectMapperBuilder.build().readValue(newRoot,rootClazz);
        this.rootClazz=rootClazz;
    }

    public MergeDiffInfo(
            List mergeInfos,
            List conflictInfos,
            List permissionViolations,
            R previousRoot,
            R newRoot,
            Class rootClazz){
        this.mergeInfos=mergeInfos;
        this.conflictInfos=conflictInfos;
        this.permissionViolations = permissionViolations;
        this.previousRoot=previousRoot;
        this.newRoot=newRoot;
        this.rootClazz = rootClazz;
    }

    public String getPreviousRoot() {//workaround for duplicated ids
        return ObjectMapperBuilder.build().writeValueAsString(previousRoot);
    }

    public String getNewRoot() {
        return ObjectMapperBuilder.build().writeValueAsString(newRoot);
    }

    @JsonIgnore
    public int getConflictCount() {
        return conflictInfos.size();
    }

    @JsonIgnore
    public boolean hasNoConflicts() {
        return conflictInfos.isEmpty();
    }

    @JsonIgnore
    public boolean hasNoPermissionViolation() {
        return permissionViolations.isEmpty();
    }

    @JsonIgnore
    public boolean successfullyMerged() {
        return hasNoConflicts() && hasNoPermissionViolation();
    }

    @JsonIgnore
    public R getPreviousRootData() {
        return previousRoot;
    }

    @JsonIgnore
    public R getNewRootData() {
        return newRoot;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy