aboutsummaryrefslogtreecommitdiffstats
path: root/models-pdp/src
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2021-06-10 17:38:58 -0400
committerJim Hahn <jrh3@att.com>2021-06-14 08:21:04 -0400
commit8cbad257df2d5f5c585ce37e61cfd16e402be738 (patch)
tree18027d19e9c6c231e41e4321d5938c8b0a5d5632 /models-pdp/src
parent1b460194bc034443ba57fa690d294131836a3e9e (diff)
Fix sonars in policy-models
Fixed: - too many parameters in method call Fixed it by introducing PfFilterParameters. However, classes having the Builder annotation are not easily subclassed, so introduced an interface, too. Issue-ID: POLICY-3094 Change-Id: Ida99522a542b1296b367c55b7e8f8e83783c2e4f Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'models-pdp/src')
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParameters.java64
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpProvider.java7
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java39
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParametersTest.java53
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java28
5 files changed, 178 insertions, 13 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())));
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParametersTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParametersTest.java
new file mode 100644
index 000000000..58ff7f171
--- /dev/null
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpFilterParametersTest.java
@@ -0,0 +1,53 @@
+/*-
+ * ============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 static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Map;
+import org.junit.Test;
+
+public class PdpFilterParametersTest {
+
+ private static final String GROUP = "my-group";
+ private static final String SUBGROUP = "my-subgroup";
+
+ @Test
+ public void testGetFilterMap() {
+ assertThat(PdpFilterParameters.builder().build().getFilterMap()).isNull();
+
+ assertThat(PdpFilterParameters.builder().subGroup(SUBGROUP).build().getFilterMap()).isNull();
+
+ PdpFilterParameters params = PdpFilterParameters.builder().group(GROUP).build();
+ Map<String, Object> map = params.getFilterMap();
+ assertThat(map).isEqualTo(Map.of("pdpGroupName", GROUP));
+
+ // should not re-create the map
+ assertThat(params.getFilterMap()).isSameAs(map);
+
+ params = PdpFilterParameters.builder().group(GROUP).subGroup(SUBGROUP).build();
+ map = params.getFilterMap();
+ assertThat(map).isEqualTo(Map.of("pdpGroupName", GROUP, "pdpSubGroupName", SUBGROUP));
+
+ // should not re-create the map
+ assertThat(params.getFilterMap()).isSameAs(map);
+ }
+}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
index 8259dc0c6..91eb54e8b 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
@@ -181,7 +181,7 @@ public class PdpStatisticsProviderTest {
}
@Test
- public void testGetFilteredPdpStatistics() throws Exception {
+ public void testGetFilteredPdpStatisticsOld() throws Exception {
assertThatThrownBy(() -> {
new PdpStatisticsProvider().getFilteredPdpStatistics(null, NAME, GROUP, SUBGROUP, TIMESTAMP1, TIMESTAMP2,
ORDER, 1);
@@ -211,6 +211,32 @@ public class PdpStatisticsProviderTest {
}
@Test
+ public void testGetFilteredPdpStatistics() throws Exception {
+
+ assertThatThrownBy(() -> {
+ new PdpStatisticsProvider().getFilteredPdpStatistics(null, PdpFilterParameters.builder().build());
+ }).hasMessageMatching(DAO_IS_NULL);
+
+
+ List<PdpStatistics> createdPdpStatisticsList;
+ createdPdpStatisticsList = new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsTestList);
+ createdListStr = createdPdpStatisticsList.toString();
+ assertEquals(createdListStr.replaceAll("\\s+", ""), testListStr.replaceAll("\\s+", ""));
+
+ List<PdpStatistics> getPdpStatisticsList;
+ getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
+ .builder().name(NAME).group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
+ assertThat(getPdpStatisticsList).hasSize(1);
+ getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
+ .builder().name("name2").group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
+ assertThat(getPdpStatisticsList).hasSize(1);
+ getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao,
+ PdpFilterParameters.builder().name("name2").group(GROUP).subGroup(SUBGROUP)
+ .startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
+ assertThat(getPdpStatisticsList).hasSize(1);
+ }
+
+ @Test
public void testUpdatePdpStatistics() throws Exception {
assertThatThrownBy(() -> {
new PdpStatisticsProvider().updatePdpStatistics(null, null);