Massive Argeo APIs refactoring
[gpl/argeo-suite.git] / org.argeo.suite.core / src / org / argeo / suite / core / SuiteTermsManager.java
index 3c5a59fa42c5425820340017bc0ece5b2ccab93d..41126c388f801ef9b1f27943b5b5461a226c0ec2 100644 (file)
@@ -10,10 +10,11 @@ import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
-import org.argeo.api.NodeConstants;
-import org.argeo.api.NodeUtils;
+import org.argeo.api.cms.CmsConstants;
+import org.argeo.cms.jcr.CmsJcrUtils;
 import org.argeo.entity.EntityNames;
 import org.argeo.entity.EntityType;
+import org.argeo.entity.Term;
 import org.argeo.entity.TermsManager;
 import org.argeo.jcr.Jcr;
 import org.argeo.jcr.JcrException;
@@ -28,24 +29,32 @@ public class SuiteTermsManager implements TermsManager {
        private Session adminSession;
 
        public void init() {
-               adminSession = NodeUtils.openDataAdminSession(repository, NodeConstants.SYS_WORKSPACE);
+               adminSession = CmsJcrUtils.openDataAdminSession(repository, CmsConstants.SYS_WORKSPACE);
        }
 
        @Override
-       public List<String> listAllTerms(String typology) {
-               List<String> res = new ArrayList<>();
+       public List<Term> listAllTerms(String typology) {
+               List<Term> res = new ArrayList<>();
                SuiteTypology t = getTypology(typology);
                for (SuiteTerm term : t.getAllTerms()) {
-                       res.add(term.getId());
+                       res.add(term);
                }
                return res;
        }
 
-       SuiteTypology getTypology(String typology) {
+       @Override
+       public SuiteTerm getTerm(String termId) {
+               return terms.get(termId);
+       }
+
+       @Override
+       public SuiteTypology getTypology(String typology) {
                SuiteTypology t = typologies.get(typology);
                if (t == null) {
                        Node termsNode = Jcr.getNode(adminSession, "SELECT * FROM [{0}] WHERE NAME()=\"{1}\"",
                                        EntityType.terms.get(), typology);
+                       if (termsNode == null)
+                               throw new IllegalArgumentException("Typology " + typology + " not found.");
                        t = loadTypology(termsNode);
                }
                return t;