Show / Hide Table of Contents

Class LinksBySourceProviderBase<MainExtenderType>

Base class for link data providers that are addressed by source - that is, where the source (left) side of the link is a known appointment, sale or document, and we wish to retrieve the right side.

Inheritance
Object
ExtensibleColumnsBase
QueryProviderBase<ArchiveRow>
TypedQueryProviderBase<ArchiveRow, MainExtenderType>
LinksBySourceProviderBase<MainExtenderType>
LinksBySourceProviderLeftBase<MainExtenderType>
LinksBySourceProviderRightBase<MainExtenderType>
Implements
IArchiveProviderQueryMapping
IArchiveQueryProvider
IArchiveProviderExtensible
IArchiveTypedProvider<ArchiveRow>
IArchiveTypedProviderBase
IArchiveProvider
IArchiveProviderHasRows
IArchiveProviderHasColumns
IArchiveProviderHasEntities
Inherited Members
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.HandleDynamicExtenders(IArchiveExtender)
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.GetRows(String)
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.GetStandardColumnNames()
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.SetAdditionalColumns(String[])
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.BaseExtender
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.ProviderNameFromAttribute
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.RootExtenders
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.PrimaryTable
TypedQueryProviderBase<ArchiveRow, MainExtenderType>.Query
QueryProviderBase<ArchiveRow>._colGetAllRows
QueryProviderBase<ArchiveRow>._colGetNoRows
QueryProviderBase<ArchiveRow>._pageSize
QueryProviderBase<ArchiveRow>._pageNumber
QueryProviderBase<ArchiveRow>.InnerSetRestriction(ArchiveRestrictionInfo[])
QueryProviderBase<ArchiveRow>.PostProcessQuery()
QueryProviderBase<ArchiveRow>.HandleDynamicExtenders(IArchiveExtender)
QueryProviderBase<ArchiveRow>.GetFinalRowCount()
QueryProviderBase<ArchiveRow>.SetDesiredColumns(String[])
QueryProviderBase<ArchiveRow>.OverrideValueIfBlank(ArchiveRow, String, String)
QueryProviderBase<ArchiveRow>.AddInhibitedStyleHint(String)
QueryProviderBase<ArchiveRow>.AcceptRow(SoDataReader)
QueryProviderBase<ArchiveRow>.RequiredPhaseOneFields()
QueryProviderBase<ArchiveRow>.PostProcessRow(SoDataReader, ArchiveRow)
QueryProviderBase<ArchiveRow>.CreateArchiveRow(String, Int32)
QueryProviderBase<ArchiveRow>.Close()
QueryProviderBase<ArchiveRow>.GetReader(String)
QueryProviderBase<ArchiveRow>.GetRows(String)
QueryProviderBase<ArchiveRow>.GetResultInformation()
QueryProviderBase<ArchiveRow>.SetRestriction(ArchiveRestrictionInfo[])
QueryProviderBase<ArchiveRow>.SetOrderBy(ArchiveOrderByInfo[])
QueryProviderBase<ArchiveRow>.GetEntityName(SoDataReader)
QueryProviderBase<ArchiveRow>.SetPagingInfo(Int32, Int32)
QueryProviderBase<ArchiveRow>.ConvertToTypedRows(IEnumerable<ArchiveRow>)
QueryProviderBase<ArchiveRow>.GetAvailableEntities()
QueryProviderBase<ArchiveRow>.SetDesiredEntities(String[])
QueryProviderBase<ArchiveRow>.RegisterEntity(ArchiveRowTypeInfo)
QueryProviderBase<ArchiveRow>.PrimaryKey
QueryProviderBase<ArchiveRow>.InhibitTwoPhaseQuery
QueryProviderBase<ArchiveRow>.DropTablesFromPhaseTwo
QueryProviderBase<ArchiveRow>.RootQuery
QueryProviderBase<ArchiveRow>.OrderBySlots
QueryProviderBase<ArchiveRow>.Query
QueryProviderBase<ArchiveRow>.InhibitDistinctPrimaryKeys
QueryProviderBase<ArchiveRow>.RootExtenders
QueryProviderBase<ArchiveRow>.HaveReadToEnd
QueryProviderBase<ArchiveRow>.ValueOverrides
ExtensibleColumnsBase._minuteFields
ExtensibleColumnsBase.Visible
ExtensibleColumnsBase.Invisible
ExtensibleColumnsBase.AllowOrderBy
ExtensibleColumnsBase.DenyOrderBy
ExtensibleColumnsBase.GetAllRestriction
ExtensibleColumnsBase.GetNoneRestriction
ExtensibleColumnsBase.SetParent(IArchiveProviderExtensible)
ExtensibleColumnsBase.AddAvailableColumn(ArchiveColumnInfo[])
ExtensibleColumnsBase.GetAvailableColumns()
ExtensibleColumnsBase.SetOrderByMapping(String, String[])
ExtensibleColumnsBase.SetOrderByMapping(ArchiveColumnInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.SetPrefixes(String, String)
ExtensibleColumnsBase.SetLocalAbsolutePrefixes(String, String)
ExtensibleColumnsBase.SetIconHint(String)
ExtensibleColumnsBase.AddLocalRestriction(ArchiveRestrictionInfo[])
ExtensibleColumnsBase.AddExtensionProvider(IArchiveExtender)
ExtensibleColumnsBase.GetExtensionProviders()
ExtensibleColumnsBase.GetTableInfosFromExtensionProviders()
ExtensibleColumnsBase.PopulateRowFromReader(SoDataReader, ArchiveRow)
ExtensibleColumnsBase.SuppressTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.SuppressDeepTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.AddColumnNameOverride(String, String)
ExtensibleColumnsBase.ApplyColumnNameOverrides(ArchiveRow)
ExtensibleColumnsBase.AddSubExtenderMapping(String, ExtensibleColumnsBase[])
ExtensibleColumnsBase.WantColumnForOutput(String[])
ExtensibleColumnsBase.WantColumnForOutput(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOutput(List<ArchiveColumnInfo>)
ExtensibleColumnsBase.WantColumnForRestriction(String[])
ExtensibleColumnsBase.WantColumnForRestriction(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOrderBy(String[])
ExtensibleColumnsBase.GetColumnOrderBy(String)
ExtensibleColumnsBase.WantColumnForOrderBy(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForAnything(String[])
ExtensibleColumnsBase.WantColumnForAnything(ArchiveColumnInfo[])
ExtensibleColumnsBase.IsQueryNeeded()
ExtensibleColumnsBase.IsQueryRestriction()
ExtensibleColumnsBase.GetLeftOuterOrInnerJoin(Equal)
ExtensibleColumnsBase.GetLeftOuterOrInnerJoin(Equal, Restriction)
ExtensibleColumnsBase.SetLeftOuterOrInnerJoin(Equal)
ExtensibleColumnsBase.SetLeftOuterOrInnerJoin(Equal, Restriction)
ExtensibleColumnsBase.MapReturnField(ArchiveSelect, FieldInfo, Boolean, String, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapIdField(FieldInfo)
ExtensibleColumnsBase.MapAssociateField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.MapEjUserField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.MapSimpleReturnField(FieldInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleImageField(FieldInfo, ArchiveColumnInfo, Int32, Int32)
ExtensibleColumnsBase.MapPictureBlob(FieldInfo, ArchiveColumnInfo, BlobLinkType, Int32, Int32, Int32)
ExtensibleColumnsBase.MapSimpleCustomField(FieldInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleListReturnField(FieldInfo, String, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapOrderByField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.ActivateAsLinkField(String, ArchiveColumnInfo[])
ExtensibleColumnsBase.HasAvailableColumn(String)
ExtensibleColumnsBase.AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType, String, String)
ExtensibleColumnsBase.AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType)
ExtensibleColumnsBase.HasRestriction(String)
ExtensibleColumnsBase.ExtractRestrictions(String)
ExtensibleColumnsBase.ExtractRestrictions(ArchiveColumnInfo)
ExtensibleColumnsBase.ExtractRestriction(String)
ExtensibleColumnsBase.ExtractRestriction(ArchiveColumnInfo)
ExtensibleColumnsBase.ProcessOrderBy()
ExtensibleColumnsBase.PopulateSimpleFields(SoDataReader, ArchiveRow)
ExtensibleColumnsBase.CalculateOrderbyValue(String, SoDataReader, ArchiveColumnData)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, FieldInfo)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, Int32)
ExtensibleColumnsBase.ForceDisable()
ExtensibleColumnsBase.GetAssociateData(Int32)
ExtensibleColumnsBase.GetEjUserData(Int32)
ExtensibleColumnsBase.GetColumnIndex(ArchiveColumnInfo)
ExtensibleColumnsBase.GetColumnIndexFromReader(SoDataReader, FieldInfo, Int32)
ExtensibleColumnsBase.ConvertDbTypeToString(Object, ExtensibleColumnsBase.DbColumnBinding)
ExtensibleColumnsBase.GetStandardTooltipHint(SoDataReader, FieldInfo)
ExtensibleColumnsBase.GetLinkHint(SoDataReader, String)
ExtensibleColumnsBase.SetNonZeroBoolRestriction(ArchiveColumnInfo)
ExtensibleColumnsBase.AddUpdatedByMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddRegisteredMapping(ArchiveColumnInfo, FieldInfo, ArchiveColumnInfo, FieldInfo)
ExtensibleColumnsBase.AddLastUpdatedMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddUpdatedBy(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddUpdatedDate(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddAssociateFullName(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo[])
ExtensibleColumnsBase.GetIdFieldTag(SoDataReader)
ExtensibleColumnsBase.GetArchiveColumnName(SoField)
ExtensibleColumnsBase.ExtensibleHelper
ExtensibleColumnsBase.ColumnHelper
ExtensibleColumnsBase.RestrictionHelper
ExtensibleColumnsBase.Parent
ExtensibleColumnsBase.DisableSubtreeIfNoRestriction
ExtensibleColumnsBase.RestrictionSetForSubtree
ExtensibleColumnsBase.ForceQueryNeeded
ExtensibleColumnsBase.ForceRestriction
ExtensibleColumnsBase.BlockOrderBy
ExtensibleColumnsBase.IdField
ExtensibleColumnsBase.LastSubExtenderWins
ExtensibleColumnsBase.ParentPrimaryKey
ExtensibleColumnsBase.QuoteAlternativeId
ExtensibleColumnsBase.SaleId
ExtensibleColumnsBase.NamePrefix
ExtensibleColumnsBase.DisplayNamePrefix
ExtensibleColumnsBase.PopulateDisplayValue
ExtensibleColumnsBase.PopulateTooltipHint
ExtensibleColumnsBase.DebugXML
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.dll
Syntax
public abstract class LinksBySourceProviderBase<MainExtenderType> : TypedQueryProviderBase<ArchiveRow, MainExtenderType>, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveTypedProvider<ArchiveRow>, IArchiveTypedProviderBase, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities, IPlugin where MainExtenderType : IArchiveExtender, new()
Type Parameters
Name Description
MainExtenderType

Type of the main data extender to use

Remarks

This class processes the sourceXXX restrictions and sets up the join to the relations table, as well as setting default link hints on the generated rows. These providers are the ones used to retrieve the Links archives initially. The Web client will then parse the rows and switch to use ByDestination addressing, which is what is needed to Edit the Links archive, based on state maintained by the client.

The Extenders used for BySource addressing derive directly from the respective bases (such as SaleExtenderBase), since they are connected to a query on a different table (relations, for the links). ByDestination addressing uses root extenders (such as SaleSaleExtender), since the restriction applies directly to the table we'll be fetching from.

To support bidirectional link fetching, we subclass into Left and Right variants, each with a corresponding Extender. The Extnder handles joingin and population, while the Left and Right provider subclasses handle restrictions. It's still BySource as seen by the LinksProvider system.

Constructors

LinksBySourceProviderBase(ArchiveRowTypeInfo)

Create the provider, set up c ustom processing for the source restrictions (appointment, sale, document). Instantiate the main extender, which is our type parameter. register the entity.

Declaration
protected LinksBySourceProviderBase(ArchiveRowTypeInfo entity)
Parameters
Type Name Description
ArchiveRowTypeInfo entity

Entity that we are processing

Fields

_colRelationId

Declaration
protected ArchiveColumnInfo _colRelationId
Field Value
Type Description
ArchiveColumnInfo

_colRelcomment

Declaration
protected ArchiveColumnInfo _colRelcomment
Field Value
Type Description
ArchiveColumnInfo

_colSourceAppointmentRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceAppointmentRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourceContactRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceContactRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourceDocumentRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceDocumentRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourcePersonRestrictionId

Declaration
protected ArchiveColumnInfo _colSourcePersonRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourceProjectRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceProjectRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourceSaleRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceSaleRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_colSourceSelectionRestrictionId

Declaration
protected ArchiveColumnInfo _colSourceSelectionRestrictionId
Field Value
Type Description
ArchiveColumnInfo

_numDestinationRestrictions

Declaration
protected int _numDestinationRestrictions
Field Value
Type Description
Int32

_relationsTable

Declaration
protected RelationsTableInfo _relationsTable
Field Value
Type Description
RelationsTableInfo

LinkDescription

Declaration
public const string LinkDescription = "linkDescription"
Field Value
Type Description
String

LinkId

Declaration
public const string LinkId = "linkId"
Field Value
Type Description
String

Properties

PrimaryTable

Declaration
public override TableInfo PrimaryTable { get; }
Property Value
Type Description
TableInfo
Overrides
SuperOffice.CRM.ArchiveLists.TypedQueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow, MainExtenderType>.PrimaryTable

TableToExtend

Declaration
public override TableInfo TableToExtend { get; }
Property Value
Type Description
TableInfo
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.TableToExtend

Methods

InnerMapFields()

Declaration
public override void InnerMapFields()
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.InnerMapFields()

InnerPopulateRowFromReader(SoDataReader, ArchiveRow)

Override: Set row navigation based on the entity name and row primary key

Declaration
protected override void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type Name Description
SoDataReader reader
ArchiveRow row
Overrides
SuperOffice.CRM.ArchiveLists.TypedQueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow, MainExtenderType>.InnerPopulateRowFromReader(SuperOffice.Data.SoDataReader, SuperOffice.CRM.ArchiveLists.ArchiveRow)

ProcessRestrictions()

Override: Process one (1) source restriction, via the base class and CustomBinding mechanism of the RestrictionHelper.

Declaration
protected override bool ProcessRestrictions()
Returns
Type Description
Boolean
Overrides
ExtensibleColumnsBase.ProcessRestrictions()

ProcessSourceRestriction(TableInfo, ArchiveRestrictionInfo, ArchiveSelect)

Declaration
protected abstract void ProcessSourceRestriction(TableInfo sourceTable, ArchiveRestrictionInfo restriction, ArchiveSelect targetQuery)
Parameters
Type Name Description
TableInfo sourceTable
ArchiveRestrictionInfo restriction
ArchiveSelect targetQuery

Implements

IArchiveProviderQueryMapping
IArchiveQueryProvider
IArchiveProviderExtensible
IArchiveTypedProvider<StronglyTypedRow>
IArchiveTypedProviderBase
IArchiveProvider
IArchiveProviderHasRows
IArchiveProviderHasColumns
IArchiveProviderHasEntities

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