package eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.qualified.tl;
import java.util.List;
import eu.europa.esig.dss.utils.Utils;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.ServiceQualification;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.qualified.AbstractQualificationCondition;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.qualified.QualificationStrategy;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.qualified.QualifiedStatus;
import eu.europa.esig.dss.validation.reports.wrapper.TrustedServiceWrapper;
public class QualificationByTL extends AbstractQualificationCondition {
private final List<TrustedServiceWrapper> trustedServices;
private final QualificationStrategy qualifiedInCert;
public QualificationByTL(List<TrustedServiceWrapper> trustedServices, QualificationStrategy qualifiedInCert) {
this.trustedServices = trustedServices;
this.qualifiedInCert = qualifiedInCert;
}
@Override
public QualifiedStatus getQualifiedStatus() {
if (Utils.isCollectionEmpty(trustedServices)) {
return QualifiedStatus.NOT_QC;
} else {
for (TrustedServiceWrapper trustedService : trustedServices) {
List<String> capturedQualifiers = trustedService.getCapturedQualifiers();
// If overrules
if (Utils.isCollectionNotEmpty(capturedQualifiers)) {
if (ServiceQualification.isNotQualified(capturedQualifiers)) {
return QualifiedStatus.NOT_QC;
}
if (ServiceQualification.isQcStatement(capturedQualifiers)) {
return QualifiedStatus.QC;
}
}
}
return qualifiedInCert.getQualifiedStatus();
}
}
}