/// <inheritdoc />
        public void ProcessType(Type type, string sourceName)
        {
            // Find source data cookers
            if (SourceDataCookerReference.TryCreateReference(type, out var sourceDataCookerReference))
            {
                Debug.Assert(sourceDataCookerReference != null);
                this.repoBuilder.AddSourceDataCookerReference(sourceDataCookerReference);
            }

            // Find composite data cookers
            if (CompositeDataCookerReference.TryCreateReference(type, out var compositeDataCookerReference))
            {
                Debug.Assert(compositeDataCookerReference != null);
                this.repoBuilder.AddCompositeDataCookerReference(compositeDataCookerReference);
            }

            // Find tables
            if (TableExtensionReference.TryCreateReference(type, out var dataExtensionReference))
            {
                Debug.Assert(dataExtensionReference != null);
                this.repoBuilder.AddTableExtensionReference(dataExtensionReference);
            }

            // Find data processors
            if (DataProcessorReference.TryCreateReference(type, out var dataProcessorReference))
            {
                Debug.Assert(dataProcessorReference != null);
                this.repoBuilder.AddDataProcessorReference(dataProcessorReference);
            }
        }
        /// <summary>
        ///     Generate a table reference from a given type.
        /// </summary>
        /// <param name="candidateType">
        ///     Data extension type.
        /// </param>
        /// <param name="reference">
        ///     Data extension reference.
        /// </param>
        /// <returns>
        ///     <c>true</c> if succeeded, <c>false</c> otherwise.
        /// </returns>
        public bool TryCreateTableReference(
            Type candidateType,
            out ITableExtensionReference reference)
        {
            Guard.NotNull(candidateType, nameof(candidateType));

            return(TableExtensionReference.TryCreateReference(candidateType, out reference));
        }
Exemple #3
0
        /// <inheritdoc />
        public bool AddTable(TableDescriptor tableDescriptor)
        {
            lock (this.dataProcessor)
            {
                if (this.dataExtensionRetrievalFactory != null)
                {
                    throw new InvalidOperationException($"Cannot add tables after calling {nameof(FinalizeTables)}.");
                }
            }

            if (tableDescriptor.RequiredDataCookers.Any() || tableDescriptor.RequiredDataProcessors.Any())
            {
                if (TableExtensionReference.TryCreateReference(tableDescriptor.Type, true, out var tableReference))
                {
                    this.tableReferences[tableDescriptor] = tableReference;
                    return(true);
                }
            }

            return(false);
        }