/// <summary> /// Look at the part ref label for a possible duplicated node suffix to put on the new label. /// Will be of the format "(x)" where x is a digit, except there could be more than one /// separated by spaces. /// </summary> /// <param name="partRefNode"></param> /// <returns></returns> public static string GetPossibleLabelSuffix(XmlNode partRefNode) { var label = partRefNode.GetOptionalStringAttribute(LabelAttr, string.Empty); if (string.IsNullOrEmpty(label)) return string.Empty; var regexp = new Regex(LabelRegExString); var match = regexp.Match(label); // if there's a match, we want everything after the index return match.Success ? label.Substring(match.Index) : string.Empty; }
/// <summary> /// Look at the part ref param attribute for a possible duplicated node suffix to copy to /// the new param attribute. /// Will be of the format "%0x" where x is a digit. /// </summary> /// <param name="partRefNode"></param> /// <returns></returns> public static string GetPossibleParamSuffix(XmlNode partRefNode) { var param = partRefNode.GetOptionalStringAttribute(ParamAttr, string.Empty); if (string.IsNullOrEmpty(param)) return string.Empty; var index = param.IndexOf(kcMarkNodeCopy); if (index > 0) return param.Substring(index); return string.Empty; }
public static string GetId(XmlNode e) { return e.GetOptionalStringAttribute("id", string.Empty); }
private void CheckForAndReattachLayoutParamSuffix(XmlNode workingNode) { if (string.IsNullOrEmpty(m_layoutParamAttrSuffix) || string.IsNullOrEmpty(workingNode.GetOptionalStringAttribute(ParamAttr, string.Empty))) return; // nothing to do var xaParam = workingNode.Attributes[ParamAttr]; xaParam.Value = xaParam.Value + m_layoutParamAttrSuffix; }
private void FixUpPartRefLabelAttrForDupNode(XmlNode partRefNode, string dupKey) { if (string.IsNullOrEmpty(partRefNode.GetOptionalStringAttribute(LabelAttr, string.Empty))) return; // nothing to do var xaLabel = partRefNode.Attributes[LabelAttr]; string suffix; if (m_labelAttrSuffix.TryGetValue(dupKey, out suffix)) { xaLabel.Value = xaLabel.Value + suffix; } }
// // public void WriteXml(XmlWriter writer) // { // writer.WriteStartElement("MergeSituation"); // writer.WriteAttributeString("PathToFileInRepository",this.PathToFileInRepository); // writer.WriteEndElement(); // } public static MergeSituation FromXml(XmlNode node) { var modeLabel = node.GetOptionalStringAttribute("conflictHandlingMode", string.Empty); MergeOrder.ConflictHandlingModeChoices mode; try { mode = (MergeOrder.ConflictHandlingModeChoices) Enum.Parse(typeof (MergeOrder.ConflictHandlingModeChoices), modeLabel); } catch (Exception) { mode = MergeOrder.ConflictHandlingModeChoices.Unknown; } //Note, we can't use the normal construtor, because it switches who is alpha/beta //depending on the conflict handling mode. We don't want to switch them again //when we're re-constituting the situation var situation = new MergeSituation(node.GetStringAttribute("path"), mode); situation.AlphaUserId = node.GetStringAttribute("alphaUserId"); situation.AlphaUserRevision = node.GetStringAttribute("alphaUserRevision"); situation.BetaUserId = node.GetStringAttribute("betaUserId"); situation.BetaUserRevision = node.GetStringAttribute("betaUserRevision"); return situation; }
public static ContextDescriptor CreateFromXml(XmlNode xmlRepresentation) { var path = xmlRepresentation.GetOptionalStringAttribute("contextPath", "missing"); var label = xmlRepresentation.GetOptionalStringAttribute("contextDataLabel", "missing"); return new ContextDescriptor(label, path); }