diff options
Diffstat (limited to 'models-pdp/src/main/java')
3 files changed, 98 insertions, 12 deletions
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParameters.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParameters.java new file mode 100644 index 000000000..6cede2c39 --- /dev/null +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParameters.java @@ -0,0 +1,64 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 AT&T Intellectual Property. 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. + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.persistence.provider; + +import java.time.Instant; +import java.util.Map; +import lombok.Builder; +import lombok.Getter; +import org.onap.policy.models.dao.PfFilterParametersIntfc; + +@Getter +@Builder +public class PdpFilterParameters implements PfFilterParametersIntfc { + private String name; + private String version; + private Instant startTime; + private Instant endTime; + + private int recordNum; + @Builder.Default + private String sortOrder = "DESC"; + + private String group; + private String subGroup; + + // initialized lazily, if not set via the builder + private Map<String, Object> filterMap; + + @Override + public Map<String, Object> getFilterMap() { + if (filterMap != null) { + return filterMap; + + } else if (group == null) { + return null; + + } else if (subGroup == null) { + filterMap = Map.of("pdpGroupName", group); + return filterMap; + + } else { + filterMap = Map.of("pdpGroupName", group, "pdpSubGroupName", subGroup); + return filterMap; + } + } +} diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java index 4ffb1e40e..fec8ec572 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java @@ -36,6 +36,7 @@ import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.base.PfReferenceKey; import org.onap.policy.models.dao.PfDao; +import org.onap.policy.models.dao.PfFilterParameters; import org.onap.policy.models.pdp.concepts.Pdp; import org.onap.policy.models.pdp.concepts.PdpGroup; import org.onap.policy.models.pdp.concepts.PdpGroupFilter; @@ -300,10 +301,10 @@ public class PdpProvider { public List<PdpPolicyStatus> getGroupPolicyStatus(@NonNull final PfDao dao, @NonNull final String groupName) throws PfModelException { - Map<String, Object> filter = Map.of("pdpGroup", groupName); + PfFilterParameters params = PfFilterParameters.builder().filterMap(Map.of("pdpGroup", groupName)).build(); - return dao.getFiltered(JpaPdpPolicyStatus.class, null, null, null, null, filter, null, 0).stream() - .map(JpaPdpPolicyStatus::toAuthorative).collect(Collectors.toList()); + return dao.getFiltered(JpaPdpPolicyStatus.class, params) + .stream().map(JpaPdpPolicyStatus::toAuthorative).collect(Collectors.toList()); } /** diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java index 205761bf5..ea118f362 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java @@ -37,6 +37,7 @@ import org.onap.policy.models.base.PfKey; import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.dao.PfDao; +import org.onap.policy.models.dao.PfFilterParameters; import org.onap.policy.models.pdp.concepts.PdpStatistics; import org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics; @@ -47,8 +48,6 @@ import org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics; * @author Ning Xi (ning.xi@est.tech) */ public class PdpStatisticsProvider { - // Recurring string constants - private static final String DESC_ORDER = "DESC"; /** * Get PDP statistics. @@ -113,9 +112,32 @@ public class PdpStatisticsProvider { filterMap.put("pdpSubGroupName", pdpSubGroup); } - return asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class, name, - PfKey.NULL_KEY_VERSION, startTimeStamp, - endTimeStamp, filterMap, sortOrder, getRecordNum)); + // @formatter:off + return asPdpStatisticsList( + dao.getFiltered(JpaPdpStatistics.class, + PdpFilterParameters.builder() + .name(name) + .startTime(startTimeStamp) + .endTime(endTimeStamp) + .group(pdpGroupName) + .subGroup(pdpSubGroup) + .sortOrder(sortOrder) + .recordNum(getRecordNum) + .build())); + // @formatter:on + } + + /** + * Get filtered PDP statistics. + * + * @param dao the DAO to use to access the database + * @param filterParams filter parameters + * @return the PDP statistics found + * @throws PfModelException on errors getting policies + */ + public List<PdpStatistics> getFilteredPdpStatistics(@NonNull final PfDao dao, + PdpFilterParameters filterParams) { + return asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class, filterParams)); } /** @@ -198,10 +220,9 @@ public class PdpStatisticsProvider { * @throws PfModelException on errors deleting PDP statistics */ public List<PdpStatistics> deletePdpStatistics(@NonNull final PfDao dao, @NonNull final String name, - final Instant timestamp) { - List<PdpStatistics> pdpStatisticsListToDel = asPdpStatisticsList( - dao.getFiltered(JpaPdpStatistics.class, name, - PfKey.NULL_KEY_VERSION, timestamp, timestamp, null, DESC_ORDER, 0)); + final Instant timestamp) { + List<PdpStatistics> pdpStatisticsListToDel = asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class, + PfFilterParameters.builder().name(name).startTime(timestamp).endTime(timestamp).build())); pdpStatisticsListToDel.stream().forEach(s -> dao.delete(JpaPdpStatistics.class, new PfGeneratedIdKey(s.getPdpInstanceId(), PfKey.NULL_KEY_VERSION, s.getGeneratedId()))); |