private void mergeEntitySharings()

in data-resource-management-service/drms-graph-impl/drms-custos-synchronizer/src/main/java/org/apache/airavata/drms/custos/synchronizer/handlers/SharingHandler.java [121:162]


    private void mergeEntitySharings(SharingMetadata metadata, String clientId) {
        try {
            Entity entity = metadata.getEntity();
            String sourceId = metadata.getEntity().getId();
            String permissionId = metadata.getPermission().getId();
            String userId = metadata.getOwnerId();
            String type = metadata.getOwnerType();
            String sharedBy = metadata.getSharedBy();
            userId = userId.replaceAll("'", "`'");
            String query = null;
            if (type.equalsIgnoreCase("USER")) {
                query = "MATCH (a:" + entity.getType() + "), (b:User) WHERE a.entityId = $sourceId  AND a.tenantId = $clientId" +
                        " AND  b.username = $userId  AND b.tenantId = $clientId " +
                        "MERGE (a)-[r:SHARED_WITH]->(b) SET r += $props RETURN a, b";

            } else if (type.equalsIgnoreCase("GROUP")) {
                query = "MATCH (a:" + entity.getType() + "), (b:Group) WHERE a.entityId = $sourceId " +
                        " AND a.tenantId = $clientId  AND b.groupId = $userId  AND b.tenantId = $clientId " +
                        "MERGE (a)-[r:SHARED_WITH]->(b) SET r += $props RETURN a, b";
            }
            if (query != null) {
                Map<String, Object> map = new HashMap<>();
                map.put("sourceId", sourceId);
                map.put("clientId", clientId);
                map.put("permissionId", permissionId);
                map.put("userId", userId);
                map.put("sharedBy", sharedBy);
                Map<String, Object> props = new HashMap<>();
                props.put("sharedBy", sharedBy);
                props.put("permission", permissionId);
                map.put("props", props);

                Utils.getNeo4JConnector().runTransactionalQuery(map, query);
            }
        } catch (UnsupportedOperationException exception) {
            LOGGER.debug("Error occurred while merging", exception);
        } catch (Exception ex) {
            String msg = "Error occurred while merging sharings, " + ex.getMessage();
            LOGGER.error(msg, ex);
        }

    }