This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git


The following commit(s) were added to refs/heads/main by this push:
     new 60901b5  handled data product not existing scenario
     new 5596701  Merge pull request #21 from lahirujayathilake/main
60901b5 is described below

commit 60901b5fbe44e8551fc9f421164d99f7695969ae
Author: Lahiru Jayathilake <[email protected]>
AuthorDate: Sat Mar 11 16:17:00 2023 +0530

    handled data product not existing scenario
---
 .../datacatalog/api/mapper/DataProductMapper.java  |  8 ++--
 .../api/repository/DataProductRepository.java      |  4 +-
 .../api/service/DataCatalogAPIService.java         | 49 +++++++++++++++-------
 .../api/service/impl/DataCatalogServiceImpl.java   | 18 ++++----
 4 files changed, 53 insertions(+), 26 deletions(-)

diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/mapper/DataProductMapper.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/mapper/DataProductMapper.java
index bc8ad22..82b17f7 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/mapper/DataProductMapper.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/mapper/DataProductMapper.java
@@ -1,6 +1,7 @@
 package org.apache.airavata.datacatalog.api.mapper;
 
 import org.apache.airavata.datacatalog.api.DataProduct;
+import org.apache.airavata.datacatalog.api.exception.EntityNotFoundException;
 import org.apache.airavata.datacatalog.api.model.DataProductEntity;
 import org.apache.airavata.datacatalog.api.model.MetadataSchemaEntity;
 import org.apache.airavata.datacatalog.api.repository.DataProductRepository;
