package com.feisystems.polrep.service; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import com.feisystems.polrep.service.exception.InvalidPolicyCombiningAlgIdException; import com.feisystems.polrep.service.exception.PolicyCombiningAlgIdNotFoundException; @Component @ConfigurationProperties(prefix = "polrep.policySet") public class PolicyCombiningAlgIdValidatorImpl implements PolicyCombiningAlgIdValidator { private final Map<String, String> combiningAlgs = new HashMap<String, String>(); @Override public Map<String, String> getCombiningAlgs() { return combiningAlgs; } @Override public String validateAndReturn(String policyCombiningAlgId) { if (!StringUtils.hasText(policyCombiningAlgId)) { throw new PolicyCombiningAlgIdNotFoundException( "policyCombiningAlgId must have a valid text!"); } if (combiningAlgs.keySet().contains(policyCombiningAlgId)) { policyCombiningAlgId = combiningAlgs.get(policyCombiningAlgId); } else { if (combiningAlgs.entrySet().stream().map(Entry::getValue) .noneMatch(policyCombiningAlgId::equals)) { final StringBuilder errorBuilder = new StringBuilder(); errorBuilder.append("The policyCombiningAlgId: ") .append(policyCombiningAlgId) .append(" is not a valid value!"); throw new InvalidPolicyCombiningAlgIdException( errorBuilder.toString()); } } return policyCombiningAlgId; } }