From 7d3247ef5f355f8a4ef565b555703c4364f14bf8 Mon Sep 17 00:00:00 2001
From: gakin <gakin>
Date: Wed, 1 Mar 2017 12:04:08 +0000
Subject: [PATCH] SSDM-4850 : Use fully qualified name in parsing master data

SVN: 37844
---
 .../synchronizer/MasterDataParser.java        | 41 +++++++++----------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataParser.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataParser.java
index 198bf9b220d..a2a134250b5 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataParser.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/MasterDataParser.java
@@ -240,7 +240,7 @@ public class MasterDataParser
         validateElementNode(vocabulariesNode, "controlledVocabularies");
 
         Element vocabsElement = (Element) vocabulariesNode.item(0);
-        NodeList vocabNodes = vocabsElement.getElementsByTagName("controlledVocabulary");
+        NodeList vocabNodes = vocabsElement.getElementsByTagName("xmd:controlledVocabulary");
 
         for (int i = 0; i < vocabNodes.getLength(); i++)
         {
@@ -277,7 +277,12 @@ public class MasterDataParser
 
     private String getAttribute(Element termElement, String attr)
     {
-        return termElement.getAttributes().getNamedItem(attr).getTextContent().trim();
+        Node node = termElement.getAttributes().getNamedItem(attr);
+        if (node != null)
+        {
+            return node.getTextContent().trim();
+        }
+        return null;
     }
 
     private void parseMaterialTypes(NodeList matTypesNode) throws XPathExpressionException
@@ -289,7 +294,7 @@ public class MasterDataParser
         validateElementNode(matTypesNode, "materialTypes");
 
         Element matTypesElement = (Element) matTypesNode.item(0);
-        NodeList matTypeNodes = matTypesElement.getElementsByTagName("materialType");
+        NodeList matTypeNodes = matTypesElement.getElementsByTagName("xmd:materialType");
         for (int i = 0; i < matTypeNodes.getLength(); i++)
         {
             Element materialTypeElement = (Element) matTypeNodes.item(i);
@@ -297,7 +302,7 @@ public class MasterDataParser
             materialType.setCode(getAttribute(materialTypeElement, "code"));
             materialType.setDescription(getAttribute(materialTypeElement, "description"));
             String validationPluginName = getAttribute(materialTypeElement, "validationPlugin");
-            if (validationPluginName.equals("") == false)
+            if (validationPluginName != null)
             {
                 materialType.setValidationScript(validationPlugins.get(validationPluginName));
             }
@@ -316,7 +321,7 @@ public class MasterDataParser
         validateElementNode(expTypesNode, "collectionTypes");
 
         Element expTypesElement = (Element) expTypesNode.item(0);
-        NodeList expTypeNodes = expTypesElement.getElementsByTagName("collectionType");
+        NodeList expTypeNodes = expTypesElement.getElementsByTagName("xmd:collectionType");
         for (int i = 0; i < expTypeNodes.getLength(); i++)
         {
             Element expTypeElement = (Element) expTypeNodes.item(i);
@@ -325,13 +330,13 @@ public class MasterDataParser
             expType.setCode(code);
             expType.setDescription(getAttribute(expTypeElement, "description"));
             String validationPluginName = getAttribute(expTypeElement, "validationPlugin");
-            if (validationPluginName.equals("") == false)
+            if (validationPluginName != null)
             {
                 expType.setValidationScript(validationPlugins.get(validationPluginName));
             }
             experimentTypes.put(expType.getCode(), expType);
 
-            parsePropertyAssignments(EntityKind.EXPERIMENT, expType, expTypeElement.getElementsByTagName("propertyAssignments"));
+            parsePropertyAssignments(EntityKind.EXPERIMENT, expType, expTypeElement.getElementsByTagName("xmd:propertyAssignments"));
         }
     }
 
@@ -344,7 +349,7 @@ public class MasterDataParser
         validateElementNode(sampleTypesNode, "objectTypes");
 
         Element sampleTypesElement = (Element) sampleTypesNode.item(0);
-        NodeList sampleTypeNodes = sampleTypesElement.getElementsByTagName("objectType");
+        NodeList sampleTypeNodes = sampleTypesElement.getElementsByTagName("xmd:objectType");
         for (int i = 0; i < sampleTypeNodes.getLength(); i++)
         {
             Element sampleTypeElement = (Element) sampleTypeNodes.item(i);
@@ -359,13 +364,13 @@ public class MasterDataParser
             sampleType.setAutoGeneratedCode(Boolean.valueOf(getAttribute(sampleTypeElement, "autoGeneratedCode")));
             sampleType.setGeneratedCodePrefix(getAttribute(sampleTypeElement, "generatedCodePrefix"));
             String validationPluginName = getAttribute(sampleTypeElement, "validationPlugin");
-            if (validationPluginName.equals("") == false)
+            if (validationPluginName != null)
             {
                 sampleType.setValidationScript(validationPlugins.get(validationPluginName));
             }
             sampleTypes.put(sampleType.getCode(), sampleType);
 
-            parsePropertyAssignments(EntityKind.SAMPLE, sampleType, sampleTypeElement.getElementsByTagName("propertyAssignments"));
+            parsePropertyAssignments(EntityKind.SAMPLE, sampleType, sampleTypeElement.getElementsByTagName("xmd:propertyAssignments"));
         }
     }
 
