Introduce terms content provider
[gpl/argeo-suite.git] / org.argeo.app.jcr / src / org / argeo / app / jcr / terms / SuiteTermsManager.java
index 6327a552f9880cdfdb906b344058ef3a62d39d69..eba0529ac50c7d629e96bc88f3579d93cd9c03b8 100644 (file)
@@ -4,8 +4,11 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
 
 import javax.jcr.Node;
+import javax.jcr.NodeIterator;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -15,6 +18,7 @@ import org.argeo.app.api.EntityNames;
 import org.argeo.app.api.EntityType;
 import org.argeo.app.api.Term;
 import org.argeo.app.api.TermsManager;
+import org.argeo.app.api.Typology;
 import org.argeo.cms.jcr.CmsJcrUtils;
 import org.argeo.jcr.Jcr;
 import org.argeo.jcr.JcrException;
@@ -60,6 +64,16 @@ public class SuiteTermsManager implements TermsManager {
                return t;
        }
 
+       @Override
+       public Set<Typology> getTypologies() {
+               Set<Typology> res = new TreeSet<>((o1, o2) -> o1.getId().compareTo(o2.getId()));
+               NodeIterator termsNodes = Jcr.executeQuery(adminSession, "SELECT * FROM [{0}]", EntityType.terms.get());
+               for (Node termsNode : Jcr.iterate(termsNodes)) {
+                       res.add(loadTypology(termsNode));
+               }
+               return res;
+       }
+
        SuiteTypology loadTypology(Node termsNode) {
                try {
                        SuiteTypology typology = new SuiteTypology(termsNode);