BExIS.Web.Shell.Areas.DCM.Controllers.ManageMetadataStructureController.updateMetadataStructure C# (CSharp) Method

updateMetadataStructure() private method

private updateMetadataStructure ( MetadataStructure metadataStructure, MetadataStructureModel metadataStructureModel ) : MetadataStructure
metadataStructure BExIS.Dlm.Entities.MetadataStructure.MetadataStructure
metadataStructureModel MetadataStructureModel
return BExIS.Dlm.Entities.MetadataStructure.MetadataStructure
        private MetadataStructure updateMetadataStructure(MetadataStructure metadataStructure,
            MetadataStructureModel metadataStructureModel)
        {
            if (metadataStructure.Id.Equals(metadataStructureModel.Id))
            {
                metadataStructure.Name = metadataStructureModel.Name;

                if (metadataStructure.Extra != null)
                {
                    XmlDocument xmlDocument = new XmlDocument();
                    if (metadataStructure.Extra as XmlDocument != null)
                        xmlDocument = metadataStructure.Extra as XmlDocument;
                    else
                    {
                        xmlDocument.AppendChild(metadataStructure.Extra);
                    }

                    metadataStructureModel.MetadataNodes = GetAllXPath(metadataStructure.Id);

                    //set title & description
                    string titleXPath =
                        metadataStructureModel.MetadataNodes
                            .Where(e => e.DisplayName.Equals(metadataStructureModel.TitleNode))
                            .FirstOrDefault()
                            .XPath;

                    XmlNode tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement,
                        nodeNames.nodeRef.ToString(), AttributeNames.name.ToString(),
                        NameAttributeValues.title.ToString());

                    tmp.Attributes[AttributeNames.value.ToString()].Value = titleXPath;

                    string descriptionXPath =
                        metadataStructureModel.MetadataNodes
                            .Where(e => e.DisplayName.Equals(metadataStructureModel.DescriptionNode))
                            .FirstOrDefault()
                            .XPath;

                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.nodeRef.ToString(),
                        AttributeNames.name.ToString(), NameAttributeValues.description.ToString());
                    tmp.Attributes[AttributeNames.value.ToString()].Value = descriptionXPath;

                    //set entity
                    tmp = XmlUtility.GetXmlNodeByName(xmlDocument.DocumentElement, nodeNames.entity.ToString());
                    if (tmp != null)
                        tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Entity.ClassPath;
                    else
                    {
                        xmlDocument = XmlDatasetHelper.AddReferenceToXml(xmlDocument, nodeNames.entity.ToString(),
                            metadataStructureModel.Entity.ClassPath, AttributeType.entity.ToString(), "extra/entity");
                    }

                    //set active
                    tmp = XmlUtility.GetXmlNodeByAttribute(xmlDocument.DocumentElement, nodeNames.parameter.ToString(),
                        AttributeNames.name.ToString(), NameAttributeValues.active.ToString());
                    if (tmp != null)
                        tmp.Attributes[AttributeNames.value.ToString()].Value = metadataStructureModel.Active.ToString();
                    else
                    {
                        xmlDocument = XmlDatasetHelper.AddReferenceToXml(xmlDocument,
                            NameAttributeValues.active.ToString(),
                            metadataStructureModel.Active.ToString(), AttributeType.parameter.ToString(),
                            "extra/parameters/parameter");

                    }

                    metadataStructure.Extra = xmlDocument;
                }

            }
            return metadataStructure;
        }