Beispiel #1
0
        public void SchemaInformation(
            [Argument(Help = "Caminho completo do ficheiro")]
            string filePath)
        {
            try
            {
                string extension = Path.GetExtension(filePath).Remove(0, 1);
                if (!Enum.TryParse(extension, out DataSetStreamFormat format))
                {
                    throw new NotSupportedException($"A extenção do ficheiro {filePath} não é reconhecida");
                }

                IDataSetStreamReader dataSetStreamReader = ServiceProvider.GetService <DataSetStreamFormatReaderFunc>()(format);

                var fileStream = new FileStream(filePath, FileMode.Open);

                var dataSet = dataSetStreamReader.Read <RelationalDatabaseDataSet>(fileStream);

                string output =
                    $"O ficheiro '{filePath}' foi criado com {dataSet.Catalog.Count} catálogo(s) e {dataSet.Table.Count} tabela(s).";

                Logger.LogInformation(output);
            }
            catch (Exception e)
            {
                Log.Error(e.Message);
            }
        }
Beispiel #2
0
 public DataSetGZipStreamReader(IAppLogger <DataSetGZipStreamReader> logger, IDataSetStreamReader dateSetStream)
 {
     Guard.Against.Null(logger, nameof(logger));
     Guard.Against.Null(dateSetStream, nameof(dateSetStream));
     _logger        = logger;
     _dateSetStream = dateSetStream;
 }
Beispiel #3
0
        public static void AddDataSetStream(this IServiceCollection serviceCollection)
        {
            // Regista as implementações em Json e XML.

            serviceCollection.AddTransient <DataSetStreamJsonReaderWriter>();
            serviceCollection.AddTransient <DataSetStreamXmlReaderWriter>();

            // Função-fábrica para escrever a estrutura de dados para um formato
            serviceCollection.AddTransient <DataSetStreamFormatWriterFunc>(serviceProvider => (format) =>
            {
                IDataSetStreamWriter writer = null;

                switch (format)
                {
                case DataSetStreamFormat.Json:
                    writer = serviceProvider.GetService <DataSetStreamJsonReaderWriter>();
                    break;

                case DataSetStreamFormat.Jsonc:
                    writer = new DataSetGZipStreamWriter(
                        serviceProvider.GetService <IAppLogger <DataSetGZipStreamReader> >(),
                        serviceProvider.GetService <DataSetStreamJsonReaderWriter>());
                    break;

                case DataSetStreamFormat.Xml:
                    writer = serviceProvider.GetService <DataSetStreamXmlReaderWriter>();
                    break;

                case DataSetStreamFormat.Xmlc:
                    writer = new DataSetGZipStreamWriter(
                        serviceProvider.GetService <IAppLogger <DataSetGZipStreamReader> >(),
                        serviceProvider.GetService <DataSetStreamXmlReaderWriter>());
                    break;
                }

                return(writer);
            });

            // Função-fábrica para ler a estrutura de dados de um formato
            serviceCollection.AddTransient <DataSetStreamFormatReaderFunc>(serviceProvider => (format) =>
            {
                IDataSetStreamReader reader = null;

                switch (format)
                {
                case DataSetStreamFormat.Json:
                    reader = serviceProvider.GetService <DataSetStreamJsonReaderWriter>();
                    break;

                case DataSetStreamFormat.Jsonc:
                    reader = new DataSetGZipStreamReader(
                        serviceProvider.GetService <IAppLogger <DataSetGZipStreamReader> >(),
                        serviceProvider.GetService <DataSetStreamJsonReaderWriter>());
                    break;

                case DataSetStreamFormat.Xml:
                    reader = serviceProvider.GetService <DataSetStreamXmlReaderWriter>();
                    break;

                case DataSetStreamFormat.Xmlc:
                    reader = new DataSetGZipStreamReader(
                        serviceProvider.GetService <IAppLogger <DataSetGZipStreamReader> >(),
                        serviceProvider.GetService <DataSetStreamXmlReaderWriter>());
                    break;
                }

                return(reader ?? throw new NotSupportedException($"Extensão {format.ToString()} de ficheiro irreconhível"));
            });
        }