コード例 #1
0
		public void TestAddAndGet()
		{
			DeleteAllWorkItemUids();

			long oid, workItemOid;
			string version;
			using (var context = new DataAccessContext())
			{
				WorkItem workItem;

				var workItemBroker = context.GetWorkItemBroker();
				workItemBroker.AddWorkItem(workItem = CreateWorkItem("A"));

				var workItemUid = CreateWorkItemUid(workItem, "ABCDEF", "2", "3", true, true, 123);
				var broker = context.GetWorkItemUidBroker();
				broker.AddWorkItemUid(workItemUid);

				context.Commit();

				workItemOid = workItem.Oid;
				Assert.AreNotEqual(0, oid = workItemUid.Oid, "Oid should have been assigned on insert");
				Assert.IsNotNull(workItemUid.Version, "Version should have been assigned on insert");

				version = workItemUid.Version.ToString();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemUidBroker();

				var workItemUid = broker.GetWorkItemUid(oid);
				Assert.AreEqual("ABCDEF", workItemUid.File, "File");
				Assert.AreEqual("2", workItemUid.SeriesInstanceUid, "SeriesInstanceUid");
				Assert.AreEqual("3", workItemUid.SopInstanceUid, "SopInstanceUid");
				Assert.AreEqual(workItemOid, workItemUid.WorkItemOid, "WorkItemOid");
				Assert.AreEqual(true, workItemUid.Complete, "Complete");
				Assert.AreEqual(true, workItemUid.Failed, "Failed");
				Assert.AreEqual(123, workItemUid.FailureCount, "FailureCount");

				workItemUid.Failed = false;
				workItemUid.FailureCount = null;
				context.Commit();

				Assert.AreNotEqual(version, workItemUid.Version, "Version should have been changed on update");
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemUidBroker();

				var workItemUid = broker.GetWorkItemUid(oid);
				Assert.AreEqual("ABCDEF", workItemUid.File, "File");
				Assert.AreEqual("2", workItemUid.SeriesInstanceUid, "SeriesInstanceUid");
				Assert.AreEqual("3", workItemUid.SopInstanceUid, "SopInstanceUid");
				Assert.AreEqual(workItemOid, workItemUid.WorkItemOid, "WorkItemOid");
				Assert.AreEqual(true, workItemUid.Complete, "Complete");
				Assert.AreEqual(false, workItemUid.Failed, "Failed");
				Assert.AreEqual(null, workItemUid.FailureCount, "FailureCount");
			}
		}
コード例 #2
0
		public void Dispose()
		{
			if (context != null)
			{
				context.Dispose();
				context = null;
			}
		}
コード例 #3
0
ファイル: BrokerTests.cs プロジェクト: UIKit0/ClearCanvas
 private void DeleteAllDocuments()
 {
     using (var context = new DataAccessContext())
     {
         var broker = context.GetConfigurationDocumentBroker();
         broker.DeleteAllDocuments();
     }
 }
コード例 #4
0
		public UnitOfWork(IDataAccessContext context,
			IUserManagerProxy userManagerProxy,
			ICategoryLogRepository<CategoryLog> categoryLog
			)
		{
			this.context = context as DataAccessContext;
			this.UserManager = userManagerProxy;
			this.CategoryLogRepository = categoryLog;

		}
コード例 #5
0
ファイル: SettingsStoreTest.cs プロジェクト: nhannd/Xian
        public void Initialize()
        {
            Platform.SetExtensionFactory(new UnitTestExtensionFactory(
                new Dictionary<Type, Type>
                    {
                        {typeof(ServiceProviderExtensionPoint), typeof(SystemConfigurationServiceProvider)}
                    }));

            using (var context = new DataAccessContext())
            {
                var broker = context.GetConfigurationDocumentBroker();
                broker.DeleteAllDocuments();
            }
        }
コード例 #6
0
ファイル: WorkItemQuery.cs プロジェクト: hksonngan/Xian
 private WorkItemQuery()
 {
     _context = new DataAccessContext(DataAccessContext.WorkItemMutex);
 }
コード例 #7
0
        public void TestAddAndGetPrior()
        {
            DeleteAllDocuments();

            string documentName = "test";
            string instanceKey  = null;
            string user         = null;

            var oldestKey = new ConfigurationDocumentKey(documentName, new Version(3, 5, 21685, 22177), user, instanceKey);
            var oldest    = new ConfigurationDocument
            {
                CreationTime          = DateTime.Now,
                DocumentName          = oldestKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(oldestKey.Version, false, false),
                User         = oldestKey.User,
                InstanceKey  = oldestKey.InstanceKey,
                DocumentText = "oldest"
            };

            var previousKey = new ConfigurationDocumentKey(documentName, new Version(4, 4, 21685, 22177), user, instanceKey);
            var previous    = new ConfigurationDocument
            {
                CreationTime          = DateTime.Now,
                DocumentName          = previousKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(previousKey.Version, false, false),
                User         = previousKey.User,
                InstanceKey  = previousKey.InstanceKey,
                DocumentText = "previous"
            };

            var newestKey = new ConfigurationDocumentKey(documentName, new Version(5, 1, 21685, 22177), user, instanceKey);
            var newest    = new ConfigurationDocument
            {
                CreationTime          = DateTime.Now,
                DocumentName          = newestKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(newestKey.Version, false, false),
                User         = newestKey.User,
                InstanceKey  = newestKey.InstanceKey,
                DocumentText = "newest"
            };

            using (var context = new DataAccessContext())
            {
                var broker = context.GetConfigurationDocumentBroker();
                broker.AddConfigurationDocument(oldest);
                broker.AddConfigurationDocument(previous);
                broker.AddConfigurationDocument(newest);
                context.Commit();
            }

            using (var context = new DataAccessContext())
            {
                var broker          = context.GetConfigurationDocumentBroker();
                var oldestRetrieved = broker.GetConfigurationDocument(oldestKey);
                Assert.AreEqual(oldestRetrieved.DocumentName, oldest.DocumentName);
                Assert.AreEqual(oldestRetrieved.DocumentVersionString, oldest.DocumentVersionString);

                var previousRetrieved = broker.GetConfigurationDocument(previousKey);
                Assert.AreEqual(previousRetrieved.DocumentName, previous.DocumentName);
                Assert.AreEqual(previousRetrieved.DocumentVersionString, previous.DocumentVersionString);

                var newestRetrieved = broker.GetConfigurationDocument(newestKey);
                Assert.AreEqual(newestRetrieved.DocumentName, newest.DocumentName);
                Assert.AreEqual(newestRetrieved.DocumentVersionString, newest.DocumentVersionString);

                var previousOfNewest = broker.GetPriorConfigurationDocument(newestKey);
                Assert.AreEqual(previousOfNewest.DocumentName, previous.DocumentName);
                Assert.AreEqual(previousOfNewest.DocumentVersionString, previous.DocumentVersionString);
            }
        }
コード例 #8
0
        public bool Write(object target, object value, DataAccessContext context)
        {
            Dictionary <string, ItemModel> model = (Dictionary <string, ItemModel>)target;

            if (model == null)
            {
                return(false);
            }
            if (value == null || string.IsNullOrWhiteSpace(value.ToString()))
            {
                return(false);
            }

            if (value != null && Filter != null)
            {
                if (Filter == "sa-tags" && value.ToString().Contains("sa-tags"))
                {
                    string[] tagList = value.ToString().Replace("[", "").Replace("]", "").Replace("sa-tags:", "").Split(',');

                    List <Tag> lstTags = new List <Tag>();

                    foreach (var i in tagList)
                    {
                        if (!string.IsNullOrEmpty(i))
                        {
                            Tag tag = new Tag();
                            tag.Name      = i;
                            tag.Available = false;
                            lstTags.Add(tag);
                        }
                    }

                    Database dbContext = Sitecore.Configuration.Factory.GetDatabase("master");

                    var items = dbContext.GetItem(TagRoots.TagsRoot).Axes.GetDescendants();

                    foreach (var tag in lstTags)
                    {
                        foreach (var item in items)
                        {
                            if (tag.Name.ToLower() == item.Name.ToLower())
                            {
                                tag.ItemId    = item.ID.ToString();
                                tag.Available = true;
                            }
                        }

                        if (!tag.Available && !string.IsNullOrEmpty(tag.Name))
                        {
                            TextInfo ti = CultureInfo.CurrentCulture.TextInfo;

                            using (new SecurityDisabler())
                            {
                                Item         parentItem = dbContext.Items[TagRoots.TagsRoot];
                                TemplateItem template   = dbContext.GetTemplate(Templates.Tag);

                                string tagName = Regex.Replace(tag.Name, "[^a-zA-Z0-9_]+", "-");
                                tagName = tagName.Trim('-');
                                tagName = tagName.Trim(' ');

                                Item newItem = parentItem.Add(tagName, template);
                                if (newItem != null)
                                {
                                    newItem.Editing.BeginEdit();
                                    newItem.Appearance.DisplayName = ti.ToTitleCase(tagName);
                                    newItem.Editing.EndEdit();
                                }
                                tag.ItemId    = newItem.ID.ToString();
                                tag.Available = true;
                            }
                        }
                    }

                    string tagvalues = string.Empty;

                    if (lstTags.Count > 0)
                    {
                        foreach (var tag in lstTags)
                        {
                            tagvalues = tagvalues + tag.ItemId + "|";
                        }

                        value = tagvalues.Remove(tagvalues.Length - 1, 1);
                    }
                }
                else if (Filter == "sa-locations" && value.ToString().Contains("sa-locations"))
                {
                    string[] tagList = value.ToString().Replace("[", "").Replace("]", "").Replace("sa-locations:", "").Split(',');

                    List <Tag> lstTags = new List <Tag>();

                    foreach (var i in tagList)
                    {
                        if (!string.IsNullOrEmpty(i))
                        {
                            Tag tag = new Tag();
                            tag.Name      = i;
                            tag.Available = false;
                            lstTags.Add(tag);
                        }
                    }

                    Database dbContext = Sitecore.Configuration.Factory.GetDatabase("master");

                    var items = dbContext.GetItem(TagRoots.LocationTagsRoot).Axes.GetDescendants();

                    foreach (var tag in lstTags)
                    {
                        foreach (var item in items)
                        {
                            if (tag.Name.ToLower() == item.Name.ToLower())
                            {
                                tag.ItemId    = item.ID.ToString();
                                tag.Available = true;
                            }
                        }

                        if (!tag.Available && !string.IsNullOrEmpty(tag.Name))
                        {
                            TextInfo ti = CultureInfo.CurrentCulture.TextInfo;

                            using (new SecurityDisabler())
                            {
                                Item         parentItem = dbContext.Items[TagRoots.LocationTagsRoot];
                                TemplateItem template   = dbContext.GetTemplate(Templates.Tag);

                                Item newItem = parentItem.Add(tag.Name.ToLower(), template);
                                if (newItem != null)
                                {
                                    newItem.Editing.BeginEdit();
                                    newItem.Appearance.DisplayName = ti.ToTitleCase(tag.Name.Replace("-", " "));
                                    newItem.Editing.EndEdit();
                                }
                                tag.ItemId    = newItem.ID.ToString();
                                tag.Available = true;
                            }
                        }
                    }

                    string tagvalues = string.Empty;

                    if (lstTags.Count > 0)
                    {
                        foreach (var tag in lstTags)
                        {
                            tagvalues = tagvalues + tag.ItemId + "|";
                        }

                        value = tagvalues.Remove(tagvalues.Length - 1, 1);
                    }
                }
                else
                {
                    Loggers.Logger log = new Loggers.Logger();

                    object ItemId   = null;
                    object ItemName = null;

                    model[Language].TryGetValue("ItemID", out ItemId);
                    model[Language].TryGetValue("ItemName", out ItemName);

                    log.Error(string.Format("{0} - {1}, Invalid tag : {2}", ItemId, ItemName, value));

                    value = string.Empty;
                }
            }

            model[Language][Field] = value;

            return(true);
        }