@@ -30,10 +31,11 @@ public class DataProductMapper {
 
         dataProductEntity.setName(dataProduct.getName());
 
-        if (dataProduct.hasParentDataProductId()) {
-            // TODO: handle parent data product not found
+        if (dataProduct.hasParentDataProductId() && 
!dataProduct.getParentDataProductId().isEmpty()) {
             DataProductEntity parentDataProductEntity = dataProductRepository
-                    .findByExternalId(dataProduct.getParentDataProductId());
+                    .findByExternalId(dataProduct.getParentDataProductId())
+                    .orElseThrow(() -> new EntityNotFoundException("Could not 
find the parent data product with the ID: "
+                            + dataProduct.getParentDataProductId()));
             
dataProductEntity.setParentDataProductEntity(parentDataProductEntity);
         }
         if (dataProduct.hasMetadata()) {
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java
index 426e4d4..64747b2 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/repository/DataProductRepository.java
@@ -4,10 +4,12 @@ import 
org.apache.airavata.datacatalog.api.model.DataProductEntity;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Optional;
+
 @Transactional(readOnly = true)
 public interface DataProductRepository extends 
JpaRepository<DataProductEntity, Long> {
 
-    DataProductEntity findByExternalId(String externalId);
+    Optional<DataProductEntity> findByExternalId(String externalId);
 
     @Transactional
     void deleteByExternalId(String externalId);
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
index b5686a2..e4e4794 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java
@@ -68,19 +68,29 @@ public class DataCatalogAPIService extends 
DataCatalogAPIServiceGrpc.DataCatalog
             StreamObserver<DataProductUpdateResponse> responseObserver) {
 
         // TODO: check that user has access to update data product record
-        DataProduct savedDataProduct = 
dataCatalogService.updateDataProduct(request.getDataProduct());
+        try {
+            DataProduct savedDataProduct = 
dataCatalogService.updateDataProduct(request.getDataProduct());
 
-        
responseObserver.onNext(DataProductUpdateResponse.newBuilder().setDataProduct(savedDataProduct).build());
-        responseObserver.onCompleted();
+            
responseObserver.onNext(DataProductUpdateResponse.newBuilder().setDataProduct(savedDataProduct).build());
+            responseObserver.onCompleted();
+        } catch (EntityNotFoundException e) {
+            
responseObserver.onError(Status.NOT_FOUND.withDescription(e.getMessage()).asException());
+            responseObserver.onCompleted();
+        }
     }
 
     @Override
     public void getDataProduct(DataProductGetRequest request, 
StreamObserver<DataProductGetResponse> responseObserver) {
         // TODO: check that user has READ access on data product record
-        DataProduct dataProduct = 
dataCatalogService.getDataProduct(request.getDataProductId());
+        try {
+            DataProduct dataProduct = 
dataCatalogService.getDataProduct(request.getDataProductId());
 
-        
responseObserver.onNext(DataProductGetResponse.newBuilder().setDataProduct(dataProduct).build());
-        responseObserver.onCompleted();
+            
responseObserver.onNext(DataProductGetResponse.newBuilder().setDataProduct(dataProduct).build());
+            responseObserver.onCompleted();
+        } catch (EntityNotFoundException e) {
+            responseObserver.onError(Status.NOT_FOUND.asException());
+            responseObserver.onCompleted();
+        }
     }
 
     @Override
@@ -96,13 +106,19 @@ public class DataCatalogAPIService extends 
DataCatalogAPIServiceGrpc.DataCatalog
     @Override
     public void 
addDataProductToMetadataSchema(DataProductAddToMetadataSchemaRequest request,
             StreamObserver<DataProductAddToMetadataSchemaResponse> 
responseObserver) {
+
         String dataProductId = request.getDataProductId();
         String schemaName = request.getSchemaName();
-        DataProduct dataProduct = 
dataCatalogService.addDataProductToMetadataSchema(dataProductId, schemaName);
+        try {
+            DataProduct dataProduct = 
dataCatalogService.addDataProductToMetadataSchema(dataProductId, schemaName);
 
-        responseObserver
-                
.onNext(DataProductAddToMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build());
-        responseObserver.onCompleted();
+            responseObserver
+                    
.onNext(DataProductAddToMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build());
+            responseObserver.onCompleted();
+        } catch (EntityNotFoundException e) {
+            
responseObserver.onError(Status.NOT_FOUND.withDescription(e.getMessage()).asException());
+            responseObserver.onCompleted();
+        }
     }
 
     @Override
@@ -193,11 +209,16 @@ public class DataCatalogAPIService extends 
DataCatalogAPIServiceGrpc.DataCatalog
 
         String dataProductId = request.getDataProductId();
         String schemaName = request.getSchemaName();
-        DataProduct dataProduct = 
dataCatalogService.removeDataProductFromMetadataSchema(dataProductId, 
schemaName);
+        try {
+            DataProduct dataProduct = 
dataCatalogService.removeDataProductFromMetadataSchema(dataProductId, 
schemaName);
 
-        responseObserver
-                
.onNext(DataProductRemoveFromMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build());
-        responseObserver.onCompleted();
+            responseObserver
+                    
.onNext(DataProductRemoveFromMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build());
+            responseObserver.onCompleted();
+        }  catch (EntityNotFoundException e) {
+            
responseObserver.onError(Status.NOT_FOUND.withDescription(e.getMessage()).asException());
+            responseObserver.onCompleted();
+        }
     }
 
     @Override
diff --git 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
index 8e7ee79..1f43ec9 100644
--- 
a/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
+++ 
b/data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java
@@ -65,8 +65,7 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
     @Override
     public DataProduct updateDataProduct(DataProduct dataProduct) {
 
-        DataProductEntity dataProductEntity = dataProductRepository
-                .findByExternalId(dataProduct.getDataProductId());
+        DataProductEntity dataProductEntity = 
findDataProductEntity(dataProduct.getDataProductId());
         dataProductMapper.mapModelToEntity(dataProduct, dataProductEntity);
 
         DataProductEntity savedDataProductEntity = 
dataProductRepository.save(dataProductEntity);
@@ -76,8 +75,7 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
 
     @Override
     public DataProduct getDataProduct(String dataProductId) {
-        // TODO: handle data product does not exist
-        DataProductEntity dataProductEntity = 
dataProductRepository.findByExternalId(dataProductId);
+        DataProductEntity dataProductEntity = 
findDataProductEntity(dataProductId);
         return toDataProduct(dataProductEntity);
     }
 
@@ -88,8 +86,7 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
 
     @Override
     public DataProduct addDataProductToMetadataSchema(String dataProductId, 
String schemaName) {
-        // TODO: handle data product not found
-        DataProductEntity dataProduct = 
dataProductRepository.findByExternalId(dataProductId);
+        DataProductEntity dataProduct = findDataProductEntity(dataProductId);
         // TODO: handle metadata schema not found
         MetadataSchemaEntity metadataSchemaEntity = 
metadataSchemaRepository.findBySchemaName(schemaName);
         dataProduct.addMetadataSchema(metadataSchemaEntity);
@@ -172,8 +169,7 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
     @Override
     public DataProduct removeDataProductFromMetadataSchema(String 
dataProductId, String schemaName) {
 
-        // TODO: handle data product not found
-        DataProductEntity dataProduct = 
dataProductRepository.findByExternalId(dataProductId);
+        DataProductEntity dataProduct = findDataProductEntity(dataProductId);
         // TODO: handle metadata schema not found
         MetadataSchemaEntity metadataSchemaEntity = 
metadataSchemaRepository.findBySchemaName(schemaName);
         dataProduct.removeMetadataSchema(metadataSchemaEntity);
@@ -212,4 +208,10 @@ public class DataCatalogServiceImpl implements 
DataCatalogService {
         return builder.build();
     }
 
+    private DataProductEntity findDataProductEntity(String dataProductId) {
+        return dataProductRepository
+                .findByExternalId(dataProductId)
+                .orElseThrow(() -> new EntityNotFoundException("Could not find 
a data product with the ID: " + dataProductId));
+    }
+
 }

Reply via email to