public void searchStoragePreference()

in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/StoragePreferenceServiceHandler.java [285:358]


    public void searchStoragePreference(StoragePreferenceSearchRequest request, StreamObserver<StoragePreferenceSearchResponse> responseObserver) {
        try {

            AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();

            List<AnyStoragePreference> anyStoragePreferenceList = new ArrayList<>();

            try (SharingManagementClient sharingManagementClient = custosClientProvider.getSharingManagementClient()) {

                SearchCriteria searchCriteria = SearchCriteria.newBuilder()
                        .setSearchField(EntitySearchField.ENTITY_TYPE_ID)
                        .setCondition(SearchCondition.EQUAL)
                        .setValue(StoragePreferenceConstants.STORAGE_PREFERENCE_LABEL).build();

                SearchRequest searchRequest = SearchRequest.newBuilder().setOwnerId(callUser.getUsername())
                        .addSearchCriteria(searchCriteria).build();
                Entities entities = sharingManagementClient.searchEntities(callUser.getTenantId(),
                        searchRequest);

                List<Entity> entityList = entities.getEntityArrayList();


                entityList.forEach(entity -> {

                    Optional<Resource> resource = resourceRepository.findById(entity.getId());
                    if (resource.isPresent()) {

                        String storageId = resource.get().getParentResourceId();

                        if (request.getQueriesList().size() > 0) {
                            request.getQueriesList().forEach(query -> {
                                if (query.getField().equals("storageId") && query.getValue().equals(storageId)) {
                                    Optional<Resource> storageOptional = resourceRepository.findById(storageId);

                                    if (storageOptional.isPresent()) {
                                        try {
                                            AnyStorage anyStorage = StorageMapper.map(storageOptional.get());
                                            AnyStoragePreference anyStoragePreference = StoragePreferenceMapper.map(resource.get(), anyStorage);
                                            anyStoragePreferenceList.add(anyStoragePreference);
                                        } catch (Exception exception) {
                                            logger.error(" Mapping error ", exception);
                                        }
                                    }
                                }
                            });
                        } else {
                            Optional<Resource> storageOptional = resourceRepository.findById(storageId);

                            if (storageOptional.isPresent()) {
                                try {
                                    AnyStorage anyStorage = StorageMapper.map(storageOptional.get());
                                    AnyStoragePreference anyStoragePreference = StoragePreferenceMapper.map(resource.get(), anyStorage);
                                    anyStoragePreferenceList.add(anyStoragePreference);
                                } catch (Exception exception) {
                                    logger.error(" Mapping error ", exception);
                                }
                            }
                        }
                    }
                });

            }

            StoragePreferenceSearchResponse.Builder builder = StoragePreferenceSearchResponse.newBuilder();
            builder.addAllStoragesPreference(anyStoragePreferenceList);
            responseObserver.onNext(builder.build());
            responseObserver.onCompleted();

        } catch (Exception e) {
            String msg = "Errored while searching storage preferences; Message:" + e.getMessage();
            logger.error("Errored while searching storage preferences; Message: {}", e.getMessage(), e);
            responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
        }
    }