コード例 #9
0
 /// <inheritdoc/>
 public DiscoveredDatabase Discover(DataAccessContext context)
 {
     return(_selfCertifyingDataAccessPoint.Discover(context));
 }
コード例 #10
0
 public GenericRepository(DataAccessContext context)
 {
     this.context = context;
     this.dbSet   = context.Set <TEntity>();
 }
コード例 #11
0
ファイル: IssueController.cs プロジェクト: war-man/APPartment
 public IssuesController(DataAccessContext context) : base(context)
 {
     _context = context;
 }
コード例 #12
0
		public void TestGetStudyCount()
		{
			DeleteAllStudies();

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();
				broker.AddStudy(CreateStudy("12.3", "A123"));
				broker.AddStudy(CreateStudy("45.6", "A456", deleted : true));
				broker.AddStudy(CreateStudy("78.9", "A789"));
				broker.AddStudy(CreateStudy("", "A"));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var count = broker.GetStudyCount();

				Assert.AreEqual(4, count);
			}
		}
コード例 #13
0
		public void TestGetWorkItemsScheduledBeforeOrHighPriority()
		{
			DeleteAllWorkItems();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();
				broker.AddWorkItem(CreateWorkItem(_idCancelled, "1", status : WorkItemStatusEnum.Canceled, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "1", status : WorkItemStatusEnum.Canceling, scheduledTime : pastTime, priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "1", status : WorkItemStatusEnum.Complete, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "1", status : WorkItemStatusEnum.DeleteInProgress, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "1", status : WorkItemStatusEnum.Deleted, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "1", status : WorkItemStatusEnum.Failed, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "1", status : WorkItemStatusEnum.Idle, scheduledTime : pastTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "1", status : WorkItemStatusEnum.InProgress, scheduledTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "1", status : WorkItemStatusEnum.Pending, scheduledTime : pastTime));

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "2", status : WorkItemStatusEnum.Canceled, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "2", status : WorkItemStatusEnum.Canceling, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "2", status : WorkItemStatusEnum.Complete, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "2", status : WorkItemStatusEnum.DeleteInProgress, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "2", status : WorkItemStatusEnum.Deleted, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "2", status : WorkItemStatusEnum.Failed, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "2", status : WorkItemStatusEnum.Idle, scheduledTime : futureTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "2", status : WorkItemStatusEnum.InProgress, scheduledTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "2", status : WorkItemStatusEnum.Pending, scheduledTime : futureTime, priority : WorkItemPriorityEnum.Stat));

				broker.AddWorkItem(CreateWorkItem(_idIdling, "3", status : WorkItemStatusEnum.Idle, scheduledTime : time.AddMinutes(-3), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idPending, "4", status : WorkItemStatusEnum.Pending, scheduledTime : time.AddMinutes(-1), priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "5", status : WorkItemStatusEnum.Idle, scheduledTime : time.AddMinutes(-1)));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				var highPriority = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time, WorkItemPriorityEnum.High, null, null, null).ToList();
				var highPriorityFuture = broker.GetWorkItemsScheduledBeforeOrHigherPriority(futureTime.AddMinutes(10), WorkItemPriorityEnum.High, null, null, null).ToList();
				var highPriorityPast = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time.AddMinutes(-10), WorkItemPriorityEnum.High, null, null, null).ToList();
				var highPriorityRunningOrIdle = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time, WorkItemPriorityEnum.High, WorkItemStatusFilter.RunningOrIdle, null, null).ToList();
				var highPriorityStudyFilter = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time, WorkItemPriorityEnum.High, null, "1", null).ToList();
				var highPriorityTypeFilter = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time, WorkItemPriorityEnum.High, null, null, _idCanceling, _idInProgress, _idPending).ToList();
				var highPriorityStudyTypeFilter = broker.GetWorkItemsScheduledBeforeOrHigherPriority(time, WorkItemPriorityEnum.High, null, "1", _idCanceling, _idInProgress, _idPending).ToList();

				// this ensures that the results are valid by checking that future time is indeed still in the future
				Assert.Less(DateTime.Now, futureTime, "Rerun Test! - Results are invalid due to an unreasonable delay during test setup, causing future timestamps to not be in the future");

				Assert.AreEqual(4, highPriority.Count(), "Query yielded unexpected results for high or higher priority");
				Assert.AreEqual("1" + _idCanceling, highPriority[0].StudyInstanceUid + highPriority[0].Type, "Query yield unexpected item");
				Assert.AreEqual("3" + _idIdling, highPriority[1].StudyInstanceUid + highPriority[1].Type, "Query yield unexpected item");
				Assert.AreEqual("1" + _idIdling, highPriority[2].StudyInstanceUid + highPriority[2].Type, "Query yield unexpected item");
				Assert.AreEqual("4" + _idPending, highPriority[3].StudyInstanceUid + highPriority[3].Type, "Query yield unexpected item");

				Assert.AreEqual(highPriority, highPriorityFuture, "Query should not yield results scheduled for future");
				Assert.AreEqual(3, highPriorityPast.Count(), "Query yielded unexpected results for high or higher priority (past query)");
				Assert.AreEqual("1" + _idCanceling, highPriorityPast[0].StudyInstanceUid + highPriorityPast[0].Type, "Query yield unexpected item (past query)");
				Assert.AreEqual("3" + _idIdling, highPriorityPast[1].StudyInstanceUid + highPriorityPast[1].Type, "Query yield unexpected item (past query)");
				Assert.AreEqual("1" + _idIdling, highPriorityPast[2].StudyInstanceUid + highPriorityPast[2].Type, "Query yield unexpected item (past query)");

				Assert.AreEqual(3, highPriorityRunningOrIdle.Count(), "Query yielded unexpected results for high or higher priority (running or idle status filter)");
				Assert.AreEqual("1" + _idCanceling, highPriorityRunningOrIdle[0].StudyInstanceUid + highPriorityRunningOrIdle[0].Type, "Query yield unexpected item (running or idle status filter)");
				Assert.AreEqual("3" + _idIdling, highPriorityRunningOrIdle[1].StudyInstanceUid + highPriorityRunningOrIdle[1].Type, "Query yield unexpected item (running or idle status filter)");
				Assert.AreEqual("1" + _idIdling, highPriorityRunningOrIdle[2].StudyInstanceUid + highPriorityRunningOrIdle[2].Type, "Query yield unexpected item (running or idle status filter)");

				Assert.AreEqual(2, highPriorityStudyFilter.Count(), "Query yielded unexpected results for high or higher priority (study filter)");
				Assert.AreEqual("1" + _idCanceling, highPriorityStudyFilter[0].StudyInstanceUid + highPriorityStudyFilter[0].Type, "Query yield unexpected item (study filter)");
				Assert.AreEqual("1" + _idIdling, highPriorityStudyFilter[1].StudyInstanceUid + highPriorityStudyFilter[1].Type, "Query yield unexpected item (study filter)");

				Assert.AreEqual(2, highPriorityTypeFilter.Count(), "Query yielded unexpected results for high or higher priority (type filter)");
				Assert.AreEqual("1" + _idCanceling, highPriorityTypeFilter[0].StudyInstanceUid + highPriorityTypeFilter[0].Type, "Query yield unexpected item (type filter)");
				Assert.AreEqual("4" + _idPending, highPriorityTypeFilter[1].StudyInstanceUid + highPriorityTypeFilter[1].Type, "Query yield unexpected item (type filter)");

				Assert.AreEqual(1, highPriorityStudyTypeFilter.Count(), "Query yielded unexpected results for high or higher priority (study and type filter)");
				Assert.AreEqual("1" + _idCanceling, highPriorityStudyTypeFilter[0].StudyInstanceUid + highPriorityStudyTypeFilter[0].Type, "Query yield unexpected item (study and type filter)");
			}
		}
