internal static string AddFingerprintTextProcessor(XDocument rulePackXDoc, Fingerprint fingerprint) { ArgumentValidator.ThrowIfNull("rulePackXDoc", rulePackXDoc); ArgumentValidator.ThrowIfNull("fingerprint", fingerprint); XElement xelement = rulePackXDoc.Descendants(XmlProcessingUtils.GetMceNsQualifiedNodeName("LocalizedStrings")).FirstOrDefault <XElement>(); if (xelement == null) { throw new ClassificationRuleCollectionInvalidObjectException(Strings.ClassificationRuleCollectionInvalidObject); } XElement fingerprintProcessor = XmlProcessingUtils.GetFingerprintProcessor(rulePackXDoc, fingerprint); if (fingerprintProcessor == null) { fingerprint.Identity = Guid.NewGuid().ToString(); fingerprint.ActualDescription = fingerprint.Description; xelement.AddBeforeSelf(fingerprint.ToXElement()); } else { fingerprint.Identity = XmlProcessingUtils.GetAttributeValue(fingerprintProcessor, "id"); string attributeValue = XmlProcessingUtils.GetAttributeValue(fingerprintProcessor, "description"); if (string.IsNullOrEmpty(attributeValue) && !string.IsNullOrEmpty(fingerprint.Description)) { fingerprintProcessor.SetAttributeValue("description", fingerprint.Description); fingerprint.ActualDescription = fingerprint.Description; } else { fingerprint.ActualDescription = attributeValue; } } return(fingerprint.Identity); }
internal static Fingerprint FromXElement(XElement element) { ArgumentValidator.ThrowIfNull("element", element); if (!"Fingerprint".Equals(element.Name.LocalName, StringComparison.Ordinal)) { throw new ErrorInvalidFingerprintException(element.ToString()); } string attributeValue = XmlProcessingUtils.GetAttributeValue(element, "id"); uint num = 0U; uint.TryParse(XmlProcessingUtils.GetAttributeValue(element, "shingleCount"), out num); string value = element.Value; string attributeValue2 = XmlProcessingUtils.GetAttributeValue(element, "description"); if (num <= 0U || string.IsNullOrEmpty(attributeValue) || string.IsNullOrEmpty(value)) { throw new ErrorInvalidFingerprintException(element.ToString()); } return(new Fingerprint(value, num, attributeValue2) { Identity = attributeValue }); }
internal static MultiValuedProperty <Fingerprint> ReadAllReferredFingerprints(XElement ruleElement) { ArgumentValidator.ThrowIfNull("ruleElement", ruleElement); ArgumentValidator.ThrowIfNull("ruleElement.Document", ruleElement.Document); List <string> distinctTextProcessorRefs = (from versionedTextProcessorReference in TextProcessorUtils.GetTextProcessorReferences(ruleElement) select versionedTextProcessorReference.Key).Distinct(ClassificationDefinitionConstants.TextProcessorIdComparer).ToList <string>(); IEnumerable <Fingerprint> value = from fingerprintElement in ruleElement.Document.Descendants(XmlProcessingUtils.GetMceNsQualifiedNodeName("Fingerprint")) where distinctTextProcessorRefs.Contains(XmlProcessingUtils.GetAttributeValue(fingerprintElement, "id")) let fingerprint = Fingerprint.FromXElement(fingerprintElement) select fingerprint; return(new MultiValuedProperty <Fingerprint>(value)); }