private void checkBoxLoadTest_CheckedChanged(object sender, EventArgs e) { try { WorkQueueTypeEnum t = WorkQueueTypeEnum.CompressStudy; using (IReadContext read = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IInsertStudyStorage insert = read.GetBroker <IInsertStudyStorage>(); InsertStudyStorageParameters criteria = new InsertStudyStorageParameters(); criteria.StudyInstanceUid = "1.2.3.4"; criteria.FilesystemKey = FilesystemMonitor.Instance.GetFilesystems().GetEnumerator().Current.Filesystem.GetKey(); criteria.Folder = "20070101"; criteria.StudyStatusEnum = StudyStatusEnum.Online; criteria.QueueStudyStateEnum = QueueStudyStateEnum.Idle; IList <StudyStorageLocation> storage = insert.Find(criteria); StudyStorageLocation storageEntry = storage[0]; } } catch (Exception x) { Platform.Log(LogLevel.Error, x); } }
/// <summary> /// Returns a value indicating whether the specified study has been scheduled for delete. /// </summary> /// <param name="study"></param> /// <param name="workQueueType"></param> /// <returns></returns> private static bool IsStudyInWorkQueue(Study study, WorkQueueTypeEnum workQueueType) { Platform.CheckForNullReference(study, "Study"); WorkQueueAdaptor adaptor = new WorkQueueAdaptor(); WorkQueueSelectCriteria workQueueCriteria = new WorkQueueSelectCriteria(); workQueueCriteria.WorkQueueTypeEnum.EqualTo(workQueueType); workQueueCriteria.ServerPartitionKey.EqualTo(study.ServerPartitionKey); workQueueCriteria.StudyStorageKey.EqualTo(study.StudyStorageKey); workQueueCriteria.WorkQueueStatusEnum.EqualTo(WorkQueueStatusEnum.Pending); IList <WorkQueue> list = adaptor.Get(workQueueCriteria); if (list != null && list.Count > 0) { return(true); } workQueueCriteria.WorkQueueStatusEnum.EqualTo(WorkQueueStatusEnum.Idle); // not likely but who knows list = adaptor.Get(workQueueCriteria); if (list != null && list.Count > 0) { return(true); } return(false); }
private void PopulateDropdownLists() { var workQueueTypes = WorkQueueTypeEnum.GetAll(); var workQueueStatuses = WorkQueueStatusEnum.GetAll(); var workQueuePriorities = WorkQueuePriorityEnum.GetAll(); if (TypeListBox.Items.Count == 0) { foreach (WorkQueueTypeEnum t in workQueueTypes) { TypeListBox.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(t), t.Lookup)); } } if (StatusListBox.Items.Count == 0) { foreach (WorkQueueStatusEnum s in workQueueStatuses) { // #10784: remove Completed status filter if (s != WorkQueueStatusEnum.Completed) { StatusListBox.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(s), s.Lookup)); } } } if (PriorityDropDownList.Items.Count == 0) { PriorityDropDownList.Items.Clear(); PriorityDropDownList.Items.Add(new ListItem(SR.Any, string.Empty)); foreach (WorkQueuePriorityEnum p in workQueuePriorities) { PriorityDropDownList.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(p), p.Lookup)); } } }
public WorkQueueProcessor(int numberThreads, ManualResetEvent terminateEvent, string name) { _terminateEvent = terminateEvent; _threadStop = new ManualResetEvent(false); using (IReadContext ctx = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IWorkQueueTypePropertiesEntityBroker broker = ctx.GetBroker <IWorkQueueTypePropertiesEntityBroker>(); WorkQueueTypePropertiesSelectCriteria criteria = new WorkQueueTypePropertiesSelectCriteria(); IList <WorkQueueTypeProperties> propertiesList = broker.Find(criteria); foreach (WorkQueueTypeProperties prop in propertiesList) { _propertiesDictionary.Add(prop.WorkQueueTypeEnum, prop); } } _threadPool = new WorkQueueThreadPool(numberThreads, WorkQueueSettings.Instance.PriorityWorkQueueThreadCount, WorkQueueSettings.Instance.MemoryLimitedWorkQueueThreadCount, _propertiesDictionary) { ThreadPoolName = name + " Pool" }; WorkQueueFactoryExtensionPoint ep = new WorkQueueFactoryExtensionPoint(); object[] factories = ep.CreateExtensions(); if (factories == null || factories.Length == 0) { // No extension for the workqueue processor. Platform.Log(LogLevel.Warn, "No WorkQueueFactory Extension found."); } else { foreach (object obj in factories) { IWorkQueueProcessorFactory factory = obj as IWorkQueueProcessorFactory; if (factory != null) { WorkQueueTypeEnum type = factory.GetWorkQueueType(); _extensions.Add(type, factory); } else { Platform.Log(LogLevel.Error, "Unexpected incorrect type loaded for extension: {0}", obj.GetType()); } } } }
public void Insert(Guid Guid, short EnumX, string Lookup, string Description, string LongDescription) { var item = new WorkQueueTypeEnum(); item.Guid = Guid; item.EnumX = EnumX; item.Lookup = Lookup; item.Description = Description; item.LongDescription = LongDescription; item.Save(UserName); }
public EditStudyWorkQueueParameters(ServerEntityKey studyStorageKey, ServerEntityKey serverPartitionKey, WorkQueueTypeEnum type, List <UpdateItem> updateItems, string reason, string user, EditType editType) { DateTime now = Platform.Time; var data = new EditStudyWorkQueueData { EditRequest = { TimeStamp = now, UserId = user, UpdateEntries = updateItems, Reason = reason, EditType = editType } }; WorkQueueTypeEnum = type; StudyStorageKey = studyStorageKey; ServerPartitionKey = serverPartitionKey; ScheduledTime = now; WorkQueueData = XmlUtils.SerializeAsXmlDoc(data); }
/// <summary> /// Insert an EditStudy request. /// </summary> /// <param name="context"></param> /// <param name="studyStorageKey"></param> /// <param name="serverPartitionKey"></param> /// <param name="type"></param> /// <param name="updateItems"></param> /// <param name="reason"></param> /// <param name="user"></param> /// <param name="editType"></param> /// <param name="priorityEnum">Optional parameter to set the priority of resultant <see cref="WorkQueue"/> items.</param> /// <returns></returns> private static WorkQueue InsertExternalEditStudyRequest(IUpdateContext context, ServerEntityKey studyStorageKey, ServerEntityKey serverPartitionKey, WorkQueueTypeEnum type, List <UpdateItem> updateItems, string reason, string user, EditType editType, WorkQueuePriorityEnum priorityEnum = null) { var propertiesBroker = context.GetBroker <IWorkQueueTypePropertiesEntityBroker>(); var criteria = new WorkQueueTypePropertiesSelectCriteria(); criteria.WorkQueueTypeEnum.EqualTo(type); WorkQueueTypeProperties properties = propertiesBroker.FindOne(criteria); var broker = context.GetBroker <IWorkQueueEntityBroker>(); var insert = new WorkQueueUpdateColumns(); DateTime now = Platform.Time; var data = new EditStudyWorkQueueData { EditRequest = { TimeStamp = now, UserId = user, UpdateEntries = updateItems, Reason = reason, EditType = editType } }; insert.WorkQueueTypeEnum = type; insert.StudyStorageKey = studyStorageKey; insert.ServerPartitionKey = serverPartitionKey; insert.ScheduledTime = now; insert.ExpirationTime = now.AddSeconds(properties.ExpireDelaySeconds); insert.WorkQueueStatusEnum = WorkQueueStatusEnum.Pending; insert.WorkQueuePriorityEnum = priorityEnum ?? properties.WorkQueuePriorityEnum; insert.Data = XmlUtils.SerializeAsXmlDoc(data); WorkQueue editEntry = broker.Insert(insert); if (editEntry == null) { throw new ApplicationException(string.Format("Unable to insert an Edit request of type {0} for study for user {1}", type.Description, user)); } return(editEntry); }
/// <summary> /// Insert an EditStudy request. /// </summary> /// <param name="context"></param> /// <param name="studyStorageKey"></param> /// <param name="serverPartitionKey"></param> /// <param name="type"></param> /// <param name="updateItems"></param> /// <param name="reason"></param> /// <param name="user"></param> /// <param name="editType"></param> /// <returns></returns> private static WorkQueue InsertEditStudyRequest(IUpdateContext context, ServerEntityKey studyStorageKey, ServerEntityKey serverPartitionKey, WorkQueueTypeEnum type, List <UpdateItem> updateItems, string reason, string user, EditType editType) { var broker = context.GetBroker <IInsertWorkQueue>(); InsertWorkQueueParameters criteria = new EditStudyWorkQueueParameters(studyStorageKey, serverPartitionKey, type, updateItems, reason, user, editType); WorkQueue editEntry = broker.FindOne(criteria); if (editEntry == null) { throw new ApplicationException(string.Format("Unable to insert an Edit request of type {0} for study for user {1}", type.Description, user)); } return(editEntry); }
protected override void OnInit(EventArgs e) { base.OnInit(e); ClearScheduleDateButton.OnClientClick = ScriptHelper.ClearDate(ScheduleDate.ClientID, ScheduleCalendarExtender.ClientID); // setup child controls GridPagerTop.InitializeGridPager(SR.GridPagerWorkQueueSingleItem, SR.GridPagerWorkQueueMultipleItems, workQueueItemList.WorkQueueItemGridView, () => workQueueItemList.ResultCount, ImageServerConstants.GridViewPagerPosition.Top); workQueueItemList.Pager = GridPagerTop; workQueueItemList.ServerPartition = _serverPartition; workQueueItemList.DataSourceCreated += delegate(WorkQueueDataSource source) { if (!String.IsNullOrEmpty(PatientName.TrimText)) { source.PatientsName = SearchHelper.NameWildCard(PatientName.TrimText); } source.Partition = ServerPartition; if (!String.IsNullOrEmpty(PatientId.TrimText)) { source.PatientId = SearchHelper.TrailingWildCard(PatientId.TrimText); } if (!String.IsNullOrEmpty(ProcessingServer.TrimText)) { source.ProcessingServer = SearchHelper.TrailingWildCard(ProcessingServer.TrimText); } source.ScheduledDate = !string.IsNullOrEmpty(ScheduleDate.Text) ? ScheduleDate.Text : string.Empty; source.DateFormats = ScheduleCalendarExtender.Format; if (TypeListBox.SelectedIndex > -1) { var types = new List <WorkQueueTypeEnum>(); foreach (ListItem item in TypeListBox.Items) { if (item.Selected) { types.Add(WorkQueueTypeEnum.GetEnum(item.Value)); } } source.TypeEnums = types.ToArray(); } if (StatusListBox.SelectedIndex > -1) { var statuses = new List <WorkQueueStatusEnum>(); foreach (ListItem item in StatusListBox.Items) { if (item.Selected) { statuses.Add(WorkQueueStatusEnum.GetEnum(item.Value)); } } source.StatusEnums = statuses.ToArray(); } if (PriorityDropDownList.SelectedValue != string.Empty) { source.PriorityEnum = WorkQueuePriorityEnum.GetEnum(PriorityDropDownList.SelectedValue); } }; MessageBox.Confirmed += delegate { workQueueItemList.RefreshCurrentPage(); }; }
public void Update(Guid Guid, short EnumX, string Lookup, string Description, string LongDescription) { var item = new WorkQueueTypeEnum(); item.MarkOld(); item.IsLoaded = true; item.Guid = Guid; item.EnumX = EnumX; item.Lookup = Lookup; item.Description = Description; item.LongDescription = LongDescription; item.Save(UserName); }