コード例 #14
0
		public void TestGetWorkItems()
		{
			DeleteAllWorkItems();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			long oidOfActive, oidOfDeleted, oidOfDeleting;
			using (var context = new DataAccessContext())
			{
				WorkItem itemA, itemB, itemC;
				var broker = context.GetWorkItemBroker();

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "1", status : WorkItemStatusEnum.Canceled, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "1", status : WorkItemStatusEnum.Canceling, processTime : pastTime, priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "1", status : WorkItemStatusEnum.Complete, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "1", status : WorkItemStatusEnum.DeleteInProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "1", status : WorkItemStatusEnum.Deleted, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "1", status : WorkItemStatusEnum.Failed, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "1", status : WorkItemStatusEnum.Idle, processTime : pastTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "1", status : WorkItemStatusEnum.InProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "1", status : WorkItemStatusEnum.Pending, processTime : pastTime));

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "2", status : WorkItemStatusEnum.Canceled, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "2", status : WorkItemStatusEnum.Canceling, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "2", status : WorkItemStatusEnum.Complete, processTime : futureTime));
				broker.AddWorkItem(itemB = CreateWorkItem(_idDeleting, "2", status : WorkItemStatusEnum.DeleteInProgress, processTime : futureTime));
				broker.AddWorkItem(itemA = CreateWorkItem(_idDeleted, "2", status : WorkItemStatusEnum.Deleted, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "2", status : WorkItemStatusEnum.Failed, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "2", status : WorkItemStatusEnum.Idle, processTime : futureTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(itemC = CreateWorkItem(_idInProgress, "2", status : WorkItemStatusEnum.InProgress, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "2", status : WorkItemStatusEnum.Pending, processTime : futureTime, priority : WorkItemPriorityEnum.Stat));

				broker.AddWorkItem(CreateWorkItem(_idIdling, "3", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-3), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idPending, "4", status : WorkItemStatusEnum.Pending, processTime : time.AddMinutes(-1), priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "5", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-1)));

				broker.AddWorkItem(CreateWorkItem(_idIdling, "999", status : WorkItemStatusEnum.Deleted, processTime : time.AddMinutes(-1)));

				context.Commit();

				oidOfDeleted = itemA.Oid;
				oidOfDeleting = itemB.Oid;
				oidOfActive = itemC.Oid;
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				var getByOid = broker.GetWorkItems(null, null, null, oidOfActive).SingleOrDefault();
				var getByDeletedOid = broker.GetWorkItems(null, null, null, oidOfDeleted).ToList();
				var getByOidAndStudy = broker.GetWorkItems(null, null, "1", oidOfDeleted).ToList();
				var getByStudy = broker.GetWorkItems(null, null, "2").ToList();
				var getByStatus = broker.GetWorkItems(null, WorkItemStatusFilter.RunningOrIdle, string.Empty).ToList();
				var getByStatusAndStudy = broker.GetWorkItems(null, WorkItemStatusFilter.RunningOrIdle, "2").ToList();
				var getByType = broker.GetWorkItems(_idIdling, null, null).ToList();
				var getByTypeAndStatus = broker.GetWorkItems(_idIdling, WorkItemStatusFilter.Nil, null).ToList();
				var getByTypeAndStatusAndStudy = broker.GetWorkItems(_idIdling, WorkItemStatusFilter.Nil, "2").SingleOrDefault();

				// this ensures that the results are valid by checking that future time is indeed still in the future
				Assert.Less(DateTime.Now, futureTime, "Rerun Test! - Results are invalid due to an unreasonable delay during test setup, causing future timestamps to not be in the future");

				Assert.IsNotNull(getByOid, "Query by OID did not return expected result");
				Assert.AreEqual(oidOfActive, getByOid.Oid, "Query by OID did not return expected result");
				Assert.IsFalse(getByDeletedOid.Any(), "Query by OID (Deleted) should not return any results");
				Assert.IsFalse(getByOidAndStudy.Any(), "Query by OID and Study should not return any results");

				Assert.AreEqual(7, getByStudy.Count, "Query by Study did not expected number of results");
				Assert.AreEqual(7, getByStudy.Select(x => x.Oid).Distinct().Count(), "Query by Study did not expected number of results");
				Assert.IsFalse(getByStudy.Any(x => x.Oid == oidOfDeleted || x.Oid == oidOfDeleting), "Query by Study returned deleted items");
				Assert.AreEqual(getByStudy.OrderBy(x => x.Priority).ThenBy(x => x.ProcessTime).ToList(), getByStudy, "Query by Study returned items out of order");

				Assert.AreEqual(8, getByStatus.Count, "Query by Status did not expected number of results");
				Assert.AreEqual(8, getByStatus.Select(x => x.Oid).Distinct().Count(), "Query by Status did not expected number of results");
				Assert.IsTrue(getByStatus.All(x => x.Status == WorkItemStatusEnum.Canceling || x.Status == WorkItemStatusEnum.InProgress || x.Status == WorkItemStatusEnum.Idle),
				              "Query by Status returned deleted items");
				Assert.AreEqual(getByStatus.OrderBy(x => x.Priority).ThenBy(x => x.ProcessTime).ToList(), getByStatus, "Query by Status returned items out of order");

				Assert.AreEqual(3, getByStatusAndStudy.Count, "Query by Status and Study did not expected number of results");
				Assert.AreEqual(3, getByStatusAndStudy.Select(x => x.Oid).Distinct().Count(), "Query by Status and Study did not expected number of results");
				Assert.IsTrue(getByStatusAndStudy.All(x => x.Status == WorkItemStatusEnum.Canceling || x.Status == WorkItemStatusEnum.InProgress || x.Status == WorkItemStatusEnum.Idle),
				              "Query by Status and Study returned deleted items");
				Assert.AreEqual(getByStatusAndStudy.OrderBy(x => x.Priority).ThenBy(x => x.ProcessTime).ToList(), getByStatusAndStudy, "Query by Status and Study returned items out of order");

				Assert.AreEqual(4, getByType.Count, "Query by Type did not expected number of results");
				Assert.AreEqual(4, getByType.Select(x => x.Oid).Distinct().Count(), "Query by Type did not expected number of results");
				Assert.IsTrue(getByType.All(x => x.Status == WorkItemStatusEnum.Canceling || x.Status == WorkItemStatusEnum.InProgress || x.Status == WorkItemStatusEnum.Idle),
				              "Query by Type returned deleted items");
				Assert.AreEqual(getByType.OrderBy(x => x.Priority).ThenBy(x => x.ProcessTime).ToList(), getByType, "Query by Type returned items out of order");

				Assert.AreEqual(5, getByTypeAndStatus.Count, "Query by Type and Status did not expected number of results");
				Assert.AreEqual(5, getByTypeAndStatus.Select(x => x.Oid).Distinct().Count(), "Query by Type and Status did not expected number of results");
				Assert.IsTrue(getByTypeAndStatus.All(x => x.Status == WorkItemStatusEnum.Canceling || x.Status == WorkItemStatusEnum.InProgress || x.Status == WorkItemStatusEnum.Idle || x.StudyInstanceUid == "999"),
				              "Query by Type and Status returned unexpected items");
				Assert.AreEqual(getByTypeAndStatus.OrderBy(x => x.Priority).ThenBy(x => x.ProcessTime).ToList(), getByTypeAndStatus, "Query by Type and Status returned items out of order");

				Assert.IsNotNull(getByTypeAndStatusAndStudy, "Query by Type and Status and Study did not expected results");
			}
		}
