Layer visibility depending on roles.
[gpl/argeo-suite.git] / core / org.argeo.suite.core / src / org / argeo / suite / SuiteUtils.java
index e63b5152c0b00430aad95bd83d5b12e2d392b7b5..93f3b148c085d3ba1ba0c3dbe54e29d64aa597d4 100644 (file)
@@ -1,5 +1,8 @@
 package org.argeo.suite;
 
 package org.argeo.suite;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -96,4 +99,24 @@ public class SuiteUtils {
 
        }
 
 
        }
 
+       public static Set<String> extractRoles(String[] semiColArr) {
+               Set<String> 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;
+       }
+
 }
 }