diff options
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java')
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java b/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java deleted file mode 100644 index eba34f30..00000000 --- a/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java +++ /dev/null @@ -1,275 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2022 Bell Canada. All rights reserved. - * Modifications Copyright (C) 2023 Nordix Foundation. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pap.main.service; - -import java.time.Instant; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import javax.ws.rs.core.Response; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import org.onap.policy.common.parameters.BeanValidationResult; -import org.onap.policy.common.utils.services.Registry; -import org.onap.policy.models.base.PfModelRuntimeException; -import org.onap.policy.models.pdp.concepts.PdpStatistics; -import org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics; -import org.onap.policy.pap.main.PapConstants; -import org.onap.policy.pap.main.repository.PdpStatisticsRepository; -import org.onap.policy.pap.main.rest.PapStatisticsManager; -import org.onap.policy.pap.main.rest.StatisticsReport; -import org.onap.policy.pap.main.startstop.PapActivator; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -@RequiredArgsConstructor -public class PdpStatisticsService { - - private static final String TIMESTAMP = "timeStamp"; - private static final int DEFAULT_RECORD_COUNT = 10; - private static final int MAX_RECORD_COUNT = 100; - - private final PdpStatisticsRepository pdpStatisticsRepository; - - /** - * Returns the current statistics of pap component. - * - * @return Report containing statistics of pap component - */ - public StatisticsReport fetchCurrentStatistics() { - final var report = new StatisticsReport(); - report.setCode(Registry.get(PapConstants.REG_PAP_ACTIVATOR, PapActivator.class).isAlive() ? 200 : 500); - - PapStatisticsManager mgr = Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class); - report.setTotalPdpCount(mgr.getTotalPdpCount()); - report.setTotalPdpGroupCount(mgr.getTotalPdpGroupCount()); - report.setTotalPolicyDownloadCount(mgr.getTotalPolicyDownloadCount()); - report.setPolicyDownloadSuccessCount(mgr.getPolicyDownloadSuccessCount()); - report.setPolicyDownloadFailureCount(mgr.getPolicyDownloadFailureCount()); - report.setTotalPolicyDeployCount(mgr.getTotalPolicyDeployCount()); - report.setPolicyDeploySuccessCount(mgr.getPolicyDeploySuccessCount()); - report.setPolicyDeployFailureCount(mgr.getPolicyDeployFailureCount()); - - return report; - } - - /** - * Creates PDP statistics. - * - * @param pdpStatisticsList a specification of the PDP statistics to create - * @return the PDP statistics created - */ - public List<PdpStatistics> createPdpStatistics(@NonNull final List<PdpStatistics> pdpStatisticsList) { - for (PdpStatistics pdpStatistics : pdpStatisticsList) { - var jpaPdpStatistics = new JpaPdpStatistics(); - jpaPdpStatistics.fromAuthorative(pdpStatistics); - BeanValidationResult validationResult = jpaPdpStatistics.validate("pdp statistics"); - if (!validationResult.isValid()) { - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult()); - } - pdpStatisticsRepository.saveAndFlush(jpaPdpStatistics); - pdpStatistics.setGeneratedId(jpaPdpStatistics.getGeneratedId()); - } - - // Return the created PDP statistics - List<PdpStatistics> pdpStatistics = new ArrayList<>(pdpStatisticsList.size()); - - for (PdpStatistics pdpStatisticsItem : pdpStatisticsList) { - @SuppressWarnings("deprecation") - var jpaPdpStatistics = pdpStatisticsRepository.getById(pdpStatisticsItem.getGeneratedId()); - pdpStatistics.add(jpaPdpStatistics.toAuthorative()); - } - return pdpStatistics; - } - - /** - * Fetch PdpStatistics from db. - * - * @param pdpGroup the name of the group - * @param pdpSubGroup the name of the subgroup - * @param pdp the pdp instance id - * @param recordCount the number of records to return - * @param startTime start time of the records to be returned - * @param endTime end time of the records to be returned - * @return pdpStatistics grouped by pdpGroup - */ - public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup, - @NonNull String pdpSubGroup, @NonNull String pdp, int recordCount, Instant startTime, Instant endTime) { - - Pageable recordSize = getRecordSize(recordCount); - if (startTime != null && endTime != null) { - return generatePdpStatistics(asPdpStatisticsList(pdpStatisticsRepository - .findByPdpGroupNameAndPdpSubGroupNameAndNameAndTimeStampBetween(pdpGroup, pdpSubGroup, pdp, - convertInstantToDate(startTime), convertInstantToDate(endTime), recordSize))); - } else if (startTime == null && endTime == null) { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndName(pdpGroup, - pdpSubGroup, pdp, recordSize))); - } else if (startTime != null) { - return generatePdpStatistics(asPdpStatisticsList( - pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndNameAndTimeStampGreaterThanEqual( - pdpGroup, pdpSubGroup, pdp, convertInstantToDate(startTime), recordSize))); - } else { - return generatePdpStatistics(asPdpStatisticsList( - pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndNameAndTimeStampLessThanEqual( - pdpGroup, pdpSubGroup, pdp, convertInstantToDate(endTime), recordSize))); - } - } - - /** - * Fetch PdpStatistics from db. - * - * @param pdpGroup the name of the group - * @param pdpSubGroup the name of the subgroup - * @param recordCount the number of records to return - * @param startTime start time of the records to be returned - * @param endTime end time of the records to be returned - * @return pdpStatistics grouped by pdpGroup - */ - public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup, - @NonNull String pdpSubGroup, int recordCount, Instant startTime, Instant endTime) { - - Pageable recordSize = getRecordSize(recordCount); - if (startTime != null && endTime != null) { - return generatePdpStatistics(asPdpStatisticsList( - pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndTimeStampBetween(pdpGroup, pdpSubGroup, - convertInstantToDate(startTime), convertInstantToDate(endTime), recordSize))); - } else if (startTime == null && endTime == null) { - return generatePdpStatistics(asPdpStatisticsList(pdpStatisticsRepository - .findByPdpGroupNameAndPdpSubGroupName(pdpGroup, pdpSubGroup, recordSize))); - } else if (startTime != null) { - return generatePdpStatistics(asPdpStatisticsList( - pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndTimeStampGreaterThanEqual(pdpGroup, - pdpSubGroup, convertInstantToDate(startTime), recordSize))); - } else { - return generatePdpStatistics(asPdpStatisticsList( - pdpStatisticsRepository.findByPdpGroupNameAndPdpSubGroupNameAndTimeStampLessThanEqual(pdpGroup, - pdpSubGroup, convertInstantToDate(endTime), recordSize))); - } - } - - /** - * Fetch PdpStatistics from db. - * - * @param pdpGroup the name of the group - * @param recordCount the number of records to return - * @param startTime start time of the records to be returned - * @param endTime end time of the records to be returned - * @return pdpStatistics grouped by pdpGroup - */ - public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup, - int recordCount, Instant startTime, Instant endTime) { - - Pageable recordSize = getRecordSize(recordCount); - if (startTime != null && endTime != null) { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findByPdpGroupNameAndTimeStampBetween(pdpGroup, - convertInstantToDate(startTime), convertInstantToDate(endTime), recordSize))); - } else if (startTime == null && endTime == null) { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findByPdpGroupName(pdpGroup, recordSize))); - } else if (startTime != null) { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findByPdpGroupNameAndTimeStampGreaterThanEqual(pdpGroup, - convertInstantToDate(startTime), recordSize))); - } else { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findByPdpGroupNameAndTimeStampLessThanEqual(pdpGroup, - convertInstantToDate(endTime), recordSize))); - } - } - - /** - * Fetch PdpStatistics from db. - * - * @param recordCount the number of records to return - * @param startTime start time of the records to be returned - * @param endTime end time of the records to be returned - * @return pdpStatistics grouped by pdpGroup - */ - public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(int recordCount, Instant startTime, - Instant endTime) { - - Pageable recordSize = getRecordSize(recordCount); - if (startTime != null && endTime != null) { - return generatePdpStatistics(asPdpStatisticsList(pdpStatisticsRepository.findByTimeStampBetween( - convertInstantToDate(startTime), convertInstantToDate(endTime), recordSize))); - } else if (startTime == null && endTime == null) { - return generatePdpStatistics( - asPdpStatisticsList(pdpStatisticsRepository.findAll(recordSize).toList())); - } else if (startTime != null) { - return generatePdpStatistics(asPdpStatisticsList(pdpStatisticsRepository - .findByTimeStampGreaterThanEqual(convertInstantToDate(startTime), recordSize))); - } else { - return generatePdpStatistics(asPdpStatisticsList(pdpStatisticsRepository - .findByTimeStampLessThanEqual(convertInstantToDate(endTime), recordSize))); - } - } - - private Pageable getRecordSize(int recordCount) { - if (recordCount < 1) { - recordCount = DEFAULT_RECORD_COUNT; - } else if (recordCount > MAX_RECORD_COUNT) { - recordCount = MAX_RECORD_COUNT; - } - return PageRequest.of(0, recordCount, Sort.by(TIMESTAMP).descending()); - } - - /** - * generate the statistics of pap component by group/subgroup. - * - */ - private Map<String, Map<String, List<PdpStatistics>>> generatePdpStatistics(List<PdpStatistics> pdpStatisticsList) { - Map<String, Map<String, List<PdpStatistics>>> groupMap = new HashMap<>(); - if (pdpStatisticsList != null) { - pdpStatisticsList.stream().forEach(s -> { - String curGroup = s.getPdpGroupName(); - String curSubGroup = s.getPdpSubGroupName(); - groupMap.computeIfAbsent(curGroup, curGroupMap -> new HashMap<>()) - .computeIfAbsent(curSubGroup, curSubGroupList -> new ArrayList<>()).add(s); - }); - } - return groupMap; - } - - /** - * Convert JPA PDP statistics list to an PDP statistics list. - * - * @param jpaPdpStatisticsList the list to convert - * @return the PDP statistics list - */ - private List<PdpStatistics> asPdpStatisticsList(List<JpaPdpStatistics> jpaPdpStatisticsList) { - return jpaPdpStatisticsList.stream().map(JpaPdpStatistics::toAuthorative).collect(Collectors.toList()); - } - - private Date convertInstantToDate(Instant instant) { - return (instant == null ? null : Date.from(instant)); - } -} |