diff --git a/src/main/java/org/etsi/osl/tmf/pm632/reposervices/OrganizationRepoService.java b/src/main/java/org/etsi/osl/tmf/pm632/reposervices/OrganizationRepoService.java index 3b8f16e7012532b99a9c74637321cf93821b33bb..10a0bdda0ee9207743a496ed64095db16b4464b4 100644 --- a/src/main/java/org/etsi/osl/tmf/pm632/reposervices/OrganizationRepoService.java +++ b/src/main/java/org/etsi/osl/tmf/pm632/reposervices/OrganizationRepoService.java @@ -21,9 +21,11 @@ package org.etsi.osl.tmf.pm632.reposervices; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; @@ -43,10 +45,17 @@ import org.etsi.osl.tmf.pm632.model.OrganizationCreateEvent; import org.etsi.osl.tmf.pm632.model.OrganizationCreateEventPayload; import org.etsi.osl.tmf.pm632.model.OrganizationUpdate; import org.etsi.osl.tmf.pm632.repo.OrganizationRepository; +import org.etsi.osl.tmf.scm633.model.ServiceCatalog; +import org.etsi.osl.tmf.scm633.model.ServiceCatalogCreate; +import org.etsi.osl.tmf.scm633.model.ServiceCategory; +import org.etsi.osl.tmf.scm633.model.ServiceCategoryRef; +import org.etsi.osl.tmf.scm633.reposervices.CatalogRepoService; +import org.etsi.osl.tmf.scm633.reposervices.CategoryRepoService; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import jakarta.persistence.EntityManagerFactory; @@ -63,6 +72,13 @@ public class OrganizationRepoService { @Autowired OrganizationApiRouteBuilderEvents organizationApiRouteBuilder; + @Autowired + CategoryRepoService categoryRepoService; + + @Autowired + @Lazy + CatalogRepoService catalogRepoService; + private SessionFactory sessionFactory; @@ -195,7 +211,26 @@ public class OrganizationRepoService { c.addPartyCharacteristicItem(partyCharacteristicItem); } - + //we proceed to create a category with the name of the external org + ServiceCategory serviceCategory= new ServiceCategory(); + serviceCategory.setName(organization.getName()); + ServiceCategory savedServiceCategory= categoryRepoService.addCategory(serviceCategory); + + ServiceCatalog serviceCatalog= catalogRepoService.findByName("External Services Catalog"); + + if(serviceCatalog==null){ + ServiceCatalogCreate sc = new ServiceCatalogCreate(); + sc.setName("External Services Catalog"); + sc.setDescription("Secondary Catalog"); + sc.setVersion("1.0"); + Set serviceCategories=new HashSet<>(); + serviceCategories.add(savedServiceCategory); + this.catalogRepoService.addCatalog(sc); + }else { + serviceCatalog.getCategoryObj().add(savedServiceCategory); + this.catalogRepoService.updateCatalog(serviceCatalog); + } + c = updateOrganizationData(c, organization); c = organizationRepository.save(c); raiseOrganizationCreate( c ); diff --git a/src/main/java/org/etsi/osl/tmf/scm633/reposervices/ServiceSpecificationRepoService.java b/src/main/java/org/etsi/osl/tmf/scm633/reposervices/ServiceSpecificationRepoService.java index ba4efc3f571f682b27d52b39ed7a143c790faaa3..74915db6eeb63c51b7544f94e86299a916b42f71 100644 --- a/src/main/java/org/etsi/osl/tmf/scm633/reposervices/ServiceSpecificationRepoService.java +++ b/src/main/java/org/etsi/osl/tmf/scm633/reposervices/ServiceSpecificationRepoService.java @@ -29,6 +29,7 @@ import java.nio.file.Paths; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -65,12 +66,14 @@ import org.etsi.osl.tmf.scm633.model.ServiceCandidate; import org.etsi.osl.tmf.scm633.model.ServiceCandidateCreate; import org.etsi.osl.tmf.scm633.model.ServiceCandidateUpdate; import org.etsi.osl.tmf.scm633.model.ServiceCategory; +import org.etsi.osl.tmf.scm633.model.ServiceCategoryRef; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristicValue; import org.etsi.osl.tmf.scm633.model.ServiceSpecRelationship; import org.etsi.osl.tmf.scm633.model.ServiceSpecification; import org.etsi.osl.tmf.scm633.model.ServiceSpecificationCreate; import org.etsi.osl.tmf.scm633.model.ServiceSpecificationUpdate; +import org.etsi.osl.tmf.scm633.repo.CategoriesRepository; import org.etsi.osl.tmf.scm633.repo.ServiceSpecificationRepository; import org.etsi.osl.tmf.stm653.model.CharacteristicSpecification; import org.etsi.osl.tmf.stm653.model.ServiceTestSpecification; @@ -136,6 +139,9 @@ public class ServiceSpecificationRepoService { @Autowired ServiceSpecificationNotificationService serviceSpecificationNotificationService; + + @Autowired + CategoriesRepository categoriesRepository; private SessionFactory sessionFactory; @@ -171,6 +177,19 @@ public class ServiceSpecificationRepoService { ServiceSpecificationRef serviceSpecificationRef = new ServiceSpecificationRef(); serviceCandidate.setServiceSpecification(serviceSpecificationRef); serviceSpecificationRef.setId(serviceSpec.getId()); + if(serviceServiceSpecification.getRelatedParty()!=null && !serviceServiceSpecification.getRelatedParty().isEmpty() && serviceServiceSpecification.getRelatedParty().get(0).getRole().equalsIgnoreCase(UserPartRoleType.ORGANIZATION.getValue())){ + Optional serviceCategory =categoriesRepository.findByName(serviceServiceSpecification.getRelatedParty().get(0).getName()); + + if (serviceCategory.isPresent()){ + List serviceCategoryRefs = new ArrayList<>(); + ServiceCategoryRef serviceCategoryRef= new ServiceCategoryRef(); + serviceCategoryRef.setId(serviceCategory.get().getId()); + serviceCategoryRef.setName(serviceCategory.get().getName()); + serviceCategoryRefs.add(serviceCategoryRef); + serviceCandidate.setCategory(serviceCategoryRefs); + + } + } ServiceCandidate serviceCandidateObj = candidateRepoService.addServiceCandidate(serviceCandidate); serviceSpec.setServiceCandidateObjId(serviceCandidateObj.getUuid());