diff options
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java | 22 | ||||
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java | 26 |
2 files changed, 27 insertions, 21 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java index d673ea88..b19e91a9 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2021 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. + * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,6 @@ import io.swagger.annotations.ExtensionProperty; import io.swagger.annotations.ResponseHeader; import java.util.Map; import java.util.UUID; -import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; @@ -51,7 +50,6 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { private static final Logger LOGGER = LoggerFactory.getLogger(StatisticsRestControllerV1.class); private static final String GET_STATISTICS_ERR_MSG = "get pdpStatistics failed"; - private static final int NO_COUNT_LIMIT = 0; /** * get statistics of PAP. @@ -110,10 +108,11 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE) }) public Response pdpStatistics( - @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) { + @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, + @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, NO_COUNT_LIMIT)) + .entity(new StatisticsRestProvider().fetchDatabaseStatistics(null, null, null, recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); @@ -158,10 +157,11 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { }) public Response pdpGroupStatistics( @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, - @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName) { + @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName, + @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, NO_COUNT_LIMIT)) + .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, null, null, recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); @@ -208,11 +208,12 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { public Response pdpSubGroupStatistics( @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName, - @ApiParam(value = "PDP SubGroup type", required = true) @PathParam("type") final String subType) { + @ApiParam(value = "PDP SubGroup type", required = true) @PathParam("type") final String subType, + @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, - NO_COUNT_LIMIT)) + recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); @@ -264,8 +265,7 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName, @ApiParam(value = "PDP SubGroup type", required = true) @PathParam("type") final String subType, @ApiParam(value = "PDP Instance name", required = true) @PathParam("pdp") final String pdpName, - @ApiParam(value = "Record Count", - required = false) @DefaultValue("0") @QueryParam("recordCount") final int recordCount) { + @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, diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java index 93632659..3859401e 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java @@ -47,6 +47,9 @@ import org.slf4j.LoggerFactory; 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; /** * Returns the current statistics of pap component. @@ -84,26 +87,29 @@ public class StatisticsRestProvider { String pdpName, int recordCount) throws PfModelException { final PolicyModelsProviderFactoryWrapper modelProviderWrapper = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class); - Map<String, Map<String, List<PdpStatistics>>> pdpStatisticsMap; try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) { Instant startTime = null; Instant endTime = null; - if (groupName == null) { - pdpStatisticsMap = generatePdpStatistics(databaseProvider.getPdpStatistics(pdpName, startTime)); - } else { - pdpStatisticsMap = generatePdpStatistics(databaseProvider.getFilteredPdpStatistics( - PdpFilterParameters.builder().name(pdpName).group(groupName) - .subGroup(subType).startTime(startTime).endTime(endTime) - .recordNum(recordCount).build())); - } + /* + * 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())); + } 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); } - return pdpStatisticsMap; } /** |