BeanValidationResult result = new BeanValidationResult("createAuditRecords", jpaAudits);
int count = 0;
- for (JpaPolicyAudit jpaAudit: jpaAudits) {
+ for (JpaPolicyAudit jpaAudit : jpaAudits) {
result.addResult(jpaAudit.validate(String.valueOf(count++)));
}
*/
@Data
@Builder
- protected static class AuditFilter {
+ public static class AuditFilter {
private String name;
private String version;
private AuditAction action;
private String pdpGroup;
private Instant fromDate;
private Instant toDate;
+
+ /**
+ * Check if even still using build(), none of the params were provided.
+ *
+ * @return {@code true} if all empty/null; {@code false} otherwise.
+ */
+ public boolean isEmpty() {
+ return StringUtils.isAllEmpty(name, version, pdpGroup) && action == null && fromDate == null
+ && toDate == null;
+ }
}
}
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.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
}).hasMessageMatching(String.format(FIELD_IS_NULL, "auditFilter"));
}
+ @Test
+ public void testAuditFiltersIsEmpty() {
+ AuditFilter emptyFilter = AuditFilter.builder().build();
+ assertTrue(emptyFilter.isEmpty());
+
+ AuditFilter stringsEmpty =
+ AuditFilter.builder().action(AuditAction.DEPLOYMENT).fromDate(Instant.MIN).toDate(Instant.MAX).build();
+ assertFalse(stringsEmpty.isEmpty());
+
+ AuditFilter filter = AuditFilter.builder().fromDate(Instant.MIN).toDate(Instant.MAX).build();
+ assertFalse(filter.isEmpty());
+ filter = AuditFilter.builder().fromDate(Instant.MIN).build();
+ assertFalse(filter.isEmpty());
+ filter = AuditFilter.builder().toDate(Instant.MAX).build();
+ assertFalse(filter.isEmpty());
+ filter = AuditFilter.builder().name("myPolicy").toDate(Instant.MAX).build();
+ assertFalse(filter.isEmpty());
+ }
+
private List<PolicyAudit> generatePolicyAudits(Instant date, String group, ToscaConceptIdentifier policy) {
// @formatter:off
PolicyAudit deploy = PolicyAudit.builder()
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.onap.policy.models</groupId>
+ <artifactId>policy-models-pap</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
import java.util.List;
import lombok.NonNull;
import org.onap.policy.models.base.PfModelException;
+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;
*/
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
+ * @param numRecords max number of records to be collected
+ * @return list of {@link PolicyAudit} or empty if none or not match with filter
+ */
+ public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter, @NonNull Integer numRecords);
}
import lombok.NonNull;
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;
+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;
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, @NonNull Integer numRecords) {
+ assertInitialized();
+ if (auditFilter == null || auditFilter.isEmpty()) {
+ return new PolicyAuditProvider().getAuditRecords(getPfDao(), numRecords);
+ } else {
+ return new PolicyAuditProvider().getAuditRecords(getPfDao(), auditFilter, numRecords);
+ }
+ }
+
/**
* Check if the model provider is initialized.
*/
import org.onap.policy.common.utils.resources.ResourceUtils;
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;
// Not implemented
}
+ @Override
+ public void createAuditRecords(List<PolicyAudit> auditRecords) {
+ // Not implemented
+ }
+
+ @Override
+ public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter, @NonNull Integer numRecords) {
+ // Not implemented
+ return new ArrayList<>();
+ }
+
/**
* Return a ToscaServicetemplate dummy response.
*
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;
databaseProvider.close();
}
+ @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(null, 10);
+ assertThat(createdAudits).hasSize(1);
+
+ createdAudits = databaseProvider.getAuditRecords(AuditFilter.builder().build(), 10);
+ assertThat(createdAudits).hasSize(1);
+
+ List<PolicyAudit> emptyList =
+ databaseProvider.getAuditRecords(AuditFilter.builder().action(AuditAction.UNDEPLOYMENT).build(), 10);
+ assertThat(emptyList).isEmpty();
+
+ assertThatThrownBy(() -> databaseProvider.createAuditRecords(null))
+ .hasMessageContaining("audits is marked non-null but is null");
+
+ assertThatThrownBy(() -> databaseProvider.getAuditRecords(null, null))
+ .hasMessageContaining("numRecords is marked non-null but is null");
+
+ databaseProvider.close();
+ }
+
private List<PdpStatistics> makePdpStatisticsList() {
PdpStatistics pdpStatistics = new PdpStatistics();
pdpStatistics.setPdpInstanceId(NAME);
import lombok.NonNull;
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;
// Not implemented
return null;
}
+
+ @Override
+ public void createAuditRecords(List<PolicyAudit> auditRecords) {
+ // Not implemented
+ }
+
+ @Override
+ public List<PolicyAudit> getAuditRecords(AuditFilter auditFilter, @NonNull Integer numRecords) {
+ // Not implemented
+ return null;
+ }
}
assertThat(dummyProvider.getGroupPolicyStatus("name")).isEmpty();
assertThatCode(() -> dummyProvider.cudPolicyStatus(null, null,
null)).doesNotThrowAnyException();
+ assertThatCode(() -> dummyProvider.createAuditRecords(null)).doesNotThrowAnyException();
+ assertThat(dummyProvider.getAuditRecords(null, 10)).isEmpty();
}
@Test
<class>org.onap.policy.models.base.PfConceptKey</class>
<class>org.onap.policy.models.dao.converters.CDataConditioner</class>
<class>org.onap.policy.models.dao.converters.Uuid2String</class>
+ <class>org.onap.policy.models.pap.persistence.concepts.JpaPolicyAudit</class>
<class>org.onap.policy.models.pdp.persistence.concepts.JpaPdp</class>
<class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpPolicyStatus</class>
<class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpGroup</class>