public virtual Task <IReadOnlyList <VersionedInstanceIdentifier> > GetInstanceIdentifiersByWatermarkRangeAsync( WatermarkRange watermarkRange, IndexStatus indexStatus, CancellationToken cancellationToken = default) { throw new BadRequestException(DicomSqlServerResource.SchemaVersionNeedsToBeUpgraded); }
public void GivenPreviouslySerializedMessage_WhenDeserializingWithNewSettings_ThenDeserializeSuccessfully() { var queryTags = new List <ExtendedQueryTagStoreEntry> { new ExtendedQueryTagStoreEntry(1, "01", "DT", "foo", QueryTagLevel.Instance, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), new ExtendedQueryTagStoreEntry(2, "02", "DT", "bar", QueryTagLevel.Study, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), }; var range = new WatermarkRange(5, 10); const int threadCount = 7; var before = new ReindexBatchArguments(queryTags, range, threadCount); string json = JsonConvert.SerializeObject( before, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple, }); ReindexBatchArguments actual = JsonConvert.DeserializeObject <ReindexBatchArguments>(json, JsonSerializerSettings); Assert.Equal(before.QueryTags, actual.QueryTags, new TagEntryComparer()); Assert.Equal(before.ThreadCount, actual.ThreadCount); Assert.Equal(before.WatermarkRange, actual.WatermarkRange); }
internal static ReindexBatchArguments FromOptions( IReadOnlyCollection <ExtendedQueryTagStoreEntry> queryTags, WatermarkRange watermarkRange, QueryTagIndexingOptions indexingOptions) { EnsureArg.IsNotNull(indexingOptions, nameof(indexingOptions)); return(new ReindexBatchArguments(queryTags, watermarkRange, indexingOptions.BatchThreadCount)); }
/// <summary> /// Initializes a new instance of the <see cref="ReindexBatchArguments"/> class with the specified values. /// </summary> /// <param name="queryTags">The tag entries.</param> /// <param name="watermarkRange">The inclusive watermark range.</param> /// <param name="threadCount">The number of threads available for each batch.</param> /// <exception cref="ArgumentNullException"><paramref name="queryTags"/> is <see langword="null"/>.</exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="threadCount"/> is less than <c>1</c>. /// </exception> public ReindexBatchArguments( IReadOnlyCollection <ExtendedQueryTagStoreEntry> queryTags, WatermarkRange watermarkRange, int threadCount) { EnsureArg.IsNotNull(queryTags, nameof(queryTags)); EnsureArg.IsGte(threadCount, 1, nameof(threadCount)); QueryTags = queryTags; ThreadCount = threadCount; WatermarkRange = watermarkRange; }
public void GivenBadValues_WhenContructing_ThenThrowExceptions() { var queryTags = new List <ExtendedQueryTagStoreEntry> { new ExtendedQueryTagStoreEntry(1, "01", "DT", "foo", QueryTagLevel.Instance, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), new ExtendedQueryTagStoreEntry(2, "02", "DT", "bar", QueryTagLevel.Study, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), }; var range = new WatermarkRange(5, 10); const int threadCount = 7; Assert.Throws <ArgumentNullException>(() => new ReindexBatchArguments(null, range, threadCount)); Assert.Throws <ArgumentOutOfRangeException>(() => new ReindexBatchArguments(queryTags, range, -threadCount)); }
public OperationProgress GetProgress() { int percentComplete = 0; if (Completed.HasValue) { WatermarkRange range = Completed.GetValueOrDefault(); percentComplete = range.End == 1 ? 100 : (int)((double)(range.End - range.Start + 1) / range.End * 100); } return(new OperationProgress { PercentComplete = percentComplete, ResourceIds = QueryTagKeys?.Select(x => x.ToString(CultureInfo.InvariantCulture)).ToList(), }); }
public void GivenValues_WhenConstructing_ThenAssignProperties() { var queryTags = new List <ExtendedQueryTagStoreEntry> { new ExtendedQueryTagStoreEntry(1, "01", "DT", "foo", QueryTagLevel.Instance, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), new ExtendedQueryTagStoreEntry(2, "02", "DT", "bar", QueryTagLevel.Study, ExtendedQueryTagStatus.Adding, QueryStatus.Enabled, 0), }; var range = new WatermarkRange(5, 10); const int threadCount = 7; var actual = new ReindexBatchArguments(queryTags, range, threadCount); Assert.Same(queryTags, actual.QueryTags); Assert.Equal(range, actual.WatermarkRange); Assert.Equal(threadCount, actual.ThreadCount); }
public override async Task <IReadOnlyList <VersionedInstanceIdentifier> > GetInstanceIdentifiersByWatermarkRangeAsync( WatermarkRange watermarkRange, IndexStatus indexStatus, CancellationToken cancellationToken = default) { var results = new List <VersionedInstanceIdentifier>(); using (SqlConnectionWrapper sqlConnectionWrapper = await SqlConnectionWrapperFactory.ObtainSqlConnectionWrapperAsync(cancellationToken)) using (SqlCommandWrapper sqlCommandWrapper = sqlConnectionWrapper.CreateSqlCommand()) { VLatest.GetInstancesByWatermarkRange.PopulateCommand( sqlCommandWrapper, watermarkRange.Start, watermarkRange.End, (byte)indexStatus); using (var reader = await sqlCommandWrapper.ExecuteReaderAsync(CommandBehavior.SequentialAccess, cancellationToken)) { while (await reader.ReadAsync(cancellationToken)) { (string rStudyInstanceUid, string rSeriesInstanceUid, string rSopInstanceUid, long watermark) = reader.ReadRow( VLatest.Instance.StudyInstanceUid, VLatest.Instance.SeriesInstanceUid, VLatest.Instance.SopInstanceUid, VLatest.Instance.Watermark); results.Add(new VersionedInstanceIdentifier( rStudyInstanceUid, rSeriesInstanceUid, rSopInstanceUid, watermark)); } } } return(results); }