Remove statistics record limits from PAP 28/122928/1
authorJim Hahn <jrh3@att.com>
Wed, 28 Jul 2021 14:03:50 +0000 (10:03 -0400)
committerJim Hahn <jrh3@att.com>
Wed, 28 Jul 2021 14:07:47 +0000 (10:07 -0400)
policy/models statistics provider has now been enhanced to limit the
record counts.  Stripped the code from PAP, as it's no longer needed
there.  Also simplified the PAP statistics provider down to one query
method, taking a filter.

Issue-ID: POLICY-3511
Change-Id: I8a8797be191dc1f299b1c4084b0108a3ab89ff61
Signed-off-by: Jim Hahn <jrh3@att.com>
main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java
main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java

index b19e91a..b08964b 100644 (file)
@@ -38,6 +38,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.Response;
 import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -112,7 +113,8 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
             @ApiParam(value = "Record Count", required = false) @QueryParam("recordCount") final int recordCount) {
         try {
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(null, null, null, recordCount))
+                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(
+                                    PdpFilterParameters.builder().recordNum(recordCount).build()))
                     .build();
         } catch (final PfModelException exp) {
             LOGGER.info(GET_STATISTICS_ERR_MSG, exp);
@@ -161,7 +163,8 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
             @ApiParam(value = "Record Count", required = false) @QueryParam("recordCount") final int recordCount) {
         try {
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, null, null, recordCount))
+                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(PdpFilterParameters.builder()
+                                    .group(groupName).recordNum(recordCount).build()))
                     .build();
         } catch (final PfModelException exp) {
             LOGGER.info(GET_STATISTICS_ERR_MSG, exp);
@@ -212,8 +215,8 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
             @ApiParam(value = "Record Count", required = false) @QueryParam("recordCount") final int recordCount) {
         try {
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, subType, null,
-                                    recordCount))
+                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(PdpFilterParameters.builder()
+                                    .group(groupName).subGroup(subType).recordNum(recordCount).build()))
                     .build();
         } catch (final PfModelException exp) {
             LOGGER.info(GET_STATISTICS_ERR_MSG, exp);
@@ -268,8 +271,9 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
             @ApiParam(value = "Record Count", required = false) @QueryParam("recordCount") final int recordCount) {
         try {
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, subType, pdpName,
-                            recordCount))
+                    .entity(new StatisticsRestProvider().fetchDatabaseStatistics(
+                                    PdpFilterParameters.builder().group(groupName).subGroup(subType)
+                                                    .name(pdpName).recordNum(recordCount).build()))
                     .build();
         } catch (final PfModelException exp) {
             LOGGER.info(GET_STATISTICS_ERR_MSG, exp);
index 3859401..d2771d6 100644 (file)
@@ -21,7 +21,6 @@
 
 package org.onap.policy.pap.main.rest;
 
-import java.time.Instant;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -36,8 +35,6 @@ import org.onap.policy.models.provider.PolicyModelsProvider;
 import org.onap.policy.pap.main.PapConstants;
 import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
 import org.onap.policy.pap.main.startstop.PapActivator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Class to fetch statistics of pap component.
@@ -45,11 +42,7 @@ import org.slf4j.LoggerFactory;
  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
  */
 public class StatisticsRestProvider {
-    private static final Logger LOGGER = LoggerFactory.getLogger(StatisticsRestProvider.class);
-    private static final String GET_STATISTICS_ERR_MSG = "fetch database failed";
-    private static final String DEFAULT_GROUP = "defaultGroup";
-    private static final int MIN_RECORD_COUNT = 1;
-    private static final int MAX_RECORD_COUNT = 100;
+    private static final String GET_STATISTICS_ERR_MSG = "database query failed";
 
     /**
      * Returns the current statistics of pap component.
@@ -76,39 +69,19 @@ public class StatisticsRestProvider {
     /**
      * Returns statistics of pdp component from database.
      *
-     * @param groupName name of the PDP group
-     * @param subType type of the sub PDP group
-     * @param pdpName the name of the PDP
-     * @param recordCount the count to query from database
+     * @param filter record filter
      * @return Report containing statistics of pdp component
      * @throws PfModelException when database can not found
      */
-    public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(String groupName, String subType,
-            String pdpName, int recordCount) throws PfModelException {
+    public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(PdpFilterParameters filter)
+                    throws PfModelException {
         final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
-                Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
+                        Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
         try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
-            Instant startTime = null;
-            Instant endTime = null;
-
-            /*
-             * getFilteredPdpStatistics() will throw an NPE if a group name is not specified, so we
-             * provide a default value
-             */
-            String grpnm = (groupName != null ? groupName : DEFAULT_GROUP);
-
-            int nrecords = Math.min(MAX_RECORD_COUNT, Math.max(MIN_RECORD_COUNT, recordCount));
-
-            return generatePdpStatistics(databaseProvider.getFilteredPdpStatistics(
-                            PdpFilterParameters.builder().name(pdpName).group(grpnm)
-                            .subGroup(subType).startTime(startTime).endTime(endTime)
-                            .recordNum(nrecords).build()));
+            return generatePdpStatistics(databaseProvider.getFilteredPdpStatistics(filter));
 
         } catch (final PfModelException exp) {
-            String errorMessage = GET_STATISTICS_ERR_MSG + "groupName:" + groupName + "subType:" + subType + "pdpName:"
-                    + pdpName + exp.getMessage();
-            LOGGER.debug(errorMessage, exp);
-            throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
+            throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, GET_STATISTICS_ERR_MSG);
         }
     }
 
@@ -129,5 +102,3 @@ public class StatisticsRestProvider {
         return groupMap;
     }
 }
-
-