X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-provider%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fprovider%2Fimpl%2FDatabasePolicyModelsProviderImpl.java;h=1839604aa374d231d1a99839e51ee01f94ac7ea4;hb=5a94ebda407e82a8df4abea1b8a916ea4f88d9cd;hp=7d28b61c3623697e141264e80af370278a95e021;hpb=9c5d23395918a739b591667edd77e3ced9cd4bfb;p=policy%2Fmodels.git 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 7d28b61c3..1839604aa 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 @@ -1,7 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019-2020 Nordix Foundation. - * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. + * 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. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,40 +22,31 @@ package org.onap.policy.models.provider.impl; -import java.util.Base64; -import java.util.Date; +import java.time.Instant; +import java.util.Collection; import java.util.List; -import java.util.Properties; import javax.ws.rs.core.Response; import lombok.NonNull; -import org.eclipse.persistence.config.PersistenceUnitProperties; import org.onap.policy.models.base.PfModelException; 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.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.PdpProvider; import org.onap.policy.models.pdp.persistence.provider.PdpStatisticsProvider; import org.onap.policy.models.provider.PolicyModelsProvider; 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.ToscaPolicy; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter; import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider; -import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy; -import org.onap.policy.models.tosca.legacy.provider.LegacyProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * This class provides an implementation of the Policy Models Provider for the ONAP Policy Framework that works towards @@ -62,123 +54,91 @@ import org.slf4j.LoggerFactory; * * @author Liam Fallon (liam.fallon@est.tech) */ -public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { - - private static final Logger LOGGER = LoggerFactory.getLogger(DatabasePolicyModelsProviderImpl.class); - - private final PolicyModelsProviderParameters parameters; - - // Database connection and the DAO for reading and writing Policy Framework concepts - private PfDao pfDao; - +public class DatabasePolicyModelsProviderImpl extends AbstractModelsProvider implements PolicyModelsProvider { /** * Constructor that takes the parameters. * * @param parameters the parameters for the provider */ public DatabasePolicyModelsProviderImpl(@NonNull final PolicyModelsProviderParameters parameters) { - this.parameters = parameters; + super(parameters); } @Override - public void init() throws PfModelException { - LOGGER.debug("opening the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(), - parameters.getPersistenceUnit()); + public List getServiceTemplateList(final String name, final String version) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().getServiceTemplateList(getPfDao(), name, version); + } - if (pfDao != null) { - String errorMessage = "provider is already initialized"; - LOGGER.warn(errorMessage); - throw new PfModelException(Response.Status.NOT_ACCEPTABLE, errorMessage); - } - // Parameters for the DAO - final DaoParameters daoParameters = new DaoParameters(); - daoParameters.setPluginClass(DefaultPfDao.class.getName()); - daoParameters.setPersistenceUnit(parameters.getPersistenceUnit()); - - // Decode the password using Base64 - String decodedPassword = new String(Base64.getDecoder().decode(getValue(parameters.getDatabasePassword()))); - - // @formatter:off - Properties jdbcProperties = new Properties(); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, parameters.getDatabaseDriver()); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, parameters.getDatabaseUrl()); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, parameters.getDatabaseUser()); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, decodedPassword); - // @formatter:on - - daoParameters.setJdbcProperties(jdbcProperties); - - try { - pfDao = new PfDaoFactory().createPfDao(daoParameters); - pfDao.init(daoParameters); - } catch (Exception exc) { - String errorMessage = "could not create Data Access Object (DAO) using url \"" + parameters.getDatabaseUrl() - + "\" and persistence unit \"" + parameters.getPersistenceUnit() + "\""; - - this.close(); - throw new PfModelException(Response.Status.NOT_ACCEPTABLE, errorMessage, exc); - } + @Override + public List getFilteredServiceTemplateList( + @NonNull ToscaEntityFilter filter) throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().getFilteredServiceTemplateList(getPfDao(), filter); } - private String getValue(final String value) { - if (value != null && value.startsWith("${") && value.endsWith("}")) { - return System.getenv(value.substring(2, value.length() - 1)); - } - return value; + @Override + public ToscaServiceTemplate createServiceTemplate(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().createServiceTemplate(getPfDao(), serviceTemplate); } @Override - public void close() throws PfModelException { - LOGGER.debug("closing the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(), - parameters.getPersistenceUnit()); + public ToscaServiceTemplate updateServiceTemplate(@NonNull final ToscaServiceTemplate serviceTemplate) + throws PfModelException { + assertInitialized(); + return new AuthorativeToscaProvider().updateServiceTemplate(getPfDao(), serviceTemplate); + } - if (pfDao != null) { - pfDao.close(); - pfDao = null; - } + @Override + public ToscaServiceTemplate deleteServiceTemplate(@NonNull final String name, @NonNull final String version) + throws PfModelException { + assertInitialized(); - LOGGER.debug("closed the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(), - parameters.getPersistenceUnit()); + return new AuthorativeToscaProvider().deleteServiceTemplate(getPfDao(), name, version); } @Override public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getPolicyTypes(pfDao, name, version); + return new AuthorativeToscaProvider().getPolicyTypes(getPfDao(), name, version); } @Override public List getPolicyTypeList(final String name, final String version) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getPolicyTypeList(pfDao, name, version); + return new AuthorativeToscaProvider().getPolicyTypeList(getPfDao(), name, version); } @Override - public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull ToscaPolicyTypeFilter filter) throws PfModelException { + public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull ToscaEntityFilter filter) + throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getFilteredPolicyTypes(pfDao, filter); + return new AuthorativeToscaProvider().getFilteredPolicyTypes(getPfDao(), filter); } @Override - public List getFilteredPolicyTypeList(@NonNull ToscaPolicyTypeFilter filter) + public List getFilteredPolicyTypeList(@NonNull ToscaEntityFilter filter) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getFilteredPolicyTypeList(pfDao, filter); + return new AuthorativeToscaProvider().getFilteredPolicyTypeList(getPfDao(), filter); } @Override public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().createPolicyTypes(pfDao, serviceTemplate); + return new AuthorativeToscaProvider().createPolicyTypes(getPfDao(), serviceTemplate); } @Override public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().updatePolicyTypes(pfDao, serviceTemplate); + return new AuthorativeToscaProvider().updatePolicyTypes(getPfDao(), serviceTemplate); } @Override @@ -186,48 +146,50 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { throws PfModelException { assertInitialized(); - ToscaPolicyTypeIdentifier policyTypeIdentifier = new ToscaPolicyTypeIdentifier(name, version); + ToscaConceptIdentifier policyTypeIdentifier = new ToscaConceptIdentifier(name, version); assertPolicyTypeNotSupportedInPdpGroup(policyTypeIdentifier); - return new AuthorativeToscaProvider().deletePolicyType(pfDao, name, version); + return new AuthorativeToscaProvider().deletePolicyType(getPfDao(), name, version); } @Override public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getPolicies(pfDao, name, version); + return new AuthorativeToscaProvider().getPolicies(getPfDao(), name, version); } @Override public List getPolicyList(final String name, final String version) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getPolicyList(pfDao, name, version); + return new AuthorativeToscaProvider().getPolicyList(getPfDao(), name, version); } @Override - public ToscaServiceTemplate getFilteredPolicies(@NonNull ToscaPolicyFilter filter) throws PfModelException { + public ToscaServiceTemplate getFilteredPolicies(@NonNull ToscaTypedEntityFilter filter) + throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getFilteredPolicies(pfDao, filter); + return new AuthorativeToscaProvider().getFilteredPolicies(getPfDao(), filter); } @Override - public List getFilteredPolicyList(@NonNull ToscaPolicyFilter filter) throws PfModelException { + public List getFilteredPolicyList(@NonNull ToscaTypedEntityFilter filter) + throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().getFilteredPolicyList(pfDao, filter); + return new AuthorativeToscaProvider().getFilteredPolicyList(getPfDao(), filter); } @Override public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().createPolicies(pfDao, serviceTemplate); + return new AuthorativeToscaProvider().createPolicies(getPfDao(), serviceTemplate); } @Override public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate) throws PfModelException { assertInitialized(); - return new AuthorativeToscaProvider().updatePolicies(pfDao, serviceTemplate); + return new AuthorativeToscaProvider().updatePolicies(getPfDao(), serviceTemplate); } @Override @@ -235,130 +197,124 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { throws PfModelException { assertInitialized(); - ToscaPolicyIdentifier policyIdentifier = new ToscaPolicyIdentifier(name, version); + ToscaConceptIdentifier policyIdentifier = new ToscaConceptIdentifier(name, version); assertPolicyNotDeployedInPdpGroup(policyIdentifier); - return new AuthorativeToscaProvider().deletePolicy(pfDao, name, version); + return new AuthorativeToscaProvider().deletePolicy(getPfDao(), name, version); } @Override - public LegacyOperationalPolicy getOperationalPolicy(@NonNull final String policyId, final String policyVersion) - throws PfModelException { + public List getPdpGroups(final String name) throws PfModelException { assertInitialized(); - return new LegacyProvider().getOperationalPolicy(pfDao, policyId, policyVersion); + return new PdpProvider().getPdpGroups(getPfDao(), name); } @Override - public LegacyOperationalPolicy createOperationalPolicy( - @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException { + public List getFilteredPdpGroups(@NonNull PdpGroupFilter filter) throws PfModelException { assertInitialized(); - return new LegacyProvider().createOperationalPolicy(pfDao, legacyOperationalPolicy); + return new PdpProvider().getFilteredPdpGroups(getPfDao(), filter); } @Override - public LegacyOperationalPolicy updateOperationalPolicy( - @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException { + public List createPdpGroups(@NonNull final List pdpGroups) throws PfModelException { assertInitialized(); - return new LegacyProvider().updateOperationalPolicy(pfDao, legacyOperationalPolicy); + return new PdpProvider().createPdpGroups(getPfDao(), pdpGroups); } @Override - public LegacyOperationalPolicy deleteOperationalPolicy(@NonNull final String policyId, - @NonNull final String policyVersion) throws PfModelException { + public List updatePdpGroups(@NonNull final List pdpGroups) throws PfModelException { assertInitialized(); - - assertPolicyNotDeployedInPdpGroup( - new ToscaPolicyIdentifier(policyId, policyVersion + LegacyProvider.LEGACY_MINOR_PATCH_SUFFIX)); - - return new LegacyProvider().deleteOperationalPolicy(pfDao, policyId, policyVersion); + return new PdpProvider().updatePdpGroups(getPfDao(), pdpGroups); } @Override - public List getPdpGroups(final String name) throws PfModelException { + public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final PdpSubGroup pdpSubGroup) + throws PfModelException { assertInitialized(); - return new PdpProvider().getPdpGroups(pfDao, name); + new PdpProvider().updatePdpSubGroup(getPfDao(), pdpGroupName, pdpSubGroup); } @Override - public List getFilteredPdpGroups(@NonNull PdpGroupFilter filter) throws PfModelException { - assertInitialized(); - return new PdpProvider().getFilteredPdpGroups(pfDao, filter); + public void updatePdp(@NonNull String pdpGroupName, @NonNull String pdpSubGroup, @NonNull Pdp pdp) + throws PfModelException { + new PdpProvider().updatePdp(getPfDao(), pdpGroupName, pdpSubGroup, pdp); } @Override - public List createPdpGroups(@NonNull final List pdpGroups) throws PfModelException { + public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException { assertInitialized(); - return new PdpProvider().createPdpGroups(pfDao, pdpGroups); + return new PdpProvider().deletePdpGroup(getPfDao(), name); } @Override - public List updatePdpGroups(@NonNull final List pdpGroups) throws PfModelException { + public List getPdpStatistics(final String name, final Instant timestamp) throws PfModelException { assertInitialized(); - return new PdpProvider().updatePdpGroups(pfDao, pdpGroups); + return new PdpStatisticsProvider().getPdpStatistics(getPfDao(), name, timestamp); } @Override - public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final PdpSubGroup pdpSubGroup) - throws PfModelException { + public List getFilteredPdpStatistics(final String name, @NonNull final String pdpGroupName, + final String pdpSubGroup, final Instant startTimeStamp, + final Instant endTimeStamp, final String sortOrder, + final int getRecordNum) throws PfModelException { assertInitialized(); - new PdpProvider().updatePdpSubGroup(pfDao, pdpGroupName, pdpSubGroup); + return new PdpStatisticsProvider().getFilteredPdpStatistics(getPfDao(), name, pdpGroupName, pdpSubGroup, + startTimeStamp, endTimeStamp, sortOrder, getRecordNum); } @Override - public void updatePdp(@NonNull String pdpGroupName, @NonNull String pdpSubGroup, @NonNull Pdp pdp) + public List createPdpStatistics(@NonNull final List pdpStatisticsList) throws PfModelException { - new PdpProvider().updatePdp(pfDao, pdpGroupName, pdpSubGroup, pdp); + assertInitialized(); + return new PdpStatisticsProvider().createPdpStatistics(getPfDao(), pdpStatisticsList); } @Override - public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException { + public List updatePdpStatistics(@NonNull final List pdpStatisticsList) + throws PfModelException { assertInitialized(); - return new PdpProvider().deletePdpGroup(pfDao, name); + return new PdpStatisticsProvider().updatePdpStatistics(getPfDao(), pdpStatisticsList); } @Override - public List getPdpStatistics(final String name, final Date timestamp) throws PfModelException { + public List deletePdpStatistics(@NonNull final String name, final Instant timestamp) + throws PfModelException { assertInitialized(); - return new PdpStatisticsProvider().getPdpStatistics(pfDao, name, timestamp); + return new PdpStatisticsProvider().deletePdpStatistics(getPfDao(), name, timestamp); } @Override - public List getFilteredPdpStatistics(final String name, @NonNull final String pdpGroupName, - final String pdpSubGroup, final Date startTimeStamp, final Date endTimeStamp, final String sortOrder, - final int getRecordNum) throws PfModelException { + public List getAllPolicyStatus() throws PfModelException { assertInitialized(); - return new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, name, pdpGroupName, pdpSubGroup, - startTimeStamp, endTimeStamp, sortOrder, getRecordNum); + return new PdpProvider().getAllPolicyStatus(getPfDao()); } @Override - public List createPdpStatistics(@NonNull final List pdpStatisticsList) + public List getAllPolicyStatus(@NonNull ToscaConceptIdentifierOptVersion policy) throws PfModelException { assertInitialized(); - return new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsList); + return new PdpProvider().getAllPolicyStatus(getPfDao(), policy); } @Override - public List updatePdpStatistics(@NonNull final List pdpStatisticsList) - throws PfModelException { + public List getGroupPolicyStatus(@NonNull String groupName) throws PfModelException { assertInitialized(); - return new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsList); + return new PdpProvider().getGroupPolicyStatus(getPfDao(), groupName); } @Override - public List deletePdpStatistics(@NonNull final String name, final Date timestamp) - throws PfModelException { + public void cudPolicyStatus(Collection createObjs, Collection updateObjs, + Collection deleteObjs) { assertInitialized(); - return new PdpStatisticsProvider().deletePdpStatistics(pfDao, name, timestamp); + new PdpProvider().cudPolicyStatus(getPfDao(), createObjs, updateObjs, deleteObjs); } /** * Check if the model provider is initialized. */ private void assertInitialized() { - if (pfDao == null) { + if (getPfDao() == null) { String errorMessage = "policy models provider is not initilaized"; - LOGGER.warn(errorMessage); throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); } } @@ -369,7 +325,7 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { * @param policyTypeIdentifier the policy type identifier * @throws PfModelException if the policy type is supported in a PDP group */ - private void assertPolicyTypeNotSupportedInPdpGroup(ToscaPolicyTypeIdentifier policyTypeIdentifier) + private void assertPolicyTypeNotSupportedInPdpGroup(ToscaConceptIdentifier policyTypeIdentifier) throws PfModelException { for (PdpGroup pdpGroup : getPdpGroups(null)) { for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) { @@ -388,7 +344,7 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { * @param policyIdentifier the identifier of the policy * @throws PfModelException thrown if the policy is deployed in a PDP group */ - private void assertPolicyNotDeployedInPdpGroup(final ToscaPolicyIdentifier policyIdentifier) + private void assertPolicyNotDeployedInPdpGroup(final ToscaConceptIdentifier policyIdentifier) throws PfModelException { for (PdpGroup pdpGroup : getPdpGroups(null)) { for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {