From 4bd1afc366b950a4999c31b3c300c59417f03d82 Mon Sep 17 00:00:00 2001
From: gakin <gakin>
Date: Thu, 15 Dec 2016 12:33:34 +0000
Subject: [PATCH] SSDM-4389 : Retrieve vocabularies and terms and  add to
 Resource List xml

SVN: 37507
---
 .../generic/server/EntityRetriever.java       | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/EntityRetriever.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/EntityRetriever.java
index 0f6f736f7ae..b893775030f 100644
--- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/EntityRetriever.java
+++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/EntityRetriever.java
@@ -82,6 +82,8 @@ import ch.ethz.sis.openbis.generic.shared.entitygraph.EntityGraph;
 import ch.ethz.sis.openbis.generic.shared.entitygraph.Node;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IMasterDataRegistrationTransaction;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IPropertyTypeImmutable;
+import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyImmutable;
+import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyTermImmutable;
 
 public class EntityRetriever 
 {
@@ -423,6 +425,33 @@ public class EntityRetriever
         Element rootElement = doc.createElement("masterData");
         doc.appendChild(rootElement);
 
+        // append vocabularies
+        List<IVocabularyImmutable> vocabularies = listVocabularies();
+        if (vocabularies.size() > 0)
+        {
+            Element vocabsElement = doc.createElement("vocabularies");
+            rootElement.appendChild(vocabsElement);
+            for (IVocabularyImmutable vocabImmutable : vocabularies)
+            {
+                Element vocabElement = doc.createElement("vocabulary");
+                vocabElement.setAttribute("code", vocabImmutable.getCode());
+                vocabElement.setAttribute("description", vocabImmutable.getDescription());
+                vocabElement.setAttribute("urlTemplate", vocabImmutable.getUrlTemplate());
+                vocabsElement.appendChild(vocabElement);
+                List<IVocabularyTermImmutable> terms = vocabImmutable.getTerms();
+                for (IVocabularyTermImmutable vocabTermImmutable : terms)
+                {
+                    Element termElement = doc.createElement("term");
+                    termElement.setAttribute("code", vocabTermImmutable.getCode());
+                    termElement.setAttribute("label", vocabTermImmutable.getLabel());
+                    termElement.setAttribute("description", vocabTermImmutable.getDescription());
+                    termElement.setAttribute("ordinal", String.valueOf(vocabTermImmutable.getOrdinal()));
+                    termElement.setAttribute("url", vocabTermImmutable.getUrl());
+                    vocabElement.appendChild(termElement);
+                }
+            }
+        }
+
         // append property types
         List<IPropertyTypeImmutable> propertyTypes = listPropertyTypes();
         if (propertyTypes.size() > 0)
@@ -616,6 +645,11 @@ public class EntityRetriever
         return masterDataRegistrationTransaction.listPropertyTypes();
     }
 
+    public List<IVocabularyImmutable> listVocabularies()
+    {
+        return masterDataRegistrationTransaction.listVocabularies();
+    }
+
     private List<DataSetType> getDataSetTypes()
     {
         DataSetTypeSearchCriteria searchCriteria = new DataSetTypeSearchCriteria();
-- 
GitLab