コード例 #15
0
		public void TestGetWorkItemsForProcessingAnyPriority()
		{
			DeleteAllWorkItems();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();
				broker.AddWorkItem(CreateWorkItem(_idCancelled, "1", status : WorkItemStatusEnum.Canceled, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "1", status : WorkItemStatusEnum.Canceling, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "1", status : WorkItemStatusEnum.Complete, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "1", status : WorkItemStatusEnum.DeleteInProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "1", status : WorkItemStatusEnum.Deleted, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "1", status : WorkItemStatusEnum.Failed, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "1a", status : WorkItemStatusEnum.Idle, processTime : pastTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "1", status : WorkItemStatusEnum.InProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "1b", status : WorkItemStatusEnum.Pending, processTime : pastTime));

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "2", status : WorkItemStatusEnum.Canceled, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "2", status : WorkItemStatusEnum.Canceling, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "2", status : WorkItemStatusEnum.Complete, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "2", status : WorkItemStatusEnum.DeleteInProgress, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "2", status : WorkItemStatusEnum.Deleted, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "2", status : WorkItemStatusEnum.Failed, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "2a", status : WorkItemStatusEnum.Idle, processTime : futureTime, priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "2", status : WorkItemStatusEnum.InProgress, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "2b", status : WorkItemStatusEnum.Pending, processTime : futureTime, priority : WorkItemPriorityEnum.Stat));

				broker.AddWorkItem(CreateWorkItem(_idIdling, "3", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-3), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idPending, "4", status : WorkItemStatusEnum.Pending, processTime : time.AddMinutes(-1), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "5", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-1)));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				// there are 5 processable items here (status is idle or pending, and process time in the past)
				var topProcessable = broker.GetWorkItemsForProcessing(3);
				var allProcessable = broker.GetWorkItemsForProcessing(7);

				// this ensures that the results are valid by checking that future time is indeed still in the future
				Assert.Less(DateTime.Now, futureTime, "Rerun Test! - Results are invalid due to an unreasonable delay during test setup, causing future timestamps to not be in the future");

				Assert.AreEqual(3, topProcessable.Count, "Query top should yield 3 items");
				Assert.IsTrue(topProcessable.All(x => x.Status == WorkItemStatusEnum.Idle || x.Status == WorkItemStatusEnum.Pending), "Query top yielded item with wrong status");
				Assert.AreEqual("3", topProcessable[0].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("4", topProcessable[1].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("1a", topProcessable[2].StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.AreEqual(5, allProcessable.Count, "Query all should yield 5 items");
				Assert.IsTrue(allProcessable.All(x => x.Status == WorkItemStatusEnum.Idle || x.Status == WorkItemStatusEnum.Pending), "Query top yielded item with wrong status");
				Assert.AreEqual("3", allProcessable[0].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("4", allProcessable[1].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("1a", allProcessable[2].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("1b", allProcessable[3].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("5", allProcessable[4].StudyInstanceUid, "Query top yielded item with wrong identity");
			}
		}
コード例 #16
0
		public void TestGetWorkItemsForProcessingWithPriority()
		{
			DeleteAllWorkItems();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();
				broker.AddWorkItem(CreateWorkItem(_idCancelled, "1", status : WorkItemStatusEnum.Canceled, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "1", status : WorkItemStatusEnum.Canceling, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "1", status : WorkItemStatusEnum.Complete, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "1", status : WorkItemStatusEnum.DeleteInProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "1", status : WorkItemStatusEnum.Deleted, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "1", status : WorkItemStatusEnum.Failed, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "1a", status : WorkItemStatusEnum.Idle, processTime : pastTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "1", status : WorkItemStatusEnum.InProgress, processTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "1b", status : WorkItemStatusEnum.Pending, processTime : pastTime));

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "2", status : WorkItemStatusEnum.Canceled, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "2", status : WorkItemStatusEnum.Canceling, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "2", status : WorkItemStatusEnum.Complete, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "2", status : WorkItemStatusEnum.DeleteInProgress, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "2", status : WorkItemStatusEnum.Deleted, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "2", status : WorkItemStatusEnum.Failed, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "2a", status : WorkItemStatusEnum.Idle, processTime : futureTime, priority : WorkItemPriorityEnum.High));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "2", status : WorkItemStatusEnum.InProgress, processTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "2b", status : WorkItemStatusEnum.Pending, processTime : futureTime, priority : WorkItemPriorityEnum.Stat));

				broker.AddWorkItem(CreateWorkItem(_idIdling, "3", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-3), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idPending, "4", status : WorkItemStatusEnum.Pending, processTime : time.AddMinutes(-1), priority : WorkItemPriorityEnum.Stat));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "5", status : WorkItemStatusEnum.Idle, processTime : time.AddMinutes(-1)));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				// there are 5 processable items here (status is idle or pending, and process time in the past)
				var highPriority = broker.GetWorkItemsForProcessing(1, WorkItemPriorityEnum.High).SingleOrDefault();
				var statPriority = broker.GetWorkItemsForProcessing(1, WorkItemPriorityEnum.Stat).SingleOrDefault();
				var normPriority = broker.GetWorkItemsForProcessing(1, WorkItemPriorityEnum.Normal).SingleOrDefault();
				var allHighPriority = broker.GetWorkItemsForProcessing(9, WorkItemPriorityEnum.High);
				var allStatPriority = broker.GetWorkItemsForProcessing(9, WorkItemPriorityEnum.Stat);
				var allNormPriority = broker.GetWorkItemsForProcessing(9, WorkItemPriorityEnum.Normal);

				// this ensures that the results are valid by checking that future time is indeed still in the future
				Assert.Less(DateTime.Now, futureTime, "Rerun Test! - Results are invalid due to an unreasonable delay during test setup, causing future timestamps to not be in the future");

				Assert.IsNotNull(highPriority, "Query top did not yield expected result for high");
				Assert.AreEqual("1a", highPriority.StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.IsNotNull(statPriority, "Query top did not yield expected result for stat");
				Assert.AreEqual("3", statPriority.StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.IsNotNull(normPriority, "Query top did not yield expected result for normal");
				Assert.AreEqual("1b", normPriority.StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.AreEqual(1, allHighPriority.Count, "Query top did not yield expected result for high");
				Assert.AreEqual("1a", allHighPriority[0].StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.AreEqual(2, allStatPriority.Count, "Query top did not yield expected result for stat");
				Assert.AreEqual("3", allStatPriority[0].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("4", allStatPriority[1].StudyInstanceUid, "Query top yielded item with wrong identity");

				Assert.AreEqual(2, allNormPriority.Count, "Query top did not yield expected result for normal");
				Assert.AreEqual("1b", allNormPriority[0].StudyInstanceUid, "Query top yielded item with wrong identity");
				Assert.AreEqual("5", allNormPriority[1].StudyInstanceUid, "Query top yielded item with wrong identity");
			}
		}
コード例 #17
0
		public void TestGetWorkItemsDeleted()
		{
			DeleteAllWorkItems();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();
				broker.AddWorkItem(CreateWorkItem(_idCancelled, "1", status : WorkItemStatusEnum.Canceled, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "1", status : WorkItemStatusEnum.Canceling, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "1", status : WorkItemStatusEnum.Complete, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "1", status : WorkItemStatusEnum.DeleteInProgress, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "1", status : WorkItemStatusEnum.Deleted, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "1", status : WorkItemStatusEnum.Failed, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "1", status : WorkItemStatusEnum.Idle, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "1", status : WorkItemStatusEnum.InProgress, deleteTime : pastTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "1", status : WorkItemStatusEnum.Pending, deleteTime : pastTime));

				broker.AddWorkItem(CreateWorkItem(_idCancelled, "2", status : WorkItemStatusEnum.Canceled, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idCanceling, "2", status : WorkItemStatusEnum.Canceling, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idComplete, "2", status : WorkItemStatusEnum.Complete, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleting, "2", status : WorkItemStatusEnum.DeleteInProgress, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "2", status : WorkItemStatusEnum.Deleted, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idFailed, "2", status : WorkItemStatusEnum.Failed, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idIdling, "2", status : WorkItemStatusEnum.Idle, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idInProgress, "2", status : WorkItemStatusEnum.InProgress, deleteTime : futureTime));
				broker.AddWorkItem(CreateWorkItem(_idPending, "2", status : WorkItemStatusEnum.Pending, deleteTime : futureTime));

				broker.AddWorkItem(CreateWorkItem(_idDeleted, "3", status : WorkItemStatusEnum.Deleted, deleteTime : time.AddMinutes(-1)));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "4", status : WorkItemStatusEnum.Deleted, deleteTime : time.AddMinutes(-2)));
				broker.AddWorkItem(CreateWorkItem(_idDeleted, "5", status : WorkItemStatusEnum.Deleted, deleteTime : time.AddMinutes(-3)));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				// there are 5 deleted items here (status is deleted)
				var topDeleted = broker.GetWorkItemsDeleted(3);
				var allDeleted = broker.GetWorkItemsDeleted(7);

				// this ensures that the results are valid by checking that future time is indeed still in the future
				Assert.Less(DateTime.Now, futureTime, "Rerun Test! - Results are invalid due to an unreasonable delay during test setup, causing future timestamps to not be in the future");

				Assert.AreEqual(3, topDeleted.Count, "Query top should yield 3 items");
				Assert.IsTrue(topDeleted.All(x => x.Type == _idDeleted), "Query top yielded item with wrong identity");
				Assert.IsTrue(topDeleted.All(x => x.Status == WorkItemStatusEnum.Deleted), "Query top yielded item with wrong status");

				Assert.AreEqual(5, allDeleted.Count, "Query all should yield 5 items");
				Assert.IsTrue(allDeleted.All(x => x.Type == _idDeleted), "Query all yielded item with wrong identity");
				Assert.IsTrue(allDeleted.All(x => x.Status == WorkItemStatusEnum.Deleted), "Query all yielded item with wrong status");
				Assert.AreEqual(1, allDeleted.Count(x => x.StudyInstanceUid == "1"), "Query all failed to yield deletable item");
				Assert.AreEqual(1, allDeleted.Count(x => x.StudyInstanceUid == "2"), "Query all failed to yield deletable item");
				Assert.AreEqual(1, allDeleted.Count(x => x.StudyInstanceUid == "3"), "Query all failed to yield deletable item");
				Assert.AreEqual(1, allDeleted.Count(x => x.StudyInstanceUid == "4"), "Query all failed to yield deletable item");
				Assert.AreEqual(1, allDeleted.Count(x => x.StudyInstanceUid == "5"), "Query all failed to yield deletable item");
			}
		}
コード例 #18
0
		public void TestGetReindexStudies()
		{
			DeleteAllStudies();

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();
				broker.AddStudy(CreateStudy("12.3", "A123"));
				broker.AddStudy(CreateStudy("45.6", "A456", deleted : true, reindex : true));
				broker.AddStudy(CreateStudy("78.9", "A789", reindex : true));
				broker.AddStudy(CreateStudy("", "A", deleted : true));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var studies = broker.GetReindexStudies();

				Assert.AreEqual(2, studies.Count);
				Assert.IsTrue(studies.Any(s => s.StudyInstanceUid == "45.6"), "Missing study 45.6");
				Assert.IsTrue(studies.Any(s => s.StudyInstanceUid == "78.9"), "Missing study 78.9");
			}
		}
コード例 #19
0
		public void TestGetStudiesForDeletion()
		{
			DeleteAllStudies();

			var time = DateTime.Now.Truncate();
			var pastTime = time.AddMinutes(-30);
			var futureTime = time.AddMinutes(30);

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();
				broker.AddStudy(CreateStudy("12.3", "A123"));
				broker.AddStudy(CreateStudy("45.6", "A456", deleted : true, deleteTime : pastTime));
				broker.AddStudy(CreateStudy("78.9", "A789", deleteTime : pastTime.AddMinutes(-1)));
				broker.AddStudy(CreateStudy("89.0", "A890", deleteTime : futureTime));
				broker.AddStudy(CreateStudy("", "A", deleted : true));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var deletableOld = broker.GetStudiesForDeletion(time, 5);
				var deletableOldest = broker.GetStudiesForDeletion(time, 1).SingleOrDefault();

				var deletableAny = broker.GetStudiesForDeletion(futureTime.AddMinutes(100), 9);

				Assert.AreEqual(1, deletableOld.Count);
				Assert.AreEqual("78.9", deletableOld[0].StudyInstanceUid, "Missing deletable old study 78.9");

				Assert.IsNotNull(deletableOldest, "Missing oldest deletable");
				Assert.AreEqual("78.9", deletableOldest.StudyInstanceUid, "missing deletable oldest study");

				Assert.AreEqual(2, deletableAny.Count);
				Assert.AreEqual("78.9", deletableAny[0].StudyInstanceUid, "Missing deletable old study 78.9");
				Assert.AreEqual("89.0", deletableAny[1].StudyInstanceUid, "Missing deletable newer study 89.0");
			}
		}
