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