summaryrefslogtreecommitdiffstats
path: root/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java
diff options
context:
space:
mode:
Diffstat (limited to 'dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java')
-rw-r--r--dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java61
1 files changed, 43 insertions, 18 deletions
diff --git a/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java b/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java
index 91a1ab0..cefb429 100644
--- a/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java
+++ b/dcaedt_be/src/main/java/org/onap/sdc/dcae/rule/editor/translators/MappingRulesTranslator.java
@@ -1,9 +1,11 @@
package org.onap.sdc.dcae.rule.editor.translators;
-import java.util.List;
-import java.util.stream.Collectors;
-
import org.onap.sdc.dcae.composition.restmodels.ruleeditor.MappingRules;
+import org.onap.sdc.dcae.composition.restmodels.ruleeditor.Rule;
+import org.onap.sdc.dcae.rule.editor.utils.ValidationUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
public class MappingRulesTranslator implements IRuleElementTranslator<MappingRules> {
@@ -17,15 +19,14 @@ public class MappingRulesTranslator implements IRuleElementTranslator<MappingRul
}
private RuleTranslator ruleTranslator = RuleTranslator.getInstance();
+ private ConditionTranslator conditionTranslator = ConditionTranslator.getInstance();
public Object translateToHpJson(MappingRules mappingRules) {
return new MappingRulesTranslation(mappingRules);
}
- public Object translateToHpJson(MappingRules mappingRules, String entryPointPhaseName, String lastPhaseName, String runPhase) {
- // 1806 US349308 assign Vfcmt name as rule phaseName
- mappingRules.getRules().forEach((k,v) -> v.setPhase(runPhase));
- return new MappingRulesTranslation(mappingRules, entryPointPhaseName, lastPhaseName, runPhase);
+ private List<Object> getPhaseTranslation(Collection<Rule> currentPhase) {
+ return currentPhase.stream().map(ruleTranslator::translateToHpJson).collect(Collectors.toList());
}
private class MappingRulesTranslation {
@@ -33,26 +34,50 @@ public class MappingRulesTranslator implements IRuleElementTranslator<MappingRul
private List<Object> processing;
private MappingRulesTranslation(MappingRules mappingRules) {
- processing = mappingRules.getRules().values().stream().map(ruleTranslator::translateToHpJson).collect(Collectors.toList());
- }
-
- private MappingRulesTranslation(MappingRules mappingRules, String entryPointPhaseName, String lastPhaseName, String runPhase) {
- this(mappingRules);
- //hardcoded entry point processor
- processing.add(0, new RunPhaseRuleTranslation(entryPointPhaseName, runPhase));
- //hardcoded map_publish processor
- processing.add(new RunPhaseRuleTranslation(runPhase, lastPhaseName));
+ String firstRunPhase;
+ // single phase
+ if(mappingRules.getRules().values().stream().noneMatch(r -> ValidationUtils.validateNotEmpty(r.getGroupId()))) {
+ processing = getPhaseTranslation(mappingRules.getRules().values());
+ firstRunPhase = mappingRules.getRules().values().iterator().next().getPhase();
+ } else {
+ // 1810 US427299 phase grouping - support user defined phase names
+ Map<String, List<Rule>> reorderByGroupId = mappingRules.getRules().values().stream().collect(Collectors.groupingBy(Rule::getGroupId, LinkedHashMap::new, Collectors.toList()));
+ List<String> phaseNames = new ArrayList<>();
+ processing = new ArrayList<>();
+ reorderByGroupId.forEach((k,v) -> {
+ String currentPhaseName = v.get(0).getPhase();
+ // if phase name already triggered no need to call RunPhase processor again.
+ if(!processing.isEmpty() && !phaseNames.contains(currentPhaseName)) {
+ ((RuleTranslation)processing.get(processing.size()-1)).processors.add(new RunPhaseProcessorsTranslation(currentPhaseName));
+ }
+ processing.addAll(getPhaseTranslation(v));
+ phaseNames.add(currentPhaseName);
+ });
+ firstRunPhase = phaseNames.get(0);
+ }
+ //hardcoded entry point processor - added as a phase unit
+ processing.add(0, new RunPhaseRuleTranslation(mappingRules.getEntryPhase(), firstRunPhase, mappingRules.getNotifyId()));
+ //hardcoded map_publish processor - added as processor unit to last phase unit
+ ((RuleTranslation)processing.get(processing.size()-1)).processors.add(new RunPhaseProcessorsTranslation(mappingRules.getPublishPhase()));
}
}
+
private class RunPhaseRuleTranslation extends RuleTranslation {
private RunPhaseRuleTranslation(String phaseName, String runPhase) {
phase = phaseName;
+ processors.add(new RunPhaseProcessorsTranslation(runPhase));
+ }
+
+ private RunPhaseRuleTranslation(String phaseName, String runPhase, String notifyOid) {
+ this(phaseName, runPhase);
if("snmp_map".equals(phaseName)) {
- processors.add(new SnmpConvertor());
+ processors.add(0, new SnmpConvertor());
+ }
+ if(ValidationUtils.validateTargetField(notifyOid)) {
+ filter = conditionTranslator.notifyOidTranslation(notifyOid);
}
- processors.add(new RunPhaseProcessorsTranslation(runPhase));
}
}