X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=core%2Forg.argeo.suite.core%2Fsrc%2Forg%2Fargeo%2Fsuite%2FSuiteUtils.java;h=93f3b148c085d3ba1ba0c3dbe54e29d64aa597d4;hp=e63b5152c0b00430aad95bd83d5b12e2d392b7b5;hb=3b2923f0bc172a755c68d4a3700dcd73287fcd8c;hpb=33d990f4d6522959211e2a961ec756ee849c6296 diff --git a/core/org.argeo.suite.core/src/org/argeo/suite/SuiteUtils.java b/core/org.argeo.suite.core/src/org/argeo/suite/SuiteUtils.java index e63b515..93f3b14 100644 --- a/core/org.argeo.suite.core/src/org/argeo/suite/SuiteUtils.java +++ b/core/org.argeo.suite.core/src/org/argeo/suite/SuiteUtils.java @@ -1,5 +1,8 @@ package org.argeo.suite; +import java.util.HashSet; +import java.util.Set; + import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -96,4 +99,24 @@ public class SuiteUtils { } + public static Set extractRoles(String[] semiColArr) { + Set res = new HashSet<>(); + // TODO factorize and make it more robust + final String rolesPrefix = "roles:=\""; + // first one is layer id + for (int i = 1; i < semiColArr.length; i++) { + if (semiColArr[i].startsWith(rolesPrefix)) { + String rolesStr = semiColArr[i].substring(rolesPrefix.length()); + // remove last " + rolesStr = rolesStr.substring(0, rolesStr.lastIndexOf('\"')); + // TODO support AND (&) as well + String[] roles = rolesStr.split("\\|");// OR (|) + for (String role : roles) { + res.add(role.trim()); + } + } + } + return res; + } + }