package eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.consistency;
import java.util.List;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.ServiceQualification;
import eu.europa.esig.dss.validation.reports.wrapper.TrustedServiceWrapper;
/**
* A Trusted Service can only have one of these values {QcForEsig, QcForEseal or QcForWSA} or none.
*
*/
public class TrustedServiceUsageConsistency implements TrustedServiceCondition {
@Override
public boolean isConsistent(TrustedServiceWrapper trustedService) {
List<String> capturedQualifiers = trustedService.getCapturedQualifiers();
boolean qcForEsig = ServiceQualification.isQcForEsig(capturedQualifiers);
boolean qcForEseal = ServiceQualification.isQcForEseal(capturedQualifiers);
boolean qcForWSA = ServiceQualification.isQcForWSA(capturedQualifiers);
boolean noneOfThem = !(qcForEsig || qcForEseal || qcForWSA);
boolean onlyOneOfThem = qcForEsig ^ qcForEseal ^ qcForWSA; // ^ = XOR
return noneOfThem || onlyOneOfThem;
}
}