aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models-base/src/main/java/org/onap/policy/models/base/PfGeneratedIdKey.java166
-rw-r--r--models-base/src/test/java/org/onap/policy/models/base/PfGeneratedIdKeyTest.java96
-rw-r--r--models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java34
-rw-r--r--models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java60
-rw-r--r--models-dao/src/main/java/org/onap/policy/models/dao/impl/ProxyDao.java49
-rw-r--r--models-dao/src/test/java/org/onap/policy/models/dao/DummyGeneratedIdEntity.java132
-rw-r--r--models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java150
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/persistence/concepts/JpaPolicyAudit.java83
-rw-r--r--models-pap/src/main/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProvider.java146
-rw-r--r--models-pap/src/test/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProviderTest.java234
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java89
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java172
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java4
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java280
-rw-r--r--models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java61
-rw-r--r--models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java47
-rw-r--r--models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java2
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java120
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java45
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java44
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java18
-rw-r--r--models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyStatisticsPersistenceTest.java87
22 files changed, 135 insertions, 1984 deletions
diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfGeneratedIdKey.java b/models-base/src/main/java/org/onap/policy/models/base/PfGeneratedIdKey.java
deleted file mode 100644
index 8e6e325c1..000000000
--- a/models-base/src/main/java/org/onap/policy/models/base/PfGeneratedIdKey.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.base;
-
-
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.persistence.GeneratedValue;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NonNull;
-import org.onap.policy.common.parameters.annotations.Pattern;
-import org.onap.policy.common.utils.validation.Assertions;
-
-/**
- * A concept key uniquely identifies every first order entity in the system. Every first order concept in the system
- * must have a {@link PfGeneratedIdKey} to identify it. Concepts that are wholly contained in another concept are
- * identified using a {@link PfReferenceKey} key.
- *
- * <p/>Key validation checks that the name and version fields match the NAME_REGEXP and VERSION_REGEXP
- * regular expressions respectively.
- */
-@Embeddable
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class PfGeneratedIdKey extends PfKeyImpl {
-
- private static final long serialVersionUID = 1L;
-
- private static final String ID_TOKEN = "ID";
-
- @Column(name = NAME_TOKEN, length = 120)
- @Pattern(regexp = NAME_REGEXP)
- private String name;
-
- @Column(name = VERSION_TOKEN, length = 20)
- @Pattern(regexp = VERSION_REGEXP)
- private String version;
-
- @Column(name = ID_TOKEN)
- @GeneratedValue
- private Long generatedId;
-
- /**
- * The default constructor creates a null concept key.
- */
- public PfGeneratedIdKey() {
- this(NULL_KEY_NAME, NULL_KEY_VERSION);
- }
-
- /**
- * Constructor to create a key with the specified name and version.
- *
- * @param name the key name
- * @param version the key version
- */
- public PfGeneratedIdKey(final String name, final String version) {
- super(name, version);
- }
-
- /**
- * Copy constructor.
- *
- * @param copyConcept the concept to copy from
- */
- public PfGeneratedIdKey(final PfGeneratedIdKey copyConcept) {
- super(copyConcept);
- this.generatedId = copyConcept.getGeneratedId();
- }
-
- /**
- * Constructor to create a key with the specified name and version.
- *
- * @param name the key name
- * @param version the key version
- * @param generatedId the conceptId of key
- */
- public PfGeneratedIdKey(@NonNull final String name, @NonNull final String version,
- final Long generatedId) {
- super(name, version);
- this.generatedId = generatedId;
- }
-
- /**
- * Constructor to create a key using the key and version from the specified key ID.
- *
- * @param id the key ID in a format that respects the KEY_ID_REGEXP
- */
- public PfGeneratedIdKey(final String id) {
- super(id.substring(0, id.lastIndexOf(':')));
- this.generatedId = Long.parseLong(id.substring(id.lastIndexOf(':') + 1));
- }
-
- @Override
- public int compareTo(@NonNull final PfConcept otherObj) {
- int result = super.compareTo(otherObj);
- if (0 == result) {
- final PfGeneratedIdKey other = (PfGeneratedIdKey) otherObj;
- return generatedId.compareTo(other.generatedId);
- }
- return result;
- }
-
- @Override
- public String getId() {
- return getName() + ':' + getVersion() + ':' + getGeneratedId();
- }
-
- @Override
- public boolean isNewerThan(@NonNull PfKey otherKey) {
- Assertions.instanceOf(otherKey, PfGeneratedIdKey.class);
-
- final PfGeneratedIdKey otherConceptKey = (PfGeneratedIdKey) otherKey;
-
- if (this.equals(otherConceptKey)) {
- return false;
- }
-
- if (!generatedId.equals(otherConceptKey.generatedId)) {
- return generatedId.compareTo(otherConceptKey.generatedId) >= 1;
- }
-
- return super.isNewerThan(otherKey);
- }
-
- @Override
- public boolean isNullKey() {
- return super.isNullKey() && getGeneratedId() == null;
- }
-
- public void setName(@NonNull final String name) {
- this.name = Assertions.validateStringParameter(NAME_TOKEN, name, getNameRegEx());
- }
-
- public void setVersion(@NonNull final String version) {
- this.version = Assertions.validateStringParameter(VERSION_TOKEN, version, getVersionRegEx());
- }
-
- /**
- * Get a null concept key.
- *
- * @return a null concept key
- */
- public static final PfGeneratedIdKey getNullKey() {
- return new PfGeneratedIdKey(PfKey.NULL_KEY_NAME, PfKey.NULL_KEY_VERSION);
- }
-
-}
diff --git a/models-base/src/test/java/org/onap/policy/models/base/PfGeneratedIdKeyTest.java b/models-base/src/test/java/org/onap/policy/models/base/PfGeneratedIdKeyTest.java
deleted file mode 100644
index 4f10710ba..000000000
--- a/models-base/src/test/java/org/onap/policy/models/base/PfGeneratedIdKeyTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-
-package org.onap.policy.models.base;
-
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-public class PfGeneratedIdKeyTest {
- private static final String VERSION001 = "0.0.1";
- private static final String CONCEPT_IS_NULL = "^copyConcept is marked .*on.*ull but is null$";
- private static final String NAME_IS_NULL = "^name is marked .*on.*ull but is null$";
- private static final String VERSION_IS_NULL = "^version is marked .*on.*ull but is null$";
- private static final long generatedId = 10001L;
-
- @Test
- public void testGeneratedIdKey() {
- PfGeneratedIdKey someKey0 = new PfGeneratedIdKey();
- assertEquals(PfGeneratedIdKey.getNullKey(), someKey0);
- assertTrue(someKey0.isNullKey());
- assertEquals("PfGeneratedIdKey(name=NULL, version=0.0.0, generatedId=null)",
- someKey0.toString());
-
- PfGeneratedIdKey someKey1 = new PfGeneratedIdKey("my-name", VERSION001, generatedId);
- PfGeneratedIdKey someKey2 = new PfGeneratedIdKey(someKey1);
- PfGeneratedIdKey someKey3 = new PfGeneratedIdKey(someKey1.getId());
- assertEquals(someKey1, someKey2);
- assertEquals(someKey1, someKey3);
- assertFalse(someKey1.isNullVersion());
- assertEquals("PfGeneratedIdKey(name=my-name, version=0.0.1, generatedId="
- + generatedId + ")", someKey1.toString());
-
- assertEquals("my-name", someKey1.getName());
- assertEquals(VERSION001, someKey1.getVersion());
-
- assertEquals(someKey2, someKey1.getKey());
- assertEquals(1, someKey1.getKeys().size());
- assertThatThrownBy(() -> someKey0.setName(null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching(NAME_IS_NULL);
- assertThatThrownBy(() -> someKey0.setVersion(null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching(VERSION_IS_NULL);
- assertThatCode(() -> someKey0.setGeneratedId(null)).doesNotThrowAnyException();
-
- assertFalse(someKey1.isNewerThan(someKey2));
- assertThatThrownBy(() -> someKey1.isNewerThan((PfKey) null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching("^otherKey is marked .*on.*ull but is null$");
- someKey2.setGeneratedId(generatedId + 1);
- assertTrue(someKey2.isNewerThan(someKey1));
- someKey3.setName("my-name3");
- assertTrue(someKey3.isNewerThan(someKey1));
-
- assertEquals(-1, someKey1.compareTo(someKey2));
- assertEquals(-1, someKey1.compareTo(someKey3));
- assertThatThrownBy(() -> someKey1.compareTo((PfConcept) null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching("^otherObj is marked .*on.*ull but is null$");
-
- PfGeneratedIdKey someKey4 = new PfGeneratedIdKey("NULL", "0.0.0", generatedId);
- assertFalse(someKey4.isNullKey());
- assertFalse(someKey1.isNullKey());
- }
-
- @Test
- public void testTimestampKeyErrors() {
- assertThatThrownBy(() -> new PfGeneratedIdKey((PfGeneratedIdKey) null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching(CONCEPT_IS_NULL);
- assertThatThrownBy(() -> new PfGeneratedIdKey(null, null, null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching(NAME_IS_NULL);
- assertThatThrownBy(() -> new PfGeneratedIdKey("my-name", null, null)).isInstanceOf(NullPointerException.class)
- .hasMessageMatching(VERSION_IS_NULL);
- assertThatCode(() -> new PfGeneratedIdKey("my-name", VERSION001, null))
- .doesNotThrowAnyException();
- }
-}
diff --git a/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java b/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
index 7358ab11b..380a9831e 100644
--- a/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
+++ b/models-dao/src/main/java/org/onap/policy/models/dao/PfDao.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -21,12 +22,10 @@
package org.onap.policy.models.dao;
-import java.time.Instant;
import java.util.Collection;
import java.util.List;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfReferenceTimestampKey;
@@ -95,15 +94,6 @@ public interface PfDao {
<T extends PfConcept> void delete(Class<T> someClass, PfTimestampKey timeStampKey);
/**
- * Delete an Policy Framework concept on the database.
- *
- * @param <T> the type of the object to delete, a subclass of {@link PfConcept}
- * @param someClass the class of the object to delete, a subclass of {@link PfConcept}
- * @param idKey the PfConceptIdKey of the object to delete
- */
- <T extends PfConcept> void delete(Class<T> someClass, PfGeneratedIdKey idKey);
-
- /**
* Create a collection of objects in the database.
*
* @param <T> the type of the object to create, a subclass of {@link PfConcept}
@@ -203,16 +193,6 @@ public interface PfDao {
<T extends PfConcept> T get(Class<T> someClass, PfTimestampKey timestampKey);
/**
- * Get an object from the database, referred to by reference key.
- *
- * @param <T> the type of the object to get, a subclass of {@link PfConcept}
- * @param someClass the class of the object to get, a subclass of {@link PfConcept}
- * @param idKey the PfConceptIdKey of the object to get
- * @return the object that was retrieved from the database or null if the object was not retrieved
- */
- <T extends PfConcept> T get(Class<T> someClass, PfGeneratedIdKey idKey);
-
- /**
* Get an object from the database, referred to by reference timestamp key.
*
* @param <T> the type of the object to get, a subclass of {@link PfConcept}
@@ -273,18 +253,6 @@ public interface PfDao {
<T extends PfConcept> List<T> getAllVersionsByParent(Class<T> someClass, final String parentKeyName);
/**
- * Get all the objects in the database of a given type.
- *
- * @param <T> the type of the objects to get, a subclass of {@link PfConcept}
- * @param someClass the class of the objects to get, a subclass of {@link PfConcept}
- * @param key the key of the PfGeneratedIdKey to get
- * @param timeStamp the timeStamp of the concepts to get
- * @return the objects or null if no objects were retrieved
- */
- <T extends PfConcept> List<T> getByTimestamp(final Class<T> someClass,
- final PfGeneratedIdKey key, final Instant timeStamp);
-
- /**
* Get a concept from the database with the given concept key.
*
* @param <T> the type of the object to get, a subclass of {@link PfConcept}
diff --git a/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java b/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
index 1b1b77da2..22c5c5397 100644
--- a/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
+++ b/models-dao/src/main/java/org/onap/policy/models/dao/impl/DefaultPfDao.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -21,8 +22,6 @@
package org.onap.policy.models.dao.impl;
-import java.sql.Timestamp;
-import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -34,7 +33,6 @@ import javax.ws.rs.core.Response;
import org.apache.commons.lang3.StringUtils;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.base.PfReferenceKey;
@@ -60,7 +58,6 @@ public class DefaultPfDao implements PfDao {
private static final String NAME = "name";
private static final String VERSION = "version";
private static final String TIMESTAMP = "timeStamp";
- private static final String GENERATEDID = "Id";
private static final String PARENT_NAME = "parentname";
private static final String PARENT_VERSION = "parentversion";
private static final String LOCAL_NAME = "localname";
@@ -78,8 +75,6 @@ public class DefaultPfDao implements PfDao {
private static final String NAME_FILTER = "c.key.name = :name";
private static final String VERSION_FILTER = "c.key.version = :version";
private static final String TIMESTAMP_FILTER = "c.key.timeStamp = :timeStamp";
- private static final String TIMESTAMP_FILTER_NOKEY = "c.timeStamp = :timeStamp";
- private static final String GENERATED_ID_FILTER = "c.key.generatedId = :Id";
private static final String PARENT_NAME_FILTER = "c.key.parentKeyName = :parentname";
private static final String PARENT_VERSION_FILTER = "c.key.parentKeyVersion = :parentversion";
private static final String LOCAL_NAME_FILTER = "c.key.localName = :localname";
@@ -92,9 +87,6 @@ public class DefaultPfDao implements PfDao {
private static final String DELETE_BY_TIMESTAMP_KEY =
DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + TIMESTAMP_FILTER;
- private static final String DELETE_BY_GENERATED_ID_KEY =
- DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + GENERATED_ID_FILTER;
-
private static final String DELETE_BY_REFERENCE_KEY =
DELETE_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
@@ -109,9 +101,6 @@ public class DefaultPfDao implements PfDao {
private static final String SELECT_BY_CONCEPT_KEY =
SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
- private static final String SELECT_BY_TIMESTAMP_NOKEY =
- SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + TIMESTAMP_FILTER_NOKEY;
-
private static final String SELECT_BY_REFERENCE_KEY =
SELECT_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
// @formatter:on
@@ -255,27 +244,6 @@ public class DefaultPfDao implements PfDao {
}
@Override
- public <T extends PfConcept> void delete(final Class<T> someClass, final PfGeneratedIdKey key) {
- if (key == null) {
- return;
- }
- final var mg = getEntityManager();
- try {
- // @formatter:off
- mg.getTransaction().begin();
- mg.createQuery(setQueryTable(DELETE_BY_GENERATED_ID_KEY, someClass), someClass)
- .setParameter(NAME, key.getName())
- .setParameter(VERSION, key.getVersion())
- .setParameter(GENERATEDID, key.getGeneratedId())
- .executeUpdate();
- mg.getTransaction().commit();
- // @formatter:on
- } finally {
- mg.close();
- }
- }
-
- @Override
public <T extends PfConcept> void createCollection(final Collection<T> objs) {
if (objs == null || objs.isEmpty()) {
return;
@@ -418,11 +386,6 @@ public class DefaultPfDao implements PfDao {
}
@Override
- public <T extends PfConcept> T get(final Class<T> someClass, final PfGeneratedIdKey key) {
- return genericGet(someClass, key);
- }
-
- @Override
public <T extends PfConcept> T get(final Class<T> someClass, final PfTimestampKey key) {
return genericGet(someClass, key);
}
@@ -535,27 +498,6 @@ public class DefaultPfDao implements PfDao {
}
@Override
- public <T extends PfConcept> List<T> getByTimestamp(final Class<T> someClass, final PfGeneratedIdKey key,
- final Instant timeStamp) {
- if (someClass == null || key == null || timeStamp == null) {
- return Collections.emptyList();
- }
-
- final var mg = getEntityManager();
- try {
- // @formatter:off
- return mg.createQuery(setQueryTable(SELECT_BY_TIMESTAMP_NOKEY, someClass), someClass)
- .setParameter(NAME, key.getName())
- .setParameter(VERSION, key.getVersion())
- .setParameter(TIMESTAMP, Timestamp.from(timeStamp))
- .getResultList();
- // @formatter:on
- } finally {
- mg.close();
- }
- }
-
- @Override
public <T extends PfConcept> T getConcept(final Class<T> someClass, final PfConceptKey key) {
if (someClass == null || key == null) {
return null;
diff --git a/models-dao/src/main/java/org/onap/policy/models/dao/impl/ProxyDao.java b/models-dao/src/main/java/org/onap/policy/models/dao/impl/ProxyDao.java
index 72d56834d..d0681e1e4 100644
--- a/models-dao/src/main/java/org/onap/policy/models/dao/impl/ProxyDao.java
+++ b/models-dao/src/main/java/org/onap/policy/models/dao/impl/ProxyDao.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -20,8 +21,6 @@
package org.onap.policy.models.dao.impl;
-import java.sql.Timestamp;
-import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -32,7 +31,6 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.onap.policy.models.base.PfConcept;
import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfReferenceTimestampKey;
@@ -58,7 +56,6 @@ public class ProxyDao implements PfDao {
private static final String NAME = "name";
private static final String VERSION = "version";
private static final String TIMESTAMP = "timeStamp";
- private static final String GENERATEDID = "Id";
private static final String PARENT_NAME = "parentname";
private static final String PARENT_VERSION = "parentversion";
private static final String LOCAL_NAME = "localname";
@@ -76,8 +73,6 @@ public class ProxyDao implements PfDao {
private static final String NAME_FILTER = "c.key.name = :name";
private static final String VERSION_FILTER = "c.key.version = :version";
private static final String TIMESTAMP_FILTER = "c.key.timeStamp = :timeStamp";
- private static final String TIMESTAMP_FILTER_NOKEY = "c.timeStamp = :timeStamp";
- private static final String GENERATED_ID_FILTER = "c.key.generatedId = :Id";
private static final String PARENT_NAME_FILTER = "c.key.parentKeyName = :parentname";
private static final String PARENT_VERSION_FILTER = "c.key.parentKeyVersion = :parentversion";
private static final String LOCAL_NAME_FILTER = "c.key.localName = :localname";
@@ -90,9 +85,6 @@ public class ProxyDao implements PfDao {
private static final String DELETE_BY_TIMESTAMP_KEY =
DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + TIMESTAMP_FILTER;
- private static final String DELETE_BY_GENERATED_ID_KEY =
- DELETE_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + GENERATED_ID_FILTER;
-
private static final String DELETE_BY_REFERENCE_KEY =
DELETE_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
@@ -107,9 +99,6 @@ public class ProxyDao implements PfDao {
private static final String SELECT_BY_CONCEPT_KEY =
SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER;
- private static final String SELECT_BY_TIMESTAMP_NOKEY =
- SELECT_FROM_TABLE + WHERE + NAME_FILTER + AND + VERSION_FILTER + AND + TIMESTAMP_FILTER_NOKEY;
-
private static final String SELECT_BY_REFERENCE_KEY =
SELECT_FROM_TABLE + WHERE + PARENT_NAME_FILTER + AND + PARENT_VERSION_FILTER + AND + LOCAL_NAME_FILTER;
// @formatter:on
@@ -187,21 +176,6 @@ public class ProxyDao implements PfDao {
}
@Override
- public <T extends PfConcept> void delete(final Class<T> someClass, final PfGeneratedIdKey key) {
- if (key == null) {
- return;
- }
-
- // @formatter:off
- mg.createQuery(setQueryTable(DELETE_BY_GENERATED_ID_KEY, someClass), someClass)
- .setParameter(NAME, key.getName())
- .setParameter(VERSION, key.getVersion())
- .setParameter(GENERATEDID, key.getGeneratedId())
- .executeUpdate();
- // @formatter:on
- }
-
- @Override
public <T extends PfConcept> void createCollection(final Collection<T> objs) {
if (objs == null || objs.isEmpty()) {
return;
@@ -308,11 +282,6 @@ public class ProxyDao implements PfDao {
}
@Override
- public <T extends PfConcept> T get(final Class<T> someClass, final PfGeneratedIdKey key) {
- return genericGet(someClass, key);
- }
-
- @Override
public <T extends PfConcept> T get(final Class<T> someClass, final PfTimestampKey key) {
return genericGet(someClass, key);
}
@@ -397,22 +366,6 @@ public class ProxyDao implements PfDao {
}
@Override
- public <T extends PfConcept> List<T> getByTimestamp(final Class<T> someClass, final PfGeneratedIdKey key,
- final Instant timeStamp) {
- if (someClass == null || key == null || timeStamp == null) {
- return Collections.emptyList();
- }
-
- // @formatter:off
- return mg.createQuery(setQueryTable(SELECT_BY_TIMESTAMP_NOKEY, someClass), someClass)
- .setParameter(NAME, key.getName())
- .setParameter(VERSION, key.getVersion())
- .setParameter(TIMESTAMP, Timestamp.from(timeStamp))
- .getResultList();
- // @formatter:on
- }
-
- @Override
public <T extends PfConcept> T getConcept(final Class<T> someClass, final PfConceptKey key) {
if (someClass == null || key == null) {
return null;
diff --git a/models-dao/src/test/java/org/onap/policy/models/dao/DummyGeneratedIdEntity.java b/models-dao/src/test/java/org/onap/policy/models/dao/DummyGeneratedIdEntity.java
deleted file mode 100644
index 6ba045c54..000000000
--- a/models-dao/src/test/java/org/onap/policy/models/dao/DummyGeneratedIdEntity.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.dao;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NonNull;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfGeneratedIdKey;
-import org.onap.policy.models.base.PfKey;
-
-
-@Entity
-@Table(name = "DummyGeneratedIdEntity")
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class DummyGeneratedIdEntity extends PfConcept {
- private static final long serialVersionUID = -2962570563281067896L;
-
- @EmbeddedId()
- @NonNull
- private PfGeneratedIdKey key;
-
- @Column(precision = 3)
- @Temporal(TemporalType.TIMESTAMP)
- private Date timeStamp;
-
- @Column
- private double doubleValue;
-
- /**
- * Default constructor.
- */
- public DummyGeneratedIdEntity() {
- this.key = new PfGeneratedIdKey();
- this.timeStamp = new Date();
- }
-
- public DummyGeneratedIdEntity(DummyGeneratedIdEntity source) {
- this.key = source.key;
- this.timeStamp = source.timeStamp;
- }
-
- /**
- * Constructor.
- *
- * @param key the key
- * @param timeStamp the date value
- */
- public DummyGeneratedIdEntity(final PfGeneratedIdKey key, final Date timeStamp) {
- this.key = key;
- this.timeStamp = timeStamp;
- }
-
- /**
- * Constructor.
- *
- * @param key the key
- * @param timeStamp the date value
- * @param doubleValue the double value *
- */
- public DummyGeneratedIdEntity(final PfGeneratedIdKey key, final Date timeStamp, final double doubleValue) {
- this.key = key;
- this.timeStamp = timeStamp;
- this.doubleValue = doubleValue;
- }
-
- @Override
- public List<PfKey> getKeys() {
- final List<PfKey> keyList = new ArrayList<>();
- keyList.add(getKey());
- return keyList;
- }
-
- @Override
- public BeanValidationResult validate(@NonNull String fieldName) {
- BeanValidationResult result = new BeanValidationResult(fieldName, this);
- result.addResult(key.validate("key"));
- return result;
- }
-
- @Override
- public void clean() {
- key.clean();
- }
-
- @Override
- public int compareTo(@NonNull final PfConcept otherObj) {
- if (this == otherObj) {
- return 0;
- }
-
- if (getClass() != otherObj.getClass()) {
- return this.getClass().getName().compareTo(otherObj.getClass().getName());
- }
-
- final DummyGeneratedIdEntity other = (DummyGeneratedIdEntity) otherObj;
- if (this.timeStamp != other.timeStamp) {
- return timeStamp.compareTo(other.timeStamp);
- }
- return Double.compare(doubleValue, other.doubleValue);
- }
-
-}
diff --git a/models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java b/models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java
index c0b0f2ad0..65d22863f 100644
--- a/models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java
+++ b/models-dao/src/test/java/org/onap/policy/models/dao/EntityTest.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -30,7 +31,6 @@ import static org.junit.Assert.assertNull;
import java.time.Instant;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,7 +42,6 @@ import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.junit.After;
import org.junit.Test;
import org.onap.policy.models.base.PfConceptKey;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.base.PfReferenceTimestampKey;
@@ -66,9 +65,6 @@ public class EntityTest {
private static final Instant TIMESTAMP0 = Instant.ofEpochSecond(1613494293);
private static final Instant TIMESTAMP1 = Instant.ofEpochSecond(1613494293).plusSeconds(55);
private static final Instant TIMESTAMP2 = Instant.ofEpochSecond(1613494293).plusSeconds(90);
- private static final Long GENERATEDID0 = 10000L;
- private static final Long GENERATEDID1 = 10001L;
- private static final Long GENERATEDID2 = 10002L;
private PfDao pfDao;
@@ -134,16 +130,12 @@ public class EntityTest {
testAllOps();
- testGeneratedId();
-
testReferenceTimestamp();
testVersionOps();
testgetFilteredOps();
- testgetFilteredOps2();
-
testgetFilteredOps3();
}
@@ -384,111 +376,6 @@ public class EntityTest {
assertEquals(0, pfDao.size(DummyTimestampEntity.class));
}
- private void testGeneratedId() {
- final PfGeneratedIdKey agKey0 = new PfGeneratedIdKey("AT-KEY0", VERSION001, GENERATEDID0);
- final PfGeneratedIdKey agKey1 = new PfGeneratedIdKey("AT-KEY1", VERSION001, GENERATEDID1);
- final PfGeneratedIdKey agKey2 = new PfGeneratedIdKey("AT-KEY2", VERSION001, GENERATEDID2);
- final DummyGeneratedIdEntity gkeyInfo0 = new DummyGeneratedIdEntity(agKey0, Date.from(TIMESTAMP0));
- final DummyGeneratedIdEntity gkeyInfo1 = new DummyGeneratedIdEntity(agKey1, Date.from(TIMESTAMP1));
- final DummyGeneratedIdEntity gkeyInfo2 = new DummyGeneratedIdEntity(agKey2, Date.from(TIMESTAMP2));
-
- pfDao.create(gkeyInfo0);
-
- final DummyGeneratedIdEntity gkeyInfoBack0 = pfDao.get(DummyGeneratedIdEntity.class, agKey0);
- assertEquals(gkeyInfo0, gkeyInfoBack0);
-
- assertEquals(1, pfDao.getByTimestamp(DummyGeneratedIdEntity.class, agKey0, TIMESTAMP0).size());
-
- final DummyGeneratedIdEntity gkeyInfoBackNull =
- pfDao.get(DummyGeneratedIdEntity.class, PfGeneratedIdKey.getNullKey());
- assertNull(gkeyInfoBackNull);
-
- final Set<DummyGeneratedIdEntity> gkeyInfoSetIn = new TreeSet<>();
- gkeyInfoSetIn.add(gkeyInfo1);
- gkeyInfoSetIn.add(gkeyInfo2);
-
- pfDao.createCollection(gkeyInfoSetIn);
-
- Set<DummyGeneratedIdEntity> gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
-
- gkeyInfoSetIn.add(gkeyInfo0);
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.delete(gkeyInfo1);
- gkeyInfoSetIn.remove(gkeyInfo1);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.deleteCollection(gkeyInfoSetIn);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(0, gkeyInfoSetOut.size());
-
- gkeyInfoSetIn.add(gkeyInfo2);
- pfDao.createCollection(gkeyInfoSetIn);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.delete(DummyGeneratedIdEntity.class, agKey2);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetOut.size(), pfDao.size(DummyGeneratedIdEntity.class));
-
- pfDao.deleteAll(DummyGeneratedIdEntity.class);
- assertEquals(0, pfDao.size(DummyGeneratedIdEntity.class));
-
- final PfGeneratedIdKey agKey3 = new PfGeneratedIdKey("AT-KEY0", VERSION001);
- final PfGeneratedIdKey agKey4 = new PfGeneratedIdKey("AT-KEY1", VERSION001);
- final PfGeneratedIdKey agKey5 = new PfGeneratedIdKey("AT-KEY2", VERSION001);
- final DummyGeneratedIdEntity gkeyInfo3 = new DummyGeneratedIdEntity(agKey3, Date.from(TIMESTAMP0));
- final DummyGeneratedIdEntity gkeyInfo4 = new DummyGeneratedIdEntity(agKey4, Date.from(TIMESTAMP1));
- final DummyGeneratedIdEntity gkeyInfo5 = new DummyGeneratedIdEntity(agKey5, Date.from(TIMESTAMP2));
-
- pfDao.create(gkeyInfo3);
-
- final DummyGeneratedIdEntity gkeyInfoBack3 = pfDao.get(DummyGeneratedIdEntity.class, agKey3);
- assertEquals(gkeyInfo3, gkeyInfoBack3);
-
- assertEquals(1, pfDao.getByTimestamp(DummyGeneratedIdEntity.class, agKey3, TIMESTAMP0).size());
-
- assertEquals(1, gkeyInfo3.getKeys().size());
-
- assertEquals(1, gkeyInfo4.compareTo(gkeyInfo3));
-
- assertNull(gkeyInfo4.validate(VERSION002).getResult());
-
-
- gkeyInfoSetIn.clear();
- gkeyInfoSetIn.add(gkeyInfo4);
- gkeyInfoSetIn.add(gkeyInfo5);
-
- pfDao.createCollection(gkeyInfoSetIn);
-
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
-
- gkeyInfoSetIn.add(gkeyInfo3);
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.delete(gkeyInfo4);
- gkeyInfoSetIn.remove(gkeyInfo4);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.deleteCollection(gkeyInfoSetIn);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(0, gkeyInfoSetOut.size());
-
- gkeyInfoSetIn.add(gkeyInfo5);
- pfDao.createCollection(gkeyInfoSetIn);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetIn, gkeyInfoSetOut);
-
- pfDao.delete(DummyGeneratedIdEntity.class, agKey5);
- gkeyInfoSetOut = new TreeSet<>(pfDao.getAll(DummyGeneratedIdEntity.class));
- assertEquals(gkeyInfoSetOut.size(), pfDao.size(DummyGeneratedIdEntity.class));
-
- pfDao.deleteAll(DummyGeneratedIdEntity.class);
- assertEquals(0, pfDao.size(DummyGeneratedIdEntity.class));
- }
-
private void testReferenceTimestamp() {
final PfConceptKey owner0Key = new PfConceptKey("Owner0", VERSION001);
final PfConceptKey owner1Key = new PfConceptKey("Owner1", VERSION001);
@@ -638,41 +525,6 @@ public class EntityTest {
PfFilterParameters.builder().filterMap(filterMap).build())).hasSize(1);
}
- private void testgetFilteredOps2() {
- Map<String, Object> filterMap = new HashMap<>();
- filterMap.put("doubleValue", 200.1);
-
- final PfGeneratedIdKey agKey0 = new PfGeneratedIdKey("AT-KEY0", VERSION001);
- final PfGeneratedIdKey agKey1 = new PfGeneratedIdKey("AT-KEY1", VERSION001);
- final PfGeneratedIdKey agKey2 = new PfGeneratedIdKey("AT-KEY2", VERSION001);
- final DummyGeneratedIdEntity gkeyInfo0 = new DummyGeneratedIdEntity(agKey0, Date.from(TIMESTAMP0), 200.0);
- final DummyGeneratedIdEntity gkeyInfo1 = new DummyGeneratedIdEntity(agKey1, Date.from(TIMESTAMP1), 200.1);
- final DummyGeneratedIdEntity gkeyInfo2 = new DummyGeneratedIdEntity(agKey2, Date.from(TIMESTAMP2), 200.2);
-
- pfDao.create(gkeyInfo0);
- pfDao.create(gkeyInfo1);
- pfDao.create(gkeyInfo2);
-
-
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class,
- PfFilterParameters.builder().name("AT-KEY0").version(VERSION001).build())).hasSize(1);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class,
- PfFilterParameters.builder().name("AT-KEY0").build())).hasSize(1);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class, PfFilterParameters.builder().version(VERSION001)
- .startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(3);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class, PfFilterParameters.builder().name("AT-KEY0")
- .version(VERSION001).startTime(TIMESTAMP0).endTime(TIMESTAMP2).build())).hasSize(1);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class,
- PfFilterParameters.builder().version(VERSION001).endTime(TIMESTAMP2).build())).hasSize(3);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class,
- PfFilterParameters.builder().version(VERSION001).startTime(TIMESTAMP0).build())).hasSize(3);
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class, PfFilterParameters.builder().version(VERSION001)
- .startTime(TIMESTAMP0).endTime(TIMESTAMP2).sortOrder("DESC").recordNum(2).build())).hasSize(2);
-
- assertThat(pfDao.getFiltered(DummyGeneratedIdEntity.class,
- PfFilterParameters.builder().filterMap(filterMap).build())).hasSize(1);
- }
-
private void testgetFilteredOps3() {
Map<String, Object> filterMap = new HashMap<>();
filterMap.put("localName", "AT-KEY0");
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/persistence/concepts/JpaPolicyAudit.java b/models-pap/src/main/java/org/onap/policy/models/pap/persistence/concepts/JpaPolicyAudit.java
index e151441da..35e385637 100644
--- a/models-pap/src/main/java/org/onap/policy/models/pap/persistence/concepts/JpaPolicyAudit.java
+++ b/models-pap/src/main/java/org/onap/policy/models/pap/persistence/concepts/JpaPolicyAudit.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. 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.
@@ -22,28 +22,36 @@
package org.onap.policy.models.pap.persistence.concepts;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
+import lombok.NonNull;
import org.apache.commons.lang3.builder.CompareToBuilder;
+import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.common.utils.validation.Assertions;
import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfGeneratedIdKey;
+import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfReferenceKey;
-import org.onap.policy.models.base.validation.annotations.VerifyKey;
+import org.onap.policy.models.base.Validated;
import org.onap.policy.models.pap.concepts.PolicyAudit;
import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
@@ -62,11 +70,24 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAudit> {
private static final long serialVersionUID = -2935734300607322191L;
- @EmbeddedId
- @Column
- @NotNull
- @VerifyKey(versionNotNull = true)
- private PfGeneratedIdKey key;
+ @Id
+ @Column(name = "ID")
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "auditIdGen")
+ @TableGenerator(
+ name = "auditIdGen",
+ table = "sequence",
+ pkColumnName = "SEQ_NAME",
+ valueColumnName = "SEQ_COUNT",
+ pkColumnValue = "SEQ_GEN")
+ private Long generatedId;
+
+ @Column(name = "name", length = 120)
+ @Pattern(regexp = PfKey.NAME_REGEXP)
+ private String name;
+
+ @Column(name = "version", length = 20)
+ @Pattern(regexp = PfKey.VERSION_REGEXP)
+ private String version;
@Column
private String pdpGroup;
@@ -90,7 +111,8 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
* Default constructor.
*/
public JpaPolicyAudit() {
- key = new PfGeneratedIdKey();
+ this.setName(PfKey.NULL_KEY_NAME);
+ this.setVersion(PfKey.NULL_KEY_VERSION);
}
/**
@@ -108,7 +130,9 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
* @param copyConcept original entity to be copied
*/
public JpaPolicyAudit(JpaPolicyAudit copyConcept) {
- this.key = new PfGeneratedIdKey(copyConcept.getKey());
+ this.name = copyConcept.name;
+ this.version = copyConcept.version;
+ this.generatedId = copyConcept.generatedId;
this.pdpGroup = copyConcept.getPdpGroup();
this.pdpType = copyConcept.getPdpType();
this.action = copyConcept.getAction();
@@ -132,7 +156,9 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
// @formatter:off
return new CompareToBuilder()
- .append(key, other.key)
+ .append(name, other.name)
+ .append(version, other.version)
+ .append(generatedId, other.generatedId)
.append(pdpGroup, other.pdpGroup)
.append(pdpType, other.pdpType)
.append(action, other.action)
@@ -144,11 +170,11 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
@Override
public PolicyAudit toAuthorative() {
- var policyIdent = new ToscaConceptIdentifier(key.getName(), key.getVersion());
+ var policyIdent = new ToscaConceptIdentifier(name, version);
// @formatter:off
return PolicyAudit.builder()
- .auditId(key.getGeneratedId())
+ .auditId(generatedId)
.pdpGroup(pdpGroup)
.pdpType(pdpType)
.policy(policyIdent)
@@ -163,11 +189,13 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
public void fromAuthorative(PolicyAudit authorativeConcept) {
if (authorativeConcept.getPolicy() != null) {
final ToscaConceptIdentifier policy = authorativeConcept.getPolicy();
- key = new PfGeneratedIdKey(policy.getName(), policy.getVersion(), authorativeConcept.getAuditId());
+ this.setName(policy.getName());
+ this.setVersion(policy.getVersion());
} else {
- key = new PfGeneratedIdKey();
+ this.setName(PfKey.NULL_KEY_NAME);
+ this.setVersion(PfKey.NULL_KEY_VERSION);
}
-
+ this.setGeneratedId(authorativeConcept.getAuditId());
pdpGroup = authorativeConcept.getPdpGroup();
pdpType = authorativeConcept.getPdpType();
action = authorativeConcept.getAction();
@@ -176,17 +204,32 @@ public class JpaPolicyAudit extends PfConcept implements PfAuthorative<PolicyAud
user = authorativeConcept.getUser();
}
+
@Override
public List<PfKey> getKeys() {
- return getKey().getKeys();
+ final List<PfKey> keyList = new ArrayList<>();
+ keyList.add(getKey());
+ return keyList;
}
@Override
- public void clean() {
- key.clean();
+ public PfKey getKey() {
+ return new PfConceptKey(name, version);
+ }
+ @Override
+ public void clean() {
pdpGroup = Assertions.validateStringParameter("pdpGroup", pdpGroup, PfReferenceKey.LOCAL_NAME_REGEXP);
pdpType = Assertions.validateStringParameter("pdpType", pdpType, PfReferenceKey.LOCAL_NAME_REGEXP);
user = Assertions.validateStringParameter("user", user, PfReferenceKey.LOCAL_NAME_REGEXP);
}
+
+ @Override
+ public BeanValidationResult validate(@NonNull String fieldName) {
+ BeanValidationResult result = super.validate(fieldName);
+ if (PfKey.NULL_KEY_NAME.equals(name)) {
+ result.addResult("name", name, ValidationStatus.INVALID, Validated.IS_NULL);
+ }
+ return result;
+ }
}
diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProvider.java b/models-pap/src/main/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProvider.java
deleted file mode 100644
index ec759d34d..000000000
--- a/models-pap/src/main/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProvider.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pap.persistence.provider;
-
-import java.time.Instant;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import javax.ws.rs.core.Response;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NonNull;
-import org.apache.commons.lang3.StringUtils;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.dao.PfDao;
-import org.onap.policy.models.dao.PfFilterParametersIntfc;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.pap.persistence.concepts.JpaPolicyAudit;
-
-/**
- * Provider for Policy Audit.
- *
- * @author Adheli Tavares (adheli.tavares@est.tech)
- *
- */
-public class PolicyAuditProvider {
-
- private static final Integer DEFAULT_MAX_RECORDS = 100;
- private static final Integer DEFAULT_MIN_RECORDS = 10;
-
- /**
- * Create audit records.
- *
- * @param audits list of policy audit
- */
- public void createAuditRecords(@NonNull PfDao dao, @NonNull final List<PolicyAudit> audits) {
- List<JpaPolicyAudit> jpaAudits = audits.stream().map(JpaPolicyAudit::new).collect(Collectors.toList());
-
- var result = new BeanValidationResult("createAuditRecords", jpaAudits);
-
- var count = 0;
- for (JpaPolicyAudit jpaAudit : jpaAudits) {
- result.addResult(jpaAudit.validate(String.valueOf(count++)));
- }
-
- if (!result.isValid()) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, result.getResult());
- }
-
- dao.createCollection(jpaAudits);
- }
-
- /**
- * Collect audit records based on filters at {@link AuditFilter}.
- *
- * @param auditFilter {@link AuditFilter} object with filters for search
- * @return list of {@link PolicyAudit} records
- */
- public List<PolicyAudit> getAuditRecords(@NonNull PfDao dao, @NonNull AuditFilter auditFilter) {
- if (auditFilter.getRecordNum() < 1) {
- auditFilter.setRecordNum(DEFAULT_MIN_RECORDS);
- } else if (auditFilter.getRecordNum() > DEFAULT_MAX_RECORDS) {
- auditFilter.setRecordNum(DEFAULT_MAX_RECORDS);
- }
-
- return dao.getFiltered(JpaPolicyAudit.class, auditFilter).stream().map(JpaPolicyAudit::toAuthorative)
- .collect(Collectors.toList());
- }
-
- /**
- * Create a filter for looking for audit records.
- * name - policy name
- * version - policy version
- * pdpGroup - PDP group that policy might be related
- * action - type of action/operation realized on policy
- * fromDate - start of period in case of time interval search
- */
- @Data
- @Builder
- public static class AuditFilter implements PfFilterParametersIntfc {
- private String name;
- private String version;
- private AuditAction action;
- private String pdpGroup;
- private Instant fromDate;
- private Instant toDate;
- private int recordNum;
- @Builder.Default
- private String sortOrder = "DESC";
-
- // initialized lazily, if not set via the builder
- private Map<String, Object> filterMap;
-
- @Override
- public Instant getStartTime() {
- return fromDate;
- }
-
- @Override
- public Instant getEndTime() {
- return toDate;
- }
-
- @Override
- public Map<String, Object> getFilterMap() {
- if (filterMap != null) {
- return filterMap;
- }
-
- filterMap = new HashMap<>();
-
- if (StringUtils.isNotBlank(pdpGroup)) {
- filterMap.put("pdpGroup", pdpGroup);
- }
-
- if (action != null) {
- filterMap.put("action", action);
- }
-
- return filterMap;
- }
- }
-}
diff --git a/models-pap/src/test/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProviderTest.java b/models-pap/src/test/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProviderTest.java
deleted file mode 100644
index 41c9b92a6..000000000
--- a/models-pap/src/test/java/org/onap/policy/models/pap/persistence/provider/PolicyAuditProviderTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pap.persistence.provider;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-import org.awaitility.Awaitility;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.dao.DaoParameters;
-import org.onap.policy.models.dao.PfDao;
-import org.onap.policy.models.dao.PfDaoFactory;
-import org.onap.policy.models.dao.impl.DefaultPfDao;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-/**
- * Class for unit testing {@link PolicyAuditProvider}.
- *
- * @author Adheli Tavares (adheli.tavares@est.tech)
- *
- */
-public class PolicyAuditProviderTest {
-
- private static final String FIELD_IS_NULL = "%s is marked .*ull but is null";
- private static final String GROUP_A = "groupA";
- private static final String GROUP_B = "groupB";
- private static final ToscaConceptIdentifier MY_POLICY = new ToscaConceptIdentifier("MyPolicy", "1.2.3");
- private static final ToscaConceptIdentifier MY_POLICY2 = new ToscaConceptIdentifier("MyPolicyB", "2.3.4");
- private static final Integer NUMBER_RECORDS = 10;
-
- private PfDao pfDao;
-
- /**
- * Set up the DAO towards the database.
- *
- * @throws Exception on database errors
- */
- @Before
- public void setupDao() throws Exception {
- final DaoParameters daoParameters = new DaoParameters();
- daoParameters.setPluginClass(DefaultPfDao.class.getName());
-
- daoParameters.setPersistenceUnit("ToscaConceptTest");
-
- Properties jdbcProperties = new Properties();
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
-
- if (System.getProperty("USE-MARIADB") != null) {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.mariadb.jdbc.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:mariadb://localhost:3306/policy");
- } else {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:PolicyAuditProviderTest");
- }
-
- daoParameters.setJdbcProperties(jdbcProperties);
-
- pfDao = new PfDaoFactory().createPfDao(daoParameters);
- pfDao.init(daoParameters);
- }
-
- @After
- public void teardown() {
- pfDao.close();
- }
-
- @Test
- public void testCreatePolicyAudit() {
- PolicyAuditProvider provider = new PolicyAuditProvider();
-
- Instant date = Instant.now();
- provider.createAuditRecords(pfDao, generatePolicyAudits(date, GROUP_A, MY_POLICY));
-
- List<PolicyAudit> records =
- provider.getAuditRecords(pfDao, AuditFilter.builder().recordNum(NUMBER_RECORDS).build());
- assertThat(records).hasSize(2);
-
- // as the start date is 10 min ahead of first record, shouldn't return any records
- List<PolicyAudit> emptyList = provider.getAuditRecords(pfDao,
- AuditFilter.builder().fromDate(Instant.now().plusSeconds(600)).recordNum(600).build());
- assertThat(emptyList).isEmpty();
- }
-
- @Test
- public void testCreatePolicyAuditInvalid() {
- PolicyAuditProvider provider = new PolicyAuditProvider();
-
- List<PolicyAudit> audits = List.of(PolicyAudit.builder().pdpType("pdpType").action(AuditAction.DEPLOYMENT)
- .timestamp(Instant.now()).build());
-
- assertThrows(PfModelRuntimeException.class, () -> provider.createAuditRecords(pfDao, audits));
-
- List<PolicyAudit> records =
- provider.getAuditRecords(pfDao, AuditFilter.builder().recordNum(NUMBER_RECORDS).build());
- assertThat(records).isEmpty();
- }
-
- @Test
- public void testFilters() {
- PolicyAuditProvider provider = new PolicyAuditProvider();
-
- Instant date = Instant.now().truncatedTo(ChronoUnit.SECONDS);
- provider.createAuditRecords(pfDao, generatePolicyAudits(date, GROUP_A, MY_POLICY));
- provider.createAuditRecords(pfDao, generatePolicyAudits(date, GROUP_B, MY_POLICY));
- provider.createAuditRecords(pfDao, generatePolicyAudits(date, GROUP_B, MY_POLICY2));
- Awaitility.await().pollDelay(3, TimeUnit.SECONDS).until(() -> {
- return true;
- });
-
- List<PolicyAudit> records = provider.getAuditRecords(pfDao,
- AuditFilter.builder().fromDate(date).toDate(Instant.now()).recordNum(NUMBER_RECORDS).build());
- assertThat(records).hasSize(6);
-
- List<PolicyAudit> recordsWithGroupB = provider.getAuditRecords(pfDao,
- AuditFilter.builder().pdpGroup(GROUP_B).recordNum(NUMBER_RECORDS).build());
- assertThat(recordsWithGroupB).hasSize(4);
-
- List<PolicyAudit> recordsWithActionDeploy = provider.getAuditRecords(pfDao,
- AuditFilter.builder().action(AuditAction.DEPLOYMENT).recordNum(NUMBER_RECORDS).build());
- assertThat(recordsWithActionDeploy).hasSize(3);
-
- List<PolicyAudit> recordsWithMyPolicy = provider.getAuditRecords(pfDao, AuditFilter.builder()
- .name(MY_POLICY.getName()).version(MY_POLICY.getVersion()).recordNum(NUMBER_RECORDS).build());
- assertThat(recordsWithMyPolicy).hasSize(4);
- }
-
- @Test
- public void testLoadRecordsForLimit() {
- PolicyAuditProvider provider = new PolicyAuditProvider();
-
- List<PolicyAudit> loadAudits = new ArrayList<>();
-
- // going to create 102 records.
- for (int i = 0; i <= 50; i++) {
- loadAudits.addAll(generatePolicyAudits(Instant.now().plusSeconds(i), GROUP_A, MY_POLICY));
- }
-
- provider.createAuditRecords(pfDao, loadAudits);
-
- List<PolicyAudit> records =
- provider.getAuditRecords(pfDao, AuditFilter.builder().recordNum(NUMBER_RECORDS).build());
- assertThat(records).hasSize(10);
-
- // check that is being ordered
- assertTrue(records.get(0).getTimestamp().isAfter(records.get(9).getTimestamp()));
- assertEquals(loadAudits.get(loadAudits.size() - 1).getTimestamp(), records.get(0).getTimestamp());
-
- // try to get 102 records should return 100
- records = provider.getAuditRecords(pfDao, AuditFilter.builder().recordNum(102).build());
- assertThat(records).hasSize(100);
-
- // try to get -1 records should return 10
- records = provider.getAuditRecords(pfDao, AuditFilter.builder().recordNum(-1).build());
- assertThat(records).hasSize(10);
- }
-
- @Test
- public void policyProviderExceptions() {
- PolicyAuditProvider provider = new PolicyAuditProvider();
-
- assertThatThrownBy(() -> {
- provider.createAuditRecords(null, null);
- }).hasMessageMatching(String.format(FIELD_IS_NULL, "dao"));
-
- assertThatThrownBy(() -> {
- provider.createAuditRecords(pfDao, null);
- }).hasMessageMatching(String.format(FIELD_IS_NULL, "audits"));
-
- assertThatThrownBy(() -> {
- provider.getAuditRecords(null, AuditFilter.builder().build());
- }).hasMessageMatching(String.format(FIELD_IS_NULL, "dao"));
-
- assertThatThrownBy(() -> {
- provider.getAuditRecords(pfDao, null);
- }).hasMessageMatching(String.format(FIELD_IS_NULL, "auditFilter"));
- }
-
- private List<PolicyAudit> generatePolicyAudits(Instant date, String group, ToscaConceptIdentifier policy) {
- // @formatter:off
- PolicyAudit deploy = PolicyAudit.builder()
- .pdpGroup(group)
- .pdpType("pdpType")
- .policy(policy)
- .action(AuditAction.DEPLOYMENT)
- .timestamp(date.truncatedTo(ChronoUnit.SECONDS))
- .build();
-
- PolicyAudit undeploy = PolicyAudit.builder()
- .pdpGroup(group)
- .pdpType("pdpType")
- .policy(policy)
- .action(AuditAction.UNDEPLOYMENT)
- .timestamp(date.plusSeconds(1).truncatedTo(ChronoUnit.SECONDS))
- .build();
- // @formatter:on
-
- return List.of(deploy, undeploy);
- }
-}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
index 0ff60b90f..45e63e404 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -25,15 +26,19 @@ package org.onap.policy.models.pdp.persistence.concepts;
import java.io.Serializable;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
-import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import lombok.AllArgsConstructor;
@@ -42,13 +47,15 @@ import lombok.EqualsAndHashCode;
import lombok.NonNull;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.eclipse.persistence.annotations.Index;
-import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfGeneratedIdKey;
+import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfUtils;
-import org.onap.policy.models.base.validation.annotations.VerifyKey;
+import org.onap.policy.models.base.Validated;
import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
@@ -67,10 +74,24 @@ import org.onap.policy.models.pdp.concepts.PdpStatistics;
public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStatistics>, Serializable {
private static final long serialVersionUID = -7312974966820980659L;
- @EmbeddedId
- @VerifyKey
- @NotNull
- private PfGeneratedIdKey key;
+ @Id
+ @Column(name = "ID")
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "statisticsIdGen")
+ @TableGenerator(
+ name = "statisticsIdGen",
+ table = "sequence",
+ pkColumnName = "SEQ_NAME",
+ valueColumnName = "SEQ_COUNT",
+ pkColumnValue = "SEQ_GEN")
+ private Long generatedId;
+
+ @Column(name = "name", length = 120)
+ @Pattern(regexp = PfKey.NAME_REGEXP)
+ private String name;
+
+ @Column(name = "version", length = 20)
+ @Pattern(regexp = PfKey.VERSION_REGEXP)
+ private String version;
@Column(precision = 3)
@Temporal(TemporalType.TIMESTAMP)
@@ -116,16 +137,8 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
* The Default Constructor creates a {@link JpaPdpStatistics} object with a null key.
*/
public JpaPdpStatistics() {
- this(new PfGeneratedIdKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaPdpStatistics} object with the given concept key.
- *
- * @param key the key
- */
- public JpaPdpStatistics(@NonNull final PfGeneratedIdKey key) {
- this.key = new PfGeneratedIdKey(key);
+ this.setName(PfKey.NULL_KEY_NAME);
+ this.setVersion(PfKey.NULL_KEY_VERSION);
}
/**
@@ -135,7 +148,9 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
*/
public JpaPdpStatistics(@NonNull final JpaPdpStatistics copyConcept) {
super(copyConcept);
- this.key = new PfGeneratedIdKey(copyConcept.key);
+ this.name = copyConcept.name;
+ this.version = copyConcept.version;
+ this.generatedId = copyConcept.generatedId;
this.timeStamp = copyConcept.timeStamp;
this.pdpGroupName = copyConcept.pdpGroupName;
this.pdpSubGroupName = copyConcept.pdpSubGroupName;
@@ -174,7 +189,9 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
final JpaPdpStatistics other = (JpaPdpStatistics) otherConcept;
return new CompareToBuilder()
- .append(this.key, other.key)
+ .append(this.name, other.name)
+ .append(this.version, other.version)
+ .append(this.generatedId, other.generatedId)
.append(this.timeStamp, other.timeStamp)
.append(this.pdpGroupName, other.pdpGroupName)
.append(this.pdpSubGroupName, other.pdpSubGroupName)
@@ -192,8 +209,8 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public PdpStatistics toAuthorative() {
var pdpStatistics = new PdpStatistics();
- pdpStatistics.setPdpInstanceId(key.getName());
- pdpStatistics.setGeneratedId(key.getGeneratedId());
+ pdpStatistics.setPdpInstanceId(name);
+ pdpStatistics.setGeneratedId(generatedId);
pdpStatistics.setTimeStamp(timeStamp.toInstant());
pdpStatistics.setPdpGroupName(pdpGroupName);
pdpStatistics.setPdpSubGroupName(pdpSubGroupName);
@@ -213,12 +230,11 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public void fromAuthorative(@NonNull final PdpStatistics pdpStatistics) {
- if (pdpStatistics.getGeneratedId() == null) {
- this.setKey(new PfGeneratedIdKey(pdpStatistics.getPdpInstanceId(), PfKey.NULL_KEY_VERSION));
- } else {
- this.setKey(new PfGeneratedIdKey(pdpStatistics.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatistics.getGeneratedId()));
+ if (pdpStatistics.getGeneratedId() != null) {
+ this.setGeneratedId(pdpStatistics.getGeneratedId());
}
+ this.setName(pdpStatistics.getPdpInstanceId());
+ this.setVersion(PfKey.NULL_KEY_VERSION);
if (pdpStatistics.getTimeStamp() == null) {
this.setTimeStamp(Date.from(Instant.EPOCH));
} else {
@@ -241,12 +257,18 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public List<PfKey> getKeys() {
- return getKey().getKeys();
+ final List<PfKey> keyList = new ArrayList<>();
+ keyList.add(getKey());
+ return keyList;
+ }
+
+ @Override
+ public PfKey getKey() {
+ return new PfConceptKey(name, version);
}
@Override
public void clean() {
- key.clean();
pdpGroupName = pdpGroupName.trim();
pdpSubGroupName = pdpSubGroupName.trim();
if (engineStats != null) {
@@ -255,4 +277,13 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
}
}
}
+
+ @Override
+ public BeanValidationResult validate(@NonNull String fieldName) {
+ BeanValidationResult result = super.validate(fieldName);
+ if (PfKey.NULL_KEY_NAME.equals(name)) {
+ result.addResult("name", name, ValidationStatus.INVALID, Validated.IS_NULL);
+ }
+ return result;
+ }
}
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
deleted file mode 100644
index 0b3f32cf5..000000000
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Model
- * ================================================================================
- * Copyright (C) 2019-2021 Nordix Foundation.
- * Modifications Copyright (C) 2020-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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pdp.persistence.provider;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.ws.rs.core.Response;
-import lombok.NonNull;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.models.base.PfGeneratedIdKey;
-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;
-
-
-/**
- * This class provides the provision of information on PAP concepts in the database to callers.
- *
- * @author Ning Xi (ning.xi@est.tech)
- */
-public class PdpStatisticsProvider {
- private static final int DEFAULT_RECORD_COUNT = 10;
- private static final int MAX_RECORD_COUNT = 100;
-
- /**
- * 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) {
-
- if (filterParams.getRecordNum() <= 0) {
- filterParams.setRecordNum(DEFAULT_RECORD_COUNT);
-
- } else if (filterParams.getRecordNum() > MAX_RECORD_COUNT) {
- filterParams.setRecordNum(MAX_RECORD_COUNT);
- }
-
- return asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class, filterParams));
- }
-
- /**
- * Creates PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param pdpStatisticsList a specification of the PDP statistics to create
- * @return the PDP statistics created
- * @throws PfModelException on errors creating PDP statistics
- */
- public List<PdpStatistics> createPdpStatistics(@NonNull final PfDao dao,
- @NonNull final List<PdpStatistics> pdpStatisticsList) throws PfModelException {
- for (PdpStatistics pdpStatistics : pdpStatisticsList) {
- var jpaPdpStatistics = new JpaPdpStatistics();
- jpaPdpStatistics.fromAuthorative(pdpStatistics);
- BeanValidationResult validationResult = jpaPdpStatistics.validate("pdp statistics");
- if (!validationResult.isValid()) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
-
- dao.create(jpaPdpStatistics);
- pdpStatistics.setGeneratedId(jpaPdpStatistics.getKey().getGeneratedId());
- }
-
- // Return the created PDP statistics
- List<PdpStatistics> pdpStatistics = new ArrayList<>(pdpStatisticsList.size());
-
- for (PdpStatistics pdpStatisticsItem : pdpStatisticsList) {
- var jpaPdpStatistics =
- dao.get(JpaPdpStatistics.class, new PfGeneratedIdKey(pdpStatisticsItem.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatisticsItem.getGeneratedId()));
- pdpStatistics.add(jpaPdpStatistics.toAuthorative());
- }
- return pdpStatistics;
- }
-
- /**
- * Updates PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param pdpStatisticsList a specification of the PDP statistics to update
- * @return the PDP statistics updated
- * @throws PfModelException on errors updating PDP statistics
- */
- public List<PdpStatistics> updatePdpStatistics(@NonNull final PfDao dao,
- @NonNull final List<PdpStatistics> pdpStatisticsList) throws PfModelException {
-
- for (PdpStatistics pdpStatistics : pdpStatisticsList) {
- var jpaPdpStatistics = new JpaPdpStatistics();
- jpaPdpStatistics.fromAuthorative(pdpStatistics);
-
- BeanValidationResult validationResult = jpaPdpStatistics.validate("pdp statistics");
- if (!validationResult.isValid()) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
-
- dao.update(jpaPdpStatistics);
- }
-
- // Return the created PDP statistics
- List<PdpStatistics> pdpStatistics = new ArrayList<>(pdpStatisticsList.size());
-
- for (PdpStatistics pdpStatisticsItem : pdpStatisticsList) {
- var jpaPdpStatistics =
- dao.get(JpaPdpStatistics.class, new PfGeneratedIdKey(pdpStatisticsItem.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatisticsItem.getGeneratedId()));
- pdpStatistics.add(jpaPdpStatistics.toAuthorative());
- }
-
- return pdpStatistics;
- }
-
- /**
- * Delete a PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all PDP statistics
- * @param timestamp the timeStamp of statistics to delete, null to delete all statistics record of given PDP
- * @return the PDP statistics list deleted
- * @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,
- 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())));
-
- return pdpStatisticsListToDel;
- }
-
- /**
- * Convert JPA PDP statistics list to an PDP statistics list.
- *
- * @param jpaPdpStatisticsList the list to convert
- * @return the PDP statistics list
- */
- private List<PdpStatistics> asPdpStatisticsList(List<JpaPdpStatistics> jpaPdpStatisticsList) {
- return jpaPdpStatisticsList.stream().map(JpaPdpStatistics::toAuthorative).collect(Collectors.toList());
- }
-}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
index 7c0522ff9..505e3f685 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -31,7 +32,6 @@ import static org.junit.Assert.assertTrue;
import java.time.Instant;
import java.util.ArrayList;
import org.junit.Test;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
/**
@@ -41,14 +41,12 @@ public class JpaPdpStatisticsTest {
@Test
public void testConstructor() {
- assertThatThrownBy(() -> new JpaPdpStatistics((PfGeneratedIdKey) null)).hasMessageContaining("key");
assertThatThrownBy(() -> new JpaPdpStatistics((JpaPdpStatistics) null)).hasMessageContaining("copyConcept");
assertThatThrownBy(() -> new JpaPdpStatistics((PdpStatistics) null)).hasMessageContaining("authorativeConcept");
assertNotNull(new JpaPdpStatistics());
- assertNotNull(new JpaPdpStatistics(new PfGeneratedIdKey()));
PdpStatistics pdpStat = createPdpStatistics();
JpaPdpStatistics jpaPdpStat = new JpaPdpStatistics(createPdpStatistics());
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
deleted file mode 100644
index 90b85b5ae..000000000
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2020-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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pdp.persistence.provider;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.policy.models.base.Validated;
-import org.onap.policy.models.dao.DaoParameters;
-import org.onap.policy.models.dao.PfDao;
-import org.onap.policy.models.dao.PfDaoFactory;
-import org.onap.policy.models.dao.impl.DefaultPfDao;
-import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
-
-public class PdpStatisticsProviderTest {
- private static final String DAO_IS_NULL = "dao is marked .*ull but is null";
- private static final String LIST_IS_NULL = "pdpStatisticsList is marked .*ull but is null";
- private static final String GROUP0 = "group0";
- private static final String NAME = "name";
- private static final String GROUP = "group";
- private static final String SUBGROUP = "subgroup";
- private static final Instant TIMESTAMP1 = Instant.ofEpochSecond(1078884319);
- private static final Instant TIMESTAMP2 = Instant.ofEpochSecond(1078884350);
-
- private PfDao pfDao;
-
- private List<PdpEngineWorkerStatistics> engineStats = new ArrayList<>();
- private PdpStatistics pdpStatistics11;
- private PdpStatistics pdpStatistics12;
- private PdpStatistics pdpStatistics22;
- private PdpStatistics pdpStatistics31;
-
- // checkstyle complained about this as a local variable; had to make it a field
- private long genId;
-
- /**
- * Set up test Dao.
- */
- @Before
- public void setupDao() throws Exception {
- final DaoParameters daoParameters = new DaoParameters();
- daoParameters.setPluginClass(DefaultPfDao.class.getName());
-
- daoParameters.setPersistenceUnit("ToscaConceptTest");
-
- Properties jdbcProperties = new Properties();
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
-
- if (System.getProperty("USE-MARIADB") != null) {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.mariadb.jdbc.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:mariadb://localhost:3306/policy");
- } else {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:PdpStatisticsProviderTest");
- }
-
- daoParameters.setJdbcProperties(jdbcProperties);
-
- pfDao = new PfDaoFactory().createPfDao(daoParameters);
- pfDao.init(daoParameters);
-
- genId = 1;
-
- pdpStatistics11 = new PdpStatistics();
- pdpStatistics11.setPdpInstanceId(NAME);
- pdpStatistics11.setTimeStamp(TIMESTAMP1);
- pdpStatistics11.setGeneratedId(genId++);
- pdpStatistics11.setPdpGroupName(GROUP);
- pdpStatistics11.setPdpSubGroupName(SUBGROUP);
- pdpStatistics11.setPolicyDeployCount(2);
- pdpStatistics11.setPolicyDeployFailCount(1);
- pdpStatistics11.setPolicyDeploySuccessCount(1);
- pdpStatistics11.setPolicyExecutedCount(2);
- pdpStatistics11.setPolicyExecutedFailCount(1);
- pdpStatistics11.setPolicyExecutedSuccessCount(1);
- pdpStatistics11.setEngineStats(engineStats);
-
- pdpStatistics12 = new PdpStatistics();
- pdpStatistics12.setPdpInstanceId(NAME);
- pdpStatistics12.setTimeStamp(TIMESTAMP2);
- pdpStatistics12.setGeneratedId(genId++);
- pdpStatistics12.setPdpGroupName(GROUP);
- pdpStatistics12.setPdpSubGroupName(SUBGROUP);
- pdpStatistics12.setPolicyDeployCount(2);
- pdpStatistics12.setPolicyDeployFailCount(1);
- pdpStatistics12.setPolicyDeploySuccessCount(1);
- pdpStatistics12.setPolicyExecutedCount(2);
- pdpStatistics12.setPolicyExecutedFailCount(1);
- pdpStatistics12.setPolicyExecutedSuccessCount(1);
- pdpStatistics12.setEngineStats(engineStats);
-
- pdpStatistics22 = new PdpStatistics();
- pdpStatistics22.setPdpInstanceId("name2");
- pdpStatistics22.setTimeStamp(TIMESTAMP2);
- pdpStatistics22.setGeneratedId(genId++);
- pdpStatistics22.setPdpGroupName(GROUP);
- pdpStatistics22.setPdpSubGroupName(SUBGROUP);
- pdpStatistics22.setPolicyDeployCount(2);
- pdpStatistics22.setPolicyDeployFailCount(1);
- pdpStatistics22.setPolicyDeploySuccessCount(1);
- pdpStatistics22.setPolicyExecutedCount(2);
- pdpStatistics22.setPolicyExecutedFailCount(1);
- pdpStatistics22.setPolicyExecutedSuccessCount(1);
- pdpStatistics22.setEngineStats(engineStats);
-
- pdpStatistics31 = new PdpStatistics();
- pdpStatistics31.setPdpInstanceId("name3");
- pdpStatistics31.setTimeStamp(TIMESTAMP1);
- pdpStatistics31.setGeneratedId(genId++);
- pdpStatistics31.setPdpGroupName(GROUP);
- pdpStatistics31.setPdpSubGroupName(SUBGROUP);
- pdpStatistics31.setPolicyDeployCount(2);
- pdpStatistics31.setPolicyDeployFailCount(1);
- pdpStatistics31.setPolicyDeploySuccessCount(1);
- pdpStatistics31.setPolicyExecutedCount(2);
- pdpStatistics31.setPolicyExecutedFailCount(1);
- pdpStatistics31.setPolicyExecutedSuccessCount(1);
- pdpStatistics31.setEngineStats(engineStats);
-
- List<PdpStatistics> create = List.of(pdpStatistics11, pdpStatistics22, pdpStatistics31, pdpStatistics12);
- List<PdpStatistics> createdPdpStatisticsList = new PdpStatisticsProvider().createPdpStatistics(pfDao, create);
-
- // these should match AND be in the same order
- assertThat(createdPdpStatisticsList).isEqualTo(create);
- }
-
- @After
- public void teardown() {
- pfDao.close();
- }
-
- @Test
- public void testNotOkPdpStatistics() {
- PdpStatistics pdpStatisticsErr = new PdpStatistics();
- pdpStatisticsErr.setPdpInstanceId("NULL");
- pdpStatisticsErr.setPdpGroupName(GROUP);
- ArrayList<PdpStatistics> pdpStatisticsNullList = new ArrayList<>();
- pdpStatisticsNullList.add(pdpStatisticsErr);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().createPdpStatistics(pfDao, null);
- }).hasMessageMatching(LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(pfDao, null);
- }).hasMessageMatching(LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsNullList);
- }).hasMessageContaining("pdp statistics").hasMessageContaining("key")
- .hasMessageContaining(Validated.IS_A_NULL_KEY);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsNullList);
- }).hasMessageContaining("pdp statistics").hasMessageContaining("key")
- .hasMessageContaining(Validated.IS_A_NULL_KEY);
- }
-
- @Test
- public void testGetFilteredPdpStatistics() throws Exception {
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().getFilteredPdpStatistics(null, PdpFilterParameters.builder().build());
- }).hasMessageMatching(DAO_IS_NULL);
-
- List<PdpStatistics> getPdpStatisticsList;
-
- // empty filter - should return everything
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12, pdpStatistics22, pdpStatistics31));
-
- // match on name - returns multiple records
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12));
-
- // this name only has one record
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name("name2").group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics22));
-
- // match on subgroup
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao,
- PdpFilterParameters.builder().name("name2").group(GROUP).subGroup(SUBGROUP)
- .startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics22));
-
- // only request one record
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).recordNum(1).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics12));
-
- // request too many records
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).recordNum(10000).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12));
-
- // group mismatch
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).group(GROUP0).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- assertThat(getPdpStatisticsList).isEmpty();
-
- // subgroup mismatch
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao,
- PdpFilterParameters.builder().name("name2").group(GROUP).subGroup("subgroup2")
- .startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- assertThat(getPdpStatisticsList).isEmpty();
- }
-
- @Test
- public void testUpdatePdpStatistics() throws Exception {
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(null, null);
- }).hasMessageMatching(DAO_IS_NULL);
-
- pdpStatistics11.setPdpGroupName(GROUP0);
- List<PdpStatistics> update = List.of(pdpStatistics11);
- List<PdpStatistics> updatePdpStatisticsList = new PdpStatisticsProvider().updatePdpStatistics(pfDao, update);
-
- // these should match AND be in the same order
- assertThat(updatePdpStatisticsList).isEqualTo(update);
- }
-
- @Test
- public void testDeletePdpStatistics() throws Exception {
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().deletePdpStatistics(null, null, null);
- }).hasMessageMatching(DAO_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().deletePdpStatistics(pfDao, null, null);
- }).hasMessageMatching("name is marked .*ull but is null");
-
- List<PdpStatistics> deletedPdpStatisticsList =
- new PdpStatisticsProvider().deletePdpStatistics(pfDao, NAME, null);
- verifyEquals(deletedPdpStatisticsList, List.of(pdpStatistics12, pdpStatistics11));
- }
-
- private void verifyEquals(List<PdpStatistics> list1, List<PdpStatistics> list2) {
- assertThat(sort(list1)).isEqualTo(sort(list2));
- }
-
- private List<PdpStatistics> sort(List<PdpStatistics> list1) {
- List<PdpStatistics> list2 = new ArrayList<>(list1);
- Collections.sort(list2, (stat1, stat2) -> stat1.getGeneratedId().compareTo(stat2.getGeneratedId()));
-
- return list2;
- }
-}
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
index 5cc5fc96b..f0a5382de 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProvider.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2022 Nordix Foundation.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. All rights reserved.
* Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,7 +22,6 @@
package org.onap.policy.models.provider;
-import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -30,15 +29,11 @@ import lombok.NonNull;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityKey;
@@ -378,46 +373,6 @@ public interface PolicyModelsProvider extends AutoCloseable {
*/
public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException;
-
- /**
- * Get filtered PdpStatistics.
- *
- * @param filterParams filter parameters
- * @return the PDP statistics found
- * @throws PfModelException on errors getting policies
- */
- public List<PdpStatistics> getFilteredPdpStatistics(PdpFilterParameters filterParams) throws PfModelException;
-
- /**
- * Creates PDP statistics.
- *
- * @param pdpStatisticsList a specification of the PDP statistics to create
- * @return the PDP statistics created
- * @throws PfModelException on errors creating PDP statistics
- */
- public List<PdpStatistics> createPdpStatistics(@NonNull List<PdpStatistics> pdpStatisticsList)
- throws PfModelException;
-
- /**
- * Updates PDP statistics.
- *
- * @param pdpStatisticsList a specification of the PDP statistics to update
- * @return the PDP statistics updated
- * @throws PfModelException on errors updating PDP statistics
- */
- public List<PdpStatistics> updatePdpStatistics(@NonNull List<PdpStatistics> pdpStatisticsList)
- throws PfModelException;
-
- /**
- * Delete a PDP statistics.
- *
- * @param name the name of the policy to get, null to get all PDP statistics
- * @param timestamp the timestamp of statistics to delete, null to delete all statistics record of given pdp
- * @return the PDP statistics deleted
- * @throws PfModelException on errors deleting PDP statistics
- */
- public List<PdpStatistics> deletePdpStatistics(@NonNull String name, Instant timestamp) throws PfModelException;
-
/**
* Gets all policy deployments.
*
@@ -453,18 +408,4 @@ public interface PolicyModelsProvider extends AutoCloseable {
*/
public void cudPolicyStatus(Collection<PdpPolicyStatus> createObjs, Collection<PdpPolicyStatus> updateObjs,
Collection<PdpPolicyStatus> deleteObjs);
-
- /**
- * Creates records for audit actions on policies.
- *
- * @param auditRecords the objects to create
- */
- public void createAuditRecords(@NonNull List<PolicyAudit> auditRecords);
-
- /**
- * Collect the audit records.
- * @param auditFilter filter for search
- * @return list of {@link PolicyAudit} or empty if none or not match with filter
- */
- public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter);
}
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java
index ffb470628..6747d9c49 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/impl/AbstractPolicyModelsProvider.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2021-2022 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. 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.
@@ -20,7 +21,6 @@
package org.onap.policy.models.provider.impl;
-import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -30,18 +30,12 @@ import org.onap.policy.models.base.PfConceptKey;
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.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.pdp.persistence.provider.PdpProvider;
-import org.onap.policy.models.pdp.persistence.provider.PdpStatisticsProvider;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
@@ -280,33 +274,6 @@ public abstract class AbstractPolicyModelsProvider implements PolicyModelsProvid
}
@Override
- public List<PdpStatistics> getFilteredPdpStatistics(PdpFilterParameters filterParams) throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().getFilteredPdpStatistics(getPfDao(), filterParams);
- }
-
- @Override
- public List<PdpStatistics> createPdpStatistics(@NonNull final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().createPdpStatistics(getPfDao(), pdpStatisticsList);
- }
-
- @Override
- public List<PdpStatistics> updatePdpStatistics(@NonNull final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().updatePdpStatistics(getPfDao(), pdpStatisticsList);
- }
-
- @Override
- public List<PdpStatistics> deletePdpStatistics(@NonNull final String name, final Instant timestamp)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().deletePdpStatistics(getPfDao(), name, timestamp);
- }
-
- @Override
public List<PdpPolicyStatus> getAllPolicyStatus() throws PfModelException {
assertInitialized();
return new PdpProvider().getAllPolicyStatus(getPfDao());
@@ -332,18 +299,6 @@ public abstract class AbstractPolicyModelsProvider implements PolicyModelsProvid
new PdpProvider().cudPolicyStatus(getPfDao(), createObjs, updateObjs, deleteObjs);
}
- @Override
- public void createAuditRecords(List<PolicyAudit> auditRecords) {
- assertInitialized();
- new PolicyAuditProvider().createAuditRecords(getPfDao(), auditRecords);
- }
-
- @Override
- public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter) {
- assertInitialized();
- return new PolicyAuditProvider().getAuditRecords(getPfDao(), auditFilter);
- }
-
/**
* Check if the model provider is initialized.
*/
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
index af03fdbcf..ed47ae0a0 100644
--- a/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
+++ b/models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. 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.
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
index 561ef5daa..ff3dae81a 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2022 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. 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.
@@ -22,14 +22,11 @@
package org.onap.policy.models.provider.impl;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -37,22 +34,16 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpHealthStatus;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
@@ -84,10 +75,6 @@ public class DatabasePolicyModelsProviderTest {
private static final String VERSION_100 = "1.0.0";
- private static final Instant TIMESTAMP = Instant.EPOCH;
-
- private static final String ORDER = "DESC";
-
private PolicyModelsProviderParameters parameters;
private PolicyModelsProvider databaseProvider;
@@ -282,18 +269,6 @@ public class DatabasePolicyModelsProviderTest {
databaseProvider.deletePdpGroup(null);
}).hasMessageMatching(NAME_IS_NULL);
- assertThatThrownBy(() -> {
- databaseProvider.createPdpStatistics(null);
- }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
-
- assertThatThrownBy(() -> {
- databaseProvider.updatePdpStatistics(null);
- }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
-
- assertThatThrownBy(() -> {
- databaseProvider.deletePdpStatistics(null, TIMESTAMP);
- }).hasMessageMatching(NAME_IS_NULL);
-
databaseProvider.close();
}
@@ -413,68 +388,6 @@ public class DatabasePolicyModelsProviderTest {
}).hasMessage("delete of PDP group \"name:0.0.0\" failed, PDP group does not exist");
assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup(GROUP).getName());
-
- List<PdpStatistics> statisticsArrayList = makePdpStatisticsList();
-
- assertThat(databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build())).isEmpty();
- assertThat(databaseProvider.createPdpStatistics(statisticsArrayList)).hasSize(1);
- assertThat(databaseProvider.updatePdpStatistics(statisticsArrayList)).hasSize(1);
- }
-
- @Test
- public void testProviderMethodsStatistics() throws PfModelException {
- databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
- databaseProvider.createPdpStatistics(makePdpStatisticsList());
-
- assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build()).get(0)
- .getPdpInstanceId());
- assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().group(GROUP).build()).get(0).getPdpInstanceId());
- assertEquals(0, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().group(GROUP).startTime(Instant.now()).build()).size());
- assertEquals(NAME, databaseProvider
- .getFilteredPdpStatistics(PdpFilterParameters.builder().group(GROUP).endTime(TIMESTAMP).build())
- .get(0).getPdpInstanceId());
- assertEquals(0, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().group(GROUP)
- .startTime(Instant.now()).endTime(Instant.now()).build()).size());
-
- assertEquals(NAME, databaseProvider
- .getFilteredPdpStatistics(PdpFilterParameters.builder().name(NAME).group(GROUP).build()).get(0)
- .getPdpInstanceId());
- assertEquals(0, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().name(NAME).group(GROUP)
- .startTime(Instant.now()).endTime(Instant.now()).build()).size());
-
- assertEquals(NAME,
- databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type").build())
- .get(0).getPdpInstanceId());
-
- assertEquals(0, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
- .startTime(Instant.now()).endTime(Instant.now()).build()).size());
-
- assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
- .sortOrder(ORDER).recordNum(1).build()).get(0).getPdpInstanceId());
- assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
- .sortOrder(ORDER).recordNum(5).build()).get(0).getPdpInstanceId());
- assertEquals(0, databaseProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
- .startTime(Instant.now()).endTime(Instant.now())
- .sortOrder(ORDER).recordNum(5).build()).size());
-
- assertEquals(NAME, databaseProvider.deletePdpStatistics(NAME, null).get(0).getPdpInstanceId());
- assertThat(databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build())).isEmpty();
-
- assertThat(databaseProvider.getAllPolicyStatus()).isEmpty();
- assertThat(databaseProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy", null)))
- .isEmpty();
- assertThat(databaseProvider.getGroupPolicyStatus(GROUP)).isEmpty();
- assertThatCode(() -> databaseProvider.cudPolicyStatus(null, null, null))
- .doesNotThrowAnyException();
-
- databaseProvider.close();
}
@Test
@@ -551,27 +464,6 @@ public class DatabasePolicyModelsProviderTest {
}
@Test
- public void testCreateAuditRecords() throws PfModelException {
- PolicyAudit audit = PolicyAudit.builder().action(AuditAction.DEPLOYMENT).pdpGroup(GROUP).pdpType(GROUP)
- .policy(new ToscaConceptIdentifier(NAME, VERSION_100)).user("user").build();
-
- databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
-
- databaseProvider.createAuditRecords(List.of(audit));
- List<PolicyAudit> createdAudits = databaseProvider.getAuditRecords(AuditFilter.builder().recordNum(10).build());
- assertThat(createdAudits).hasSize(1);
-
- List<PolicyAudit> emptyList = databaseProvider
- .getAuditRecords(AuditFilter.builder().action(AuditAction.UNDEPLOYMENT).recordNum(10).build());
- assertThat(emptyList).isEmpty();
-
- assertThatThrownBy(() -> databaseProvider.createAuditRecords(null))
- .hasMessageContaining("audits is marked non-null but is null");
-
- databaseProvider.close();
- }
-
- @Test
public void testToscaNodeTemplateHandling() throws PfModelException {
databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
@@ -596,16 +488,6 @@ public class DatabasePolicyModelsProviderTest {
databaseProvider.close();
}
- private List<PdpStatistics> makePdpStatisticsList() {
- PdpStatistics pdpStatistics = new PdpStatistics();
- pdpStatistics.setPdpInstanceId(NAME);
- pdpStatistics.setTimeStamp(TIMESTAMP);
- pdpStatistics.setPdpGroupName(GROUP);
- pdpStatistics.setPdpSubGroupName("type");
- List<PdpStatistics> statisticsArrayList = List.of(pdpStatistics);
- return statisticsArrayList;
- }
-
private ToscaServiceTemplate makeNodeTemplate() {
ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
serviceTemplate.setToscaDefinitionsVersion("sample:1.1.0");
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
index 410ecf26a..84331e905 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyBadProviderImpl.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2022 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. 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.
@@ -22,8 +22,6 @@
package org.onap.policy.models.provider.impl;
-import java.time.Instant;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -33,15 +31,11 @@ import lombok.NonNull;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
@@ -242,32 +236,6 @@ public class DummyBadProviderImpl implements PolicyModelsProvider {
}
@Override
- public List<PdpStatistics> getFilteredPdpStatistics(PdpFilterParameters filterParams) throws PfModelException {
- // Not implemented
- return null;
- }
-
- @Override
- public List<PdpStatistics> createPdpStatistics(final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
- public List<PdpStatistics> updatePdpStatistics(final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
- public List<PdpStatistics> deletePdpStatistics(final String name, final Instant timestamp) {
- // Not implemented
- return null;
- }
-
- @Override
public List<PdpPolicyStatus> getAllPolicyStatus() throws PfModelException {
// Not implemented
return null;
@@ -297,15 +265,4 @@ public class DummyBadProviderImpl implements PolicyModelsProvider {
// Not implemented
return null;
}
-
- @Override
- public void createAuditRecords(List<PolicyAudit> auditRecords) {
- // Not implemented
- }
-
- @Override
- public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter) {
- // Not implemented
- return null;
- }
}
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
index dcc436a05..4b8f1b866 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderImpl.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2022 Nordix Foundation.
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. 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.
@@ -22,7 +22,6 @@
package org.onap.policy.models.provider.impl;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -34,15 +33,11 @@ import org.onap.policy.common.utils.resources.ResourceUtils;
import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
@@ -250,32 +245,6 @@ public class DummyPolicyModelsProviderImpl implements PolicyModelsProvider {
}
@Override
- public List<PdpStatistics> getFilteredPdpStatistics(PdpFilterParameters filterParams) throws PfModelException {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
- public List<PdpStatistics> createPdpStatistics(final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
- public List<PdpStatistics> updatePdpStatistics(final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
- public List<PdpStatistics> deletePdpStatistics(final String name, final Instant timestamp) {
- // Not implemented
- return new ArrayList<>();
- }
-
- @Override
public List<PdpPolicyStatus> getAllPolicyStatus() throws PfModelException {
// Not implemented
return new ArrayList<>();
@@ -300,17 +269,6 @@ public class DummyPolicyModelsProviderImpl implements PolicyModelsProvider {
// Not implemented
}
- @Override
- public void createAuditRecords(List<PolicyAudit> auditRecords) {
- // Not implemented
- }
-
- @Override
- public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter) {
- // Not implemented
- return new ArrayList<>();
- }
-
/**
* Return a ToscaServicetemplate dummy response.
*
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
index ca4c2e573..628aef96e 100644
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
+++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/DummyPolicyModelsProviderTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020, 2022 Bell Canada. 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.
@@ -30,15 +30,12 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
-import java.time.Instant;
import java.util.ArrayList;
import org.junit.Test;
import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.models.provider.PolicyModelsProviderParameters;
@@ -112,17 +109,6 @@ public class DummyPolicyModelsProviderTest {
dummyProvider.updatePdpSubGroup("name", new PdpSubGroup());
dummyProvider.updatePdp("name", "type", new Pdp());
- dummyProvider.updatePdpStatistics(new ArrayList<>());
- assertThat(dummyProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().name("name").build()))
- .isEmpty();
-
- assertTrue(
- dummyProvider.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name("name")
- .startTime(Instant.now()).endTime(Instant.now()).build()).isEmpty());
- assertTrue(dummyProvider.createPdpStatistics(null).isEmpty());
- assertTrue(dummyProvider.updatePdpStatistics(null).isEmpty());
- assertTrue(dummyProvider.deletePdpStatistics(null, Instant.now()).isEmpty());
assertThat(dummyProvider.getAllPolicyStatus()).isEmpty();
assertThat(dummyProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy",
@@ -130,8 +116,6 @@ public class DummyPolicyModelsProviderTest {
assertThat(dummyProvider.getGroupPolicyStatus("name")).isEmpty();
assertThatCode(() -> dummyProvider.cudPolicyStatus(null, null,
null)).doesNotThrowAnyException();
- assertThatCode(() -> dummyProvider.createAuditRecords(null)).doesNotThrowAnyException();
- assertThat(dummyProvider.getAuditRecords(AuditFilter.builder().recordNum(10).build())).isEmpty();
}
@Test
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyStatisticsPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyStatisticsPersistenceTest.java
deleted file mode 100644
index abc08846a..000000000
--- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyStatisticsPersistenceTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
- * Modifications 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.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.provider.impl;
-
-import static org.assertj.core.api.Assertions.assertThatCode;
-
-import java.time.Instant;
-import java.util.Arrays;
-import org.junit.Test;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-
-/**
- * Test persistence of PDP statistics to and from the database.
- */
-public class PolicyStatisticsPersistenceTest {
-
- @Test
- public void testPdpStatiscticsPersistence() throws PfModelException {
- // Try the test on three providers
- for (int i = 0; i < 3; i++) {
- try (PolicyModelsProvider databaseProvider = setupProvider()) {
- testPdpStatiscticsPersistenceOneProvider(databaseProvider);
- }
- }
- }
-
- public void testPdpStatiscticsPersistenceOneProvider(PolicyModelsProvider databaseProvider) {
- PdpStatistics pdpStatistics = new PdpStatistics();
- pdpStatistics.setPdpInstanceId("TheInstance");
- pdpStatistics.setTimeStamp(Instant.now());
-
- // Try creating three identical statistics instances
- for (int i = 0; i < 3; i++) {
- assertThatCode(() -> databaseProvider.createPdpStatistics(Arrays.asList(pdpStatistics)))
- .doesNotThrowAnyException();
- }
-
- // Try creating three statistics instances with timestams incremented
- for (int i = 0; i < 3; i++) {
- pdpStatistics.setTimeStamp(pdpStatistics.getTimeStamp().plusSeconds(1));
-
- assertThatCode(() -> databaseProvider.createPdpStatistics(Arrays.asList(pdpStatistics)))
- .doesNotThrowAnyException();
- }
- }
-
- private PolicyModelsProvider setupProvider() throws PfModelException {
- PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters();
-
- if (System.getProperty("USE-MARIADB") != null) {
- parameters.setDatabaseDriver("org.mariadb.jdbc.Driver");
- parameters.setDatabaseUrl("jdbc:mariadb://localhost:3306/policy");
- } else {
- parameters.setDatabaseDriver("org.h2.Driver");
- parameters.setDatabaseUrl("jdbc:h2:mem:PolicyStatisticsPersistenceTest");
- }
-
- parameters.setDatabaseUser("policy");
- parameters.setDatabasePassword("P01icY");
- parameters.setPersistenceUnit("ToscaConceptTest");
-
- return new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
- }
-}