in data-resource-management-service/drms-graph-impl/drms-api/src/main/java/org/apache/airavata/drms/api/utils/Utils.java [32:59]
public static Optional<String> getMetadataSearchQuery(List<ResourceSearchQuery> resourceSearchQueries, String type, String storageId) {
if (!resourceSearchQueries.isEmpty()) {
String preRegex = "'(?i).*";
String postRegex = ".*'";
String query = "";
if ((type.equals("FILE") || type.equals("COLLECTION")) && !storageId.isEmpty()) {
query = " MATCH (s:Storage{entityId:'" + storageId + "'})<-[:CHILD_OF*]-(r:" + type + ")-[:HAS_METADATA*]->(m) WHERE ";
} else {
query = " MATCH (r:" + type + ")-[:HAS_METADATA*]->(m) WHERE ";
}
//TODO: works only for one property
for (ResourceSearchQuery qry : resourceSearchQueries) {
if (qry.getField().contains(" ")) {
query = " MATCH (r:" + type + ")-[:HAS_METADATA*]->(m:METADATA_NODE{`" + qry.getField() + "`: '" + qry.getValue() + "'})" +
" Return r ";
return Optional.ofNullable(query);
} else {
String finalSearchStr = preRegex + qry.getValue() + postRegex;
query = query + " m." + qry.getField() + "=~ " + finalSearchStr + " AND ";
}
}
query = query.substring(0, query.length() - 5);
query = query + " RETURN r";
return Optional.ofNullable(query);
}
return Optional.empty();
}