This is an automated email from the ASF dual-hosted git repository. machristie pushed a commit to branch custos-integration in repository https://gitbox.apache.org/repos/asf/airavata-data-catalog.git
commit ace3d89e418bd3871b4e9c8f83b3e822a67576ec Merge: ac7d4ac 5596701 Author: Marcus Christie <[email protected]> AuthorDate: Tue Mar 21 14:45:51 2023 -0400 Merge branch 'main' into calcite .../datacatalog/api/mapper/DataProductMapper.java | 16 +++++-- .../api/repository/DataProductRepository.java | 4 +- .../api/service/DataCatalogAPIService.java | 50 ++++++++++++++++------ .../api/service/impl/DataCatalogServiceImpl.java | 19 ++++---- 4 files changed, 63 insertions(+), 26 deletions(-) diff --cc data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/DataCatalogAPIService.java index 4b7b383,e4e4794..efadaf5 --- 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 @@@ -101,48 -106,21 +111,60 @@@ public class DataCatalogAPIService exte @Override public void addDataProductToMetadataSchema(DataProductAddToMetadataSchemaRequest request, StreamObserver<DataProductAddToMetadataSchemaResponse> responseObserver) { + String dataProductId = request.getDataProductId(); String schemaName = request.getSchemaName(); - DataProduct dataProduct = dataCatalogService.addDataProductToMetadataSchema(dataProductId, schemaName); - - responseObserver - .onNext(DataProductAddToMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build()); - responseObserver.onCompleted(); + try { + DataProduct dataProduct = dataCatalogService.addDataProductToMetadataSchema(dataProductId, schemaName); + + responseObserver + .onNext(DataProductAddToMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build()); + responseObserver.onCompleted(); + } catch (EntityNotFoundException e) { + responseObserver.onError(Status.NOT_FOUND.withDescription(e.getMessage()).asException()); + responseObserver.onCompleted(); + } } + @Override + public void removeDataProductFromMetadataSchema(DataProductRemoveFromMetadataSchemaRequest request, + StreamObserver<DataProductRemoveFromMetadataSchemaResponse> responseObserver) { + + String dataProductId = request.getDataProductId(); + String schemaName = request.getSchemaName(); - DataProduct dataProduct = dataCatalogService.removeDataProductFromMetadataSchema(dataProductId, schemaName); - - responseObserver - .onNext(DataProductRemoveFromMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct).build()); - responseObserver.onCompleted(); ++ try { ++ DataProduct dataProduct = dataCatalogService.removeDataProductFromMetadataSchema(dataProductId, schemaName); ++ ++ responseObserver ++ .onNext(DataProductRemoveFromMetadataSchemaResponse.newBuilder().setDataProduct(dataProduct) ++ .build()); ++ responseObserver.onCompleted(); ++ } catch (EntityNotFoundException e) { ++ responseObserver.onError(Status.NOT_FOUND.withDescription(e.getMessage()).asException()); ++ responseObserver.onCompleted(); ++ } + } + + @Override + public void searchDataProducts(DataProductSearchRequest request, + StreamObserver<DataProductSearchResponse> responseObserver) { + + try { + MetadataSchemaQueryResult searchResult = dataCatalogService.searchDataProducts(request.getSql()); + List<DataProduct> dataProducts = searchResult.dataProducts(); + responseObserver.onNext(DataProductSearchResponse.newBuilder().addAllDataProducts(dataProducts).build()); + responseObserver.onCompleted(); + } catch (MetadataSchemaSqlParseException e) { + responseObserver + .onError(Status.INVALID_ARGUMENT.withDescription("Failed to parse SQL query.").asException()); + responseObserver.onCompleted(); + } catch (MetadataSchemaSqlValidateException e) { + responseObserver + .onError(Status.INVALID_ARGUMENT.withDescription("Failed to validate SQL query.").asException()); + responseObserver.onCompleted(); + } + } + @Override public void getMetadataSchema(MetadataSchemaGetRequest request, StreamObserver<MetadataSchemaGetResponse> responseObserver) { diff --cc data-catalog-api/server/src/main/java/org/apache/airavata/datacatalog/api/service/impl/DataCatalogServiceImpl.java index dbce8bb,1f43ec9..1f664a1 --- 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 @@@ -104,24 -94,6 +101,23 @@@ public class DataCatalogServiceImpl imp return toDataProduct(savedDataProductEntity); } + @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); + DataProductEntity savedDataProductEntity = dataProductRepository.save(dataProduct); + return toDataProduct(savedDataProductEntity); + } + + @Override + public MetadataSchemaQueryResult searchDataProducts(String sql) + throws MetadataSchemaSqlParseException, MetadataSchemaSqlValidateException { + return metadataSchemaQueryExecutor.execute(sql); + } + @Override public MetadataSchema getMetadataSchema(String schemaName) { MetadataSchemaEntity metadataSchemaEntity = metadataSchemaRepository.findBySchemaName(schemaName); @@@ -225,4 -208,10 +221,11 @@@ 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)); ++ .orElseThrow(() -> new EntityNotFoundException( ++ "Could not find a data product with the ID: " + dataProductId)); + } + }
