diff options
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.java | 83 |
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) { |