package org.onap.clamp.policy.operational;
-import com.google.gson.JsonObject;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.onap.clamp.loop.Loop;
+import org.onap.clamp.loop.template.PolicyModelsRepository;
import org.onap.clamp.policy.PolicyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class OperationalPolicyService implements PolicyService<OperationalPolicy> {
- private final OperationalPolicyRepository repository;
+ private final OperationalPolicyRepository operationalPolicyRepository;
+
+ private final PolicyModelsRepository policyModelsRepository;
@Autowired
- public OperationalPolicyService(OperationalPolicyRepository repository) {
- this.repository = repository;
+ public OperationalPolicyService(OperationalPolicyRepository repository,
+ PolicyModelsRepository policyModelsRepository) {
+ this.operationalPolicyRepository = repository;
+ this.policyModelsRepository = policyModelsRepository;
}
@Override
public Set<OperationalPolicy> updatePolicies(Loop loop, List<OperationalPolicy> operationalPolicies) {
return operationalPolicies
- .stream()
- .map(policy ->
- repository
- .findById(policy.getName())
- .map(p -> setConfigurationJson(p, policy.getConfigurationsJson()))
- .orElse(new OperationalPolicy(policy.getName(), loop, policy.getConfigurationsJson())))
- .collect(Collectors.toSet());
+ .parallelStream()
+ .map(policy ->
+ operationalPolicyRepository
+ .findById(policy.getName())
+ .map(p -> setConfiguration(p, policy))
+ .orElse(initializeMissingFields(loop,policy)))
+ .collect(Collectors.toSet());
}
@Override
public boolean isExisting(String policyName) {
- return repository.existsById(policyName);
+ return operationalPolicyRepository.existsById(policyName);
+ }
+
+ private OperationalPolicy initializeMissingFields(Loop loop, OperationalPolicy policy) {
+ policy.setLoop(loop);
+ return policy;
}
- private OperationalPolicy setConfigurationJson(OperationalPolicy policy, JsonObject configurationsJson) {
- policy.setConfigurationsJson(configurationsJson);
+ private OperationalPolicy setConfiguration(OperationalPolicy policy, OperationalPolicy newPolicy) {
+ policy.setConfigurationsJson(newPolicy.getConfigurationsJson());
+ policy.setPdpGroup(newPolicy.getPdpGroup());
+ policy.setPdpSubgroup(newPolicy.getPdpSubgroup());
return policy;
}
}