public static Optional getMetadataSearchQuery()

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