@@ -378,7 +383,7 @@ public class MasterDataParser
         validateElementNode(dataSetTypesNode, "dataSetTypes");
 
         Element dataSetTypesElement = (Element) dataSetTypesNode.item(0);
-        NodeList dataSetTypeNodes = dataSetTypesElement.getElementsByTagName("dataSetType");
+        NodeList dataSetTypeNodes = dataSetTypesElement.getElementsByTagName("xmd:dataSetType");
         for (int i = 0; i < dataSetTypeNodes.getLength(); i++)
         {
             Element dataSetTypeElement = (Element) dataSetTypeNodes.item(i);
@@ -406,13 +411,13 @@ public class MasterDataParser
             }
             dataSetType.setDeletionDisallow(Boolean.valueOf(getAttribute(dataSetTypeElement, "deletionDisallowed")));
             String validationPluginName = getAttribute(dataSetTypeElement, "validationPlugin");
-            if (validationPluginName.equals("") == false)
+            if (validationPluginName != null)
             {
                 dataSetType.setValidationScript(validationPlugins.get(validationPluginName));
             }
             dataSetTypes.put(dataSetType.getCode(), dataSetType);
 
-            parsePropertyAssignments(EntityKind.DATA_SET, dataSetType, dataSetTypeElement.getElementsByTagName("propertyAssignments"));
+            parsePropertyAssignments(EntityKind.DATA_SET, dataSetType, dataSetTypeElement.getElementsByTagName("xmd:propertyAssignments"));
         }
     }
 
@@ -423,16 +428,12 @@ public class MasterDataParser
         {
             return;
         }
-        if (propertyAssignmentsNode.getLength() != 1)
-        {
-            throw new XPathExpressionException(entityType.getCode() + " should contain a single 'propertyAssigments' node");
-        }
 
         validateElementNode(propertyAssignmentsNode, "propertyAssignments");
 
         List<NewETPTAssignment> list = new ArrayList<NewETPTAssignment>();
         Element propertyAssignmentsElement = (Element) propertyAssignmentsNode.item(0);
-        NodeList propertyAssignmentNodes = propertyAssignmentsElement.getElementsByTagName("propertyAssignment");
+        NodeList propertyAssignmentNodes = propertyAssignmentsElement.getElementsByTagName("xmd:propertyAssignment");
         for (int i = 0; i < propertyAssignmentNodes.getLength(); i++)
         {
             Element propertyAssignmentElement = (Element) propertyAssignmentNodes.item(i);
@@ -459,10 +460,8 @@ public class MasterDataParser
         }
         validateElementNode(propertyTypesNode, "propertyTypes");
 
-        assert propertyTypesNode.getLength() == 1 : "Resource List should contain a single 'propertyTypes' node";
-
         Element propertyTypesElement = (Element) propertyTypesNode.item(0);
-        NodeList propertyTypeNodes = propertyTypesElement.getElementsByTagName("propertyType");
+        NodeList propertyTypeNodes = propertyTypesElement.getElementsByTagName("xmd:propertyType");
         for (int i = 0; i < propertyTypeNodes.getLength(); i++)
         {
             Element propertyTypeElement = (Element) propertyTypeNodes.item(i);
-- 
GitLab