/// <summary> /// Checks if a preset includes a given item /// </summary> protected PredicateResult Includes(PresetTreeRoot entry, IItemData itemData) { // check for db match if (!itemData.DatabaseName.Equals(entry.DatabaseName, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check for path match var unescapedPath = entry.Path.Replace(@"\*", "*"); if (!itemData.Path.StartsWith(unescapedPath + "/", StringComparison.OrdinalIgnoreCase) && !itemData.Path.Equals(unescapedPath, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check for include match if (!string.IsNullOrEmpty(entry.NamePattern)) { var regexPattern = new Regex($"^{entry.NamePattern}$", RegexOptions.IgnoreCase); if (!regexPattern.IsMatch(itemData.Name)) { return(new PredicateResult(false)); } } // check excludes return(ExcludeMatches(entry, itemData)); }
private string GetFieldTransformsDescription(PresetTreeRoot entry) { if (entry.FieldValueManipulator == null) { return(string.Empty); } return($"<br />- Field Transforms: {string.Join(", ", entry.FieldValueManipulator.GetFieldValueTransformers().Select(transformer => transformer.Description))}"); }
private string GetExcludeDescription(PresetTreeRoot entry) { if (entry.Exclude.Count == 0) { return(string.Empty); } return(string.Format(" (except {0})", string.Join(", ", entry.Exclude.Select(x => x.Type + ":" + x.Value)))); }
private string GetExcludeDescription(PresetTreeRoot entry) { if (entry.Exclusions.Count == 0) { return(string.Empty); } // ReSharper disable once UseStringInterpolation return(string.Format(" (except {0})", string.Join(", ", entry.Exclusions.Select(exclude => exclude.Description)))); }
protected virtual PredicateResult ExcludeMatches(PresetTreeRoot entry, IItemData itemData) { foreach (var exclude in entry.Exclusions) { var result = exclude.Evaluate(itemData.Path); if (!result.IsIncluded) return result; } return new PredicateResult(true); }
protected virtual PredicateResult ExcludeMatches(PresetTreeRoot entry, IItemData itemData) { PredicateResult result = ExcludeMatchesPath(entry.Exclude, itemData.Path); if (!result.IsIncluded) { return(result); } return(result); }
/// <summary> /// Checks if a preset includes a given item /// </summary> protected PredicateResult Includes(PresetTreeRoot entry, IItemData itemData) { // check for db match if (!itemData.DatabaseName.Equals(entry.DatabaseName, StringComparison.OrdinalIgnoreCase)) return new PredicateResult(false); // check for path match if (!itemData.Path.StartsWith(entry.Path, StringComparison.OrdinalIgnoreCase)) return new PredicateResult(false); // check excludes return ExcludeMatches(entry, itemData); }
protected virtual PredicateResult ExcludeMatches(PresetTreeRoot entry, IItemData itemData) { foreach (var exclude in entry.Exclusions) { var result = exclude.Evaluate(itemData); if (!result.IsIncluded) { return(result); } } return(new PredicateResult(true)); }
protected virtual PresetTreeRoot CreateIncludeEntry(XmlNode configuration, FieldTransformsCollection predicateFieldFilterCollection) { string database = GetExpectedAttribute(configuration, "database"); string path = GetExpectedAttribute(configuration, "path"); // ReSharper disable once PossibleNullReferenceException var name = configuration.Attributes["name"]; string nameValue = name == null?path.Substring(path.LastIndexOf('/') + 1) : name.Value; var root = new PresetTreeRoot(nameValue, path, database); root.Exclusions = configuration.ChildNodes .OfType <XmlElement>() .Where(element => element.Name.Equals("exclude")) .Select(excludeNode => CreateExcludeEntry(excludeNode, root)) .ToList(); string fieldFilter = GetOptionalAttribute(configuration, "fieldTransforms"); FieldTransformsCollection localFieldFilters = null; if (!string.IsNullOrEmpty(fieldFilter)) { localFieldFilters = MagicTokenTransformer.GetFieldTransforms(fieldFilter); } FieldTransformsCollection finalFilters = null; if (localFieldFilters != null) { if (predicateFieldFilterCollection != null) { finalFilters = predicateFieldFilterCollection.MergeFilters(localFieldFilters); } else { finalFilters = localFieldFilters; } } else { finalFilters = predicateFieldFilterCollection; } if (finalFilters != null) { root.FieldValueManipulator = finalFilters; } return(root); }
/// <summary> /// Checks if a preset includes a given item /// </summary> protected PredicateResult Includes(PresetTreeRoot entry, IItemData itemData) { // check for db match if (!itemData.DatabaseName.Equals(entry.DatabaseName, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check for path match if (!itemData.Path.StartsWith(entry.Path, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check excludes return(ExcludeMatches(entry, itemData)); }
/// <summary> /// Checks if a preset includes a given item /// </summary> protected PredicateResult Includes(PresetTreeRoot entry, IItemData itemData) { // check for db match if (!itemData.DatabaseName.Equals(entry.DatabaseName, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check for path match var unescapedPath = entry.Path.Replace(@"\*", "*"); if (!itemData.Path.StartsWith(unescapedPath + "/", StringComparison.OrdinalIgnoreCase) && !itemData.Path.Equals(unescapedPath, StringComparison.OrdinalIgnoreCase)) { return(new PredicateResult(false)); } // check excludes return(ExcludeMatches(entry, itemData)); }
protected virtual PresetTreeRoot CreateIncludeEntry(XmlNode configuration) { string database = GetExpectedAttribute(configuration, "database"); string path = GetExpectedAttribute(configuration, "path"); // ReSharper disable once PossibleNullReferenceException var name = configuration.Attributes["name"]; string nameValue = name == null?path.Substring(path.LastIndexOf('/') + 1) : name.Value; var root = new PresetTreeRoot(nameValue, path, database); root.Exclusions = configuration.ChildNodes .OfType <XmlElement>() .Where(element => element.Name.Equals("exclude")) .Select(excludeNode => CreateExcludeEntry(excludeNode, root)) .ToList(); return(root); }
/// <summary> /// Checks if a preset includes a given item /// </summary> protected PredicateResult Includes(PresetTreeRoot entry, IItemData itemData) { // check for db match if (!itemData.DatabaseName.Equals(entry.DatabaseName, StringComparison.OrdinalIgnoreCase)) return new PredicateResult(false); // check for path match var unescapedPath = entry.Path.Replace(@"\*", "*"); if (!itemData.Path.StartsWith(unescapedPath + "/", StringComparison.OrdinalIgnoreCase) && !itemData.Path.Equals(unescapedPath, StringComparison.OrdinalIgnoreCase)) { return new PredicateResult(false); } // check excludes return ExcludeMatches(entry, itemData); }
protected virtual IPresetTreeExclusion CreateExcludeEntry(XmlElement excludeNode, PresetTreeRoot root) { if (excludeNode.HasAttribute("path")) { return(new PathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "path"), root)); } if (excludeNode.HasAttribute("templateId")) { return(new TemplateBasedPresetExclusion(GetExpectedAttribute(excludeNode, "templateId"))); } if (excludeNode.HasAttribute("namePattern")) { return(new NameBasedPresetExclusion(GetExpectedAttribute(excludeNode, "namePattern"))); } ExceptionRule[] exclusions = excludeNode.ChildNodes .OfType <XmlElement>() .Where(element => element.Name.Equals("except") && element.HasAttribute("name")) .Select(element => { var name = GetExpectedAttribute(element, "name"); var excludeChildren = bool.FalseString.Equals(element.Attributes["includeChildren"]?.Value, StringComparison.InvariantCultureIgnoreCase); return(new ExceptionRule { Name = name, IncludeChildren = !excludeChildren }); }) .ToArray(); if (excludeNode.HasAttribute("children")) { return(new ChildrenOfPathBasedPresetTreeExclusion(root.Path, exclusions, root)); } if (excludeNode.HasAttribute("childrenOfPath")) { return(new ChildrenOfPathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "childrenOfPath"), exclusions, root)); } throw new InvalidOperationException($"Unable to parse invalid exclusion value: {excludeNode.OuterXml}"); }
private string GetExcludeDescription(PresetTreeRoot entry) { if (entry.Exclude.Count == 0) return string.Empty; return string.Format(" (except {0})", string.Join(", ", entry.Exclude.Select(x => x.Type + ":" + x.Value))); }
protected virtual IPresetTreeExclusion CreateExcludeEntry(XmlElement excludeNode, PresetTreeRoot root) { if (excludeNode.HasAttribute("path")) { return(new PathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "path"), root)); } var exclusions = excludeNode.ChildNodes .OfType <XmlElement>() .Where(element => element.Name.Equals("except") && element.HasAttribute("name")) .Select(element => GetExpectedAttribute(element, "name")) .ToArray(); if (excludeNode.HasAttribute("children")) { return(new ChildrenOfPathBasedPresetTreeExclusion(root.Path, exclusions, root)); } if (excludeNode.HasAttribute("childrenOfPath")) { return(new ChildrenOfPathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "childrenOfPath"), exclusions, root)); } throw new InvalidOperationException($"Unable to parse invalid exclusion value: {excludeNode.InnerXml}"); }
protected virtual PredicateResult ExcludeMatches(PresetTreeRoot entry, IItemData itemData) { PredicateResult result = ExcludeMatchesPath(entry.Exclude, itemData.Path); if (!result.IsIncluded) return result; return result; }
protected virtual IPresetTreeExclusion CreateExcludeEntry(XmlElement excludeNode, PresetTreeRoot root) { if (excludeNode.HasAttribute("path")) { return new PathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "path"), root); } var exclusions = excludeNode.ChildNodes .OfType<XmlElement>() .Where(element => element.Name.Equals("except") && element.HasAttribute("name")) .Select(element => GetExpectedAttribute(element, "name")) .ToArray(); if (excludeNode.HasAttribute("children")) { return new ChildrenOfPathBasedPresetTreeExclusion(root.Path, exclusions, root); } if (excludeNode.HasAttribute("childrenOfPath")) { return new ChildrenOfPathBasedPresetTreeExclusion(GetExpectedAttribute(excludeNode, "childrenOfPath"), exclusions, root); } throw new InvalidOperationException($"Unable to parse invalid exclusion value: {excludeNode.InnerXml}"); }
protected virtual PresetTreeRoot CreateIncludeEntry(XmlNode configuration) { string database = GetExpectedAttribute(configuration, "database"); string path = GetExpectedAttribute(configuration, "path"); // ReSharper disable once PossibleNullReferenceException var name = configuration.Attributes["name"]; string nameValue = name == null ? path.Substring(path.LastIndexOf('/') + 1) : name.Value; var root = new PresetTreeRoot(nameValue, path, database); root.Exclusions = configuration.ChildNodes .OfType<XmlElement>() .Where(element => element.Name.Equals("exclude")) .Select(excludeNode => CreateExcludeEntry(excludeNode, root)) .ToList(); return root; }
private string GetExcludeDescription(PresetTreeRoot entry) { if (entry.Exclusions.Count == 0) return string.Empty; // ReSharper disable once UseStringInterpolation return string.Format(" (except {0})", string.Join(", ", entry.Exclusions.Select(exclude => exclude.Description))); }