From 511fa38149be11d9d309bec7e86ec3ab3b26367c Mon Sep 17 00:00:00 2001 From: gakin <gakin> Date: Thu, 15 Dec 2016 11:06:21 +0000 Subject: [PATCH] SSDM-4389 : Retrieve property types and add to Resource List xml SVN: 37506 --- .../generic/server/EntityRetriever.java | 119 ++++++++++++------ 1 file changed, 81 insertions(+), 38 deletions(-) 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 dee08ffbb67..0f6f736f7ae 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 @@ -422,35 +422,69 @@ public class EntityRetriever Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("masterData"); doc.appendChild(rootElement); - List<SampleType> sampleTypes = md.getSampleTypes(); - if (sampleTypes.size() > 0) + + // append property types + List<IPropertyTypeImmutable> propertyTypes = listPropertyTypes(); + if (propertyTypes.size() > 0) { - Element sampleTypesElement = doc.createElement("sampleTypes"); - rootElement.appendChild(sampleTypesElement); - for (SampleType sampleType : sampleTypes) + Element propertyTypesElement = doc.createElement("propertyTypes"); + rootElement.appendChild(propertyTypesElement); + for (IPropertyTypeImmutable propertyTypeImmutable : propertyTypes) { - Element sampleTypeElement = getEntityTypeXML(doc, sampleType, "sampleType"); - sampleTypesElement.appendChild(sampleTypeElement); - Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, sampleType.getPropertyAssignments()); - sampleTypeElement.appendChild(propertyAssignmentsElement); + Element propertyTypeElement = doc.createElement("propertyType"); + propertyTypeElement.setAttribute("code", propertyTypeImmutable.getCode()); + propertyTypeElement.setAttribute("label", propertyTypeImmutable.getLabel()); + propertyTypeElement.setAttribute("dataType", propertyTypeImmutable.getDataType().name()); + propertyTypeElement.setAttribute("internalNamespace", String.valueOf(propertyTypeImmutable.isInternalNamespace())); + propertyTypeElement.setAttribute("managedInternally", String.valueOf(propertyTypeImmutable.isManagedInternally())); + propertyTypeElement.setAttribute("description", propertyTypeImmutable.getDescription()); + propertyTypesElement.appendChild(propertyTypeElement); } } + // append sample types + List<SampleType> sampleTypes = md.getSampleTypes(); + appendSampleTypes(doc, rootElement, sampleTypes); + + // append experiment types List<ExperimentType> experimentTypes = md.getExperimentTypes(); - if (experimentTypes.size() > 0) + appendExperimentTypes(doc, rootElement, experimentTypes); + + // append data set types + List<DataSetType> dataSetTypes = md.getDataSetTypes(); + appendDataSetTypes(doc, rootElement, dataSetTypes); + + List<MaterialType> materialTypes = md.getMaterialTypes(); + appendMaterialTypes(doc, rootElement, materialTypes); + + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + DOMSource source = new DOMSource(doc); + StringWriter writer = new StringWriter(); + StreamResult result = new StreamResult(writer); + transformer.transform(source, result); + return writer.toString(); + } + + private void appendMaterialTypes(Document doc, Element rootElement, List<MaterialType> materialTypes) + { + if (materialTypes.size() > 0) { - Element expTypesElement = doc.createElement("experimentTypes"); - rootElement.appendChild(expTypesElement); - for (ExperimentType expType : experimentTypes) + Element materialTypesElement = doc.createElement("materialTypes"); + rootElement.appendChild(materialTypesElement); + for (MaterialType matType : materialTypes) { - Element experimentTypeElement = getEntityTypeXML(doc, expType, "experimentType"); - expTypesElement.appendChild(experimentTypeElement); - Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, expType.getPropertyAssignments()); - experimentTypeElement.appendChild(propertyAssignmentsElement); + Element matTypeElement = getEntityTypeXML(doc, matType, "materialType"); + materialTypesElement.appendChild(matTypeElement); + Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, matType.getPropertyAssignments()); + matTypeElement.appendChild(propertyAssignmentsElement); } } + } - List<DataSetType> dataSetTypes = md.getDataSetTypes(); + private void appendDataSetTypes(Document doc, Element rootElement, List<DataSetType> dataSetTypes) + { if (dataSetTypes.size() > 0) { Element dataSetTypesElement = doc.createElement("dataSetTypes"); @@ -463,37 +497,46 @@ public class EntityRetriever dsTypeElement.appendChild(propertyAssignmentsElement); } } + } - List<MaterialType> materialTypes = md.getMaterialTypes(); - if (materialTypes.size() > 0) + private void appendExperimentTypes(Document doc, Element rootElement, List<ExperimentType> experimentTypes) + { + if (experimentTypes.size() > 0) { - Element materialTypesElement = doc.createElement("materialTypes"); - rootElement.appendChild(materialTypesElement); - for (MaterialType matType : materialTypes) + Element expTypesElement = doc.createElement("experimentTypes"); + rootElement.appendChild(expTypesElement); + for (ExperimentType expType : experimentTypes) { - Element matTypeElement = getEntityTypeXML(doc, matType, "materialType"); - materialTypesElement.appendChild(matTypeElement); - Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, matType.getPropertyAssignments()); - matTypeElement.appendChild(propertyAssignmentsElement); + Element experimentTypeElement = getEntityTypeXML(doc, expType, "experimentType"); + expTypesElement.appendChild(experimentTypeElement); + Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, expType.getPropertyAssignments()); + experimentTypeElement.appendChild(propertyAssignmentsElement); } } + } - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - DOMSource source = new DOMSource(doc); - StringWriter writer = new StringWriter(); - StreamResult result = new StreamResult(writer); - transformer.transform(source, result); - return writer.toString(); + private void appendSampleTypes(Document doc, Element rootElement, List<SampleType> sampleTypes) + { + if (sampleTypes.size() > 0) + { + Element sampleTypesElement = doc.createElement("sampleTypes"); + rootElement.appendChild(sampleTypesElement); + for (SampleType sampleType : sampleTypes) + { + Element sampleTypeElement = getEntityTypeXML(doc, sampleType, "sampleType"); + sampleTypesElement.appendChild(sampleTypeElement); + Element propertyAssignmentsElement = getPropertyAssignmentXML(doc, sampleType.getPropertyAssignments()); + sampleTypeElement.appendChild(propertyAssignmentsElement); + } + } } private <E extends ICodeHolder> Element getEntityTypeXML(Document doc, E entityType, String elementName) { - Element sampleTypeElement = doc.createElement(elementName); - sampleTypeElement.setAttribute("code", entityType.getCode()); - return sampleTypeElement; + Element typeElement = doc.createElement(elementName); + typeElement.setAttribute("code", entityType.getCode()); + return typeElement; } private Element getPropertyAssignmentXML(Document doc, List<PropertyAssignment> propertyAssignments) -- GitLab