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));
+ }
+
}