コード例 #20
0
 public ProductGroupRepository(DataAccessContext context, IMapper mapper) : base(context, mapper)
 {
     _context = context;
     _mapper  = mapper;
 }
コード例 #21
0
		public void TestAddAndGet()
		{
			DeleteAllWorkItems();

			var time = new DateTime(2014, 07, 01, 11, 12, 45);

			long oid;
			string version;
			using (var context = new DataAccessContext())
			{
				var workItem = CreateWorkItem("blah", "1", WorkItemPriorityEnum.High, WorkItemStatusEnum.Idle, 987,
				                              time, time.AddMinutes(1), time.AddMinutes(10), time.AddMinutes(30), time.AddMinutes(60),
				                              "request data", "progress data");

				var broker = context.GetWorkItemBroker();
				broker.AddWorkItem(CreateWorkItem("junk", "2"));
				broker.AddWorkItem(workItem);
				broker.AddWorkItem(CreateWorkItem("junk", "3"));

				context.Commit();

				Assert.AreNotEqual(0, oid = workItem.Oid, "Oid should have been assigned on insert");
				Assert.IsNotNull(workItem.Version, "Version should have been assigned on insert");

				version = workItem.Version.ToString();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				var workItem = broker.GetWorkItem(oid);
				Assert.AreEqual("blah", workItem.Type, "Type");
				Assert.AreEqual("1", workItem.StudyInstanceUid, "StudyInstanceUid");
				Assert.AreEqual(WorkItemPriorityEnum.High, workItem.Priority, "Priority");
				Assert.AreEqual(WorkItemStatusEnum.Idle, workItem.Status, "Status");
				Assert.AreEqual(987, workItem.FailureCount, "FailureCount");
				Assert.AreEqual(time, workItem.RequestedTime, "RequestedTime");
				Assert.AreEqual(time.AddMinutes(1), workItem.ScheduledTime, "ScheduledTime");
				Assert.AreEqual(time.AddMinutes(10), workItem.ProcessTime, "ProcessTime");
				Assert.AreEqual(time.AddMinutes(30), workItem.ExpirationTime, "ExpirationTime");
				Assert.AreEqual(time.AddMinutes(60), workItem.DeleteTime, "DeleteTime");
				Assert.IsNotNull(workItem.Request, "Request");
				Assert.AreEqual("request data", workItem.Request.WorkItemType, "Request.WorkItemType");
				Assert.IsNotNull(workItem.Progress, "Progress");
				Assert.AreEqual("progress data", workItem.Progress.StatusDetails, "Progress.StatusDetails");

				workItem.Status = WorkItemStatusEnum.Pending;
				context.Commit();

				Assert.AreNotEqual(version, workItem.Version, "Version should have been changed on update");
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemBroker();

				var workItem = broker.GetWorkItem(oid);
				Assert.AreEqual("blah", workItem.Type, "Type after update");
				Assert.AreEqual("1", workItem.StudyInstanceUid, "StudyInstanceUid after update");
				Assert.AreEqual(WorkItemPriorityEnum.High, workItem.Priority, "Priority after update");
				Assert.AreEqual(WorkItemStatusEnum.Pending, workItem.Status, "Status after update");
				Assert.AreEqual(987, workItem.FailureCount, "FailureCount after update");
				Assert.AreEqual(time, workItem.RequestedTime, "RequestedTime after update");
				Assert.AreEqual(time.AddMinutes(1), workItem.ScheduledTime, "ScheduledTime after update");
				Assert.AreEqual(time.AddMinutes(10), workItem.ProcessTime, "ProcessTime after update");
				Assert.AreEqual(time.AddMinutes(30), workItem.ExpirationTime, "ExpirationTime after update");
				Assert.AreEqual(time.AddMinutes(60), workItem.DeleteTime, "DeleteTime after update");
				Assert.IsNotNull(workItem.Request, "Request after update");
				Assert.AreEqual("request data", workItem.Request.WorkItemType, "Request.WorkItemType after update");
				Assert.IsNotNull(workItem.Progress, "Progress after update");
				Assert.AreEqual("progress data", workItem.Progress.StatusDetails, "Progress.StatusDetails after update");
			}
		}
コード例 #22
0
		public void TestAddAndGet()
		{
			DeleteAllStudies();

			var time = DateTime.Now.Truncate();

			long oid;
			string version;
			using (var context = new DataAccessContext())
			{
				var study = CreateStudy("123", "A#", "MRN", "BOBSON^BOB", new DateTime(2014, 07, 01), "1234", "DESU", @"CT\PT\KO\PR\SC", 6, 2101, time, true, time.AddMinutes(100));

				var broker = context.GetStudyBroker();
				broker.AddStudy(CreateStudy("456", "2"));
				broker.AddStudy(study);
				broker.AddStudy(CreateStudy("789", "3"));

				context.Commit();

				Assert.AreNotEqual(0, oid = study.Oid, "Oid should have been assigned on insert");
				Assert.IsNotNull(study.Version, "Version should have been assigned on insert");

				version = study.Version.ToString();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var study = broker.GetStudy(oid);
				Assert.AreEqual("123", study.StudyInstanceUid, "StudyInstanceUid");
				Assert.AreEqual("A#", study.AccessionNumber, "AccessionNumber");
				Assert.AreEqual("MRN", study.PatientId, "PatientId");
				Assert.AreEqual("BOBSON^BOB", study.PatientsName, "PatientsName");
				Assert.AreEqual(new DateTime(2014, 07, 01), study.StudyDate, "StudyDate");
				Assert.AreEqual("20140701", study.StudyDateRaw, "StudyDateRaw");
				Assert.AreEqual("1234", study.StudyId, "StudyId");
				Assert.AreEqual("DESU", study.StudyDescription, "StudyDescription");
				Assert.AreEqual(@"CT\PT\KO\PR\SC", study.ModalitiesInStudy, "ModalitiesInStudy");
				Assert.AreEqual(6, study.NumberOfStudyRelatedSeries, "NumberOfStudyRelatedSeries");
				Assert.AreEqual(2101, study.NumberOfStudyRelatedInstances, "NumberOfStudyRelatedInstances");
				Assert.AreEqual(time, study.StoreTime, "StoreTime");
				Assert.AreEqual(true, study.Reindex, "Reindex");
				Assert.AreEqual(time.AddMinutes(100), study.DeleteTime, "DeleteTime");

				study.ModalitiesInStudy = @"CT\PT";
				context.Commit();

				Assert.AreNotEqual(version, study.Version, "Version should have been changed on update");
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var study = broker.GetStudy(oid);
				Assert.AreEqual("123", study.StudyInstanceUid, "StudyInstanceUid");
				Assert.AreEqual("A#", study.AccessionNumber, "AccessionNumber");
				Assert.AreEqual("MRN", study.PatientId, "PatientId");
				Assert.AreEqual("BOBSON^BOB", study.PatientsName, "PatientsName");
				Assert.AreEqual(new DateTime(2014, 07, 01), study.StudyDate, "StudyDate");
				Assert.AreEqual("20140701", study.StudyDateRaw, "StudyDateRaw");
				Assert.AreEqual("1234", study.StudyId, "StudyId");
				Assert.AreEqual("DESU", study.StudyDescription, "StudyDescription");
				Assert.AreEqual(@"CT\PT", study.ModalitiesInStudy, "ModalitiesInStudy");
				Assert.AreEqual(6, study.NumberOfStudyRelatedSeries, "NumberOfStudyRelatedSeries");
				Assert.AreEqual(2101, study.NumberOfStudyRelatedInstances, "NumberOfStudyRelatedInstances");
				Assert.AreEqual(time, study.StoreTime, "StoreTime");
				Assert.AreEqual(true, study.Reindex, "Reindex");
				Assert.AreEqual(time.AddMinutes(100), study.DeleteTime, "DeleteTime");
			}
		}
コード例 #23
0
		public void TestGetStudies()
		{
			DeleteAllStudies();

			long oid123, oid456, oid789, oidBlank;
			using (var context = new DataAccessContext())
			{
				Study study123, study456, study789, studyBlank;

				var broker = context.GetStudyBroker();
				broker.AddStudy(study123 = CreateStudy("12.3", "A123"));
				broker.AddStudy(study456 = CreateStudy("45.6", "A456", deleted : true));
				broker.AddStudy(study789 = CreateStudy("78.9", "A789"));
				broker.AddStudy(studyBlank = CreateStudy("", "A"));

				context.Commit();

				oid123 = study123.Oid;
				oid456 = study456.Oid;
				oid789 = study789.Oid;
				oidBlank = studyBlank.Oid;
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var studies = broker.GetStudies();

				Assert.AreEqual(new[] {oid123, oid456, oid789, oidBlank}.OrderBy(x => x), studies.Select(x => x.Oid).OrderBy(x => x));
			}
		}
コード例 #24
0
 public DataRepository(DataAccessContext context, IMapper mapper) : base(context, mapper)
 {
     _context = context;
     _mapper  = mapper;
 }
