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=8f4cdbcb329d2889b4ad7f3c204981de64d92a5b;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=cd7b7f38e2dfcc3b81deb9e2184380286346e248;hpb=8a26f57269caf7a559deb46077050048da92dca8;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 cd7b7f38e..8f4cdbcb3 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,6 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019-2021, 2023 Nordix Foundation. + * Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. 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. @@ -20,40 +22,12 @@ package org.onap.policy.models.provider.impl; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import javax.ws.rs.core.Response; - +import jakarta.ws.rs.core.Response; +import lombok.Getter; 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.PdpStatistics; -import org.onap.policy.models.pdp.concepts.PdpSubGroup; -import org.onap.policy.models.pdp.persistence.provider.PdpProvider; -import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.provider.PolicyModelsProviderParameters; -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.ToscaPolicyType; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter; -import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider; -import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput; -import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput; -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; @@ -63,13 +37,14 @@ import org.slf4j.LoggerFactory; * * @author Liam Fallon (liam.fallon@est.tech) */ -public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { +public class DatabasePolicyModelsProviderImpl extends AbstractPolicyModelsProvider { - private static final Logger LOGGER = LoggerFactory.getLogger(DefaultPfDao.class); + 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 + @Getter private PfDao pfDao; /** @@ -82,50 +57,20 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { } @Override - public void init() throws PfModelException { + public synchronized void init() throws PfModelException { LOGGER.debug("opening the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(), parameters.getPersistenceUnit()); if (pfDao != null) { - String errorMessage = "provider is already initialized"; - LOGGER.warn(errorMessage); + var errorMessage = "provider is already initialized"; throw new PfModelException(Response.Status.NOT_ACCEPTABLE, errorMessage); } - // Parameters for the DAO - final DaoParameters daoParameters = new DaoParameters(); - daoParameters.setPluginClass(DefaultPfDao.class.getCanonicalName()); - daoParameters.setPersistenceUnit(parameters.getPersistenceUnit()); - - // Decode the password using Base64 - String decodedPassword = new String(Base64.getDecoder().decode(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); - - pfDao = new PfDaoFactory().createPfDao(daoParameters); - 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() + "\""; - LOGGER.warn(errorMessage, exc); - - this.close(); - throw new PfModelException(Response.Status.NOT_ACCEPTABLE, errorMessage, exc); - } + pfDao = ModelsProvider.init(parameters); } @Override - public void close() throws PfModelException { + public synchronized void close() throws PfModelException { LOGGER.debug("closing the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(), parameters.getPersistenceUnit()); @@ -138,217 +83,4 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider { parameters.getPersistenceUnit()); } - @Override - public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getPolicyTypes(pfDao, name, version); - } - - @Override - public List getPolicyTypeList(final String name, final String version) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getPolicyTypeList(pfDao, name, version); - } - - @Override - public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull ToscaPolicyTypeFilter filter) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getFilteredPolicyTypes(pfDao, filter); - } - - @Override - public List getFilteredPolicyTypeList(@NonNull ToscaPolicyTypeFilter filter) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getFilteredPolicyTypeList(pfDao, filter); - } - - @Override - public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().createPolicyTypes(pfDao, serviceTemplate); - } - - @Override - public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().updatePolicyTypes(pfDao, serviceTemplate); - } - - @Override - public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().deletePolicyType(pfDao, name, version); - } - - @Override - public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getPolicies(pfDao, name, version); - } - - @Override - public List getPolicyList(final String name, final String version) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getPolicyList(pfDao, name, version); - } - - @Override - public ToscaServiceTemplate getFilteredPolicies(@NonNull ToscaPolicyFilter filter) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getFilteredPolicies(pfDao, filter); - } - - @Override - public List getFilteredPolicyList(@NonNull ToscaPolicyFilter filter) throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().getFilteredPolicyList(pfDao, filter); - } - - - @Override - public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().createPolicies(pfDao, serviceTemplate); - } - - @Override - public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().updatePolicies(pfDao, serviceTemplate); - } - - @Override - public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version) - throws PfModelException { - assertInitilized(); - return new AuthorativeToscaProvider().deletePolicy(pfDao, name, version); - } - - @Override - public LegacyOperationalPolicy getOperationalPolicy(@NonNull final String policyId) throws PfModelException { - assertInitilized(); - return new LegacyProvider().getOperationalPolicy(pfDao, policyId); - } - - @Override - public LegacyOperationalPolicy createOperationalPolicy( - @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException { - assertInitilized(); - return new LegacyProvider().createOperationalPolicy(pfDao, legacyOperationalPolicy); - } - - @Override - public LegacyOperationalPolicy updateOperationalPolicy( - @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException { - assertInitilized(); - return new LegacyProvider().updateOperationalPolicy(pfDao, legacyOperationalPolicy); - } - - @Override - public LegacyOperationalPolicy deleteOperationalPolicy(@NonNull final String policyId) throws PfModelException { - assertInitilized(); - return new LegacyProvider().deleteOperationalPolicy(pfDao, policyId); - } - - @Override - public Map getGuardPolicy(@NonNull final String policyId) throws PfModelException { - assertInitilized(); - return new LegacyProvider().getGuardPolicy(pfDao, policyId); - } - - @Override - public Map createGuardPolicy( - @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException { - assertInitilized(); - return new LegacyProvider().createGuardPolicy(pfDao, legacyGuardPolicy); - } - - @Override - public Map updateGuardPolicy( - @NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException { - assertInitilized(); - return new LegacyProvider().updateGuardPolicy(pfDao, legacyGuardPolicy); - } - - @Override - public Map deleteGuardPolicy(@NonNull final String policyId) - throws PfModelException { - assertInitilized(); - return new LegacyProvider().deleteGuardPolicy(pfDao, policyId); - } - - @Override - public List getPdpGroups(final String name, final String version) throws PfModelException { - assertInitilized(); - return new PdpProvider().getPdpGroups(pfDao, name, version); - } - - @Override - public List getFilteredPdpGroups(@NonNull PdpGroupFilter filter) throws PfModelException { - assertInitilized(); - return new PdpProvider().getFilteredPdpGroups(pfDao, filter); - } - - @Override - public List createPdpGroups(@NonNull final List pdpGroups) throws PfModelException { - assertInitilized(); - return new PdpProvider().createPdpGroups(pfDao, pdpGroups); - } - - @Override - public List updatePdpGroups(@NonNull final List pdpGroups) throws PfModelException { - assertInitilized(); - return new PdpProvider().updatePdpGroups(pfDao, pdpGroups); - } - - @Override - public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion, - @NonNull final PdpSubGroup pdpSubGroup) throws PfModelException { - assertInitilized(); - new PdpProvider().updatePdpSubGroup(pfDao, pdpGroupName, pdpGroupVersion, pdpSubGroup); - } - - @Override - public void updatePdp(@NonNull String pdpGroupName, @NonNull String pdpGroupVersion, @NonNull String pdpSubGroup, - @NonNull Pdp pdp) throws PfModelException { - new PdpProvider().updatePdp(pfDao, pdpGroupName, pdpGroupVersion, pdpSubGroup, pdp); - } - - @Override - public PdpGroup deletePdpGroup(@NonNull final String name, @NonNull final String version) throws PfModelException { - assertInitilized(); - return new PdpProvider().deletePdpGroup(pfDao, name, version); - } - - @Override - public List getPdpStatistics(final String name, final String version) throws PfModelException { - assertInitilized(); - return new PdpProvider().getPdpStatistics(pfDao, name, version); - } - - @Override - public void updatePdpStatistics(@NonNull final String pdpGroupName, @NonNull final String pdpGroupVersion, - @NonNull final String pdpType, @NonNull final String pdpInstanceId, - @NonNull final PdpStatistics pdpStatistics) throws PfModelException { - assertInitilized(); - new PdpProvider().updatePdpStatistics(pfDao, pdpGroupName, pdpGroupVersion, pdpType, pdpInstanceId, - pdpStatistics); - } - - /** - * Check if the model provider is initialized. - */ - private void assertInitilized() { - if (pfDao == null) { - String errorMessage = "policy models provider is not initilaized"; - LOGGER.warn(errorMessage); - throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); - } - } }