/// <summary>
        ///     Serializes a table configuration to a stream.
        /// </summary>
        /// <param name="stream">
        ///     Target stream.
        /// </param>
        /// <param name="tableConfiguration">
        ///     Table configuration to serialize.
        /// </param>
        /// <param name="tableId">
        ///     Table identifier.
        /// </param>
        /// <param name="logger">
        ///     Used to log relevant messages.
        /// </param>
        public static void SerializeTableConfiguration(
            Stream stream,
            Processing.TableConfiguration tableConfiguration,
            Guid tableId,
            ILogger logger)
        {
            var tableConfigurations = new Processing.TableConfigurations(tableId)
            {
                Configurations = new[] { tableConfiguration }
            };
            var prebuiltConfigurations = tableConfigurations.ConvertToDto();

            SerializeTableConfigurations(stream, prebuiltConfigurations, logger);
        }
        internal static PrebuiltConfigurations ConvertToDto(
            this Processing.TableConfigurations tableConfigurations,
            Func <Processing.TableConfiguration, IDictionary <ColumnRole, ColumnRoleEntry> > convertColumnRoles)
        {
            var dtoTableConfigurations = new PrebuiltConfigurations()
            {
                Version = PrebuiltConfigurations.DTOVersion,
                Tables  = new TableConfigurations[]
                {
                    new TableConfigurations()
                    {
                        TableId                  = tableConfigurations.TableId,
                        Configurations           = tableConfigurations.Select(config => config.ConvertToDto(convertColumnRoles)).ToArray(),
                        DefaultConfigurationName = tableConfigurations.DefaultConfigurationName
                    }
                }
            };

            return(dtoTableConfigurations);
        }
 internal static PrebuiltConfigurations ConvertToDto(
     this Processing.TableConfigurations tableConfigurations)
 {
     return(tableConfigurations.ConvertToDto(defaultColumnRolesConverter));
 }