- @Override
- public ToscaServiceTemplate getPolicyTypes(final String name, final String version) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getPolicyTypes(pfDao, name, version);
- }
-
- @Override
- public List<ToscaPolicyType> getPolicyTypeList(final String name, final String version) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getPolicyTypeList(pfDao, name, version);
- }
-
- @Override
- public ToscaServiceTemplate getFilteredPolicyTypes(@NonNull ToscaPolicyTypeFilter filter) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getFilteredPolicyTypes(pfDao, filter);
- }
-
- @Override
- public List<ToscaPolicyType> getFilteredPolicyTypeList(@NonNull ToscaPolicyTypeFilter filter)
- throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getFilteredPolicyTypeList(pfDao, filter);
- }
-
- @Override
- public ToscaServiceTemplate createPolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().createPolicyTypes(pfDao, serviceTemplate);
- }
-
- @Override
- public ToscaServiceTemplate updatePolicyTypes(@NonNull final ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().updatePolicyTypes(pfDao, serviceTemplate);
- }
-
- @Override
- public ToscaServiceTemplate deletePolicyType(@NonNull final String name, @NonNull final String version)
- throws PfModelException {
- assertInitialized();
-
- ToscaPolicyTypeIdentifier policyTypeIdentifier = new ToscaPolicyTypeIdentifier(name, version);
- assertPolicyTypeNotSupportedInPdpGroup(policyTypeIdentifier);
-
- return new AuthorativeToscaProvider().deletePolicyType(pfDao, name, version);
- }
-
- @Override
- public ToscaServiceTemplate getPolicies(final String name, final String version) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getPolicies(pfDao, name, version);
- }
-
- @Override
- public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getPolicyList(pfDao, name, version);
- }
-
- @Override
- public ToscaServiceTemplate getFilteredPolicies(@NonNull ToscaPolicyFilter filter) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getFilteredPolicies(pfDao, filter);
- }
-
- @Override
- public List<ToscaPolicy> getFilteredPolicyList(@NonNull ToscaPolicyFilter filter) throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().getFilteredPolicyList(pfDao, filter);
- }
-
- @Override
- public ToscaServiceTemplate createPolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().createPolicies(pfDao, serviceTemplate);
- }
-
- @Override
- public ToscaServiceTemplate updatePolicies(@NonNull final ToscaServiceTemplate serviceTemplate)
- throws PfModelException {
- assertInitialized();
- return new AuthorativeToscaProvider().updatePolicies(pfDao, serviceTemplate);
- }
-
- @Override
- public ToscaServiceTemplate deletePolicy(@NonNull final String name, @NonNull final String version)
- throws PfModelException {
- assertInitialized();
-
- ToscaPolicyIdentifier policyIdentifier = new ToscaPolicyIdentifier(name, version);
- assertPolicyNotDeployedInPdpGroup(policyIdentifier);
-
- return new AuthorativeToscaProvider().deletePolicy(pfDao, name, version);
- }
-
- @Override
- public LegacyOperationalPolicy getOperationalPolicy(@NonNull final String policyId, final String policyVersion)
- throws PfModelException {
- assertInitialized();
- return new LegacyProvider().getOperationalPolicy(pfDao, policyId, policyVersion);
- }
-
- @Override
- public LegacyOperationalPolicy createOperationalPolicy(
- @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException {
- assertInitialized();
- return new LegacyProvider().createOperationalPolicy(pfDao, legacyOperationalPolicy);
- }
-
- @Override
- public LegacyOperationalPolicy updateOperationalPolicy(
- @NonNull final LegacyOperationalPolicy legacyOperationalPolicy) throws PfModelException {
- assertInitialized();
- return new LegacyProvider().updateOperationalPolicy(pfDao, legacyOperationalPolicy);
- }
-
- @Override
- public LegacyOperationalPolicy deleteOperationalPolicy(@NonNull final String policyId,
- @NonNull final String policyVersion) throws PfModelException {
- assertInitialized();
-
- assertPolicyNotDeployedInPdpGroup(
- new ToscaPolicyIdentifier(policyId, policyVersion + LegacyProvider.LEGACY_MINOR_PATCH_SUFFIX));
-
- return new LegacyProvider().deleteOperationalPolicy(pfDao, policyId, policyVersion);
- }
-
- @Override
- public Map<String, LegacyGuardPolicyOutput> getGuardPolicy(@NonNull final String policyId,
- final String policyVersion) throws PfModelException {
- assertInitialized();
- return new LegacyProvider().getGuardPolicy(pfDao, policyId, policyVersion);
- }
-
- @Override
- public Map<String, LegacyGuardPolicyOutput>
- createGuardPolicy(@NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException {
- assertInitialized();
- return new LegacyProvider().createGuardPolicy(pfDao, legacyGuardPolicy);
- }
-
- @Override
- public Map<String, LegacyGuardPolicyOutput>
- updateGuardPolicy(@NonNull final LegacyGuardPolicyInput legacyGuardPolicy) throws PfModelException {
- assertInitialized();
- return new LegacyProvider().updateGuardPolicy(pfDao, legacyGuardPolicy);
- }
-
- @Override
- public Map<String, LegacyGuardPolicyOutput> deleteGuardPolicy(@NonNull final String policyId,
- @NonNull final String policyVersion) throws PfModelException {
- assertInitialized();
-
- assertPolicyNotDeployedInPdpGroup(
- new ToscaPolicyIdentifier(policyId, policyVersion + LegacyProvider.LEGACY_MINOR_PATCH_SUFFIX));
-
- return new LegacyProvider().deleteGuardPolicy(pfDao, policyId, policyVersion);
- }
-
- @Override
- public List<PdpGroup> getPdpGroups(final String name) throws PfModelException {
- assertInitialized();
- return new PdpProvider().getPdpGroups(pfDao, name);
- }
-
- @Override
- public List<PdpGroup> getFilteredPdpGroups(@NonNull PdpGroupFilter filter) throws PfModelException {
- assertInitialized();
- return new PdpProvider().getFilteredPdpGroups(pfDao, filter);
- }
-
- @Override
- public List<PdpGroup> createPdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException {
- assertInitialized();
- return new PdpProvider().createPdpGroups(pfDao, pdpGroups);
- }
-
- @Override
- public List<PdpGroup> updatePdpGroups(@NonNull final List<PdpGroup> pdpGroups) throws PfModelException {
- assertInitialized();
- return new PdpProvider().updatePdpGroups(pfDao, pdpGroups);
- }
-
- @Override
- public void updatePdpSubGroup(@NonNull final String pdpGroupName, @NonNull final PdpSubGroup pdpSubGroup)
- throws PfModelException {
- assertInitialized();
- new PdpProvider().updatePdpSubGroup(pfDao, pdpGroupName, pdpSubGroup);
- }
-
- @Override
- public void updatePdp(@NonNull String pdpGroupName, @NonNull String pdpSubGroup, @NonNull Pdp pdp)
- throws PfModelException {
- new PdpProvider().updatePdp(pfDao, pdpGroupName, pdpSubGroup, pdp);
- }
-
- @Override
- public PdpGroup deletePdpGroup(@NonNull final String name) throws PfModelException {
- assertInitialized();
- return new PdpProvider().deletePdpGroup(pfDao, name);
- }
-
- @Override
- public List<PdpStatistics> getPdpStatistics(final String name, final Date timestamp) throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().getPdpStatistics(pfDao, name, timestamp);
- }
-
- @Override
- public List<PdpStatistics> 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 {
- assertInitialized();
- return new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, name, pdpGroupName, pdpSubGroup,
- startTimeStamp, endTimeStamp, sortOrder, getRecordNum);
- }
-
- @Override
- public List<PdpStatistics> createPdpStatistics(@NonNull final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsList);
- }
-
- @Override
- public List<PdpStatistics> updatePdpStatistics(@NonNull final List<PdpStatistics> pdpStatisticsList)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsList);
- }
-
- @Override
- public List<PdpStatistics> deletePdpStatistics(@NonNull final String name, final Date timestamp)
- throws PfModelException {
- assertInitialized();
- return new PdpStatisticsProvider().deletePdpStatistics(pfDao, name, timestamp);
- }
-
- /**
- * Check if the model provider is initialized.
- */
- private void assertInitialized() {
- if (pfDao == null) {
- String errorMessage = "policy models provider is not initilaized";
- LOGGER.warn(errorMessage);
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
- }
- }
-
- /**
- * Assert that the policy type is not supported in any PDP group.
- *
- * @param policyTypeIdentifier the policy type identifier
- * @throws PfModelException if the policy type is supported in a PDP group
- */
- private void assertPolicyTypeNotSupportedInPdpGroup(ToscaPolicyTypeIdentifier policyTypeIdentifier)
- throws PfModelException {
- for (PdpGroup pdpGroup : getPdpGroups(null)) {
- for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
- if (pdpSubGroup.getSupportedPolicyTypes().contains(policyTypeIdentifier)) {
- throw new PfModelRuntimeException(Response.Status.NOT_ACCEPTABLE,
- "policy type is in use, it is referenced in PDP group " + pdpGroup.getName() + " subgroup "
- + pdpSubGroup.getPdpType());
- }
- }
- }
- }
-
- /**
- * Assert that the policy is not deployed in a PDP group.
- *
- * @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)
- throws PfModelException {
- for (PdpGroup pdpGroup : getPdpGroups(null)) {
- for (PdpSubGroup pdpSubGroup : pdpGroup.getPdpSubgroups()) {
- if (pdpSubGroup.getPolicies().contains(policyIdentifier)) {
- throw new PfModelRuntimeException(Response.Status.NOT_ACCEPTABLE,
- "policy is in use, it is deployed in PDP group " + pdpGroup.getName() + " subgroup "
- + pdpSubGroup.getPdpType());
- }
- }
- }
- }