Exemplo n.º 1
0
        /// <summary>
        /// Returns number of Delete Study, Tier Migrate, and Study Purge work queue items
        /// that are still Pending or In Progress for the filesystem associated with the
        /// specified <see cref="ServiceLock"/>.
        /// </summary>
        /// <param name="item">The ServiceLock item.</param>
        /// <returns>The number of WorkQueue entries pending.</returns>
        private int CheckWorkQueueCount(Model.ServiceLock item)
        {
            using (ServerExecutionContext context = new ServerExecutionContext())
            {
                IWorkQueueEntityBroker select = context.ReadContext.GetBroker <IWorkQueueEntityBroker>();

                WorkQueueSelectCriteria criteria = new WorkQueueSelectCriteria();

                criteria.WorkQueueTypeEnum.In(new[]
                {
                    WorkQueueTypeEnum.DeleteStudy, WorkQueueTypeEnum.MigrateStudy,
                    WorkQueueTypeEnum.PurgeStudy
                });

                // Do Pending status, in case there's a Failure status entry, we don't want to
                // block on that.
                criteria.WorkQueueStatusEnum.In(new[] { WorkQueueStatusEnum.Pending, WorkQueueStatusEnum.InProgress });

                FilesystemStudyStorageSelectCriteria filesystemCriteria = new FilesystemStudyStorageSelectCriteria();

                filesystemCriteria.FilesystemKey.EqualTo(item.FilesystemKey);

                criteria.FilesystemStudyStorageRelatedEntityCondition.Exists(filesystemCriteria);
                int count = select.Count(criteria);

                return(count);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Checks for the existinance of a SOP for a given Study in the <see cref="WorkQueue"/> for a <see cref="WorkQueueTypeEnum.ReconcileStudy"/>.
        /// </summary>
        /// <param name="studyStorageKey">The StudyStorage primary key</param>
        /// <param name="seriesInstanceUid">The Series Instance Uid of the Sop</param>
        /// <param name="sopInstanceUid">The Sop Instance to look for</param>
        /// <returns>true if an entry exists, false if it doesn't</returns>
        static public bool WorkQueueUidExists(ServerEntityKey studyStorageKey, string seriesInstanceUid, string sopInstanceUid)
        {
            Platform.CheckForNullReference(studyStorageKey, "studyStorageKey");

            using (ServerExecutionContext scope = new ServerExecutionContext())
            {
                IWorkQueueEntityBroker     broker            = scope.PersistenceContext.GetBroker <IWorkQueueEntityBroker>();
                WorkQueueUidSelectCriteria uidSelectCriteria = new WorkQueueUidSelectCriteria();
                uidSelectCriteria.SeriesInstanceUid.EqualTo(seriesInstanceUid);
                uidSelectCriteria.SopInstanceUid.EqualTo(sopInstanceUid);
                WorkQueueSelectCriteria selectCriteria = new WorkQueueSelectCriteria();
                selectCriteria.StudyStorageKey.EqualTo(studyStorageKey);
                selectCriteria.WorkQueueTypeEnum.EqualTo(WorkQueueTypeEnum.ReconcileStudy);
                selectCriteria.WorkQueueUidRelatedEntityCondition.Exists(uidSelectCriteria);

                return(broker.Count(selectCriteria) > 0);
            }
        }
Exemplo n.º 3
0
        private Study GetStudyAndQueues(StudyStorageLocation location, out int integrityQueueCount, out int workQueueCount)
        {
            using (IReadContext context = _store.OpenReadContext())
            {
                IStudyIntegrityQueueEntityBroker  integrityBroker   = context.GetBroker <IStudyIntegrityQueueEntityBroker>();
                StudyIntegrityQueueSelectCriteria integrityCriteria = new StudyIntegrityQueueSelectCriteria();
                integrityCriteria.StudyStorageKey.EqualTo(location.Key);
                integrityQueueCount = integrityBroker.Count(integrityCriteria);

                IWorkQueueEntityBroker  workBroker   = context.GetBroker <IWorkQueueEntityBroker>();
                WorkQueueSelectCriteria workCriteria = new WorkQueueSelectCriteria();
                workCriteria.StudyStorageKey.EqualTo(location.Key);
                workQueueCount = workBroker.Count(workCriteria);

                IStudyEntityBroker  procedure = context.GetBroker <IStudyEntityBroker>();
                StudySelectCriteria criteria  = new StudySelectCriteria();
                criteria.StudyStorageKey.EqualTo(location.Key);
                return(procedure.FindOne(criteria));
            }
        }