コード例 #25
0
ファイル: BrokerTests.cs プロジェクト: UIKit0/ClearCanvas
        public void TestAddAndGetPrior()
        {
            DeleteAllDocuments();

            string documentName = "test";
            string instanceKey = null;
            string user = null;

            var oldestKey = new ConfigurationDocumentKey(documentName, new Version(3, 5, 21685, 22177), user, instanceKey);
            var oldest = new ConfigurationDocument
            {
                CreationTime = DateTime.Now,
                DocumentName = oldestKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(oldestKey.Version, false, false),
                User = oldestKey.User,
                InstanceKey = oldestKey.InstanceKey,
                DocumentText = "oldest"
            };
            
            var previousKey = new ConfigurationDocumentKey(documentName, new Version(4, 4, 21685, 22177), user, instanceKey);
            var previous = new ConfigurationDocument
            {
                CreationTime = DateTime.Now,
                DocumentName = previousKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(previousKey.Version, false, false),
                User = previousKey.User,
                InstanceKey = previousKey.InstanceKey,
                DocumentText = "previous"
            };

            var newestKey = new ConfigurationDocumentKey(documentName, new Version(5, 1, 21685, 22177), user, instanceKey);
            var newest = new ConfigurationDocument
            {
                CreationTime = DateTime.Now,
                DocumentName = newestKey.DocumentName,
                DocumentVersionString = VersionUtils.ToPaddedVersionString(newestKey.Version, false, false),
                User = newestKey.User,
                InstanceKey = newestKey.InstanceKey,
                DocumentText = "newest"
            };

            using (var context = new DataAccessContext())
            {
                var broker = context.GetConfigurationDocumentBroker();
                broker.AddConfigurationDocument(oldest);
                broker.AddConfigurationDocument(previous);
                broker.AddConfigurationDocument(newest);
                context.Commit();
            }

            using (var context = new DataAccessContext())
            {
                var broker = context.GetConfigurationDocumentBroker();
                var oldestRetrieved = broker.GetConfigurationDocument(oldestKey);
                Assert.AreEqual(oldestRetrieved.DocumentName, oldest.DocumentName);
                Assert.AreEqual(oldestRetrieved.DocumentVersionString, oldest.DocumentVersionString);

                var previousRetrieved = broker.GetConfigurationDocument(previousKey);
                Assert.AreEqual(previousRetrieved.DocumentName, previous.DocumentName);
                Assert.AreEqual(previousRetrieved.DocumentVersionString, previous.DocumentVersionString);

                var newestRetrieved = broker.GetConfigurationDocument(newestKey);
                Assert.AreEqual(newestRetrieved.DocumentName, newest.DocumentName);
                Assert.AreEqual(newestRetrieved.DocumentVersionString, newest.DocumentVersionString);

                var previousOfNewest = broker.GetPriorConfigurationDocument(newestKey);
                Assert.AreEqual(previousOfNewest.DocumentName, previous.DocumentName);
                Assert.AreEqual(previousOfNewest.DocumentVersionString, previous.DocumentVersionString);
            }
        }
コード例 #26
0
 /// <inheritdoc/>
 public IDataAccessCredentials GetCredentialsIfExists(DataAccessContext context)
 {
     return(_selfCertifyingDataAccessPoint.GetCredentialsIfExists(context));
 }
コード例 #27
0
		public void TestGetWorkItemUidsForWorkItem()
		{
			DeleteAllWorkItemUids();

			long workItemOidA, workItemOidB, workItemOidC, workItemOidD;
			using (var context = new DataAccessContext())
			{
				WorkItem workItemA, workItemB, workItemC, workItemD;
				var workItemBroker = context.GetWorkItemBroker();
				workItemBroker.AddWorkItem(workItemA = CreateWorkItem("A"));
				workItemBroker.AddWorkItem(workItemB = CreateWorkItem("B"));
				workItemBroker.AddWorkItem(workItemC = CreateWorkItem("C"));
				workItemBroker.AddWorkItem(workItemD = CreateWorkItem("D"));

				var broker = context.GetWorkItemUidBroker();
				broker.AddWorkItemUid(CreateWorkItemUid(workItemA, "file1", "series1", "sop1"));
				broker.AddWorkItemUid(CreateWorkItemUid(workItemA, "file4", "series2", "sop4"));
				broker.AddWorkItemUid(CreateWorkItemUid(workItemB, "file6", "series4", "sop6"));

				broker.AddWorkItemUid(CreateWorkItemUid(workItemA, "file3", "series2", "sop3"));
				broker.AddWorkItemUid(CreateWorkItemUid(workItemA, "file2", "series1", "sop2"));
				broker.AddWorkItemUid(CreateWorkItemUid(workItemB, "file5", "series3", "sop5"));

				context.Commit();

				workItemOidA = workItemA.Oid;
				workItemOidB = workItemB.Oid;
				workItemOidC = workItemC.Oid;
				workItemOidD = workItemD.Oid;
			}

			using (var context = new DataAccessContext())
			{
				var workItemBroker = context.GetWorkItemBroker();
				workItemBroker.Delete(workItemBroker.GetWorkItem(workItemOidD));
				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetWorkItemUidBroker();

				var listA = broker.GetWorkItemUidsForWorkItem(workItemOidA).OrderBy(x => x.File).ToList();
				var listB = broker.GetWorkItemUidsForWorkItem(workItemOidB).OrderBy(x => x.File).ToList();
				var listC = broker.GetWorkItemUidsForWorkItem(workItemOidC);
				var listD = broker.GetWorkItemUidsForWorkItem(workItemOidD);

				Assert.AreEqual(4, listA.Count, "Unexpected number of results for work item A");
				Assert.AreEqual("file1", listA[0].File, "Unexpected result for work item A");
				Assert.AreEqual("file2", listA[1].File, "Unexpected result for work item A");
				Assert.AreEqual("file3", listA[2].File, "Unexpected result for work item A");
				Assert.AreEqual("file4", listA[3].File, "Unexpected result for work item A");

				Assert.AreEqual(2, listB.Count, "Unexpected number of results for work item B");
				Assert.AreEqual("file5", listB[0].File, "Unexpected result for work item A");
				Assert.AreEqual("file6", listB[1].File, "Unexpected result for work item A");

				Assert.AreEqual(0, listC.Count, "Unexpected results for work item C");
				Assert.AreEqual(0, listD.Count, "Unexpected results for work item D");
			}
		}
コード例 #28
0
 /// <inheritdoc/>
 public bool DiscoverExistence(DataAccessContext context, out string reason)
 {
     return(_selfCertifyingDataAccessPoint.DiscoverExistence(context, out reason));
 }
コード例 #29
0
		private static void DeleteAllWorkItemUids()
		{
			using (var context = new DataAccessContext())
			{
				var workItemUidBroker = context.GetWorkItemUidBroker();
				workItemUidBroker.DeleteAll();

				var workItemBroker = context.GetWorkItemBroker();
				workItemBroker.DeleteAll();

				context.Commit();
			}
		}
コード例 #30
0
 public ProjectsService(IConfiguration configuration, DataAccessContext context)
 {
     Configuration = configuration;
     Context       = context;
 }
コード例 #31
0
 public OrderDetailsService(DataAccessContext c)
 {
     db = c;
 }
コード例 #32
0
 public CanWriteResult CanWrite(object target, object value, DataAccessContext context)
 {
     return(CanWriteResult.PositiveResult(true));
 }
コード例 #33
0
 /// <inheritdoc/>
 public DiscoveredServer GetDistinctLiveDatabaseServer(DataAccessContext context, bool setInitialDatabase)
 {
     return(DataAccessPortal.GetInstance().ExpectDistinctServer(GetTableInfosIdeallyJustFromMainTables(), context, setInitialDatabase));
 }
コード例 #34
0
        public void Open()
        {
            try
            {
                if (!Enabled)
                {
                    return;
                }

                int numberOfSelectedStudies = Context.SelectedStudies.Count;
                if (Context.SelectedStudies.Count == 0)
                {
                    return;
                }

                int numberOfLoadableStudies = GetNumberOfLoadableStudies();
                if (numberOfLoadableStudies != numberOfSelectedStudies)
                {
                    int    numberOfNonLoadableStudies = numberOfSelectedStudies - numberOfLoadableStudies;
                    string message;
                    if (numberOfSelectedStudies == 1)
                    {
                        message = SR.MessageCannotOpenNonStreamingStudy;
                    }
                    else
                    {
                        if (numberOfNonLoadableStudies == 1)
                        {
                            message = SR.MessageOneNonStreamingStudyCannotBeOpened;
                        }
                        else
                        {
                            message = String.Format(SR.MessageFormatXNonStreamingStudiesCannotBeOpened, numberOfNonLoadableStudies);
                        }
                    }

                    Context.DesktopWindow.ShowMessageBox(message, MessageBoxActions.Ok);
                    return;
                }

                UIStudyTree tree = new UIStudyTree();

                foreach (var item in Context.SelectedStudies)
                {
                    if (item.Server.IsLocal)
                    {
                        using (var context = new DataAccessContext())
                        {
                            IStudy study = context.GetStudyBroker().GetStudy(item.StudyInstanceUid);
                            if (study != null)
                            {
                                tree.AddStudy(study);
                            }
                        }
                    }
                }

                if (this.mediaIShelf != null)
                {
                    this.mediaIShelf.Activate();
                    component.Tree = tree.Tree;
                }
                else
                {
                    if (base.Context.DesktopWindow == null)
                    {
                        return;
                    }

                    component                = new MediaWriterComponent();
                    this.mediaIShelf         = ApplicationComponent.LaunchAsShelf(base.Context.DesktopWindow, component, "Media Writer", ShelfDisplayHint.DockAutoHide | ShelfDisplayHint.DockLeft);
                    this.mediaIShelf.Closed += new EventHandler <ClosedEventArgs>(this.ShelfClose);
                    this.mediaIShelf.Activate();
                    component.Tree = tree.Tree;
                }
            }
            catch (Exception exception)
            {
                ExceptionHandler.Report(exception, base.Context.DesktopWindow);
            }
        }
