From de02e7e4c5e625c15071c69855b43024cc4c520b Mon Sep 17 00:00:00 2001 From: lpapadopoulos Date: Fri, 12 Dec 2025 15:23:19 +0200 Subject: [PATCH 1/4] create appropriate category for externally added specifications --- .../pm632/reposervices/OrganizationRepoService.java | 10 ++++++++++ .../reposervices/ServiceSpecificationRepoService.java | 9 +++++++++ 2 files changed, 19 insertions(+) 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 3b8f16e7..8e00a2ec 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 @@ -43,6 +43,8 @@ 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.ServiceCategory; +import org.etsi.osl.tmf.scm633.reposervices.CategoryRepoService; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; @@ -63,6 +65,9 @@ public class OrganizationRepoService { @Autowired OrganizationApiRouteBuilderEvents organizationApiRouteBuilder; + @Autowired + CategoryRepoService categoryRepoService; + private SessionFactory sessionFactory; @@ -195,6 +200,11 @@ 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()); + categoryRepoService.addCategory(serviceCategory); + c = updateOrganizationData(c, organization); c = organizationRepository.save(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 ba4efc3f..9a651982 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; @@ -71,6 +72,7 @@ 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 +138,9 @@ public class ServiceSpecificationRepoService { @Autowired ServiceSpecificationNotificationService serviceSpecificationNotificationService; + + @Autowired + CategoriesRepository categoriesRepository; private SessionFactory sessionFactory; @@ -171,6 +176,10 @@ public class ServiceSpecificationRepoService { ServiceSpecificationRef serviceSpecificationRef = new ServiceSpecificationRef(); serviceCandidate.setServiceSpecification(serviceSpecificationRef); serviceSpecificationRef.setId(serviceSpec.getId()); + if(serviceServiceSpecification.getRelatedParty().get(0).getRole().equalsIgnoreCase(UserPartRoleType.ORGANIZATION.getValue())){ + Optional serviceCategory =categoriesRepository.findByName(serviceServiceSpecification.getRelatedParty().get(0).getName()); + if (serviceCategory.isPresent()) serviceCandidate.setCategory(new ArrayList<>((Collection) serviceCategory.get())); + } ServiceCandidate serviceCandidateObj = candidateRepoService.addServiceCandidate(serviceCandidate); serviceSpec.setServiceCandidateObjId(serviceCandidateObj.getUuid()); -- GitLab From c56bf186dde49961d7c04579cbd9d912ae07a7d0 Mon Sep 17 00:00:00 2001 From: lpapadopoulos Date: Fri, 12 Dec 2025 17:52:02 +0200 Subject: [PATCH 2/4] check if related party isEmpty in externally added specifications --- .../scm633/reposervices/ServiceSpecificationRepoService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 9a651982..2f9a27ae 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 @@ -176,7 +176,7 @@ public class ServiceSpecificationRepoService { ServiceSpecificationRef serviceSpecificationRef = new ServiceSpecificationRef(); serviceCandidate.setServiceSpecification(serviceSpecificationRef); serviceSpecificationRef.setId(serviceSpec.getId()); - if(serviceServiceSpecification.getRelatedParty().get(0).getRole().equalsIgnoreCase(UserPartRoleType.ORGANIZATION.getValue())){ + 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()) serviceCandidate.setCategory(new ArrayList<>((Collection) serviceCategory.get())); } -- GitLab From c568e57fc05ca55e3c19a9a1b9baf66028500d09 Mon Sep 17 00:00:00 2001 From: lpapadopoulos Date: Thu, 18 Dec 2025 15:25:36 +0200 Subject: [PATCH 3/4] assign a service category in the new service candidate --- .../ServiceSpecificationRepoService.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 2f9a27ae..74915db6 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 @@ -66,6 +66,7 @@ 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; @@ -178,7 +179,16 @@ public class ServiceSpecificationRepoService { 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()) serviceCandidate.setCategory(new ArrayList<>((Collection) serviceCategory.get())); + + 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); -- GitLab From 83d89dd81223434bd636c35029d8952b7a074642 Mon Sep 17 00:00:00 2001 From: lpapadopoulos Date: Thu, 18 Dec 2025 17:48:38 +0200 Subject: [PATCH 4/4] create or update a catalog for externally added services --- .../reposervices/OrganizationRepoService.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) 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 8e00a2ec..10a0bdda 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,12 +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; @@ -68,6 +75,10 @@ public class OrganizationRepoService { @Autowired CategoryRepoService categoryRepoService; + @Autowired + @Lazy + CatalogRepoService catalogRepoService; + private SessionFactory sessionFactory; @@ -203,9 +214,23 @@ public class OrganizationRepoService { //we proceed to create a category with the name of the external org ServiceCategory serviceCategory= new ServiceCategory(); serviceCategory.setName(organization.getName()); - categoryRepoService.addCategory(serviceCategory); + 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 ); -- GitLab