public AggregationDataReaderFixture() { var rootPath = this.InitializeDatabase(); var registration = new DataReaderRegistration() { DataReaderId = "", RootPath = rootPath }; this.DataReaderRegistration = registration; }
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()); }
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()); } } } }
public AggregationDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger) { // }
public InMemoryDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger) { // }
public DataReaderExtensionBase(DataReaderRegistration registration, ILogger logger) { this.Registration = registration; this.Logger = logger; this.Progress = new Progress <double>(); }
public FilterDataReader(DataReaderRegistration registration, ILogger logger) : base(registration, logger) { _cacheEntries = FilterDataReader.FilterDataReaderCache.GetOrAdd(registration, new List <FilterDataReaderCacheEntry>()); }