Show / Hide Table of Contents

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.
Inheritance
object
ExtensibleColumnsBase
ExtenderBase<MainTableInfo>
QueryProviderBase<RowType>
Implements
IArchiveProviderHasColumns
IArchiveProviderExtensible
IArchiveProviderQueryMapping
Inherited Members
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.BusinessLogic.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. Remember to add the AddUpdatedBy(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo) and AddUpdatedDate(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo, bool) to your InnerPopulateRow method

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 PopulateSimpleFieldsAsync(SoDataReader, ArchiveRow, CancellationToken)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.

PopulateRowFromReaderAsync(SoDataReader, ArchiveRow, CancellationToken)

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 Task PopulateRowFromReaderAsync(SoDataReader reader, ArchiveRow row, CancellationToken cancellationToken = default)
Parameters
Type Name Description
SoDataReader reader
ArchiveRow row
CancellationToken cancellationToken
Returns
Type Description
Task

PopulateSimpleFieldsAsync(SoDataReader, ArchiveRow, CancellationToken)

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 Task PopulateSimpleFieldsAsync(SoDataReader reader, ArchiveRow row, CancellationToken cancellationToken = default)
Parameters
Type Name Description
SoDataReader reader

Data reader with the current row from the database

ArchiveRow row

Archive data row being built

CancellationToken cancellationToken
Returns
Type Description
Task
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 class

SetLeftOuterJoin(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

Implements

IArchiveProviderHasColumns
IArchiveProviderExtensible
IArchiveProviderQueryMapping

Extension Methods

EnumUtil.MapEnums<From, To>(From)
Converters.MapEnums<From, To>(From)
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top