public ExecuteCommandPacsFetch(IBasicActivateItems activator, string start, string end, string remoteAeUri, int remotePort, string remoteAeTitle, string localAeUri, int localPort, string localAeTitle, string outDir, int maxRetries) : base(activator) { var startDate = DateTime.Parse(start); var endDate = DateTime.Parse(end); // Make something that kinda looks like a valid DLE load var memory = new MemoryCatalogueRepository(); var lmd = new LoadMetadata(memory); var dir = Directory.CreateDirectory(outDir); var results = LoadDirectory.CreateDirectoryStructure(dir, "out", true); lmd.LocationOfFlatFiles = results.RootPath.FullName; lmd.SaveToDatabase(); var lp = new LoadProgress(memory, lmd); var cp = new CacheProgress(memory, lp); //Create the source component only and a valid request range to fetch _source = new PACSSource { RemoteAEUri = new Uri("http://" + remoteAeUri), RemoteAEPort = remotePort, RemoteAETitle = remoteAeTitle, LocalAEUri = new Uri("http://" + localAeUri), LocalAEPort = localPort, LocalAETitle = localAeTitle, TransferTimeOutInSeconds = 50000, Modality = "ALL", MaxRetries = maxRetries }; //<- rly? its not gonna pass without an http!? _request = new BackfillCacheFetchRequest(BasicActivator.RepositoryLocator.CatalogueRepository, startDate) { ChunkPeriod = endDate.Subtract(startDate), CacheProgress = cp }; //Initialize it _source.PreInitialize(BasicActivator.RepositoryLocator.CatalogueRepository, new ThrowImmediatelyDataLoadEventListener { WriteToConsole = true }); _source.PreInitialize(this, new ThrowImmediatelyDataLoadEventListener { WriteToConsole = true }); }
public Task Fetch(DateTime startDate, DateTime endDate, GracefulCancellationToken token, IDataLoadEventListener listener, bool ignorePermissionWindow = false) { var dateToRetrieve = new DateTime(startDate.Year, startDate.Month, startDate.Day); var initialFetchRequest = new BackfillCacheFetchRequest(_catalogueRepository, dateToRetrieve) { CacheProgress = _cacheProgress, ChunkPeriod = _cacheProgress.ChunkPeriod }; var requestProvider = (startDate == endDate) ? (ICacheFetchRequestProvider) new SingleDayCacheFetchRequestProvider(initialFetchRequest) : new MultiDayCacheFetchRequestProvider(initialFetchRequest, endDate); var factory = new CachingPipelineUseCase(_cacheProgress, ignorePermissionWindow, requestProvider); var engine = factory.GetEngine(listener); return(Task.Factory.StartNew(() => engine.ExecutePipeline(token))); }