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;
}