diff options
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java')
-rw-r--r-- | main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java | 26 |
1 files changed, 16 insertions, 10 deletions
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; } /** |