package jnpf.elnService;
|
|
import jnpf.elnEntity.runtime.ElnRecordFieldValueEntity;
|
import jnpf.elnEntity.template.ElnTemplateBindingEntity;
|
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
public interface ElnCrossTemplateSnapshotResolver {
|
Map<String, ElnRecordFieldValueEntity> resolve(String tenantId, String targetTestWorkItemId,
|
List<ElnTemplateBindingEntity> targetBindings);
|
|
/**
|
* Re-resolves persisted cross-template targets by their immutable binding identity.
|
* This keeps explicit synchronization independent from the currently editable template.
|
*/
|
default Map<String, ElnRecordFieldValueEntity> resolveByBindingIds(String tenantId,
|
String targetTestWorkItemId, Set<String> targetBindingIds) {
|
return Collections.emptyMap();
|
}
|
|
/**
|
* Re-resolves persisted cross-template snapshots without changing them.
|
* A caller can use every returned issue to block a state transition while
|
* preserving the original snapshot as audit evidence.
|
*/
|
default List<SnapshotIssue> validatePersistedSnapshots(String tenantId, String targetTestWorkItemId,
|
List<ElnRecordFieldValueEntity> targetValues) {
|
return Collections.emptyList();
|
}
|
|
final class SnapshotIssue {
|
private final String code;
|
private final String message;
|
private final String targetBindingId;
|
private final String targetFieldCode;
|
private final String sourceTemplateCode;
|
|
public SnapshotIssue(String code, String message, String targetBindingId,
|
String targetFieldCode, String sourceTemplateCode) {
|
this.code = code;
|
this.message = message;
|
this.targetBindingId = targetBindingId;
|
this.targetFieldCode = targetFieldCode;
|
this.sourceTemplateCode = sourceTemplateCode;
|
}
|
|
public String getCode() { return code; }
|
public String getMessage() { return message; }
|
public String getTargetBindingId() { return targetBindingId; }
|
public String getTargetFieldCode() { return targetFieldCode; }
|
public String getSourceTemplateCode() { return sourceTemplateCode; }
|
}
|
|
static ElnCrossTemplateSnapshotResolver none() {
|
return (tenantId, testWorkItemId, bindings) -> Collections.emptyMap();
|
}
|
}
|