protected override bool OnServerSideEvaluate() { String aeTitle = GetControlValidationValue(ControlToValidate); if (String.IsNullOrEmpty(aeTitle)) { ErrorMessage = ValidationErrors.AETitleCannotBeEmpty; return false; } if (OriginalAeTitle.Equals(aeTitle)) return true; var controller = new ServerPartitionConfigController(); var criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.EqualTo(aeTitle); IList<ServerPartition> list = controller.GetPartitions(criteria); if (list.Count > 0) { ErrorMessage = String.Format(ValidationErrors.AETitleIsInUse, aeTitle); return false; } return true; }
protected void Page_Load(object sender, EventArgs e) { var criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.SortAsc(0); if (!Thread.CurrentPrincipal.IsInRole(AuthorityTokens.Vfs.ViewPartitions)) criteria.ServerPartitionTypeEnum.EqualTo(ServerPartitionTypeEnum.Standard); var partitionController = new ServerPartitionConfigController(); IList<ServerPartition> partitions = partitionController.GetPartitions(criteria); long totalStudies = 0; foreach(ServerPartition partition in partitions) { totalStudies += partition.StudyCount; } TotalStudiesLabel.Text = totalStudies.ToString("N0"); _partitions = partitions; StudiesDataList.DataSource = _partitions; DataBind(); }
protected override void OnInit(EventArgs e) { base.OnInit(e); StudyController studyController = new StudyController(); ServerPartitionConfigController partitionConfigController = new ServerPartitionConfigController(); string serverae = Request.QueryString[QUERY_KEY_SERVER_AE]; if (!String.IsNullOrEmpty(serverae)) { // Load the Partition ServerPartitionSelectCriteria partitionCriteria = new ServerPartitionSelectCriteria(); partitionCriteria.AeTitle.EqualTo(serverae); IList<ServerPartition> list = partitionConfigController.GetPartitions(partitionCriteria); this.Move.Partition = list[0]; for (int i = 1;; i++) { string studyuid = Request.QueryString[String.Format("{0}{1}", QUERY_KEY_STUDY_INSTANCE_UID, i)]; if (!String.IsNullOrEmpty(studyuid)) { _uids.Add(studyuid, serverae); StudySelectCriteria studyCriteria = new StudySelectCriteria(); studyCriteria.StudyInstanceUid.EqualTo(studyuid); studyCriteria.ServerPartitionKey.EqualTo(list[0].GetKey()); IList<Study> studyList = studyController.GetStudies(studyCriteria); this.Move.StudyGridView.StudyList.Add(studyList[0]); this.Move.StudyGridView.Partition = this.Move.Partition; } else break; } } SetPageTitle(Titles.MoveStudiesPageTitle); }
protected void LoadData() { var criteria = new ServerPartitionSelectCriteria(); if (String.IsNullOrEmpty(AETitleFilter.Text) == false) { QueryHelper.SetGuiStringCondition(criteria.AeTitle, SearchHelper.TrailingWildCard(AETitleFilter.Text)); } if (String.IsNullOrEmpty(DescriptionFilter.Text) == false) { QueryHelper.SetGuiStringCondition(criteria.Description, SearchHelper.TrailingWildCard(DescriptionFilter.Text)); } if (String.IsNullOrEmpty(FolderFilter.Text) == false) { QueryHelper.SetGuiStringCondition(criteria.PartitionFolder, SearchHelper.TrailingWildCard(FolderFilter.Text)); } if (StatusFilter.SelectedIndex != 0) { if (StatusFilter.SelectedIndex == 1) criteria.Enabled.EqualTo(true); else criteria.Enabled.EqualTo(false); } criteria.AeTitle.SortAsc(0); Partitions = _theController.GetPartitions(criteria); ServerPartitionGridPanel.RefreshCurrentPage(); }
protected void Page_Load(object sender, EventArgs e) { _studyInstanceUid = Request.QueryString[ImageServerConstants.QueryStrings.StudyInstanceUID]; _serverae = Request.QueryString[ImageServerConstants.QueryStrings.ServerAE]; if (!String.IsNullOrEmpty(_studyInstanceUid) && !String.IsNullOrEmpty(_serverae)) { ServerPartitionDataAdapter adaptor = new ServerPartitionDataAdapter(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.EqualTo(_serverae); IList<ServerPartition> partitions = adaptor.Get(criteria); if (partitions != null && partitions.Count>0) { if (partitions.Count==1) { Partition = partitions[0]; //TODO: Do something if parition is inactive. Perhapse show an alert on the screen? LoadStudy(); } else { Response.Write(String.Format(ErrorMessages.MultiplePartitionsExistWithAETitle, _serverae)); } } } //Hide the UserPanel information IMasterProperties master = Master as IMasterProperties; if(master != null) master.DisplayUserInformationPanel = false; }
protected void Page_Load(object sender, EventArgs e) { ServerPartitionConfigController partitionConfigController = new ServerPartitionConfigController(); string serverae = Request.QueryString[ImageServerConstants.QueryStrings.ServerAE]; if (!String.IsNullOrEmpty(serverae)) { // Load the Partition ServerPartitionSelectCriteria partitionCriteria = new ServerPartitionSelectCriteria(); partitionCriteria.AeTitle.EqualTo(serverae); IList<ServerPartition> list = partitionConfigController.GetPartitions(partitionCriteria); Partition = list[0]; SeriesGridView.Partition = Partition; string studyuid = Request.QueryString[ImageServerConstants.QueryStrings.StudyUID]; if (!String.IsNullOrEmpty(studyuid) || Partition != null) { StudyController studyController = new StudyController(); StudySelectCriteria criteria = new StudySelectCriteria(); criteria.StudyInstanceUid.EqualTo(studyuid); criteria.ServerPartitionKey.EqualTo(Partition.Key); IList<Study> studyList = studyController.GetStudies(criteria); SelectedStudy = studyList[0]; SeriesGridView.Study = studyList[0]; PatientSummary.PatientSummary = PatientSummaryAssembler.CreatePatientSummary(studyList[0]); StudySummary.Study = studyList[0]; } } if (DHCPFilter.Items.Count == 0) { DHCPFilter.Items.Add(new ListItem(SR.All)); DHCPFilter.Items.Add(new ListItem(SR.DHCP)); DHCPFilter.Items.Add(new ListItem(SR.NoDHCP)); } IList<DeviceTypeEnum> deviceTypes = DeviceTypeEnum.GetAll(); if (DeviceTypeFilter.Items.Count == 0) { foreach (DeviceTypeEnum t in deviceTypes) { DeviceTypeFilter.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(t), t.Lookup)); } } else { ListItem[] typeItems = new ListItem[DeviceTypeFilter.Items.Count]; DeviceTypeFilter.Items.CopyTo(typeItems, 0); DeviceTypeFilter.Items.Clear(); int count = 0; foreach (DeviceTypeEnum t in deviceTypes) { DeviceTypeFilter.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(t), t.Lookup)); DeviceTypeFilter.Items[count].Selected = typeItems[count].Selected; count++; } } LoadSeries(); LoadDevices(); DataBind(); }
/// <summary> /// Load the list of currently configured <see cref="ServerPartition"/> instances. /// </summary> /// <returns>The partition list.</returns> private static IList<ServerPartition> LoadPartitions() { //Get partitions IPersistentStore store = PersistentStoreRegistry.GetDefaultStore(); using (IReadContext read = store.OpenReadContext()) { IServerPartitionEntityBroker broker = read.GetBroker<IServerPartitionEntityBroker>(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); return broker.Find(criteria); } }
private static ServerEntityKey GetPartitionKey(string partitionFolder) { using (IReadContext ctx = PersistentStoreRegistry.GetDefaultStore().OpenReadContext()) { IServerPartitionEntityBroker broker = ctx.GetBroker<IServerPartitionEntityBroker>(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); criteria.PartitionFolder.EqualTo(partitionFolder); ServerPartition partition = broker.FindOne(criteria); if (partition != null) return partition.Key; } return null; }
/// <summary> /// Process the <see cref="ServiceLock"/> item. /// </summary> /// <param name="item"></param> protected override void OnProcess(Model.ServiceLock item) { PersistentStoreRegistry.GetDefaultStore(); using (ServerExecutionContext context = new ServerExecutionContext()) { IServerPartitionEntityBroker broker = context.ReadContext.GetBroker<IServerPartitionEntityBroker>(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.SortAsc(0); _partitions = broker.Find(criteria); } ServerFilesystemInfo info = FilesystemMonitor.Instance.GetFilesystemInfo(item.FilesystemKey); Platform.Log(LogLevel.Info, "Starting rebuilding of Study XML files for filesystem: {0}", info.Filesystem.Description); TraverseFilesystemStudies(info.Filesystem); item.ScheduledTime = item.ScheduledTime.AddDays(1); if (CancelPending) { Platform.Log(LogLevel.Info, "FilesystemRebuildXml of {0} has been canceled, rescheduling. Note that the entire Filesystem will be rebuilt again.", info.Filesystem.Description); UnlockServiceLock(item, true, Platform.Time.AddMinutes(1)); } else UnlockServiceLock(item, false, Platform.Time.AddDays(1)); Platform.Log(LogLevel.Info, "Completed rebuilding of the Study XML files for filesystem: {0}", info.Filesystem.Description); }
protected override void OnProcess(Model.ServiceLock item) { _store = PersistentStoreRegistry.GetDefaultStore(); using (var context = new ServerExecutionContext()) { var broker = context.ReadContext.GetBroker<IServerPartitionEntityBroker>(); var criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.SortAsc(0); _partitions = broker.Find(criteria); } ServerFilesystemInfo info = FilesystemMonitor.Instance.GetFilesystemInfo(item.FilesystemKey); Platform.Log(LogLevel.Info, "Starting reinventory of filesystem: {0}", info.Filesystem.Description); ReinventoryFilesystem(info.Filesystem); item.ScheduledTime = item.ScheduledTime.AddDays(1); if (CancelPending) { Platform.Log(LogLevel.Info, "Filesystem Reinventory of {0} has been canceled, rescheduling. Note that the entire Filesystem will be reinventoried again.", info.Filesystem.Description); UnlockServiceLock(item, true, Platform.Time.AddMinutes(1)); } else { Platform.Log(LogLevel.Info, "Filesystem Reinventory of {0} has completed.", info.Filesystem.Description); UnlockServiceLock(item, false, Platform.Time.AddDays(1)); } }
/// <summary> /// Load the <see cref="ServerRulesEngine"/> for each partition. /// </summary> private void LoadRulesEngine() { using (var context = new ServerExecutionContext()) { var broker = context.ReadContext.GetBroker<IServerPartitionEntityBroker>(); var criteria = new ServerPartitionSelectCriteria(); IList<ServerPartition> partitions = broker.Find(criteria); foreach (ServerPartition partition in partitions) { //TODO CR (Jan 2014) - Cached engine not being used now, due to #11673 var engine = new ServerRulesEngine(ServerRuleApplyTimeEnum.StudyProcessed, partition.Key); engine.Load(); _engines.Add(partition, engine); engine = new ServerRulesEngine(ServerRuleApplyTimeEnum.StudyArchived, partition.Key); engine.Load(); _postArchivalEngines.Add(partition, engine); engine = new ServerRulesEngine(ServerRuleApplyTimeEnum.StudyProcessed, partition.Key); engine.AddIncludeType(ServerRuleTypeEnum.DataAccess); engine.Load(); _dataAccessEngine.Add(partition, engine); } } }
/// <summary> /// Retrieves a list of <seealso cref="ServerPartition"/> matching the specified criteria. /// </summary> /// <returns>A list of partitions</returns> public IList<ServerPartition> GetPartitions(ServerPartitionSelectCriteria criteria) { return _serverAdapter.GetServerPartitions(criteria); }
private static IList<StudySummary> LoadStudies(WebViewerInitParams initParams) { ValidateParameters(initParams); var controller = new StudyController(); var partitionAdapter = new ServerPartitionDataAdapter(); StudySelectCriteria studyCriteria; var partitionCriteria = new ServerPartitionSelectCriteria(); ServerPartition partition = null; IList<Study> studies; List<StudySummary> totalStudies = new List<StudySummary>(); if (!string.IsNullOrEmpty(initParams.AeTitle)) { partitionCriteria.AeTitle.EqualTo(initParams.AeTitle); IList<ServerPartition> partitions = partitionAdapter.GetServerPartitions(partitionCriteria); if (partitions.Count == 1) { partition = partitions[0]; } } foreach (string patientId in initParams.PatientIds) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); SetStringCondition(studyCriteria.PatientId, patientId); studyCriteria.StudyDate.SortDesc(0); studies = controller.GetStudies(studyCriteria); foreach (Study study in studies) { totalStudies.Add(StudySummaryAssembler.CreateStudySummary(HttpContextData.Current.ReadContext, study)); } } foreach (string accession in initParams.AccessionNumbers) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); SetStringCondition(studyCriteria.AccessionNumber, accession); studyCriteria.StudyDate.SortDesc(0); studies = controller.GetStudies(studyCriteria); foreach (Study study in studies) { totalStudies.Add(StudySummaryAssembler.CreateStudySummary(HttpContextData.Current.ReadContext, study)); } } if (initParams.StudyInstanceUids.Count > 0) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); studyCriteria.StudyInstanceUid.In(initParams.StudyInstanceUids); studyCriteria.StudyDate.SortDesc(0); studies = controller.GetStudies(studyCriteria); foreach (Study study in studies) { totalStudies.Add(StudySummaryAssembler.CreateStudySummary(HttpContextData.Current.ReadContext, study)); } } totalStudies.Sort((a, b) => a.StudyDate.CompareTo(b.StudyDate) * -1); return totalStudies; }
protected override void OnInit(EventArgs e) { //This sets the GridView Page Size to the number of series. Needs to be done in the OnInit method, //since the page size needs to be set here, and the Study and Partition aren't set until the databind //happens in StudyDetailsTabs. var studyInstanceUID = Request.QueryString[ImageServerConstants.QueryStrings.StudyInstanceUID]; var serverAE = Request.QueryString[ImageServerConstants.QueryStrings.ServerAE]; if (!String.IsNullOrEmpty(studyInstanceUID) && !String.IsNullOrEmpty(serverAE)) { var adaptor = new ServerPartitionDataAdapter(); var partitionCriteria = new ServerPartitionSelectCriteria(); partitionCriteria.AeTitle.EqualTo(serverAE); IList<ServerPartition> partitions = adaptor.Get(partitionCriteria); if (partitions != null && partitions.Count > 0) { if (partitions.Count == 1) { var partition = partitions[0]; var studyAdaptor = new StudyAdaptor(); var studyCriteria = new StudySelectCriteria(); studyCriteria.StudyInstanceUid.EqualTo(studyInstanceUID); studyCriteria.ServerPartitionKey.EqualTo(partition.GetKey()); var study = studyAdaptor.GetFirst(studyCriteria); if (study!=null) { var seriesAdaptor = new SeriesSearchAdaptor(); var criteria = new SeriesSelectCriteria(); criteria.StudyKey.EqualTo(study.GetKey()); criteria.ServerPartitionKey.EqualTo(partition.GetKey()); Series = seriesAdaptor.Get(criteria); GridView1.PageSize = Series.Count; } } } } else { GridView1.PageSize = 150; //Set it to a large number to ensure that all series are displayed if more than 25. } }
static public Study Find(IPersistenceContext context, String studyInstanceUid, string partitionAe) { var partitionBroker = context.GetBroker<IServerPartitionEntityBroker>(); var serverPartitionSelectCriteria = new ServerPartitionSelectCriteria(); serverPartitionSelectCriteria.AeTitle.EqualTo(partitionAe); //TODO: is EqualTo case sensitive? var partition = partitionBroker.FindOne(serverPartitionSelectCriteria); if (partition == null) return null; return Find(context, studyInstanceUid, partition); }
protected override void OnInit(EventArgs e) { base.OnInit(e); var criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.SortAsc(0); Partitions = _theController.GetPartitions(criteria); TheGrid = PartitionGridView; GridPagerTop.InitializeGridPager(SR.GridPagerPartitionSingleItem, SR.GridPagerPartitionMultipleItems, TheGrid, () => Partitions.Count, ImageServerConstants.GridViewPagerPosition.Top); Pager = GridPagerTop; GridPagerTop.Reset(); if (Height != Unit.Empty) ContainerTable.Height = _height; DataBind(); }
protected void Page_Load(object sender, EventArgs e) { UserID = Request.Params[ImageServerConstants.WebViewerQueryStrings.Username]; Password = Request.Params[ImageServerConstants.WebViewerQueryStrings.Password]; AppName = Request.Params[ImageServerConstants.WebViewerQueryStrings.ApplicationName]; ListStudies = Request.Params[ImageServerConstants.WebViewerQueryStrings.ListStudies]; WebViewerInitString = Request.Params[ImageServerConstants.WebViewerQueryStrings.WebViewerInitParams]; //Try to authenticate the user if (!string.IsNullOrEmpty(UserID) && !string.IsNullOrEmpty(Password)) { if(String.IsNullOrEmpty(AppName)) { int start = WebViewerInitString.IndexOf(ImageServerConstants.WebViewerQueryStrings.ApplicationName + "="); if (start < 0) AppName = ImageServerConstants.DefaultApplicationName; else { start += (ImageServerConstants.WebViewerQueryStrings.ApplicationName + "=").Length; AppName = WebViewerInitString.Substring(start); int end = AppName.IndexOf(','); AppName = AppName.Substring(0, end); if (string.IsNullOrEmpty(AppName)) AppName = ImageServerConstants.DefaultApplicationName; } } AppName = String.Format("{0}@{1}", AppName, HttpContext.Current.Request.UserHostName); try { using (LoginService service = new LoginService()) { SessionInfo session = service.Login(UserID, Password, AppName); Platform.Log(LogLevel.Info, "[{0}]: {1} has successfully logged in.", AppName, UserID); WebViewerInitString += string.Format(",{0}={1},{2}={3}", ImageServerConstants.WebViewerQueryStrings.Username, UserID, ImageServerConstants.WebViewerQueryStrings.Session, session.Credentials.SessionToken.Id); //_sessionId = session.Credentials.SessionToken.Id; //Add the session information to the context in case we redirect to the studies page. //We need these to properly launch the WebViewer Context.Items.Add(ImageServerConstants.WebViewerQueryStrings.Username, UserID); Context.Items.Add(ImageServerConstants.WebViewerQueryStrings.Session, session.Credentials.SessionToken.Id); Context.Items.Add("Authorized", false); foreach(string role in session.Credentials.Authorities) { if (role.Equals(ClearCanvas.ImageServer.Enterprise.Authentication.AuthorityTokens.Study.ViewImages)) { Context.Items["Authorized"] = "true"; break; } } } } catch (PasswordExpiredException) { Platform.Log(LogLevel.Info, "[{0}]: {1} encountered PasswordExpiredException.", AppName, UserID); Server.Transfer(ImageServerConstants.PageURLs.WebViewerAuthorizationErrorPage, true); } catch (UserAccessDeniedException) { Platform.Log(LogLevel.Info, "[{0}]: {1} encountered UserAccessDeniedException.", AppName, UserID); Server.Transfer(ImageServerConstants.PageURLs.WebViewerAuthorizationErrorPage, true); } catch (Exception ex) { Platform.Log(LogLevel.Info, "[{0}]: {1} encountered exception {2} - {3}.", AppName, UserID, ex.GetType(), ex.Message); Server.Transfer(ImageServerConstants.PageURLs.WebViewerAuthorizationErrorPage, true); } if (!string.IsNullOrEmpty(ListStudies) && ListStudies.Equals("true")) { //Extract the WebViewer Init Parameters to determine whether or not we need //to redirect to the Studies page. var initParams = new WebViewerInitParams(); string[] vals = HttpUtility.UrlDecode(WebViewerInitString).Split(new[] { '?', ';', '=', ',', '&' }); for (int i = 0; i < vals.Length - 1; i++) { if (String.IsNullOrEmpty(vals[i])) continue; if (vals[i].Equals(ImageServerConstants.WebViewerStartupParameters.Study)) { i++; initParams.StudyInstanceUids.Add(vals[i]); } else if (vals[i].Equals(ImageServerConstants.WebViewerStartupParameters.PatientID)) { i++; initParams.PatientIds.Add(vals[i]); } else if (vals[i].Equals(ImageServerConstants.WebViewerStartupParameters.AeTitle)) { i++; initParams.AeTitle = vals[i]; } else if (vals[i].Equals(ImageServerConstants.WebViewerStartupParameters.AccessionNumber)) { i++; initParams.AccessionNumbers.Add(vals[i]); } } //Check if there are multiple studies to be displayed. var controller = new StudyController(); var partitionAdapter = new ServerPartitionDataAdapter(); var partitionCriteria = new ServerPartitionSelectCriteria(); StudySelectCriteria studyCriteria; ServerPartition partition = null; int studyCount = 0; if(!string.IsNullOrEmpty(initParams.AeTitle)) { partitionCriteria.AeTitle.EqualTo(initParams.AeTitle); IList<ServerPartition> partitions = partitionAdapter.GetServerPartitions(partitionCriteria); //TODO: What if the AE Title is invalid? if(partitions.Count == 1) { partition = partitions[0]; } } //TODO: The logic below is very weird. foreach (string patientId in initParams.PatientIds) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); SetStringCondition(studyCriteria.PatientId, patientId); studyCount +=controller.GetStudyCount(studyCriteria); } if (studyCount < 2) foreach (string accession in initParams.AccessionNumbers) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); SetStringCondition(studyCriteria.AccessionNumber, accession); // TODO: studyCount is either 0 or 1 entering this block. If the same study is found, studyCount is incremented to 2, which is wrong studyCount += controller.GetStudyCount(studyCriteria); } if (studyCount < 2 && initParams.StudyInstanceUids.Count > 0) { studyCriteria = new StudySelectCriteria(); if (partition != null) studyCriteria.ServerPartitionKey.EqualTo(partition.Key); studyCriteria.StudyInstanceUid.In(initParams.StudyInstanceUids); // TODO: studyCount is either 0 or 1 entering this block. If the same study is found, studyCount is incremented to 2, which is wrong studyCount += controller.GetStudyCount(studyCriteria); } if (studyCount > 1) Server.Transfer(ImageServerConstants.PageURLs.WebViewerStudiesPage, true); } if (string.IsNullOrEmpty(WebViewerInitString)) { Response.Redirect(ImageServerConstants.PageURLs.WebViewerDefaultPage, true); } else { Response.Redirect(ImageServerConstants.PageURLs.WebViewerDefaultPage + "?" + ImageServerConstants.WebViewerQueryStrings.WebViewerInitParams + "=" + WebViewerInitString, true); } } else { Server.Transfer(ImageServerConstants.PageURLs.WebViewerAuthorizationErrorPage, true); } }
/// <summary> /// Retrieves all server paritions. /// </summary> /// <returns></returns> public IList<ServerPartition> GetAllPartitions() { var searchCriteria = new ServerPartitionSelectCriteria(); searchCriteria.AeTitle.SortAsc(0); return GetPartitions(searchCriteria); }
private void LoadSeriesDetails() { if (!String.IsNullOrEmpty(_serverae) && !String.IsNullOrEmpty(_studyInstanceUid) && !String.IsNullOrEmpty(_seriesInstanceUid)) { StudyAdaptor studyAdaptor = new StudyAdaptor(); SeriesSearchAdaptor seriesAdaptor = new SeriesSearchAdaptor(); ServerPartitionDataAdapter adaptor = new ServerPartitionDataAdapter(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.EqualTo(_serverae); Model.ServerPartition partition = adaptor.GetFirst(criteria); if (partition != null) { Partition = partition; StudySelectCriteria studyCriteria = new StudySelectCriteria(); studyCriteria.StudyInstanceUid.EqualTo(_studyInstanceUid); studyCriteria.ServerPartitionKey.EqualTo(Partition.GetKey()); Model.Study study = studyAdaptor.GetFirst(studyCriteria); if (study != null) { // there should be only one study _study = study; SeriesSelectCriteria seriesCriteria = new SeriesSelectCriteria(); seriesCriteria.SeriesInstanceUid.EqualTo(_seriesInstanceUid); Series series = seriesAdaptor.GetFirst(seriesCriteria); if (series != null) { _series = series; } } } } if (_study!=null && _series != null) { SeriesDetailsPanel1.Study = _study; SeriesDetailsPanel1.Series = _series; } DataBind(); }
public ServerPartitionSelectCriteria(ServerPartitionSelectCriteria other) : base(other) {}
public ServerPartitionSelectCriteria(ServerPartitionSelectCriteria other) : base(other) { }
protected void Page_Load(object sender, EventArgs e) { ServerPartitionDataAdapter adaptor = new ServerPartitionDataAdapter(); ServerPartitionSelectCriteria criteria = new ServerPartitionSelectCriteria(); criteria.AeTitle.EqualTo(Request.QueryString[ImageServerConstants.QueryStrings.ServerAE]); _partition = adaptor.GetFirst(criteria); for(int i=1;;i++) { string qs = string.Format(ImageServerConstants.QueryStrings.StudyUID + "{0}", i); string studyuid = Request.QueryString[qs]; if(!string.IsNullOrEmpty(studyuid)) { _studies.Add(LoadStudy(studyuid)); } else { break; } } StudyGridPanel.StudyList = _studies; LoadDevices(); if (DHCPFilter.Items.Count == 0) { DHCPFilter.Items.Add(new ListItem(SR.All)); DHCPFilter.Items.Add(new ListItem(SR.DHCP)); DHCPFilter.Items.Add(new ListItem(SR.NoDHCP)); } IList<DeviceTypeEnum> deviceTypes = DeviceTypeEnum.GetAll(); if (DeviceTypeFilter.Items.Count == 0) { foreach (DeviceTypeEnum t in deviceTypes) { DeviceTypeFilter.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(t), t.Lookup)); } } else { ListItem[] typeItems = new ListItem[DeviceTypeFilter.Items.Count]; DeviceTypeFilter.Items.CopyTo(typeItems, 0); DeviceTypeFilter.Items.Clear(); int count = 0; foreach (DeviceTypeEnum t in deviceTypes) { DeviceTypeFilter.Items.Add(new ListItem(ServerEnumDescription.GetLocalizedDescription(t), t.Lookup)); DeviceTypeFilter.Items[count].Selected = typeItems[count].Selected; count++; } } }
/// <summary> /// Internal method for loading partition information fromt he database. /// </summary> private void LoadPartitions() { bool changed = false; lock (_partitionsLock) { try { var templist = new Dictionary<string, ServerPartition>(); var tempAeList = new Dictionary<string, ServerPartitionAlternateAeTitle>(); IPersistentStore store = PersistentStoreRegistry.GetDefaultStore(); using (IReadContext ctx = store.OpenReadContext()) { var broker = ctx.GetBroker<IServerPartitionEntityBroker>(); var criteria = new ServerPartitionSelectCriteria(); IList<ServerPartition> list = broker.Find(criteria); foreach (ServerPartition partition in list) { if (IsChanged(partition)) { changed = true; } templist.Add(partition.AeTitle, partition); } var aeBroker = ctx.GetBroker<IServerPartitionAlternateAeTitleEntityBroker>(); var aeCriteria = new ServerPartitionAlternateAeTitleSelectCriteria(); IList<ServerPartitionAlternateAeTitle> aeList = aeBroker.Find(aeCriteria); foreach (ServerPartitionAlternateAeTitle partitionAe in aeList) { if (IsChanged(partitionAe)) { changed = true; } tempAeList.Add(partitionAe.AeTitle, partitionAe); } } if (_partitions.Count != templist.Count) changed = true; if (_alternateAeTitles.Count != tempAeList.Count) changed = true; _partitions = templist; _alternateAeTitles = tempAeList; if (changed && _changedListener != null) { EventsHelper.Fire(_changedListener, this, new ServerPartitionChangedEventArgs(this)); } } catch(Exception ex) { Platform.Log(LogLevel.Error, ex, "Unexpected exception when loading partitions, possible database error. Operation will be retried later"); } }// lock }