Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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
            });
        }
Ejemplo n.º 3
0
        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));
        }