protected override void OnExecute(CommandProcessor theProcessor, IUpdateContext updateContext) { // update FilesystemStudyStorage if (Context != null) { Platform.Log(LogLevel.Info, "Updating database..."); IFilesystemStudyStorageEntityBroker broker = updateContext.GetBroker<IFilesystemStudyStorageEntityBroker>(); FilesystemStudyStorageSelectCriteria searchCriteria = new FilesystemStudyStorageSelectCriteria(); searchCriteria.StudyStorageKey.EqualTo(Context.OriginalStudyLocation.GetKey()); searchCriteria.FilesystemKey.EqualTo(Context.OriginalStudyLocation.FilesystemKey); FilesystemStudyStorage filesystemStudyStorage = broker.FindOne(searchCriteria); Debug.Assert(filesystemStudyStorage != null); // Update Filesystem for the StudyStorage entry filesystemStudyStorage.FilesystemKey = Context.Destination.Filesystem.GetKey(); broker.Update(filesystemStudyStorage); // Update Filesystem for the remaining FilesystemQueue entries IFilesystemQueueEntityBroker fsQueueBroker = updateContext.GetBroker<IFilesystemQueueEntityBroker>(); FilesystemQueueSelectCriteria fsQueueSearchCriteria = new FilesystemQueueSelectCriteria(); fsQueueSearchCriteria.StudyStorageKey.EqualTo(Context.OriginalStudyLocation.GetKey()); fsQueueSearchCriteria.FilesystemKey.EqualTo(Context.OriginalStudyLocation.FilesystemKey); FilesystemQueueUpdateColumns fsQueueUpdateColumns = new FilesystemQueueUpdateColumns(); fsQueueUpdateColumns.FilesystemKey = Context.Destination.Filesystem.GetKey(); fsQueueBroker.Update(fsQueueSearchCriteria, fsQueueUpdateColumns); // Insert or update Filesystem Queue table. IInsertFilesystemQueue insertFilesystemQueueBroker = updateContext.GetBroker<IInsertFilesystemQueue>(); FilesystemQueueInsertParameters parms = new FilesystemQueueInsertParameters(); parms.FilesystemKey = Context.Destination.Filesystem.GetKey(); parms.FilesystemQueueTypeEnum = FilesystemQueueTypeEnum.TierMigrate; parms.ScheduledTime = Platform.Time; parms.StudyStorageKey = Context.OriginalStudyLocation.GetKey(); insertFilesystemQueueBroker.Execute(parms); Platform.Log(LogLevel.Info, "Database is updated."); } }
protected override void OnExecute(CommandProcessor theProcessor, IUpdateContext updateContext) { FilesystemQueueInsertParameters parms = new FilesystemQueueInsertParameters(); parms.FilesystemQueueTypeEnum = _queueType; parms.ScheduledTime = _scheduledTime; parms.StudyStorageKey = _studyStorageKey; parms.FilesystemKey = _filesystemKey; if (_queueXml != null) parms.QueueXml = _queueXml; IInsertFilesystemQueue insertQueue = updateContext.GetBroker<IInsertFilesystemQueue>(); if (false == insertQueue.Execute(parms)) { Platform.Log(LogLevel.Error, "Unexpected failure inserting FilesystemQueue entry"); throw new PersistenceException("Unexpected failure inserting FilesystemQueue entry", null); } }
private void ReinsertFilesystemQueue() { using (IUpdateContext updateContext = PersistentStoreRegistry.GetDefaultStore().OpenUpdateContext(UpdateContextSyncMode.Flush)) { IWorkQueueUidEntityBroker broker = updateContext.GetBroker<IWorkQueueUidEntityBroker>(); WorkQueueUidSelectCriteria workQueueUidCriteria = new WorkQueueUidSelectCriteria(); workQueueUidCriteria.WorkQueueKey.EqualTo(WorkQueueItem.Key); broker.Delete(workQueueUidCriteria); FilesystemQueueInsertParameters parms = new FilesystemQueueInsertParameters { FilesystemQueueTypeEnum = FilesystemQueueTypeEnum.TierMigrate, ScheduledTime = Platform.Time.AddMinutes(10), StudyStorageKey = WorkQueueItem.StudyStorageKey, FilesystemKey = StorageLocation.FilesystemKey }; IInsertFilesystemQueue insertQueue = updateContext.GetBroker<IInsertFilesystemQueue>(); if (false == insertQueue.Execute(parms)) { Platform.Log(LogLevel.Error, "Unexpected failure inserting FilesystemQueue entry"); } else updateContext.Commit(); } }
private void ReinsertFilesystemQueue(TimeSpan delay) { using (IUpdateContext updateContext = PersistentStoreRegistry.GetDefaultStore().OpenUpdateContext(UpdateContextSyncMode.Flush)) { IWorkQueueUidEntityBroker broker = updateContext.GetBroker<IWorkQueueUidEntityBroker>(); WorkQueueUidSelectCriteria workQueueUidCriteria = new WorkQueueUidSelectCriteria(); workQueueUidCriteria.WorkQueueKey.EqualTo(WorkQueueItem.Key); broker.Delete(workQueueUidCriteria); FilesystemQueueInsertParameters parms = new FilesystemQueueInsertParameters(); parms.FilesystemQueueTypeEnum = CompressTransferSyntax.LosslessCompressed ? FilesystemQueueTypeEnum.LosslessCompress : FilesystemQueueTypeEnum.LossyCompress; parms.ScheduledTime = Platform.Time + delay; parms.StudyStorageKey = WorkQueueItem.StudyStorageKey; parms.FilesystemKey = StorageLocation.FilesystemKey; parms.QueueXml = WorkQueueItem.Data; IInsertFilesystemQueue insertQueue = updateContext.GetBroker<IInsertFilesystemQueue>(); if (false == insertQueue.Execute(parms)) { Platform.Log(LogLevel.Error, "Unexpected failure inserting FilesystemQueue entry"); } else updateContext.Commit(); } }