コード例 #35
0
            public override void Load()
            {
                Kernel.Bind <DbContext, DataAccessContext>().ToMethod(activationContext => DataAccessContext.CreateContext()).InRequestScope();
                Kernel.Bind <IDataBaseManager>().To <DataBaseManager>();
                Kernel.Bind <ApplicationUserManager>().ToSelf();

                Kernel.Bind <AuthenticationConfiguration>().ToSelf();
                Kernel.Bind <IOAuthAuthorizationServerProvider>().To <ApplicationOAuthProvider>();
                Kernel.Bind <IAuthenticationTokenProvider>().To <RefreshTokenProvider>();

                Kernel.Bind <IIdentityTokenPropertiesFormater <User, Guid> >().To <ApplicationPropertiesFormater>();

                Kernel.Bind <IUserStore <User, Guid> >().To <UserStore <User, Role, Guid, UserLogin, UserRole, Claim> >();

                Kernel.Bind <IRoleDefinitionProvider>().To <RoleDefinitionProvider>();

                Kernel.Bind <IAuthClientRepository>().To <AuthClientRepository>();

                Kernel.Bind <IUserRepositoryResolver>().To <UserRepositoryResolver>();
                Kernel.Bind <IUserRepository>().To <UserRepository>();

                Kernel.Bind <IRoleRepositoryResolver>().To <RoleRepositoryResolver>();
                Kernel.Bind <IRoleRepository>().To <RoleRepository>();

                Kernel.Bind <IApplicationLogger>().ToMethod(context =>
                {
                    var targetType = context.Request.Target.Type;
                    return(new Logger(targetType));
                });

                #region Kendo Grid

                #region Sorting

                Kernel.Bind(typeof(IDynamicSortingService <>)).To(typeof(DynamicSortingService <>));
                Kernel.Bind(typeof(IPropertyOrderExpressionBuilderLocator <>)).To(typeof(PropertyOrderExpressionBuilderLocator <>));
                Kernel.Bind(typeof(IPlainPropertyOrderExpressionBuilder <>)).To(typeof(PlainPropertyOrderExpressionBuilder <>));

                #endregion

                #region Filtering

                Kernel.Bind(typeof(IFilterExpressionBuilder <>)).To(typeof(FilterExpressionBuilder <>));

                Kernel.Bind <IOwnPropertyAccessStrategy>().To <OwnPropertyAccessStrategy>();
                Kernel.Bind <INavigationPropertyAccessStrategy>().To <NavigationPropertyAccessStrategy>();

                Kernel.Bind <IPropertyAccessDecorator>().To <DateTimePropertyAccessDecorator>();

                Kernel.Bind <IPropertyAccessStrategyChainBuilder>().To <PropertyAccessStrategyChainBuilder>();
                Kernel.Bind <IValueTypeResolver>().To <EnumValueTypeResolver>();

                Kernel.Bind <IPrimitiveTypeOperatorBindingFactory>().To <PrimitiveTypeOperatorBindingFactory>();
                Kernel.Bind <IStringOperatorBindingFactory>().To <StringOperatorBindingFactory>();

                Kernel.Bind <IFilterUnionOperatorBindingFactory>().To <FilterUnionOperatorBindingFactory>();

                Kernel.Bind <IValueExpressionService>().To <ValueExpressionService>();
                Kernel.Bind <IOperatorExpressionFactoryService>().To <OperatorExpressionFactoryService>();
                Kernel.Bind <IFilterUnionExpressionFactoryService>().To <FilterUnionExpressionFactoryService>();

                #endregion

                #endregion
            }
コード例 #36
0
 public InventoryController(DataAccessContext context) : base(context)
 {
     _context = context;
 }
コード例 #37
0
 public ReadResult Read(object source, DataAccessContext context)
 {
     return(!(source is string url) ? ReadResult.NegativeResult(DateTime.UtcNow) : ReadResult.PositiveResult(string.Format(this.Format, url), DateTime.UtcNow));
 }
コード例 #38
0
        public override StudyItemList Query(QueryParameters queryParams, IApplicationEntity server)
        {
            Platform.CheckForNullReference(queryParams, "queryParams");

            //.NET strings are unicode, therefore, so is all the query data.
            const string utf8       = "ISO_IR 192";
            var          collection = new DicomAttributeCollection {
                SpecificCharacterSet = utf8
            };

            collection[DicomTags.SpecificCharacterSet].SetStringValue(utf8);

            collection[DicomTags.QueryRetrieveLevel].SetStringValue("STUDY");
            collection[DicomTags.PatientId].SetStringValue(queryParams["PatientId"]);
            collection[DicomTags.AccessionNumber].SetStringValue(queryParams["AccessionNumber"]);
            collection[DicomTags.PatientsName].SetStringValue(queryParams["PatientsName"]);
            collection[DicomTags.ReferringPhysiciansName].SetStringValue(queryParams["ReferringPhysiciansName"]);
            collection[DicomTags.StudyDate].SetStringValue(queryParams["StudyDate"]);
            collection[DicomTags.StudyTime].SetStringValue("");
            collection[DicomTags.StudyDescription].SetStringValue(queryParams["StudyDescription"]);
            collection[DicomTags.PatientsBirthDate].SetStringValue("");
            collection[DicomTags.ModalitiesInStudy].SetStringValue(queryParams["ModalitiesInStudy"]);
            collection[DicomTags.StudyInstanceUid].SetStringValue(queryParams["StudyInstanceUid"]);
            collection[DicomTags.NumberOfStudyRelatedInstances].SetStringValue("");
            collection[DicomTags.InstanceAvailability].SetEmptyValue();             // must not be included in request

            collection[DicomTags.PatientSpeciesDescription].SetStringValue(GetString(queryParams, "PatientSpeciesDescription"));
            var codeValue   = GetString(queryParams, "PatientSpeciesCodeSequenceCodeValue");
            var codeMeaning = GetString(queryParams, "PatientSpeciesCodeSequenceCodeMeaning");

            if (codeValue != null || codeMeaning != null)
            {
                var codeSequenceMacro = new CodeSequenceMacro
                {
                    CodingSchemeDesignator = "",
                    CodeValue   = codeValue,
                    CodeMeaning = codeMeaning
                };
                collection[DicomTags.PatientSpeciesCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem);
            }

            collection[DicomTags.PatientBreedDescription].SetStringValue(GetString(queryParams, "PatientBreedDescription"));
            codeValue   = GetString(queryParams, "PatientBreedCodeSequenceCodeValue");
            codeMeaning = GetString(queryParams, "PatientBreedCodeSequenceCodeMeaning");
            if (codeValue != null || codeMeaning != null)
            {
                var codeSequenceMacro = new CodeSequenceMacro
                {
                    CodingSchemeDesignator = "",
                    CodeValue   = codeValue,
                    CodeMeaning = codeMeaning
                };
                collection[DicomTags.PatientBreedCodeSequence].AddSequenceItem(codeSequenceMacro.DicomSequenceItem);
            }

            collection[DicomTags.ResponsiblePerson].SetStringValue(GetString(queryParams, "ResponsiblePerson"));
            collection[DicomTags.ResponsiblePersonRole].SetStringValue("");
            collection[DicomTags.ResponsibleOrganization].SetStringValue(GetString(queryParams, "ResponsibleOrganization"));

            var localServer   = ServerDirectory.GetLocalServer();
            var studyItemList = new StudyItemList();

            using (var context = new DataAccessContext())
            {
                foreach (DicomAttributeCollection result in context.GetStudyStoreQuery().Query(collection))
                {
                    var item = new StudyItem(result[DicomTags.StudyInstanceUid].ToString(), localServer);
                    item.SpecificCharacterSet          = result.SpecificCharacterSet;
                    item.PatientId                     = result[DicomTags.PatientId].ToString();
                    item.PatientsName                  = new PersonName(result[DicomTags.PatientsName].ToString());
                    item.ReferringPhysiciansName       = new PersonName(result[DicomTags.ReferringPhysiciansName].GetString(0, ""));
                    item.PatientsBirthDate             = result[DicomTags.PatientsBirthDate].ToString();
                    item.StudyDate                     = result[DicomTags.StudyDate].ToString();
                    item.StudyTime                     = result[DicomTags.StudyTime].ToString();
                    item.StudyDescription              = result[DicomTags.StudyDescription].ToString();
                    item.ModalitiesInStudy             = DicomStringHelper.GetStringArray(result[DicomTags.ModalitiesInStudy].ToString());
                    item.AccessionNumber               = result[DicomTags.AccessionNumber].ToString();
                    item.NumberOfStudyRelatedInstances = result[DicomTags.NumberOfStudyRelatedInstances].GetInt32(0, 0);
                    item.InstanceAvailability          = result[DicomTags.InstanceAvailability].GetString(0, "");
                    if (String.IsNullOrEmpty(item.InstanceAvailability))
                    {
                        item.InstanceAvailability = "ONLINE";
                    }

                    item.PatientSpeciesDescription = result[DicomTags.PatientSpeciesDescription].GetString(0, "");
                    var patientSpeciesCodeSequence = result[DicomTags.PatientSpeciesCodeSequence];
                    if (!patientSpeciesCodeSequence.IsNull && patientSpeciesCodeSequence.Count > 0)
                    {
                        var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientSpeciesCodeSequence].Values)[0]);
                        item.PatientSpeciesCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator;
                        item.PatientSpeciesCodeSequenceCodeValue   = codeSequenceMacro.CodeValue;
                        item.PatientSpeciesCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning;
                    }

                    item.PatientBreedDescription = result[DicomTags.PatientBreedDescription].GetString(0, "");
                    var patientBreedCodeSequence = result[DicomTags.PatientBreedCodeSequence];
                    if (!patientBreedCodeSequence.IsNull && patientBreedCodeSequence.Count > 0)
                    {
                        var codeSequenceMacro = new CodeSequenceMacro(((DicomSequenceItem[])result[DicomTags.PatientBreedCodeSequence].Values)[0]);
                        item.PatientBreedCodeSequenceCodingSchemeDesignator = codeSequenceMacro.CodingSchemeDesignator;
                        item.PatientBreedCodeSequenceCodeValue   = codeSequenceMacro.CodeValue;
                        item.PatientBreedCodeSequenceCodeMeaning = codeSequenceMacro.CodeMeaning;
                    }

                    item.ResponsiblePerson       = new PersonName(result[DicomTags.ResponsiblePerson].GetString(0, ""));
                    item.ResponsiblePersonRole   = result[DicomTags.ResponsiblePersonRole].GetString(0, "");
                    item.ResponsibleOrganization = result[DicomTags.ResponsibleOrganization].GetString(0, "");

                    studyItemList.Add(item);
                }
            }

            AuditHelper.LogQueryIssued(null, null, EventSource.CurrentUser, EventResult.Success,
                                       SopClass.StudyRootQueryRetrieveInformationModelFindUid, collection);

            return(studyItemList);
        }
コード例 #39
0
		private static void DeleteAllStudies()
		{
			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();
				broker.DeleteAll();
				context.Commit();
			}
		}
