/********************************************************************++ Copyright (c) Microsoft Corporation. All rights reserved. --********************************************************************/ using System; using System.Collections; namespace Microsoft.PowerShell.Cmdletization { /// /// Describes whether to report errors when a given filter doesnt match any objects /// public enum BehaviorOnNoMatch { /// /// Default behavior is to be consistent with the built-in cmdlets: /// - When a wildcard is specified, then no errors are reported (i.e. Get-Process -Name noSuchProcess*) /// - When no wildcard is specified, then errors are reported (i.e. Get-Process -Name noSuchProcess) /// /// Note that the following conventions are adpoted: /// - Min/max queries /// ( and /// ) /// are treated as wildcards /// - Exclusions /// () /// are treated as wildcards /// - Associations /// () /// are treated as not a wildcard /// Default = 0, /// /// ReportErrors forces reporting of errors that in other circumstances would be reported if no objects matched the filters /// ReportErrors, /// /// SilentlyContinue suppresses errors that in other circumstances would be reported if no objects matched the filters /// SilentlyContinue, } /// /// QueryBuilder supports building of object model queries in an object-model-agnostic way /// public abstract class QueryBuilder { /// /// Modifies the query, so that it only returns objects with a given property value /// /// Property name to query on /// Property values to accept in the query /// /// true if should be treated as a containing a wildcard pattern; /// false otherwise /// /// /// Describes how to handle filters that didn't match any objects /// public virtual void FilterByProperty(string propertyName, IEnumerable allowedPropertyValues, bool wildcardsEnabled, BehaviorOnNoMatch behaviorOnNoMatch) { throw new NotImplementedException(); } /// /// Modifies the query, so that it does not return objects with a given property value /// /// Property name to query on /// Property values to reject in the query /// /// true if should be treated as a containing a wildcard pattern; /// false otherwise /// /// /// Describes how to handle filters that didn't match any objects /// public virtual void ExcludeByProperty(string propertyName, IEnumerable excludedPropertyValues, bool wildcardsEnabled, BehaviorOnNoMatch behaviorOnNoMatch) { throw new NotImplementedException(); } /// /// Modifies the query, so that it returns only objects that have a property value greater than or equal to a threshold /// /// Property name to query on /// Minimum property value /// /// Describes how to handle filters that didn't match any objects /// public virtual void FilterByMinPropertyValue(string propertyName, object minPropertyValue, BehaviorOnNoMatch behaviorOnNoMatch) { throw new NotImplementedException(); } /// /// Modifies the query, so that it returns only objects that have a property value less than or equal to a threshold /// /// Property name to query on /// Maximum property value /// /// Describes how to handle filters that didn't match any objects /// public virtual void FilterByMaxPropertyValue(string propertyName, object maxPropertyValue, BehaviorOnNoMatch behaviorOnNoMatch) { throw new NotImplementedException(); } /// /// Modifies the query, so that it returns only objects associated with /// /// object that query results have to be associated with /// name of the association /// name of the role that has in the association /// name of the role that query results have in the association /// /// Describes how to handle filters that didn't match any objects /// public virtual void FilterByAssociatedInstance(object associatedInstance, string associationName, string sourceRole, string resultRole, BehaviorOnNoMatch behaviorOnNoMatch) { throw new NotImplementedException(); } /// /// Sets a query option /// /// /// public virtual void AddQueryOption(string optionName, object optionValue) { throw new NotImplementedException(); } } }