public void createTransferMapping()

in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/StorageServiceHandler.java [280:363]


    public void createTransferMapping(CreateTransferMappingRequest request, StreamObserver<CreateTransferMappingResponse> responseObserver) {
        try {
            AuthenticatedUser authenticatedUser = request.getAuthToken().getAuthenticatedUser();
            AnyStorage sourceStorage = request.getTransferMapping().getSourceStorage();
            AnyStorage destinationStorage = request.getTransferMapping().getDestinationStorage();
            TransferScope scope = request.getTransferMapping().getTransferScope();

            Optional<Resource> optionalSource = Optional.empty();
            Optional<Resource> optionalDst = Optional.empty();


            if (sourceStorage.isInitialized()) {
                optionalSource = resourceRepository.findById(getStorageId(sourceStorage));
            }

            if (destinationStorage.isInitialized()) {
                optionalDst = resourceRepository.findById(getStorageId(destinationStorage));
            }

            if (optionalSource.isEmpty() || optionalDst.isEmpty()) {
               responseObserver.onError(Status.NOT_FOUND.
                       withDescription("source or destination storages are not found").asRuntimeException());
               return;
            }

           Optional<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappingOp =
                   transferMappingRepository.findTransferMappingBySourceIdAndDestinationId(
                    optionalSource.get().getId(),optionalDst.get().getId());

            if (transferMappingOp.isPresent()){
                responseObserver.onError(Status.ALREADY_EXISTS.
                        withDescription("source or destination storages are not found").asRuntimeException());
                return;
            }

            org.apache.airavata.drms.api.persistance.model.TransferMapping transferMapping = new
                    org.apache.airavata.drms.api.persistance.model.TransferMapping();

            if (optionalSource.isPresent()) {

                Set<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappings =
                        optionalSource.get().getSourceTransferMapping();
                if (transferMappings != null) {
                    transferMappings.add(transferMapping);
                } else {
                    transferMappings = new HashSet<>();
                    transferMappings.add(transferMapping);
                }
                transferMapping.setSource(optionalSource.get());
                optionalSource.get().setSourceTransferMapping(transferMappings);
            }

            if (optionalDst.isPresent()) {
                Set<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappings =
                        optionalDst.get().getDestinationTransferMapping();
                if (transferMappings != null) {
                    transferMappings.add(transferMapping);
                } else {
                    transferMappings = new HashSet<>();
                    transferMappings.add(transferMapping);
                }
                transferMapping.setDestination(optionalDst.get());
                optionalDst.get().setDestinationTransferMapping(transferMappings);
            }

            transferMapping.setScope(scope.name());
            transferMapping.setOwnerId(authenticatedUser.getUsername());

            transferMappingRepository.save(transferMapping);

            CreateTransferMappingResponse createTransferMappingResponse = CreateTransferMappingResponse
                    .newBuilder()
                    .setTransferMapping(request.getTransferMapping())
                    .build();
            responseObserver.onNext(createTransferMappingResponse);
            responseObserver.onCompleted();

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

    }