Commit 3b80df6f authored by Anastasios Poimenidis's avatar Anastasios Poimenidis
Browse files

feat: alter logic for Service and Service Order Requests according to recent schema changes

parent 0cdac8cc
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ package org.etsi.osl.hypo.api.tmf.common.api.helpers;

import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import org.etsi.osl.hypo.api.tmf.common.schema.Note;
import org.etsi.osl.hypo.api.tmf.services.inventory.schema.Service;
import org.etsi.osl.hypo.api.tmf.services.order.model.ServiceOrderDTO;
@@ -17,6 +18,7 @@ public final class ServiceUtilsHelper {
        Note note = new Note();
        note.setDate(SystemClockHelper.getSystemTimeDate());
        note.setText(messageNote);
        note.setId(UUID.randomUUID().toString());
        Set<Note> notes = service.getNote();
        if (notes == null) {
            Set<Note> newNotes = new HashSet<>();
+9 −3
Original line number Diff line number Diff line
@@ -3,11 +3,13 @@ package org.etsi.osl.hypo.api.tmf.common.api.repository;
import static org.etsi.osl.hypo.api.tmf.common.constants.ColumnConstants.ID;

import io.quarkus.hibernate.orm.panache.PanacheRepository;
import jakarta.persistence.LockModeType;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

public interface BaseRepository<T> extends PanacheRepository<T> {

@@ -15,6 +17,10 @@ public interface BaseRepository<T> extends PanacheRepository<T> {
        return find(ID, id).singleResultOptional();
    }

    default Optional<T> findByIdWithLockWrite(String id) {
        return find(ID, id).withLock(LockModeType.PESSIMISTIC_WRITE).singleResultOptional();
    }

    default Optional<T> findByName(String name) {
        return find("name", name).singleResultOptional();
    }
@@ -25,7 +31,7 @@ public interface BaseRepository<T> extends PanacheRepository<T> {
    }

    default Set<T> findByIdsSet(Set<String> ids) {
        Map<String, Object> params = Map.of("idsList", ids);
        return find("id in :idsList", params).stream().collect(Collectors.toSet());
        ArrayList<String> idsSet = new ArrayList<>(ids);
        return new HashSet<>(this.findByIdsList(idsSet));
    }
}
+1 −2
Original line number Diff line number Diff line
package org.etsi.osl.hypo.api.tmf.resources.catalog.api.model.resource.base;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.UUID;
import lombok.Data;

@Data
public class BaseDTO {

    @JsonProperty("id")
    private UUID id;
    private String id;
}
+28 −19
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import org.apache.commons.lang3.StringUtils;
import org.etsi.osl.hypo.api.tmf.common.api.constants.ApiConstants;
import org.etsi.osl.hypo.api.tmf.common.api.helpers.ServiceSpecificationHelpers;
import org.etsi.osl.hypo.api.tmf.common.api.helpers.ServiceUtilsHelper;
import org.etsi.osl.hypo.api.tmf.common.api.model.RelatedPartyDTO;
import org.etsi.osl.hypo.api.tmf.common.api.services.UtilService;
import org.etsi.osl.hypo.api.tmf.common.exception.DuplicateKeyException;
import org.etsi.osl.hypo.api.tmf.common.exception.ServiceNotFoundException;
@@ -43,6 +44,7 @@ import org.etsi.osl.hypo.api.tmf.common.schema.RelatedPartyEntity;
import org.etsi.osl.hypo.api.tmf.party.organization.schema.Organization;
import org.etsi.osl.hypo.api.tmf.resources.inventory.schema.Resource;
import org.etsi.osl.hypo.api.tmf.resources.inventory.schema.ResourceType;
import org.etsi.osl.hypo.api.tmf.services.catalog.api.services.ServiceSpecificationService;
import org.etsi.osl.hypo.api.tmf.services.catalog.schema.CharacteristicSpecificationEntity;
import org.etsi.osl.hypo.api.tmf.services.catalog.schema.ServiceSpecRelationshipEntity;
import org.etsi.osl.hypo.api.tmf.services.catalog.schema.ServiceSpecificationEntity;
@@ -51,7 +53,6 @@ import org.etsi.osl.hypo.api.tmf.services.common.model.ServiceRefOrValue;
import org.etsi.osl.hypo.api.tmf.services.common.model.ServiceResponse;
import org.etsi.osl.hypo.api.tmf.services.common.resource.ResourceHelper;
import org.etsi.osl.hypo.api.tmf.services.common.schema.RelatedServiceOrderItem;
import org.etsi.osl.hypo.api.tmf.services.common.schema.ResourceRef;
import org.etsi.osl.hypo.api.tmf.services.common.schema.ServiceSpecificationRef;
import org.etsi.osl.hypo.api.tmf.services.common.schema.ServiceStateType;
import org.etsi.osl.hypo.api.tmf.services.common.service.RelatedPartyHelper;
@@ -91,6 +92,7 @@ public class ServiceOrderAndServiceRepositories {
    private final RelatedPartyHelper relatedPartyHelper;
    private final ResourceHelper resourceHelper;
    private final ServiceSpecificationHelpers serviceSpecificationHelpers;
    private final ServiceSpecificationService serviceSpecificationService;

    private static final String INVENTORY_WITH_ID = "Service with id ";

@@ -101,7 +103,8 @@ public class ServiceOrderAndServiceRepositories {
            ServiceMapperHelper serviceMapperHelper,
            RelatedPartyHelper relatedPartyHelper,
            ResourceHelper resourceHelper,
            ServiceSpecificationHelpers serviceSpecificationHelpers) {
            ServiceSpecificationHelpers serviceSpecificationHelpers,
            ServiceSpecificationService serviceSpecificationService) {
        this.serviceHelper = serviceHelper;
        this.serviceOrderMapper = serviceOrderMapper;
        this.serviceOrderHelper = serviceOrderHelper;
@@ -109,6 +112,7 @@ public class ServiceOrderAndServiceRepositories {
        this.relatedPartyHelper = relatedPartyHelper;
        this.resourceHelper = resourceHelper;
        this.serviceSpecificationHelpers = serviceSpecificationHelpers;
        this.serviceSpecificationService = serviceSpecificationService;
    }

    @Transactional
@@ -285,11 +289,23 @@ public class ServiceOrderAndServiceRepositories {
        throw new ServiceNotFoundException("Service with id: " + id + " was not found");
    }

    public Service getServiceByIdWithLockWrite(String id) {
        Optional<Service> service = serviceHelper.findServiceByIdWithLockWrite(id);
        if (service.isPresent()) {
            return service.get();
        }
        throw new ServiceNotFoundException("Service with id: " + id + " was not found");
    }

    @Transactional
    public Optional<Service> getOptionalServiceById(String id) {
        return serviceHelper.findServiceById(id);
    }

    public Optional<Service> getOptionalServiceByIdWithLockWrite(String id) {
        return serviceHelper.findServiceByIdWithLockWrite(id);
    }

    @Transactional
    public ServiceResponse getByIdAndCriteria(String id, String fields, Map<String, String> params) {
        List<Service> services = serviceHelper.findServicesByCriteria(id, params, null);
@@ -660,18 +676,6 @@ public class ServiceOrderAndServiceRepositories {
                id, serviceId);
    }

    @Transactional
    public void deleteResourceRefById(String id) {
        resourceHelper
                .getOptionalResourceReferenceById(id)
                .ifPresent(resourceHelper::deleteResourceReference);
    }

    @Transactional
    public List<ResourceRef> getResourceRefenceById(List<String> ids) {
        return resourceHelper.getResourceRefListByIds(ids);
    }

    public void createServiceReferences(ServiceOrderDTO serviceOrder) {
        Set<ServiceOrderItem> serviceOrderItemSet = serviceOrder.getServiceOrderItem();
        serviceOrderItemSet.forEach(
@@ -1154,12 +1158,13 @@ public class ServiceOrderAndServiceRepositories {
                serviceWithPeeredOrganization.getServiceSpecification();

        if (Objects.nonNull(serviceSpecificationRef)) {
            ServiceSpecificationEntity serviceSpecificationEntity =
                    getServiceSpecificationEntityById(serviceSpecificationRef.getId());

            List<RelatedPartyEntity> relatedParties = serviceSpecificationEntity.getRelatedParties();
            Set<RelatedPartyDTO> relatedParties =
                    serviceSpecificationService.getRelatedPartyBySpecificationId(
                            serviceSpecificationRef.getId());
            String relatedPartyId =
                    CollectionUtils.isNotEmpty(relatedParties) ? relatedParties.get(0).getId() : null;
                    CollectionUtils.isNotEmpty(relatedParties)
                            ? relatedParties.iterator().next().getId()
                            : null;

            if (Objects.nonNull(relatedPartyId)) {
                relatedPartyHelper
@@ -1308,4 +1313,8 @@ public class ServiceOrderAndServiceRepositories {
                                            });
                        });
    }

    public void persistService(Service service) {
        serviceHelper.persistService(service);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -55,6 +55,10 @@ public class ServiceHelper {
        return serviceInventoryRepository.findById(serviceID);
    }

    public Optional<Service> findServiceByIdWithLockWrite(String serviceID) {
        return serviceInventoryRepository.findByIdWithLockWrite(serviceID);
    }

    public List<Service> findServicesByCriteria(
            String id, Map<String, String> params, List<String> listOfIDs) {
        return serviceInventoryRepository.findWithCriteriaQuery(id, params, listOfIDs);
Loading