public void fetchStoragePreference()

in data-resource-management-service/drms-graph-impl/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/StoragePreferenceServiceHandler.java [63:115]


    public void fetchStoragePreference(StoragePreferenceFetchRequest request, StreamObserver<StoragePreferenceFetchResponse> responseObserver) {
        try {
            AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();

            Map<String, Object> userProps = new HashMap<>();
            userProps.put("username", callUser.getUsername());
            userProps.put("tenantId", callUser.getTenantId());
            userProps.put("storagePreferenceId", request.getStoragePreferenceId());

            List<Record> records = this.neo4JConnector.searchNodes(userProps,
                    " MATCH (u:User) where u.username = $username AND u.tenantId = $tenantId" +
                            " OPTIONAL MATCH (u)<-[:SHARED_WITH]-(s1:Storage)<-[:CHILD_OF]-(sp1:StoragePreference) where sp1.storagePreferenceId = $storagePreferenceId" +
                            " OPTIONAL MATCH  (g:Group)<-[:MEMBER_OF]-(u)" +
                            " OPTIONAL MATCH (cg:Group)-[:CHILD_OF*]->(g)" +
                            " OPTIONAL MATCH (sp2:StoragePreference)-[:CHILD_OF]->(s2:Storage)-[:SHARED_WITH]->(cg) where sp2.storagePreferenceId = $storagePreferenceId" +
                            " OPTIONAL MATCH (sp3:StoragePreference)-[:CHILD_OF]->(s3:Storage)-[:SHARED_WITH]->(g) where sp3.storagePreferenceId = $storagePreferenceId" +
                            " OPTIONAL MATCH (s4:Storage)<-[:CHILD_OF]-(sp4:StoragePreference)-[:SHARED_WITH]->(u) where sp4.storagePreferenceId = $storagePreferenceId" +
                            " OPTIONAL MATCH (s5:Storage)<-[:CHILD_OF]-(sp5:StoragePreference)-[:SHARED_WITH]->(cg) where sp5.storagePreferenceId = $storagePreferenceId" +
                            " OPTIONAL MATCH (s6:Storage)<-[:CHILD_OF]-(sp6:StoragePreference)-[:SHARED_WITH]->(g) where sp6.storagePreferenceId = $storagePreferenceId" +
                            " return distinct s1, sp1, s2, sp2, s3, sp3, s4,sp4, s5,sp5, s6,sp6");

            if (!records.isEmpty()) {
                try {
                    List keyList = new ArrayList();
                    keyList.add("s1:sp1");
                    keyList.add("s2:sp2");
                    keyList.add("s3:sp3");
                    keyList.add("s4:sp4");
                    keyList.add("s5:sp5");
                    keyList.add("s6:sp6");
                    List<AnyStoragePreference> storagePrefList = AnyStoragePreferenceDeserializer.deserializeList(records, keyList);
                    StoragePreferenceFetchResponse.Builder builder = StoragePreferenceFetchResponse.newBuilder();
                    if (!storagePrefList.isEmpty()) {
                        builder.setStoragePreference(storagePrefList.get(0));
                    }
                    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());
                }
            } else {
                String msg = "Could not find a storage preference with id" + request.getStoragePreferenceId();
                logger.error("Could not find a storage preference with id {}", request.getStoragePreferenceId());
                responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
            }
        } 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());
        }
    }