summaryrefslogtreecommitdiffstats
path: root/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java
diff options
context:
space:
mode:
Diffstat (limited to 'components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java')
-rw-r--r--components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java83
1 files changed, 60 insertions, 23 deletions
diff --git a/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java b/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java
index d3493528..4dd2601e 100644
--- a/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java
+++ b/components/kpi-computation-ms/src/main/java/org/onap/dcaegen2/kpi/computation/KpiComputation.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2021 China Mobile.
* Copyright (C) 2021 Deutsche Telekom AG. All rights reserved.
+ * Copyright (C) 2022 Wipro Limited. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -21,6 +22,7 @@
package org.onap.dcaegen2.kpi.computation;
+import java.lang.String;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
@@ -28,7 +30,7 @@ import java.util.List;
import java.util.LinkedList;
import java.util.Map;
import java.util.Optional;
-
+import java.util.stream.Collectors;
import org.apache.commons.lang.StringUtils;
import org.onap.dcaegen2.kpi.config.ControlLoopSchemaType;
@@ -44,6 +46,7 @@ import org.onap.dcaegen2.kpi.models.Configuration;
import org.onap.dcaegen2.kpi.models.MeasDataCollection;
import org.onap.dcaegen2.kpi.models.MeasInfo;
import org.onap.dcaegen2.kpi.models.MeasResult;
+import org.onap.dcaegen2.kpi.models.MeasTypes;
import org.onap.dcaegen2.kpi.models.MeasValues;
import org.onap.dcaegen2.kpi.models.Perf3gppFields;
import org.onap.dcaegen2.kpi.models.PerformanceEvent;
@@ -62,6 +65,7 @@ import org.slf4j.LoggerFactory;
public class KpiComputation {
private static Logger logger = LoggerFactory.getLogger(KpiComputation.class);
+ String value = "";
/**
* do KPI computation.
@@ -103,6 +107,32 @@ public class KpiComputation {
MeasDataCollection measDataCollection = Optional.of(pmEvent).map(PerformanceEvent::getPerf3gppFields)
.map(Perf3gppFields::getMeasDataCollection)
.orElseThrow(() -> new KpiComputationException("Required Field: MeasData not present"));
+
+ List<MeasInfo> measInfoList = Optional.of(pmEvent).map(PerformanceEvent::getPerf3gppFields)
+ .map(Perf3gppFields::getMeasDataCollection)
+ .map(MeasDataCollection::getMeasInfoList)
+ .orElseThrow(() -> new KpiComputationException("Required Field: MeasInfoList not present"));
+
+
+ StringBuilder sb = new StringBuilder();
+ for(MeasInfo measInfo: measInfoList){
+ List<String> measTypes = measInfo.getMeasTypes().getMeasTypesList();
+ if(!measTypes.isEmpty()){
+ String anyString = measTypes.get(0);
+ if(anyString.contains("."))
+ {
+ value = anyString.substring(anyString.lastIndexOf(".")+ 1);
+ logger.info("The value string is {}",value);
+ }
+ else {
+ logger.info( "MeasType does not contain Snssai separated by a dot");
+ }
+ }
+ else{
+ logger.info("MeasTypesList is empty");
+ }
+ }
+
// Do computation for each KPI
List<VesEvent> events = new LinkedList<>();
List<Kpi> kpis = methodForKpi.getKpis();
@@ -114,7 +144,12 @@ public class KpiComputation {
}
ControlLoopSchemaType schemaType = methodForKpi.getControlLoopSchemaType();
- String measType = k.getMeasType();
+ sb.append(k.getMeasType());
+ sb.append(".");
+ sb.append(value);
+ String measType = sb.toString();
+ logger.info("measType is {}", measType);
+
Operation operation = k.getOperation();
List<VesEvent> kpiVesEvent = CommandHandler.handle(operation.value, pmEvent, schemaType,
@@ -143,10 +178,9 @@ public class KpiComputation {
flag = false;
for (String operand : operands) {
List<String> measTypesList = measInfo.getMeasTypes().getMeasTypesList();
- String measValue = measTypesList.stream()
+ List<String> measValue = measTypesList.stream()
.filter(s -> StringUtils.substring(s, 0, operand.length()).equalsIgnoreCase(operand))
- .findFirst()
- .orElse(null);
+ .collect(Collectors.toList());
if (measValue == null) {
flag = true;
}
@@ -156,32 +190,35 @@ public class KpiComputation {
curatedMeasInfoList.add(measInfo);
}
}
-
+
for (String operand: operands) {
String key = null;
List<KpiOperand> kpiOperands = new ArrayList<>();
for (MeasInfo m: curatedMeasInfoList) {
List<String> measTypesList = m.getMeasTypes().getMeasTypesList();
- String measValue = measTypesList.stream()
+ List<String> measValueList = measTypesList.stream()
.filter(s -> StringUtils.substring(s, 0, operand.length()).equalsIgnoreCase(operand))
- .findFirst()
- .orElse(null);
- if (measValue != null) {
+ .collect(Collectors.toList());
+ if (measValueList != null) {
+ for(String measValue:measValueList){
key = new StringBuilder().append(operand).toString();
- int index = measTypesList.indexOf(measValue);
- MeasValues measValues = m.getMeasValuesList().stream().findFirst().orElse(null);
- List<MeasResult> measResults = measValues.getMeasResults();
- String measObjInstId = measValues.getMeasObjInstId();
- MeasResult measResult = measResults.stream()
- .filter(v -> v.getPvalue() == (index + 1))
- .findFirst()
- .orElse(null);
- if (measResult != null) {
- KpiOperand newKpiOperand = new KpiOperand(measObjInstId, new BigDecimal(measResult.getSvalue()));
- kpiOperands.add(newKpiOperand);
- } else {
- logger.info("measResults mis-matched - incorrect ves msg construction");
+ int index = measTypesList.indexOf(measValue);
+ List<MeasValues> measValuesList = m.getMeasValuesList();
+ for ( MeasValues measValues : measValuesList) {
+ List<MeasResult> measResults = measValues.getMeasResults();
+ String measObjInstId = measValues.getMeasObjInstId();
+ MeasResult measResult = measResults.stream()
+ .filter(v -> v.getPvalue() == (index + 1))
+ .findFirst()
+ .orElse(null);
+ if (measResult != null) {
+ KpiOperand newKpiOperand = new KpiOperand(measObjInstId, new BigDecimal(measResult.getSvalue()));
+ kpiOperands.add(newKpiOperand);
+ } else {
+ logger.info("measResults mis-matched - incorrect ves msg construction");
+ }
}
+ }
}
}
if (kpiOperands.size() <= 0) {