Class ExtensibleColumnsBase
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Inherited Members
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.dll
Syntax
public abstract class ExtensibleColumnsBase : IArchiveProviderHasColumns, IArchiveProviderExtensible, IArchiveProviderQueryMapping
Constructors
ExtensibleColumnsBase()
Construct the instance, and the Column and Extensible helpers. The extensible helper will call AddExtendersToProvider(IArchiveProviderExtensible) on our behalf and thus also add any partner-defined extenders at this time.
Declaration
protected ExtensibleColumnsBase()
Fields
AllowOrderBy
Symbolic boolean constant for ArchiveColumnInfo constructor, evaluates to 'true'
Declaration
protected const bool AllowOrderBy = true
Field Value
Type | Description |
---|---|
bool |
DenyOrderBy
Symbolic boolean constant for ArchiveColumnInfo constructor, evaluates to 'false'
Declaration
protected const bool DenyOrderBy = false
Field Value
Type | Description |
---|---|
bool |
GetAllRestriction
The name of the pseudo restriction that means "yes, I really want to fetch all rows"; simply sending no restrictions at all will yield an empty result, to guard against people inadvertently fetching the entire database.
Declaration
public const string GetAllRestriction = "getAllRows"
Field Value
Type | Description |
---|---|
string |
GetNoneRestriction
The name of the pseudo restriction that means the provider should not fetch any rows at all. database.
Declaration
public const string GetNoneRestriction = "getNoRows"
Field Value
Type | Description |
---|---|
string |
Invisible
Symbolic boolean constant for ArchiveColumnInfo constructor, evaluates to 'false'
Declaration
protected const bool Invisible = false
Field Value
Type | Description |
---|---|
bool |
Visible
Symbolic boolean constant for ArchiveColumnInfo constructor, evaluates to 'true'
Declaration
protected const bool Visible = true
Field Value
Type | Description |
---|---|
bool |
_minuteFields
Fields that are of type TimeSpan, come from Service, and are tagged as containing Minutes rather than Seconds. Such fields need extra processing
Declaration
protected Dictionary<string, FieldInfo> _minuteFields
Field Value
Type | Description |
---|---|
Dictionary<string, FieldInfo> |
Properties
BlockOrderBy
If true, no column can be used for orderby, regardless of what the archive column info says. During merging of the available columns, the CanorderBy attribute will be turned OFF for each column.
Declaration
protected bool BlockOrderBy { get; set; }
Property Value
Type | Description |
---|---|
bool |
ColumnHelper
The column helper that keeps track of available and desired columns
Declaration
protected ColumnHelper ColumnHelper { get; }
Property Value
Type | Description |
---|---|
ColumnHelper |
DebugXML
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public XmlDocument DebugXML { get; }
Property Value
Type | Description |
---|---|
XmlDocument |
DisableSubtreeIfNoRestriction
Should this extender and its children be disabled if there are no restrictions?
Declaration
protected bool DisableSubtreeIfNoRestriction { get; set; }
Property Value
Type | Description |
---|---|
bool |
DisplayNamePrefix
Get the current display name prefix; this is a facade for DisplayNamePrefix.
Declaration
public string DisplayNamePrefix { get; }
Property Value
Type | Description |
---|---|
string |
ExtensibleHelper
The extensible helper that provides the Extensibility functionality
Declaration
protected ExtensibleHelper ExtensibleHelper { get; }
Property Value
Type | Description |
---|---|
ExtensibleHelper |
ForceQueryNeeded
If true, the query is considered 'needed' regardless of other criteria
Declaration
protected bool ForceQueryNeeded { get; set; }
Property Value
Type | Description |
---|---|
bool |
ForceRestriction
If true, the query is considered a restriction regardless of other criteria; this will cause left outer joins to become inner, and InnerModifyQuery to be called; IsQueryNeeded will also be forced to true
Declaration
protected bool ForceRestriction { get; set; }
Property Value
Type | Description |
---|---|
bool |
IdField
Get the field that represents the ID (primary key) of the query. The SET method should only be called if you really need to change the ID field late in the processing; usually you should call the MapIdField(FieldInfo) method from ModifyQuery.
Declaration
public FieldInfo IdField { get; protected set; }
Property Value
Type | Description |
---|---|
FieldInfo |
LastSubExtenderWins
When using subextenders, normally the first one to have a value should win. Setting 'true' here will invert that behaviour, per extender, not per subextender (so person can win over contact, even if contact is evaluated first)
Declaration
protected bool LastSubExtenderWins { get; set; }
Property Value
Type | Description |
---|---|
bool |
NamePrefix
Get the current name prefix; this is a facade for NamePrefix.
Declaration
public string NamePrefix { get; }
Property Value
Type | Description |
---|---|
string |
OrderBySlots
Return the OrderBySlots maintained by the parent query provider
Declaration
public virtual OrderByStorage OrderBySlots { get; }
Property Value
Type | Description |
---|---|
OrderByStorage |
Parent
Reference to the provider this class is extending (this is a base for extensible providers)
Declaration
public IArchiveProviderExtensible Parent { get; }
Property Value
Type | Description |
---|---|
IArchiveProviderExtensible |
ParentPrimaryKey
The primary key field of the table that is the "logical parent entity" of the current table, if the concept is meaningful. It is used for things like the text table, which might represent a contact paperclip, an appointment text or something else; in which case it would be e.g., contact.contact_id or appointment.appointment_id.
The __dbParentPrimaryKey is populated from this.Declaration
public FieldInfo ParentPrimaryKey { get; protected set; }
Property Value
Type | Description |
---|---|
FieldInfo |
PopulateDisplayValue
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public bool PopulateDisplayValue { get; }
Property Value
Type | Description |
---|---|
bool |
PopulateTooltipHint
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public bool PopulateTooltipHint { get; }
Property Value
Type | Description |
---|---|
bool |
QuoteAlternativeId
Extenders that use ERP Connector Lists - these have string keys instead of longid's - have to provide a FieldInfo that identifies a QuoteAlternativeId or a SaleId. One of these is required by such lists to dispatch correctly to the ERP Connector that contains the list provider. If you need joins to obtain it, then that's your responsibility :-).
Declaration
protected FieldInfo QuoteAlternativeId { get; set; }
Property Value
Type | Description |
---|---|
FieldInfo |
RestrictionHelper
The restriction helper that keeps track of restrictions and builds sql (via RestrictionOperations)
Declaration
protected RestrictionHelper RestrictionHelper { get; }
Property Value
Type | Description |
---|---|
RestrictionHelper |
RestrictionSetForSubtree
Has a restriction been set for this extender or any of its children?
Declaration
protected bool RestrictionSetForSubtree { get; }
Property Value
Type | Description |
---|---|
bool |
RootQuery
Return the Root query by referring to the parent provider that this class is extending. A derived class that is NOT an Extender should override this property and return its own query.
Declaration
public virtual ArchiveSelect RootQuery { get; }
Property Value
Type | Description |
---|---|
ArchiveSelect |
SaleId
Extenders that use ERP Connector Lists - these have string keys instead of longid's - have to provide a FieldInfo that identifies a SaleId or a QuoteAlternativeId. One of these is required by such lists to dispatch correctly to the ERP Connector that contains the list provider. If you need joins to obtain it, then that's your responsibility :-).
Declaration
protected FieldInfo SaleId { get; set; }
Property Value
Type | Description |
---|---|
FieldInfo |
TableToExtend
Return the table to extend, as defined by THIS extender class.
Declaration
public abstract TableInfo TableToExtend { get; }
Property Value
Type | Description |
---|---|
TableInfo |
Methods
ActivateAsLinkField(string, params ArchiveColumnInfo[])
Activate one or more columns as links, and set the link hint base. Columns must previously have been mapped using MapSimpleReturnField(FieldInfo, params ArchiveColumnInfo[]) or one of the related methods.
Declaration
protected void ActivateAsLinkField(string linkBase, params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
string | linkBase | The base of the link; the current id field and its value will be added automatically |
ArchiveColumnInfo[] | columns | The column(s) to be activated |
Examples
Assume there are columns called _colName and _colId:
MapSimpleReturnField( _ourPersonTable.FirstName, _colName );
MapSimpleReturnField( _ourPersonTable.PersonId, _colId );
ActivateAsLinkField( "nav=person", _colName, _colId );
AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType)
Method for adding an extender. The parent is set to be the current class.
Declaration
protected ExtenderType AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType extender) where ExtenderType : IArchiveExtender
Parameters
Type | Name | Description |
---|---|---|
ExtenderType | extender | Extender to be added |
Returns
Type | Description |
---|---|
ExtenderType | The added extender |
Type Parameters
Name | Description |
---|---|
ExtenderType |
Remarks
The return type is the same type as the incoming parameter, making it possible to assign the result to a strongly typed variable.
The order of calls to this method influences column order in the GUI: columns are displayed in the same order that their extenders are registered using this method.AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType, string, string)
Method for adding an extender that also sets prefixes. The parent is set to be the current class.
Declaration
protected ExtenderType AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType extender, string namePrefix, string displayNamePrefix) where ExtenderType : IArchiveExtender
Parameters
Type | Name | Description |
---|---|---|
ExtenderType | extender | Extender to be added |
string | namePrefix | Name prefix to set, can be null/empty |
string | displayNamePrefix | Display name prefix to set, can be null/empty |
Returns
Type | Description |
---|---|
ExtenderType | The added extender |
Type Parameters
Name | Description |
---|---|
ExtenderType |
Remarks
The return type is the same type as the incoming parameter, making it possible to assign the result to a strongly typed variable.
The order of calls to this method influences column order in the GUI: columns are displayed in the same order that their extenders are registered using this method.AddAssociateFullName(SoDataReader, ArchiveRow, ArchiveColumnInfo, params FieldInfo[])
Adds overlapping column with full name of first valid associate field, or empty string if no valid field could be found
Declaration
protected void AddAssociateFullName(SoDataReader reader, ArchiveRow row, ArchiveColumnInfo column, params FieldInfo[] associates)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row | |
ArchiveColumnInfo | column | |
FieldInfo[] | associates | The first valid field value will be used to get full name. |
AddAvailableColumn(params ArchiveColumnInfo[])
Add one or more columns to the list of available columns for this client class
Declaration
protected void AddAvailableColumn(params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo[] | columns | One or more column information data blocks |
AddColumnNameOverride(string, string)
Add a column name override. Overrides work by being applied to the result of the GetAvailableColumns(), and again (in reverse) in the implementation of SetDesiredColumns(params string[]) and SetOrderBy(ArchiveOrderByInfo[]). The original name of an override column must include any prefixes and the prefix separators.
Declaration
public void AddColumnNameOverride(string originalName, string overrideName)
Parameters
Type | Name | Description |
---|---|---|
string | originalName | Name to override, including any prefixes it might have |
string | overrideName | Name to substitute |
AddDbInfo(ArchiveColumnData, FieldInfo)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public ArchiveColumnData AddDbInfo(ArchiveColumnData columnData, FieldInfo fieldInfo)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnData | columnData | |
FieldInfo | fieldInfo |
Returns
Type | Description |
---|---|
ArchiveColumnData |
AddDbInfo(ArchiveColumnData, int)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public ArchiveColumnData AddDbInfo(ArchiveColumnData columnData, int dbFieldId)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnData | columnData | |
int | dbFieldId |
Returns
Type | Description |
---|---|
ArchiveColumnData |
AddExtensionProvider(IArchiveExtender)
Add an extender to this provider
Declaration
public void AddExtensionProvider(IArchiveExtender extender)
Parameters
Type | Name | Description |
---|---|---|
IArchiveExtender | extender | Extender to be added |
AddLastUpdatedMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
Adds default mapping for the last updated
Declaration
protected void AddLastUpdatedMapping(ArchiveColumnInfo column, FieldInfo registered, FieldInfo updated)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | column | |
FieldInfo | registered | |
FieldInfo | updated |
AddLocalRestriction(params ArchiveRestrictionInfo[])
Add a restriction to this class only - this method does not recurse into extenders. The restriction must be one of the available columns of this particular class or its subclasses in this instance
Declaration
public virtual bool AddLocalRestriction(params ArchiveRestrictionInfo[] restrictions)
Parameters
Type | Name | Description |
---|---|---|
ArchiveRestrictionInfo[] | restrictions | Restrictions to be added |
Returns
Type | Description |
---|---|
bool |
AddRegisteredMapping(ArchiveColumnInfo, FieldInfo, ArchiveColumnInfo, FieldInfo)
Add default mapping for Registered columns
Declaration
protected void AddRegisteredMapping(ArchiveColumnInfo registeredByColumn, FieldInfo registeredBy, ArchiveColumnInfo registeredDateColumn, FieldInfo registeredDate)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | registeredByColumn | |
FieldInfo | registeredBy | |
ArchiveColumnInfo | registeredDateColumn | |
FieldInfo | registeredDate |
AddSubExtenderMapping(string, params ExtensibleColumnsBase[])
Add a sub extender mapping for a column: a mapping that specifies that the first available subextender that has a valid valid for the column, will become the supplier of that column.
Declaration
protected void AddSubExtenderMapping(string columnName, params ExtensibleColumnsBase[] subExtenders)
Parameters
Type | Name | Description |
---|---|---|
string | columnName | Column name to map (any prefixes it has will NOT be propagated to subextenders; instead, the subextenders' own prefix for the column base name will be used) |
ExtensibleColumnsBase[] | subExtenders | Subextenders to map this column to |
Remarks
Repeated calls are OK - you can add more mappings to one column over several calls. Duplicates are quietly ignored.
AddUpdatedBy(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void AddUpdatedBy(SoDataReader reader, ArchiveRow row, ArchiveColumnInfo column, FieldInfo registered, FieldInfo updated)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row | |
ArchiveColumnInfo | column | |
FieldInfo | registered | |
FieldInfo | updated |
AddUpdatedByMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
Adds default handling of the updated column.
Declaration
protected void AddUpdatedByMapping(ArchiveColumnInfo column, FieldInfo registeredBy, FieldInfo updatedBy)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | column | |
FieldInfo | registeredBy | |
FieldInfo | updatedBy |
AddUpdatedDate(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo, bool)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void AddUpdatedDate(SoDataReader reader, ArchiveRow row, ArchiveColumnInfo column, FieldInfo registered, FieldInfo updated, bool convertToUtc = false)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row | |
ArchiveColumnInfo | column | |
FieldInfo | registered | |
FieldInfo | updated | |
bool | convertToUtc |
ApplyColumnNameOverrides(ArchiveRow)
Apply column name overrides to an ArchiveRow. If your class uses column name overrides, it must call this method to apply them to a row being constructed, otherwise the original column names will be used.
Declaration
protected void ApplyColumnNameOverrides(ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
ArchiveRow | row | Data row to scan and update |
ApplyColumnNameOverridesToRestrictions()
After restrictions have been processed, column name overrides that apply to sub-extenders need to be applied to the sql expansions generated, since sub-extenders are unaware of the overrides created by their parents.
Declaration
protected void ApplyColumnNameOverridesToRestrictions()
CalculateOrderbyValue(string, SoDataReader, ArchiveColumnData)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public ArchiveColumnData CalculateOrderbyValue(string name, SoDataReader reader, ArchiveColumnData columnData)
Parameters
Type | Name | Description |
---|---|---|
string | name | |
SoDataReader | reader | |
ArchiveColumnData | columnData |
Returns
Type | Description |
---|---|
ArchiveColumnData |
ConvertDbTypeToString(object, DbColumnBinding)
Convert a database data type into a string, using invariant culture format providers.
Declaration
protected string ConvertDbTypeToString(object colValue, ExtensibleColumnsBase.DbColumnBinding bindingInfo)
Parameters
Type | Name | Description |
---|---|---|
object | colValue | Typed column value |
ExtensibleColumnsBase.DbColumnBinding | bindingInfo |
Returns
Type | Description |
---|---|
string | String equivalent of incoming value |
ExtractRestriction(ArchiveColumnInfo)
Find and return the given restriction, or null if it does not exist
Declaration
protected ArchiveRestrictionInfo ExtractRestriction(ArchiveColumnInfo restrictionColumn)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | restrictionColumn | Name of restriction, case-insensitive |
Returns
Type | Description |
---|---|
ArchiveRestrictionInfo | Restriction, or null |
ExtractRestriction(string)
Find and return the given restriction, or null if it does not exist
Declaration
protected ArchiveRestrictionInfo ExtractRestriction(string restrictionName)
Parameters
Type | Name | Description |
---|---|---|
string | restrictionName | Name of restriction, case-insensitive |
Returns
Type | Description |
---|---|
ArchiveRestrictionInfo | Restriction, or null |
ExtractRestrictions(ArchiveColumnInfo)
Find and return the given restriction, or null if it does not exist
Declaration
protected List<ArchiveRestrictionInfo> ExtractRestrictions(ArchiveColumnInfo restrictionColumn)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | restrictionColumn | Name of restriction, case-insensitive |
Returns
Type | Description |
---|---|
List<ArchiveRestrictionInfo> | Restriction, or null |
ExtractRestrictions(string)
Find and return the given restriction, or null if it does not exist
Declaration
protected List<ArchiveRestrictionInfo> ExtractRestrictions(string restrictionName)
Parameters
Type | Name | Description |
---|---|---|
string | restrictionName | Name of restriction, case-insensitive |
Returns
Type | Description |
---|---|
List<ArchiveRestrictionInfo> | Restriction, or null |
ForceDisable()
Calling this method will force the extender to disable itself and its own extenders. Disabling means that it will return 'false' to the IsQueryNeeded and IsQueryRestriction, and will not expect to be called for ModifyQuery or PopulateRowFromReader.
Declaration
public void ForceDisable()
GetArchiveColumnName(SoField)
Gets the archive column name using the SoField as reference.
Declaration
public string GetArchiveColumnName(SoField field)
Parameters
Type | Name | Description |
---|---|---|
SoField | field |
Returns
Type | Description |
---|---|
string | Returns archive column name, null if no SoField match was found. |
Remarks
Method is invoked on child extenders and stops at the first match. Can only be run after ModifyQuery() has been invoked.
GetAssociateData(int)
Construct a standard archive column representing an associate. The value will be the initials (user name), and the tooltip hint will point to the full associate.
Declaration
protected ArchiveColumnData GetAssociateData(int assocId)
Parameters
Type | Name | Description |
---|---|---|
int | assocId | Associate id to look up |
Returns
Type | Description |
---|---|
ArchiveColumnData | Archive column data with display value and tooltip hint |
GetAvailableColumns()
Get the list of available columns provided by this provider and all its known extenders. Any column name overrides are applied before the result is returned to the caller.
Declaration
public virtual List<ArchiveColumnInfo> GetAvailableColumns()
Returns
Type | Description |
---|---|
List<ArchiveColumnInfo> | List of available columns |
Remarks
Merging columns from extenders is a fairly expensive operation, that also sets the ranks of the columns; we don't want to do it too often. We assume all columns are set up by constructors, making it safe to keep a cache at each level that will answer any further requests
GetColumnIndex(ArchiveColumnInfo)
Retrieve the column index (in the data reader) of the given column. This method is valid only after PopulateSimpleFields(SoDataReader, ArchiveRow)has been called.
Declaration
protected int GetColumnIndex(ArchiveColumnInfo column)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | column | Column to look up |
Returns
Type | Description |
---|---|
int |
GetColumnIndexFromReader(SoDataReader, FieldInfo, ref int)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void GetColumnIndexFromReader(SoDataReader reader, FieldInfo info, ref int columnIndex)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
FieldInfo | info | |
int | columnIndex |
GetColumnOrderBy(string)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected ArchiveOrderByInfo GetColumnOrderBy(string columnName)
Parameters
Type | Name | Description |
---|---|---|
string | columnName |
Returns
Type | Description |
---|---|
ArchiveOrderByInfo |
GetEjUserData(int)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected ArchiveColumnData GetEjUserData(int ejUserId)
Parameters
Type | Name | Description |
---|---|---|
int | ejUserId |
Returns
Type | Description |
---|---|
ArchiveColumnData |
GetExtensionProviders()
Enumerate the extenders that are children of this extender
Declaration
public IEnumerable<IArchiveExtender> GetExtensionProviders()
Returns
Type | Description |
---|---|
IEnumerable<IArchiveExtender> |
GetIdFieldTag(SoDataReader)
Extract the ID field value from the reader and return it as a string; or empty string if something is missing. The field is tagged with its table name and the _id suffix, so the result is something like 'contact_id=1234'.
Declaration
protected string GetIdFieldTag(SoDataReader reader)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | Data reader with the current row |
Returns
Type | Description |
---|---|
string | ID field table name + _id= + value as string |
GetLeftOuterOrInnerJoin(Equal)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected JoinCompare GetLeftOuterOrInnerJoin(Equal primary)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary |
Returns
Type | Description |
---|---|
JoinCompare |
GetLeftOuterOrInnerJoin(Equal, Restriction)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected JoinCompare GetLeftOuterOrInnerJoin(Equal primary, Restriction additional)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary | |
Restriction | additional |
Returns
Type | Description |
---|---|
JoinCompare |
GetLinkHint(SoDataReader, string)
Get the standard link hint, provided the link hint base and the id field have been set. Otherwise an empty string is returned.
Declaration
protected string GetLinkHint(SoDataReader reader, string linkBase)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | data reader with the current row |
string | linkBase |
Returns
Type | Description |
---|---|
string | Link hint or empty string (never null) |
GetNameOrOverrideName(string)
Get the column name override
Declaration
public string GetNameOrOverrideName(string originalName)
Parameters
Type | Name | Description |
---|---|---|
string | originalName |
Returns
Type | Description |
---|---|
string |
GetStandardTooltipHint(SoDataReader, FieldInfo)
Generate the standard tooltip hint for an item. This is a reference to the primary key field, as defined by a call to MapIdField(FieldInfo). If MapIdField has not been called, or if the current primary key is DBNull (happens with outer joins that have no outer target), an empty string is returned.
Declaration
protected virtual string GetStandardTooltipHint(SoDataReader reader, FieldInfo actualDataField)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | Data reader containing the current row |
FieldInfo | actualDataField |
Returns
Type | Description |
---|---|
string |
GetTableInfosFromExtensionProviders()
Enumerate the TableToExtend of all extenders that are children of this extender; handle the known special cases
Declaration
public IEnumerable<TableInfo> GetTableInfosFromExtensionProviders()
Returns
Type | Description |
---|---|
IEnumerable<TableInfo> | Non-null TableInfo elements only; an extender that plays no role in this particular query (restrictions, columns) will provide no table |
HasAvailableColumn(string)
Determine whether the given column (by programmatic name) is in the current available columns list of THIS provider, excluding any extenders
Declaration
protected bool HasAvailableColumn(string name)
Parameters
Type | Name | Description |
---|---|---|
string | name | Programmatic column name to check |
Returns
Type | Description |
---|---|
bool | true if the name matches an available column |
HasRestriction(string)
Determine if a certain restriction has been specified.
Declaration
protected bool HasRestriction(string restrictionName)
Parameters
Type | Name | Description |
---|---|---|
string | restrictionName | Name of restriction to look for, case-insensitive |
Returns
Type | Description |
---|---|
bool | true if the given restriction has been specified |
InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
Derived classes should implement the population of ColumnData items for columns that are NOT handled by this base class in this method. Whether a column is handled by this base class is part of its database binding information, set by the various MapXXX methods.
Declaration
protected virtual void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | Data reader with the query result (one row) |
ArchiveRow | row | archive row to be populated |
IsQueryNeeded()
Determine if the query (addition) handled by this provider is needed. This happens if either at least one of this providers' columns has been chosen for fetch, or if at least one of the known extenders is itself needed, or if any column is needed for a restriction.
Declaration
public virtual bool IsQueryNeeded()
Returns
Type | Description |
---|---|
bool | true if the query modifications handled by this provider whould be implemented on the query |
Remarks
The result of the check is cached in the _isQueryChecked and _isQueryNeeded variables. Those are reset in SetDesiredColumns(params string[]), SetRestriction(params ArchiveRestrictionInfo[]) and SetOrderBy(ArchiveOrderByInfo[]). The mechanism is not quite foolproof, since it is possible to override those methods. However, under normal conditions it should work. (don't you love comments like this)
IsQueryRestriction()
Determine if the query (addition) handled by this provider is needed. This happens if either at least one of this providers' columns has been chosen for fetch, or if at least one of the known extenders is itself needed, or if any column is needed for a restriction.
Declaration
public virtual bool IsQueryRestriction()
Returns
Type | Description |
---|---|
bool | true if the query modifications handled by this provider whould be implemented on the query |
MapAssociateField(FieldInfo, ArchiveColumnInfo, bool)
Bind a column definition to a database field as an Associate. This will result in a column of type string, containing the associate user name and an appropriate tooltip hint, by magic.
Declaration
protected void MapAssociateField(FieldInfo fieldInfo, ArchiveColumnInfo column, bool handledByBaseClass = true)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Identification of the database field desired |
ArchiveColumnInfo | column | Archive column definition to map to |
bool | handledByBaseClass |
MapEjUserField(FieldInfo, ArchiveColumnInfo)
Bind a column definition to a database field as an EjUser. This will result in a column of type string, containing the ej user name and an appropriate tooltip hint, by magic.
Declaration
protected void MapEjUserField(FieldInfo fieldInfo, ArchiveColumnInfo column)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Identification of the database field desired |
ArchiveColumnInfo | column | Archive column definition to map to |
MapIdField(FieldInfo)
Define the database field that is the primary key field of this query. The primary key is used to discard any possible duplicates resulting from inconsistent data (particularly duplicated rank 1 rows)
Declaration
protected void MapIdField(FieldInfo fieldInfo)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Primary key information |
MapOrderByField(FieldInfo, ArchiveColumnInfo)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void MapOrderByField(FieldInfo orderByField, ArchiveColumnInfo column)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | orderByField | |
ArchiveColumnInfo | column |
MapPictureBlob(FieldInfo, ArchiveColumnInfo, BlobLinkType, int, int, int)
Handle images coming from the BinaryObject table via a BinaryObjectLink record. This method will add the required joins to the query, then call MapSimpleImageField(FieldInfo, ArchiveColumnInfo, int, int) for the actual population and scaling
Declaration
protected FieldInfo MapPictureBlob(FieldInfo linkField, ArchiveColumnInfo column, BlobLinkType linkType, int maxWidth = 2147483647, int maxHeight = 2147483647, int linkOwnerTableNumber = 2147483647)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | linkField | Field on parent table that the binaryobjectlink points to as source |
ArchiveColumnInfo | column | Archive column to bind to |
BlobLinkType | linkType | Blob link type |
int | maxWidth | Optional maximum width |
int | maxHeight | Optional maximum height |
int | linkOwnerTableNumber |
Returns
Type | Description |
---|---|
FieldInfo |
MapReturnField(ArchiveSelect, FieldInfo, bool, string, params ArchiveColumnInfo[])
Set the database binding and mapping information for one display column. Derived classes should call this method or one of the alternatives to take advantage of row population functionality. The given FieldInfo is added to the return values collection of the given query.
Declaration
protected ExtensibleColumnsBase.DbColumnBinding MapReturnField(ArchiveSelect query, FieldInfo fieldInfo, bool handledByBaseClass, string listTable, params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveSelect | query | The query to be updated |
FieldInfo | fieldInfo | Identification of the database field desired |
bool | handledByBaseClass | If true, population of this field in the ArchiveRow is to be handled by this base class, otherwise the derived class is taking responsibility for population or processing of this column |
string | listTable | If the column represents a list lookup, this parameter should be an SoTable whose SoTable.IsMDOTable property is true. If the handledByBaseClass parameter is true, the listTable parameter will be used to look up the name and tooltip corresponding to the list item index of the data column automatically during row population. |
ArchiveColumnInfo[] | columns | One or more archive column definitions. The first is the one that the data column (fieldInfo) is considered bound to; any further columns are used as indicators when deciding whether this fieldInfo should be added to the return fields. If at least one of the columns given here is part of the desired column list, then this fieldInfo will be added to the query. This can be used to indicate that a particular fieldInfo is needed by more than one archive display column. |
Returns
Type | Description |
---|---|
ExtensibleColumnsBase.DbColumnBinding | The newly creating DbColumnBinding object is returned |
MapSimpleCustomField(FieldInfo, params ArchiveColumnInfo[])
Simplified interface to MapReturnField(ArchiveSelect, FieldInfo, bool, string, params ArchiveColumnInfo[]) for the following common case:
- The RootQuery is to be modified
- The row population should be handled by this base class
- This is not a list field
Declaration
protected void MapSimpleCustomField(FieldInfo fieldInfo, params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Database field information |
ArchiveColumnInfo[] | columns | One or more columns; the first is the bound definition, additional column definitions will also trigger the addition of this fieldInfo to the query. |
MapSimpleImageField(FieldInfo, ArchiveColumnInfo, int, int)
Map handling for a "simple" image field, including optional scaledown to fit given dimensions (aspect ratio is maintained)
Declaration
protected void MapSimpleImageField(FieldInfo fieldInfo, ArchiveColumnInfo column, int maxWidth = 2147483647, int maxHeight = 2147483647)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Binary field with source data |
ArchiveColumnInfo | column | Archive column to bind to |
int | maxWidth | Optional maximum width |
int | maxHeight | Optional maximum height |
MapSimpleListReturnField(FieldInfo, string, params ArchiveColumnInfo[])
Simplified interface to MapReturnField(ArchiveSelect, FieldInfo, bool, string, params ArchiveColumnInfo[]) for the following common case:
- The RootQuery is to be modified
- The row population should be handled by this base class
- This IS a list field
Declaration
protected void MapSimpleListReturnField(FieldInfo fieldInfo, string listTable, params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Database field information |
string | listTable | Definition of the target list table to be used for lookup during row population |
ArchiveColumnInfo[] | columns | One or more columns; the first is the bound definition, additional column definitions will also trigger the addition of this fieldInfo to the query. |
MapSimpleReturnField(FieldInfo, params ArchiveColumnInfo[])
Simplified interface to MapReturnField(ArchiveSelect, FieldInfo, bool, string, params ArchiveColumnInfo[]) for the following common case:
- The RootQuery is to be modified
- The row population should be handled by this base class
- This is not a list field
Declaration
protected void MapSimpleReturnField(FieldInfo fieldInfo, params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
FieldInfo | fieldInfo | Database field information |
ArchiveColumnInfo[] | columns | One or more columns; the first is the bound definition, additional column definitions will also trigger the addition of this fieldInfo to the query. |
PopulateRowFromReader(SoDataReader, ArchiveRow)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
public virtual void PopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row |
PopulateSimpleFields(SoDataReader, ArchiveRow)
Handle the population of an ArchiveRow with fields that are known to this base class and have been bound with a flag declaring that they should be handled by the base class.
Declaration
protected void PopulateSimpleFields(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | Data reader with the current row from the database |
ArchiveRow | row | Archive data row being built |
Remarks
Population includes conversion from typed data values into strings via InvariantCulture format providers, lookup of list items, and generation of standard tooltip hints. List item lookup is based on the MDOListTableCache. Tooltip hints can be overwritten by the derived class if desired.
Column binding to data must be done using the MapReturnField(ArchiveSelect, FieldInfo, bool, string, params ArchiveColumnInfo[]) method or one of its alternatives.ProcessOrderBy()
Process order by information during query modification. For each order by column that matches a known database binding, add the orderby clause to the query. If the column has a separate fieldinfo specified for its orderby (as specified by MapOrderByField(FieldInfo, ArchiveColumnInfo), this field is used, otherwise the display field is used).
Declaration
protected virtual void ProcessOrderBy()
ProcessRestrictions()
Process restrictions during query processing. This is where the abstract syntax of the ArchiveRestrictionInfo objects is converted into Restriction clauses, and string-formatted parameters are converted into their proper form.
Declaration
protected virtual bool ProcessRestrictions()
Returns
Type | Description |
---|---|
bool | true if at least one of the currently set restrictions matched an available and bound column and was processed |
SetDesiredColumns(params string[])
Set the list of desired columns. This method sets the desired columns of this provider, as well as invoking the same call on all known extenders. Recursion will take it to the bottom. Any column name overrides are processed, i.e., replaced with the original inner names, so that the inner providers do not see the overrides.
Declaration
public virtual void SetDesiredColumns(params string[] columnIds)
Parameters
Type | Name | Description |
---|---|---|
string[] | columnIds | Array of programmatic column names |
SetIconHint(string)
Set the icon hint on all available columns
Declaration
public virtual void SetIconHint(string iconHint)
Parameters
Type | Name | Description |
---|---|---|
string | iconHint | Iconhint to be set on all columns |
Remarks
This method is usually called by the most-derived class in its initialization, because that is the point where the knowledge of exactly what table/query is being extended is present. For instance, the UdefExtenderBase does not really know whether it represents a person or contact, while the PersonUdefExtender does have this knowledge embedded in the type.
For this reason, the implementation here also does NOT call the _extensibleHelper to propagate the icon hint to other extenders - each extender is expected to set its own icon hint. Standard icon hint names can be found in the ArchiveListConstants classSetLeftOuterJoin(Equal)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SetLeftOuterJoin(Equal primary)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary |
SetLeftOuterJoin(Equal, Restriction)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SetLeftOuterJoin(Equal primary, Restriction additional)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary | |
Restriction | additional |
SetLeftOuterOrInnerJoin(Equal)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SetLeftOuterOrInnerJoin(Equal primary)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary |
SetLeftOuterOrInnerJoin(Equal, Restriction)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SetLeftOuterOrInnerJoin(Equal primary, Restriction additional)
Parameters
Type | Name | Description |
---|---|---|
Equal | primary | |
Restriction | additional |
SetLocalAbsolutePrefixes(string, string)
Set the name and display name prefixes, on this extender ONLY. No recursion, and no accumulation of prefixes, and no delimiters - column name will be the given prefix plus the base name and nothing else.
Declaration
public virtual void SetLocalAbsolutePrefixes(string namePrefix, string displayNamePrefix)
Parameters
Type | Name | Description |
---|---|---|
string | namePrefix | |
string | displayNamePrefix |
SetNonZeroBoolRestriction(ArchiveColumnInfo)
Use this to set restriction handling for an int column that works like a bool, where any non-zero value means 'true'
Declaration
protected void SetNonZeroBoolRestriction(ArchiveColumnInfo column)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | column |
SetOrderBy(ArchiveOrderByInfo[])
Set the order by parameters. This method sets the order by parameters of this provider, as well as invoking the same call on all known extenders. Recursion will take it to the bottom. This method actually only saves the orderby specification for use during query processing. Any column name overrides are processed, i.e., replaced with the original inner names, so that the inner providers do not see the overrides.
Declaration
public virtual void SetOrderBy(ArchiveOrderByInfo[] orderBy)
Parameters
Type | Name | Description |
---|---|---|
ArchiveOrderByInfo[] | orderBy | Array of order by criteria |
SetOrderByMapping(ArchiveColumnInfo, params ArchiveColumnInfo[])
Set a mapping for a column ordering. This is used when the client would like to order by a column that does not map directly to a database column, for instance the nameDepartment on contact. Using this mapping, the orderby would be mapped to the columns name and department instead.
Declaration
public void SetOrderByMapping(ArchiveColumnInfo keyColumn, params ArchiveColumnInfo[] mappedColumns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo | keyColumn | Column to map |
ArchiveColumnInfo[] | mappedColumns | What an orderby on the mapped column, should be mapped to |
SetOrderByMapping(string, params string[])
Set a mapping for a column ordering. This is used when the client would like to order by a column that does not map directly to a database column, for instance the nameDepartment on contact. Using this mapping, the orderby would be mapped to the columns name and department instead.
Declaration
public void SetOrderByMapping(string keyColumn, params string[] mappedColumns)
Parameters
Type | Name | Description |
---|---|---|
string | keyColumn | Column to map |
string[] | mappedColumns | What an orderby on the mapped column, should be mapped to |
SetParent(IArchiveProviderExtensible)
Set the parent provider that this class is extending
Declaration
public void SetParent(IArchiveProviderExtensible parent)
Parameters
Type | Name | Description |
---|---|---|
IArchiveProviderExtensible | parent | Provider to extend, via its IArchiveProviderExtensible property interface |
SetPrefixes(string, string)
Set the name and display name prefixes. This method sets the prefixes of this provider, as well as invoking the same call on all known extenders. Recursion will take it to the bottom. Prefixes are cumulative and reflect the nesting of extenders.
Declaration
public void SetPrefixes(string namePrefix, string displayNamePrefix)
Parameters
Type | Name | Description |
---|---|---|
string | namePrefix | Programmatic name prefix, can be null/empty |
string | displayNamePrefix | Display name prefix, can be null/empty |
SetRestriction(params ArchiveRestrictionInfo[])
Set the restriction for the query. This method sets the restrictions for this provider, as well as invoking the same call on all known extenders. Recursion will take it to the bottom. This method actually only saves the restriction specification for use during query processing.
Declaration
public virtual bool SetRestriction(params ArchiveRestrictionInfo[] restrictions)
Parameters
Type | Name | Description |
---|---|---|
ArchiveRestrictionInfo[] | restrictions | Array of restrictions (implicit AND) |
Returns
Type | Description |
---|---|
bool |
SuppressDeepTableResults(SoDataReader, TableInfo)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SuppressDeepTableResults(SoDataReader reader, TableInfo table)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
TableInfo | table |
SuppressTableResults(SoDataReader, TableInfo)
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected void SuppressTableResults(SoDataReader reader, TableInfo table)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
TableInfo | table |
WantColumnForAnything(params ArchiveColumnInfo[])
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected bool WantColumnForAnything(params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo[] | columns |
Returns
Type | Description |
---|---|
bool |
WantColumnForAnything(params string[])
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected bool WantColumnForAnything(params string[] names)
Parameters
Type | Name | Description |
---|---|---|
string[] | names |
Returns
Type | Description |
---|---|
bool |
WantColumnForOrderBy(params ArchiveColumnInfo[])
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected bool WantColumnForOrderBy(params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo[] | columns |
Returns
Type | Description |
---|---|
bool |
WantColumnForOrderBy(params string[])
This is the 'root' base class for the Extender and Provider base classes and providers. It contains common functionality, including facades for the ColumnHelper and ExtensibleHelper classes. It implements the IArchiveProviderHasColumns and IArchiveProviderExtensible interfaces, and defines its own contract for derived classes through the declaration of abstract methods.
Partner-defined providers are expected to inherit either ExtenderBase or QueryProviderBase, which specialize and provide more functionality.Declaration
protected bool WantColumnForOrderBy(params string[] names)
Parameters
Type | Name | Description |
---|---|---|
string[] | names |
Returns
Type | Description |
---|---|
bool |
WantColumnForOutput(params ArchiveColumnInfo[])
Determine whether at least one of the given columns is in the list of currently desired columns
Declaration
protected bool WantColumnForOutput(params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo[] | columns | Array of column informations to check |
Returns
Type | Description |
---|---|
bool | true if at least one of the names is in the desired column list, otherwise false |
WantColumnForOutput(List<ArchiveColumnInfo>)
Determine whether at least one of the given columns is in the list of currently desired columns
Declaration
protected bool WantColumnForOutput(List<ArchiveColumnInfo> columns)
Parameters
Type | Name | Description |
---|---|---|
List<ArchiveColumnInfo> | columns | Array of column informations to check |
Returns
Type | Description |
---|---|
bool | true if at least one of the names is in the desired column list, otherwise false |
WantColumnForOutput(params string[])
Determine whether at least one of the given columns is in the list of currently desired columns
Declaration
protected bool WantColumnForOutput(params string[] names)
Parameters
Type | Name | Description |
---|---|---|
string[] | names | Array of programmatic names to check |
Returns
Type | Description |
---|---|
bool | true if at least one of the names is in the desired column list, otherwise false |
WantColumnForRestriction(params ArchiveColumnInfo[])
Determine whether at least one of the given columns is wanted as a restriction
Declaration
protected bool WantColumnForRestriction(params ArchiveColumnInfo[] columns)
Parameters
Type | Name | Description |
---|---|---|
ArchiveColumnInfo[] | columns |
Returns
Type | Description |
---|---|
bool | true if at least one column is wanted as a restriction at this level |
WantColumnForRestriction(params string[])
Determine whether at least one of the given columns is wanted as a restriction
Declaration
protected bool WantColumnForRestriction(params string[] names)
Parameters
Type | Name | Description |
---|---|---|
string[] | names | List of column names |
Returns
Type | Description |
---|---|
bool | true if at least one column is wanted as a restriction at this level |