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