From f8ffa7c3fd5f766320f972caf726f8fa462cace5 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 26 Feb 2013 09:45:05 +0000
Subject: [PATCH] SP-351, BIS-235:
 IMasterDataRegistrationTransaction.addVocabularyTermTo() removed. Logic of
 implementation is moved to VocabularyWrapper.addTerm(). Example term added to
 vocabulary TREATMENT_TYPE in core plugin 'proteomics-optional'.

SVN: 28445
---
 .../IMasterDataRegistrationTransaction.java   |  5 -----
 .../MasterDataRegistrationTransaction.java    | 20 +------------------
 .../jython/api/v1/impl/VocabularyWrapper.java | 18 ++++++++++++++++-
 ...MasterDataRegistrationTransactionTest.java |  9 +++++----
 .../1/as/initialize-master-data.py            |  8 ++++++++
 5 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
index ad5f6b7151a..3b0900916bb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
@@ -265,11 +265,6 @@ public interface IMasterDataRegistrationTransaction
      */
     IVocabularyTerm createNewVocabularyTerm(String code);
 
-    /**
-     * Adds the specified vocabulary term to the specified vocabulary.
-     */
-    void addVocabularyTermTo(IVocabularyImmutable vocabulary, IVocabularyTerm term);
-
     /**
      * Returns the vocabulary term with specified code from the specified vocabulary.
      * 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
index ee7c0dcf27a..c1dfe413f8c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
@@ -418,24 +418,6 @@ public class MasterDataRegistrationTransaction implements IMasterDataRegistratio
         return vocabulary;
     }
 
-    @Override
-    public void addVocabularyTermTo(IVocabularyImmutable vocabulary, IVocabularyTerm term)
-    {
-        if (vocabulary instanceof Vocabulary)
-        {
-            ((Vocabulary) vocabulary).addTerm(term);
-            return;
-        }
-        Long id = ((VocabularyImmutable) vocabulary).getVocabulary().getId();
-        List<VocabularyTerm> terms = createdVocabularyTerms.get(id);
-        if (terms == null)
-        {
-            terms = new ArrayList<VocabularyTerm>();
-            createdVocabularyTerms.put(id, terms);
-        }
-        terms.add((VocabularyTerm) term);
-    }
-
     @Override
     public IVocabularyTerm getVocabularyTerm(IVocabularyImmutable vocabulary,
             String vocabularyTermCode)
@@ -474,7 +456,7 @@ public class MasterDataRegistrationTransaction implements IMasterDataRegistratio
         IVocabularyImmutable vocabulary = getVocabulary(code);
         if (vocabulary != null)
         {
-            return new VocabularyWrapper((VocabularyImmutable) vocabulary);
+            return new VocabularyWrapper((VocabularyImmutable) vocabulary, createdVocabularyTerms);
         }
         return createNewVocabulary(code);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
index c1220575a76..7bc2c8ed5b3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
@@ -16,6 +16,10 @@
 
 package ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabulary;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyTerm;
 
@@ -26,9 +30,13 @@ import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyTerm;
  */
 class VocabularyWrapper extends VocabularyImmutable implements IVocabulary
 {
-    VocabularyWrapper(VocabularyImmutable vocabulary)
+    private final Map<Long, List<VocabularyTerm>> createdVocabularyTerms;
+
+    VocabularyWrapper(VocabularyImmutable vocabulary,
+            Map<Long, List<VocabularyTerm>> createdVocabularyTerms)
     {
         super(vocabulary.getVocabulary());
+        this.createdVocabularyTerms = createdVocabularyTerms;
     }
 
     @Override
@@ -59,5 +67,13 @@ class VocabularyWrapper extends VocabularyImmutable implements IVocabulary
     @Override
     public void addTerm(IVocabularyTerm term)
     {
+        Long id = getVocabulary().getId();
+        List<VocabularyTerm> terms = createdVocabularyTerms.get(id);
+        if (terms == null)
+        {
+            terms = new ArrayList<VocabularyTerm>();
+            createdVocabularyTerms.put(id, terms);
+        }
+        terms.add((VocabularyTerm) term);
     }
 }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
index 2b20741e3f6..be5bcac1c64 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
@@ -502,7 +502,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         IVocabularyTerm term = transaction.createNewVocabularyTerm("ABC");
         term.setLabel("abc");
         term.setDescription("Hello abc");
-        transaction.addVocabularyTermTo(voca, term);
+        voca.addTerm(term);
         transaction.commit();
 
         assertEquals("[abc [ABC]]", newTermsMatcher.recordedObject().toString());
@@ -585,7 +585,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         term2.setLabel("Beta");
         term2.setDescription("Hello B");
         term2.setOrdinal(1L);
-        transaction.addVocabularyTermTo(voca, term2);
+        voca.addTerm(term2);
         transaction.commit();
 
         NewVocabulary newVoca = newVocaMatcher.recordedObject();
@@ -652,6 +652,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         context.assertIsSatisfied();
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void testAddVocabularyTermsFailed()
     {
@@ -667,8 +668,8 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
             });
 
         IVocabulary voca = transaction.getOrCreateNewVocabulary(KNOWN);
-        transaction.addVocabularyTermTo(voca, transaction.createNewVocabularyTerm("ABC"));
-        transaction.addVocabularyTermTo(voca, transaction.createNewVocabularyTerm("Delta"));
+        voca.addTerm(transaction.createNewVocabularyTerm("ABC"));
+        voca.addTerm(transaction.createNewVocabularyTerm("Delta"));
         transaction.commit();
 
         assertEquals("Failed to register new terms [ABC, DELTA]: Oohps!", transaction
diff --git a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py b/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
index 43f0b50e81c..143643faf00 100644
--- a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
+++ b/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
@@ -30,6 +30,14 @@ file_type_ZIP.setDescription('A zipped package')
 
 vocabulary_TREATMENT_TYPE = tr.getVocabulary('TREATMENT_TYPE')
 
+vocabulary_TREATMENT_TYPE.addTerm(vocabulary_term_TREATMENT_TYPE_PH)
+vocabulary_term_TREATMENT_TYPE_PH = tr.createNewVocabularyTerm('PH')
+vocabulary_term_TREATMENT_TYPE_PH.setDescription(None)
+vocabulary_term_TREATMENT_TYPE_PH.setUrl(None)
+vocabulary_term_TREATMENT_TYPE_PH.setLabel('ph')
+vocabulary_term_TREATMENT_TYPE_PH.setOrdinal(1)
+vocabulary_TREATMENT_TYPE.addTerm(vocabulary_term_TREATMENT_TYPE_PH)
+
 exp_type_BIOLOGICAL_EXPERIMENT = tr.getOrCreateNewExperimentType('BIOLOGICAL_EXPERIMENT')
 exp_type_BIOLOGICAL_EXPERIMENT.setDescription('A biological experiment')
 
-- 
GitLab