public AggregationDataReaderFixture()
        {
            var rootPath     = this.InitializeDatabase();
            var registration = new DataReaderRegistration()
            {
                DataReaderId = "",
                RootPath     = rootPath
            };

            this.DataReaderRegistration = registration;
        }
Esempio n. 2
0
        private List <AvailabilityResult> CreateAvailabilityResponse(ProjectInfo project, DateTime begin, DateTime end, AvailabilityGranularity granularity)
        {
            var dataReaders = _databaseManager.GetDataReaders(_userIdService.User, project.Id);

            return(dataReaders.Select(dataReaderForUsing =>
            {
                using var dataReader = dataReaderForUsing;
                var availability = dataReader.GetAvailability(project.Id, begin, end, granularity);

                var registration = new DataReaderRegistration()
                {
                    RootPath = availability.DataReaderRegistration.RootPath,
                    DataReaderId = availability.DataReaderRegistration.DataReaderId,
                };

                return new AvailabilityResult()
                {
                    DataReaderRegistration = registration,
                    Data = availability.Data
                };
            }).ToList());
        }
Esempio n. 3
0
        private void AggregateProject(ClaimsPrincipal user,
                                      string databaseFolderPath,
                                      string projectId,
                                      DateTime date,
                                      AggregationSetup setup,
                                      AggregationInstruction instruction,
                                      CancellationToken cancellationToken)
        {
            foreach (var(registration, aggregationChannels) in instruction.DataReaderToAggregationsMap)
            {
                using var dataReader = _databaseManager.GetDataReader(user, registration);

                // find reader configurations
                foreach (var configuration in setup.ReaderConfigurations
                         .Where(configuration => configuration.ProjectId == projectId))
                {
                    var tmpRegistration = new DataReaderRegistration()
                    {
                        RootPath     = configuration.DataReaderRootPath,
                        DataReaderId = configuration.DataReaderId
                    };

                    if (dataReader.Registration.Equals(tmpRegistration))
                    {
                        dataReader.OptionalParameters = configuration.Parameters;
                        break;
                    }
                }

                // get files
                if (!dataReader.IsDataOfDayAvailable(projectId, date))
                {
                    return;
                }

                // project
                var container = _databaseManager.Database.ProjectContainers.FirstOrDefault(container => container.Id == projectId);

                if (container == null)
                {
                    throw new Exception($"The requested project '{projectId}' could not be found.");
                }

                var targetDirectoryPath = Path.Combine(databaseFolderPath, "DATA", WebUtility.UrlEncode(container.Id), date.ToString("yyyy-MM"), date.ToString("dd"));

                // for each channel
                foreach (var aggregationChannel in aggregationChannels)
                {
                    cancellationToken.ThrowIfCancellationRequested();

                    try
                    {
                        var dataset = aggregationChannel.Channel.Datasets.First();

                        NexusUtilities.InvokeGenericMethod(this, nameof(this.OrchestrateAggregation),
                                                           BindingFlags.Instance | BindingFlags.NonPublic,
                                                           NexusUtilities.GetTypeFromNexusDataType(dataset.DataType),
                                                           new object[]
                        {
                            targetDirectoryPath,
                            dataReader,
                            dataset,
                            aggregationChannel.Aggregations,
                            date,
                            setup.Force,
                            cancellationToken
                        });
                    }
                    catch (TaskCanceledException)
                    {
                        throw;
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex.GetFullMessage());
                    }
                }
            }
        }
Esempio n. 4
0
 public AggregationDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger)
 {
     //
 }
Esempio n. 5
0
 public InMemoryDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger)
 {
     //
 }
Esempio n. 6
0
 public DataReaderExtensionBase(DataReaderRegistration registration, ILogger logger)
 {
     this.Registration = registration;
     this.Logger       = logger;
     this.Progress     = new Progress <double>();
 }
Esempio n. 7
0
 public FilterDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger)
 {
     _cacheEntries = FilterDataReader.FilterDataReaderCache.GetOrAdd(registration, new List <FilterDataReaderCacheEntry>());
 }