From da603323ec3cdf4257707ac1cb4d5d657783ae9f Mon Sep 17 00:00:00 2001 From: ayalaben Date: Sun, 11 Feb 2018 11:11:00 +0200 Subject: Delete Item Draft Change-Id: I13767ab6a7be82ae89f80d50b5857aabe6e55906 Issue-ID: SDC-1014 Signed-off-by: ayalaben --- .../vendorlicense/rest/VendorLicenseModels.java | 32 ++++---- .../rest/services/VendorLicenseModelsImpl.java | 55 +++++++++----- .../sdcrests/vsp/rest/VendorSoftwareProducts.java | 11 +-- .../rest/services/VendorSoftwareProductsImpl.java | 86 +++++++++++++--------- 4 files changed, 106 insertions(+), 78 deletions(-) (limited to 'openecomp-be/api') diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/VendorLicenseModels.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/VendorLicenseModels.java index 9b1c09603c..dc17b49454 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/VendorLicenseModels.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/VendorLicenseModels.java @@ -1,23 +1,20 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2018 European Support Limited + * * 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. - * ============LICENSE_END========================================================= */ + package org.openecomp.sdcrests.vendorlicense.rest; import io.swagger.annotations.Api; @@ -74,6 +71,14 @@ public interface VendorLicenseModels { @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(RestConstants.USER_ID_HEADER_PARAM) String user); + @DELETE + @Path("/{vlmId}") + @ApiOperation(value = "Delete vendor license model") + Response deleteLicenseModel( + @ApiParam(value = "Vendor license model Id") @PathParam("vlmId") String vlmId, + @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(RestConstants.USER_ID_HEADER_PARAM) + String user); + @PUT @Path("/{vlmId}/versions/{versionId}") @ApiOperation(value = "Update vendor license model") @@ -96,15 +101,6 @@ public interface VendorLicenseModels { @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(RestConstants.USER_ID_HEADER_PARAM) String user); - @DELETE - @Path("/{vlmId}/versions/{versionId}") - @ApiOperation(value = "Delete vendor license model") - Response deleteLicenseModel( - @ApiParam(value = "Vendor license model Id") @PathParam("vlmId") String vlmId, - @ApiParam(value = "Vendor license model version Id") @PathParam - ("versionId") String versionId, - @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(RestConstants.USER_ID_HEADER_PARAM) - String user); @PUT @Path("/{vlmId}/versions/{versionId}/actions") diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java index 68b387e5bc..fd89989987 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-license-rest/vendor-license-rest-services/src/main/java/org/openecomp/sdcrests/vendorlicense/rest/services/VendorLicenseModelsImpl.java @@ -1,23 +1,20 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2018 European Support Limited + * * 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. - * ============LICENSE_END========================================================= */ + package org.openecomp.sdcrests.vendorlicense.rest.services; import org.openecomp.core.util.UniqueValueUtil; @@ -68,6 +65,7 @@ import javax.inject.Named; import javax.ws.rs.core.Response; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; @@ -201,9 +199,23 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels { } @Override - public Response deleteLicenseModel(String vlmId, String versionId, String user) { - vendorLicenseManager.deleteVendorLicenseModel(vlmId, new Version(versionId)); - return Response.ok().build(); + public Response deleteLicenseModel(String vlmId, String user) { + Item vlm = itemManager.get(vlmId); + + Integer certifiedVersionsCounter = vlm.getVersionStatusCounters().get(VersionStatus.Certified); + if (Objects.isNull(certifiedVersionsCounter) || certifiedVersionsCounter == 0) { + itemManager.delete(vlm); + permissionsManager.deleteItemPermissions(vlmId); + UniqueValueUtil + .deleteUniqueValue(VendorLicenseConstants.UniqueValues.VENDOR_NAME, vlm.getName()); + notifyUsers(vlmId, vlm.getName(), null, "VLM was deleted", user, + NotificationEventTypes.DELETE); + + return Response.ok().build(); + } else { + return Response.status(Response.Status.PRECONDITION_FAILED) + .entity(new Exception(Messages.DELETE_VLM_ERROR.getErrorMessage())).build(); + } } @Override @@ -220,7 +232,7 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels { request.getSubmitRequest() == null ? "Submit" : request.getSubmitRequest().getMessage(); submit(vlmId, version, message, user); - notifyUsers(vlmId, version, message, user, NotificationEventTypes.SUBMIT); + notifyUsers(vlmId, null, version, message, user, NotificationEventTypes.SUBMIT); } return Response.ok().build(); @@ -246,15 +258,18 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels { } } - private void notifyUsers(String itemId, Version version, String message, + private void notifyUsers(String itemId, String itemName, Version version, String message, String userName, NotificationEventTypes eventType) { Map eventProperties = new HashMap<>(); - eventProperties.put(ITEM_NAME, itemManager.get(itemId).getName()); + eventProperties.put(ITEM_NAME, itemName == null ? itemManager.get(itemId).getName() : itemName); eventProperties.put(ITEM_ID, itemId); - Version ver = versioningManager.get(itemId, version); - eventProperties.put(VERSION_NAME, ver.getName()); - eventProperties.put(VERSION_ID, ver.getId()); + if (version != null) { + eventProperties.put(VERSION_NAME, version.getName() == null + ? versioningManager.get(itemId, version).getName() + : version.getName()); + eventProperties.put(VERSION_ID, version.getId()); + } eventProperties.put(SUBMIT_DESCRIPTION, message); eventProperties.put(PERMISSION_USER, userName); @@ -274,8 +289,8 @@ public class VendorLicenseModelsImpl implements VendorLicenseModels { private Map attributes; private String entityId; - public SyncEvent(String eventType, String originatorId, - Map attributes, String entityId) { + SyncEvent(String eventType, String originatorId, + Map attributes, String entityId) { this.eventType = eventType; this.originatorId = originatorId; this.attributes = attributes; diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/VendorSoftwareProducts.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/VendorSoftwareProducts.java index d848d41f7c..60c68ef302 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/VendorSoftwareProducts.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/VendorSoftwareProducts.java @@ -1,9 +1,6 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ +/* + * Copyright © 2018 European Support Limited + * * 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 @@ -15,9 +12,9 @@ * 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. - * ============LICENSE_END========================================================= */ + package org.openecomp.sdcrests.vsp.rest; import io.swagger.annotations.Api; diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java index fa6c778995..7d1c5e1289 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2017 European Support Limited + * Copyright © 2018 European Support Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ * limitations under the License. */ + package org.openecomp.sdcrests.vsp.rest.services; import org.apache.commons.collections4.MapUtils; @@ -96,6 +97,7 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; @@ -143,15 +145,16 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { try { onboardingMethod = OnboardingMethod.valueOf(vspRequestDto.getOnboardingMethod()); } catch (IllegalArgumentException e) { - throwUnknownOnboardingMethodException(); + LOGGER.error("Error while creating VSP. Message: " + e.getMessage()); + throwUnknownOnboardingMethodException(e); } - ItemCreationDto itemCreationDto = null; + ItemCreationDto itemCreationDto = null; if (onboardingMethod == OnboardingMethod.NetworkPackage - || onboardingMethod == OnboardingMethod.Manual) { + || onboardingMethod == OnboardingMethod.Manual) { itemCreationDto = getItemCreationDto(vspRequestDto, user, onboardingMethod); } else { - throwUnknownOnboardingMethodException(); + throwUnknownOnboardingMethodException(new IllegalArgumentException("Wrong parameter Onboarding Method")); } return Response.ok(itemCreationDto).build(); @@ -173,7 +176,7 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { Version version = versioningManager.create(item.getId(), new Version(), null); VspDetails vspDetails = - new MapVspDescriptionDtoToVspDetails().applyMapping(vspRequestDto, VspDetails.class); + new MapVspDescriptionDtoToVspDetails().applyMapping(vspRequestDto, VspDetails.class); vspDetails.setId(item.getId()); vspDetails.setVersion(version); vspDetails.setOnboardingMethod(vspRequestDto.getOnboardingMethod()); @@ -185,14 +188,14 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { itemCreationDto.setVersion(new MapVersionToDto().applyMapping(version, VersionDto.class)); activityLogManager.logActivity(new ActivityLogEntity(vspDetails.getId(), version, - ActivityType.Create, user, true, "", "")); + ActivityType.Create, user, true, "", "")); return itemCreationDto; } - private void throwUnknownOnboardingMethodException() { + private void throwUnknownOnboardingMethodException(IllegalArgumentException e) { ErrorCode onboardingMethodUpdateErrorCode = OnboardingMethodErrorBuilder .getInvalidOnboardingMethodErrorBuilder(); - throw new CoreException(onboardingMethodUpdateErrorCode); + throw new CoreException(onboardingMethodUpdateErrorCode,e); } @Override @@ -200,12 +203,12 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { Predicate itemPredicate; if (VersionStatus.Certified.name().equals(versionStatus)) { itemPredicate = item -> ItemType.vsp.name().equals(item.getType()) - && item.getVersionStatusCounters().containsKey(VersionStatus.Certified); + && item.getVersionStatusCounters().containsKey(VersionStatus.Certified); } else if (VersionStatus.Draft.name().equals(versionStatus)) { itemPredicate = item -> ItemType.vsp.name().equals(item.getType()) - && item.getVersionStatusCounters().containsKey(VersionStatus.Draft) - && userHasPermission(item.getId(), user); + && item.getVersionStatusCounters().containsKey(VersionStatus.Draft) + && userHasPermission(item.getId(), user); } else { itemPredicate = item -> ItemType.vsp.name().equals(item.getType()); @@ -282,9 +285,21 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { @Override public Response deleteVsp(String vspId, String user) { - vendorSoftwareProductManager.deleteVsp(vspId); + Item vsp = itemManager.get(vspId); - return Response.ok().build(); + Integer certifiedVersionsCounter = vsp.getVersionStatusCounters().get(VersionStatus.Certified); + if (Objects.isNull(certifiedVersionsCounter) || certifiedVersionsCounter == 0) { + itemManager.delete(vsp); + permissionsManager.deleteItemPermissions(vspId); + UniqueValueUtil.deleteUniqueValue(VENDOR_SOFTWARE_PRODUCT_NAME, vsp.getName()); + notifyUsers(vspId, vsp.getName(), null, "VSP was deleted", user, + NotificationEventTypes.DELETE); + + return Response.ok().build(); + } else { + return Response.status(Response.Status.PRECONDITION_FAILED) + .entity(new Exception(Messages.DELETE_VSP_ERROR.getErrorMessage())).build(); + } } @Override @@ -296,20 +311,20 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { if (request.getAction() == VendorSoftwareProductAction.Submit) { if (!permissionsManager.isAllowed(vspId, user, SUBMIT_ITEM_ACTION)) { return Response.status(Response.Status.FORBIDDEN) - .entity(new Exception(Messages.PERMISSIONS_ERROR.getErrorMessage())).build(); + .entity(new Exception(Messages.PERMISSIONS_ERROR.getErrorMessage())).build(); } String message = request.getSubmitRequest() == null ? "Submit" - : request.getSubmitRequest().getMessage(); + : request.getSubmitRequest().getMessage(); Optional validationResponse = submit(vspId, version, message, user); if (validationResponse.isPresent()) { ValidationResponseDto validationResponseDto = new MapValidationResponseToDto() - .applyMapping(validationResponse.get(), ValidationResponseDto.class); + .applyMapping(validationResponse.get(), ValidationResponseDto.class); return Response.status(Response.Status.EXPECTATION_FAILED).entity(validationResponseDto) - .build(); + .build(); } - notifyUsers(vspId, version, message, user, NotificationEventTypes.SUBMIT); + notifyUsers(vspId, null, version, message, user, NotificationEventTypes.SUBMIT); } else if (request.getAction() == VendorSoftwareProductAction.Create_Package) { return createPackage(vspId, version); @@ -337,8 +352,8 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { String validationVspId = itemManager.list(item -> ItemType.vsp.name().equals(item.getType()) && VALIDATION_VSP_NAME.equals(item.getName())) .stream().findFirst().orElseThrow(() -> new IllegalStateException("Vsp with name %s " - + "does not exist even though the name exists according to unique value util")) - .getId(); + + "does not exist even though the name exists according to unique value util")) + .getId(); Version validationVspVersion = versioningManager.list(validationVspId).iterator().next(); validationVsp = new ItemCreationDto(); @@ -383,12 +398,14 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { public Response getTranslatedFile(String vspId, String versionName, String user) { List versions = versioningManager.list(vspId); Version version; - if (versionName == null) version = versions.stream().filter(ver -> VersionStatus.Certified == ver.getStatus()) - .max(Comparator.comparingDouble(o -> Double.parseDouble(o.getName()))) - .orElseThrow(() -> new CoreException(new PackageNotFoundErrorBuilder(vspId).build())); - else { + if (versionName == null) { + version = versions.stream().filter(ver -> VersionStatus.Certified == ver.getStatus()) + .max(Comparator.comparingDouble(o -> Double.parseDouble(o.getName()))) + .orElseThrow(() -> new CoreException(new PackageNotFoundErrorBuilder(vspId).build())); + } else { version = versions.stream().filter(ver -> versionName.equals(ver.getName())) - .findFirst().orElseThrow(() -> new CoreException(new PackageNotFoundErrorBuilder(vspId).build())); + .findFirst() + .orElseThrow(() -> new CoreException(new PackageNotFoundErrorBuilder(vspId).build())); if (version.getStatus() != VersionStatus.Certified) { throw new CoreException(new RequestedVersionInvalidErrorBuilder().build()); @@ -498,15 +515,18 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { return Optional.empty(); } - private void notifyUsers(String itemId, Version version, String message, + private void notifyUsers(String itemId, String itemName, Version version, String message, String userName, NotificationEventTypes eventType) { Map eventProperties = new HashMap<>(); - eventProperties.put(ITEM_NAME, itemManager.get(itemId).getName()); + eventProperties.put(ITEM_NAME, itemName == null ? itemManager.get(itemId).getName() : itemName); eventProperties.put(ITEM_ID, itemId); - Version ver = versioningManager.get(itemId, version); - eventProperties.put(VERSION_NAME, ver.getName()); - eventProperties.put(VERSION_ID, ver.getId()); + if (version != null) { + eventProperties.put(VERSION_NAME, version.getName() == null + ? versioningManager.get(itemId, version).getName() + : version.getName()); + eventProperties.put(VERSION_ID, version.getId()); + } eventProperties.put(SUBMIT_DESCRIPTION, message); eventProperties.put(PERMISSION_USER, userName); @@ -526,8 +546,8 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { private final Map attributes; private final String entityId; - SyncEvent(String eventType, String originatorId, - Map attributes, String entityId) { + SyncEvent(String eventType, String originatorId, + Map attributes, String entityId) { this.eventType = eventType; this.originatorId = originatorId; this.attributes = attributes; -- cgit 1.2.3-korg