コード例 #40
0
        /// <summary>
        /// Execute command
        /// </summary>
        /// <param name="server">Database server</param>
        /// <param name="executionOptions">Execution options</param>
        /// <param name="commands">Commands</param>
        /// <returns>Return the affected data numbers</returns>
        public async Task <int> ExecuteAsync(DatabaseServer server, CommandExecutionOptions executionOptions, IEnumerable <ICommand> commands)
        {
            #region group execution commands

            IQueryTranslator translator = PostgreSqlManager.GetQueryTranslator(DataAccessContext.Create(server));
            List <DatabaseExecutionCommand> databaseExecutionCommands = new List <DatabaseExecutionCommand>();
            var batchExecutionConfig = DataManager.GetBatchExecutionConfiguration(server.ServerType) ?? BatchExecutionConfiguration.Default;
            var groupStatementsCount = batchExecutionConfig.GroupStatementsCount;
            groupStatementsCount = groupStatementsCount < 0 ? 1 : groupStatementsCount;
            var groupParameterCount = batchExecutionConfig.GroupParametersCount;
            groupParameterCount = groupParameterCount < 0 ? 1 : groupParameterCount;
            StringBuilder     commandTextBuilder = new StringBuilder();
            CommandParameters parameters         = null;
            int  statementsCount  = 0;
            bool forceReturnValue = false;
            int  cmdCount         = 0;

            DatabaseExecutionCommand GetGroupExecuteCommand()
            {
                var executionCommand = new DatabaseExecutionCommand()
                {
                    CommandText      = commandTextBuilder.ToString(),
                    CommandType      = CommandType.Text,
                    MustAffectedData = forceReturnValue,
                    Parameters       = parameters
                };

                statementsCount = 0;
                translator.ParameterSequence = 0;
                commandTextBuilder.Clear();
                parameters       = null;
                forceReturnValue = false;
                return(executionCommand);
            }

            foreach (var cmd in commands)
            {
                DatabaseExecutionCommand databaseExecutionCommand = GetDatabaseExecutionCommand(translator, cmd as DefaultCommand);
                if (databaseExecutionCommand == null)
                {
                    continue;
                }

                //Trace log
                PostgreSqlManager.LogExecutionCommand(databaseExecutionCommand);

                cmdCount++;
                if (databaseExecutionCommand.PerformAlone)
                {
                    if (statementsCount > 0)
                    {
                        databaseExecutionCommands.Add(GetGroupExecuteCommand());
                    }
                    databaseExecutionCommands.Add(databaseExecutionCommand);
                    continue;
                }
                commandTextBuilder.AppendLine(databaseExecutionCommand.CommandText);
                parameters        = parameters == null ? databaseExecutionCommand.Parameters : parameters.Union(databaseExecutionCommand.Parameters);
                forceReturnValue |= databaseExecutionCommand.MustAffectedData;
                statementsCount++;
                if (translator.ParameterSequence >= groupParameterCount || statementsCount >= groupStatementsCount)
                {
                    databaseExecutionCommands.Add(GetGroupExecuteCommand());
                }
            }
            if (statementsCount > 0)
            {
                databaseExecutionCommands.Add(GetGroupExecuteCommand());
            }

            #endregion

            return(await ExecuteDatabaseCommandAsync(server, executionOptions, databaseExecutionCommands, executionOptions?.ExecutionByTransaction ?? cmdCount > 1).ConfigureAwait(false));
        }
コード例 #41
0
 public CidadeController()
 {
     objContext = new DataAccessContext();
 }
コード例 #42
0
        /// <summary>
        /// Called on startup to reset InProgress WorkItems back to Pending.
        /// </summary>
        private void ResetInProgressWorkItems()
        {
            bool reindexInProgress = false;

            using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
            {
                var workItemBroker = context.GetWorkItemBroker();
                var list           = workItemBroker.GetWorkItems(null, WorkItemStatusEnum.InProgress, null);

                foreach (var item in list)
                {
                    item.Status = WorkItemStatusEnum.Pending;
                    if (item.Type.Equals(ReindexRequest.WorkItemTypeString))
                    {
                        reindexInProgress = true;
                    }
                }

                context.Commit();
            }

            using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
            {
                var workItemBroker = context.GetWorkItemBroker();
                var list           = workItemBroker.GetWorkItems(null, WorkItemStatusEnum.DeleteInProgress, null);

                foreach (var item in list)
                {
                    item.Status = WorkItemStatusEnum.Deleted;
                }

                context.Commit();
            }

            using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
            {
                var workItemBroker = context.GetWorkItemBroker();
                var list           = workItemBroker.GetWorkItems(null, WorkItemStatusEnum.Canceling, null);

                foreach (var item in list)
                {
                    item.Status = WorkItemStatusEnum.Canceled;
                    if (item.Type.Equals(ReindexRequest.WorkItemTypeString))
                    {
                        reindexInProgress = true;
                    }
                }

                context.Commit();
            }

            if (reindexInProgress)
            {
                using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
                {
                    var studyBroker = context.GetStudyBroker();
                    var studyList   = studyBroker.GetReindexStudies();

                    foreach (var item in studyList)
                    {
                        item.Reindex = false;
                    }

                    context.Commit();
                }
            }
        }
コード例 #43
0
 /// <summary>
 /// Creates a new collection of <see cref="IDataAccessPoint"/> for collecting dependencies e.g.
 /// when building a query in which there are subqueries run on different databases
 /// </summary>
 /// <param name="singleServer">True to require all <see cref="Points"/> to be on the same server (and type).</param>
 /// <param name="context"></param>
 public DataAccessPointCollection(bool singleServer, DataAccessContext context = DataAccessContext.InternalDataProcessing)
 {
     SingleServer      = singleServer;
     DataAccessContext = context;
 }
コード例 #44
0
 public IDataAccessCredentials GetCredentialsIfExists(DataAccessContext context)
 {
     //we have our own credentials if we do
     return(string.IsNullOrWhiteSpace(Username) ? null : this);
 }
コード例 #45
0
ファイル: DataContext.cs プロジェクト: war-man/APPartment
 public DataContext(DataAccessContext context)
 {
     this.context = context;
 }
コード例 #46
0
 public DetalleInventario(DataAccessContext context)
 {
     _context = context;
 }
コード例 #47
0
 public HygieneController(DataAccessContext context) : base(context)
 {
     _context = context;
 }
コード例 #48
0
 protected void Page_Load(object sender, EventArgs e)
 {
     SetUpGridSupportControls();
     DataAccessContext.SetStoreRetriever(new StoreRetriever(SelectedStoreID));
     uxPromotionProductDetails.BubbleEvent += new EventHandler(CheckAll_RefreshHandler);
 }
コード例 #49
0
 public ErrorCodeRepository(DataAccessContext context) : base(context)
 {
 }
コード例 #50
0
        /// <summary>
        /// Cleanup any failed items in the queue and delete the queue entry.
        /// </summary>
        public override void Delete()
        {
            LoadUids();
            var studyXml = Location.LoadStudyXml();

            foreach (WorkItemUid sop in WorkQueueUidList)
            {
                var defaultFilePath = String.IsNullOrEmpty(sop.File);
                var file            = GetFilePath(sop);
                if (sop.Failed || !sop.Complete)
                {
                    if (!defaultFilePath)
                    {
                        try
                        {
                            FileUtils.Delete(file);
                        }
                        catch (Exception e)
                        {
                            Platform.Log(LogLevel.Error, e,
                                         "Unexpected exception attempting to cleanup file for Work Item {0}", Proxy.Item.Oid);
                        }
                    }
                    else
                    {
                        try
                        {
                            // Only delete the file if its not in the study Xml file.  This should handle collisions with
                            // multiple WorkItems that may have been canceled when others succeeded.
                            if (!studyXml.Contains(sop.SeriesInstanceUid, sop.SopInstanceUid))
                            {
                                FileUtils.Delete(file);
                            }
                        }
                        catch (Exception e)
                        {
                            Platform.Log(LogLevel.Error, e,
                                         "Unexpected exception attempting to cleanup file for Work Item {0}",
                                         Proxy.Item.Oid);
                        }
                    }
                }
            }

            try
            {
                DirectoryUtility.DeleteIfEmpty(Location.StudyFolder);
            }
            catch (Exception e)
            {
                Platform.Log(LogLevel.Error, e, "Unexpected exception attempting to delete folder: {0}",
                             Location.StudyFolder);
            }

            // Now cleanup the actual WorkItemUid references
            using (var context = new DataAccessContext(DataAccessContext.WorkItemMutex))
            {
                var broker    = context.GetWorkItemUidBroker();
                var uidBroker = context.GetWorkItemUidBroker();

                var list = broker.GetWorkItemUidsForWorkItem(Proxy.Item.Oid);
                foreach (WorkItemUid sop in list)
                {
                    uidBroker.Delete(sop);
                }
                context.Commit();
            }

            Proxy.Delete();
        }
コード例 #51
0
		public void TestGetStudyByUid()
		{
			DeleteAllStudies();

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();
				broker.AddStudy(CreateStudy("12.3", "A123"));
				broker.AddStudy(CreateStudy("45.6", "A456", deleted : true));
				broker.AddStudy(CreateStudy("78.9", "A789"));
				broker.AddStudy(CreateStudy("", "A"));

				context.Commit();
			}

			using (var context = new DataAccessContext())
			{
				var broker = context.GetStudyBroker();

				var study456 = broker.GetStudy("45.6");
				var study123 = broker.GetStudy("12.3");
				var study120 = broker.GetStudy("12.0");
				var study890 = broker.GetStudy("89.0");
				var studyBlank = broker.GetStudy("");

				Assert.IsNotNull(study456);
				Assert.AreEqual(study456.StudyInstanceUid, "45.6");
				Assert.AreEqual(study456.AccessionNumber, "A456");
				Assert.IsNotNull(study123);
				Assert.AreEqual(study123.StudyInstanceUid, "12.3");
				Assert.AreEqual(study123.AccessionNumber, "A123");
				Assert.IsNull(study120);
				Assert.IsNull(study890);
				Assert.IsNotNull(studyBlank);
				Assert.AreEqual(studyBlank.StudyInstanceUid, "");
				Assert.AreEqual(studyBlank.AccessionNumber, "A");
			}
		}