package eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.type.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.type.Type;
import eu.europa.esig.dss.validation.process.qmatrix.qualification.checks.type.TypeStrategy;
import eu.europa.esig.dss.validation.reports.wrapper.TrustedServiceWrapper;
public class TypeByTL implements TypeStrategy {
private final List<TrustedServiceWrapper> trustedServices;
private final TypeStrategy typeInCert;
public TypeByTL(List<TrustedServiceWrapper> trustedServices, TypeStrategy typeInCert) {
this.trustedServices = trustedServices;
this.typeInCert = typeInCert;
}
@Override
public Type getType() {
if (Utils.isCollectionNotEmpty(trustedServices)) {
for (TrustedServiceWrapper trustedService : trustedServices) {
List<String> usageQualifiers = ServiceQualification.getUsageQualifiers(trustedService.getCapturedQualifiers());
// If overrules
if (Utils.isCollectionNotEmpty(usageQualifiers)) {
if (ServiceQualification.isQcForEsig(usageQualifiers)) {
return Type.ESIGN;
}
if (ServiceQualification.isQcForEseal(usageQualifiers) || ServiceQualification.isQcForWSA(usageQualifiers)) {
return Type.ESEAL;
}
}
}
}
return typeInCert.getType();
}
}