public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); Well = new Well { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Well"), GeographicLocationWGS84 = DevKit.Location(), SchemaVersion = "2.0", TimeZone = DevKit.TimeZone }; DownholeComponent = new DownholeComponent { Uuid = DevKit.Uid(), Citation = DevKit.Citation("DownholeComponent"), Well = DevKit.DataObjectReference(Well), SchemaVersion = EtpUris.GetUriFamily(typeof(DownholeComponent)).Version, }; BeforeEachTest(); OnTestSetUp(); }
protected override void PrepareData() { Well = new Well { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Well"), GeographicLocationWGS84 = DevKit.Location(), SchemaVersion = "2.0", TimeZone = DevKit.TimeZone }; Wellbore = new Wellbore { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Wellbore"), Well = DevKit.DataObjectReference(Well), SchemaVersion = "2.0" }; Tubular = new Tubular { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Tubular"), Wellbore = DevKit.DataObjectReference(Wellbore), SchemaVersion = EtpUris.GetUriFamily(typeof(Tubular)).Version, }; }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); Well = new Well { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Well"), GeographicLocationWGS84 = DevKit.Location(), SchemaVersion = "2.0", TimeZone = DevKit.TimeZone }; Wellbore = new Wellbore { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Wellbore"), Well = DevKit.DataObjectReference(Well), SchemaVersion = "2.0" }; SurveyProgram = new SurveyProgram { Uuid = DevKit.Uid(), Citation = DevKit.Citation("SurveyProgram"), Wellbore = DevKit.DataObjectReference(Wellbore), SchemaVersion = EtpUris.GetUriFamily(typeof(SurveyProgram)).Version, }; BeforeEachTest(); OnTestSetUp(); }
/// <summary> /// Gets a collection of resources associated to the specified URI. /// </summary> /// <param name="args">The <see cref="ProtocolEventArgs{GetResources, IList}"/> instance containing the event data.</param> public void GetResources(ProtocolEventArgs <GetResources, IList <Resource> > args) { if (EtpUris.IsRootUri(args.Message.Uri)) { args.Context.Add(DiscoveryStoreProvider.NewProtocol(EtpUris.Witsml131, "WITSML Store (1.3.1.1)")); return; } var uri = new EtpUri(args.Message.Uri); var parentUri = uri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(uri.Query)) { parentUri = new EtpUri(parentUri + uri.Query); } if (!uri.IsRelatedTo(EtpUris.Witsml131)) { return; } if (uri.IsBaseUri || (string.IsNullOrWhiteSpace(uri.ObjectId) && ObjectTypes.Well.EqualsIgnoreCase(uri.ObjectType))) { _wellDataProvider.GetAll(uri) .ForEach(x => args.Context.Add(ToResource(x))); } else if (string.IsNullOrWhiteSpace(uri.ObjectId) && ObjectTypes.Wellbore.EqualsIgnoreCase(parentUri.ObjectType)) { var dataProvider = _container.Resolve <IEtpDataProvider>(new ObjectName(uri.ObjectType, uri.Version)); dataProvider .GetAll(parentUri) .Cast <IWellboreObject>() .ForEach(x => args.Context.Add(ToResource(x))); } else if (ObjectTypes.Well.EqualsIgnoreCase(uri.ObjectType)) { _wellboreDataProvider.GetAll(uri) .ForEach(x => args.Context.Add(ToResource(x))); } else if (ObjectTypes.Wellbore.EqualsIgnoreCase(uri.ObjectType)) { var wellboreObjectType = typeof(IWellboreObject); Providers .OfType <IWitsmlDataAdapter>() .Where(x => wellboreObjectType.IsAssignableFrom(x.DataObjectType)) .Select(x => EtpContentTypes.GetContentType(x.DataObjectType)) .OrderBy(x => x.ObjectType) .ForEach(x => args.Context.Add(DiscoveryStoreProvider.NewFolder(uri, x, x.ObjectType))); } else if (ObjectTypes.Log.EqualsIgnoreCase(uri.ObjectType)) { var log = _logDataProvider.Get(uri); log?.LogCurveInfo?.ForEach(x => args.Context.Add(ToResource(log, x))); } }
protected override void PrepareData() { StimJobStage = new StimJobStage { SchemaVersion = EtpUris.GetUriFamily(typeof(StimJobStage)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("StimJobStage") }; }
protected override void PrepareData() { WellboreCompletion = new WellboreCompletion { SchemaVersion = EtpUris.GetUriFamily(typeof(WellboreCompletion)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("WellboreCompletion") }; }
protected override void PrepareData() { Rig = new Rig { SchemaVersion = EtpUris.GetUriFamily(typeof(Rig)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("Rig") }; }
protected override void PrepareData() { Activity = new Activity { SchemaVersion = EtpUris.GetUriFamily(typeof(Activity)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("Activity") }; }
protected override void PrepareData() { ToolErrorTermSet = new ToolErrorTermSet { SchemaVersion = EtpUris.GetUriFamily(typeof(ToolErrorTermSet)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("ToolErrorTermSet") }; }
protected override void PrepareData() { DataAssuranceRecord = new DataAssuranceRecord { SchemaVersion = EtpUris.GetUriFamily(typeof(DataAssuranceRecord)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("DataAssuranceRecord") }; }
protected override void PrepareData() { CementJobEvaluation = new CementJobEvaluation { SchemaVersion = EtpUris.GetUriFamily(typeof(CementJobEvaluation)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("CementJobEvaluation") }; }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources, out string serverSortOrder) where T : IResource { // Default to Name in IResource serverSortOrder = ObjectTypes.NameProperty; if (EtpUris.IsRootUri(uri)) { var childCount = CreateFoldersByObjectType(etpAdapter, EtpUris.Eml210).Count; resources.Add(etpAdapter.NewProtocol(EtpUris.Eml210, "EML Common (2.1)", childCount)); return; } var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Eml210)) { return; } if (etpUri.IsBaseUri) { CreateFoldersByObjectType(etpAdapter, etpUri) .ForEach(resources.Add); } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId)) { var objectType = ObjectTypes.GetObjectType(etpUri.ObjectType, etpUri.Family, etpUri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(etpUri.ObjectType); serverSortOrder = dataProvider.ServerSortOrder; dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri, hasChildren))); } //else //{ // var propertyName = uri.ObjectType.ToPascalCase(); // // CreateFoldersByObjectType(uri, propertyName) // .ForEach(resources.Add); //} }
/// <summary> /// Adds the content types managed by this data adapter to the collection of <see cref="EtpContentType"/>. /// </summary> /// <param name="contentTypes">A collection of content types.</param> public virtual void GetSupportedObjects(IList <EtpContentType> contentTypes) { var type = typeof(TObject); if (!ObjectTypes.IsEnergisticsObjectType(type)) { return; } var contentType = EtpUris.GetUriFamily(type) .Append(ObjectTypes.GetObjectType(type)) .ContentType; contentTypes.Add(contentType); }
/// <summary> /// Adds the content types managed by this data adapter to the collection of <see cref="EtpContentType"/>. /// </summary> /// <param name="contentTypes">A collection of content types.</param> public virtual void GetSupportedObjects(IList <EtpContentType> contentTypes) { var type = typeof(TObject); if (type.Assembly != typeof(IDataObject).Assembly) { return; } var contentType = EtpUris.GetUriFamily(type) .Append(ObjectTypes.GetObjectType(type)) .ContentType; contentTypes.Add(contentType); }
/// <summary> /// Handles the FindResources message of the DiscoveryQuery protocol. /// </summary> /// <param name="args">The ProtocolEventArgs{FindResources, IList{Resource}} instance containing the event data.</param> protected override void HandleFindResources(ProtocolEventArgs <FindResources, ResourceResponse> args) { if (!EtpUris.IsRootUri(args.Message.Uri)) { var uri = this.CreateAndValidateUri(args.Message.Uri, args.Header.MessageId); if (!uri.IsValid) { args.Cancel = true; return; } } var max = WitsmlSettings.MaxGetResourcesResponse; var resources = args.Context.Resources; foreach (var provider in Providers.OrderBy(x => x.DataSchemaVersion)) { // TODO: Optimize inside each version specific provider if (resources.Count >= max) { break; } try { provider.FindResources(Session.Adapter, args); } catch (ContainerException ex) { this.UnsupportedObject(ex, args.Message.Uri, args.Header.MessageId); return; } } // Limit max number of FindResourcesResponse returned to customer while (resources.Count > max) { resources.RemoveAt(resources.Count - 1); } // Check for empty query results if (!resources.Any()) { Acknowledge(args.Header.MessageId, MessageFlags.NoData); args.Cancel = true; } }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); WellboreCompletion = new WellboreCompletion { SchemaVersion = EtpUris.GetUriFamily(typeof(WellboreCompletion)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("WellboreCompletion") }; BeforeEachTest(); OnTestSetUp(); }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); ToolErrorModel = new ToolErrorModel { SchemaVersion = EtpUris.GetUriFamily(typeof(ToolErrorModel)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("ToolErrorModel") }; BeforeEachTest(); OnTestSetUp(); }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); ActivityTemplate = new ActivityTemplate { SchemaVersion = EtpUris.GetUriFamily(typeof(ActivityTemplate)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("ActivityTemplate") }; BeforeEachTest(); OnTestSetUp(); }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); DataAssuranceRecord = new DataAssuranceRecord { SchemaVersion = EtpUris.GetUriFamily(typeof(DataAssuranceRecord)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("DataAssuranceRecord") }; BeforeEachTest(); OnTestSetUp(); }
public void TestSetUp() { Logger.Debug($"Executing {TestContext.TestName}"); DevKit = new DevKit200Aspect(TestContext); StimJobStage = new StimJobStage { SchemaVersion = EtpUris.GetUriFamily(typeof(StimJobStage)).Version, Uuid = DevKit.Uid(), Citation = DevKit.Citation("StimJobStage") }; BeforeEachTest(); OnTestSetUp(); }
/// <summary> /// Gets a collection of resources associated to the specified URI. /// </summary> /// <param name="args">The <see cref="ProtocolEventArgs{GetResources, IList}"/> instance containing the event data.</param> public void GetResources(ProtocolEventArgs <GetResources, IList <Resource> > args) { if (EtpUris.IsRootUri(args.Message.Uri)) { // NOTE: This entry added by the Witsml200Provider so that it appears at the end of the list //args.Context.Add(DiscoveryStoreProvider.NewProtocol(EtpUris.Eml210, "EML Common (2.1)")); return; } var uri = new EtpUri(args.Message.Uri); var parentUri = uri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(uri.Query)) { parentUri = new EtpUri(parentUri + uri.Query); } if (!uri.IsRelatedTo(EtpUris.Eml210)) { return; } if (uri.IsBaseUri) { CreateFoldersByObjectType(uri) .ForEach(args.Context.Add); } else if (string.IsNullOrWhiteSpace(uri.ObjectId)) { var objectType = ObjectTypes.GetObjectType(uri.ObjectType, uri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(uri.ObjectType); dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => args.Context.Add(ToResource(x, hasChildren))); } //else //{ // var propertyName = uri.ObjectType.ToPascalCase(); // // CreateFoldersByObjectType(uri, propertyName) // .ForEach(args.Context.Add); //} }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources) where T : IResource { if (EtpUris.IsRootUri(uri)) { // NOTE: This entry added by the Witsml200Provider so that it appears at the end of the list //resources.Add(etpAdapter.NewProtocol(EtpUris.Eml210, "EML Common (2.1)")); return; } var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Eml210)) { return; } if (etpUri.IsBaseUri) { CreateFoldersByObjectType(etpAdapter, etpUri) .ForEach(resources.Add); } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId)) { var objectType = ObjectTypes.GetObjectType(etpUri.ObjectType, etpUri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(etpUri.ObjectType); dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x, hasChildren))); } //else //{ // var propertyName = uri.ObjectType.ToPascalCase(); // // CreateFoldersByObjectType(uri, propertyName) // .ForEach(resources.Add); //} }
/// <summary> /// Handles the GetTreeResources message of the Discovery protocol. /// </summary> /// <param name="args">The ProtocolEventArgs{GetTreeResources, IList{Resource}} instance containing the event data.</param> protected override void HandleGetTreeResources(ProtocolEventArgs <GetTreeResources, IList <Resource> > args) { if (!EtpUris.IsRootUri(args.Message.Context.Uri)) { var uri = this.CreateAndValidateUri(args.Message.Context.Uri, args.Header.MessageId); if (!uri.IsValid) { args.Cancel = true; return; } if (!this.ValidateUriParentHierarchy(uri, args.Header.MessageId)) { args.Cancel = true; return; } } var max = WitsmlSettings.MaxGetResourcesResponse; foreach (var provider in Providers.OrderBy(x => x.DataSchemaVersion)) { // TODO: Optimize inside each version specific provider if (args.Context.Count >= max) { break; } try { provider.GetResources(Session.Adapter, args); } catch (ContainerException ex) { this.UnsupportedObject(ex, args.Message.Context.Uri, args.Header.MessageId); return; } } // Limit max number of GetResourcesResponse returned to customer while (args.Context.Count > max) { args.Context.RemoveAt(args.Context.Count - 1); } }
protected override void PrepareData() { Well = new Well { Uuid = DevKit.Uid(), Citation = DevKit.Citation("Well"), GeographicLocationWGS84 = DevKit.Location(), SchemaVersion = "2.0", TimeZone = DevKit.TimeZone }; WellCompletion = new WellCompletion { Uuid = DevKit.Uid(), Citation = DevKit.Citation("WellCompletion"), Well = DevKit.DataObjectReference(Well), SchemaVersion = EtpUris.GetUriFamily(typeof(WellCompletion)).Version, }; }
/// <summary> /// Gets the URI. /// </summary> /// <param name="type">The type.</param> /// <returns>The URI.</returns> public EtpUri GetUri(Type type) { var objectType = ObjectTypes.GetObjectType(type); var baseUri = EtpUris.GetUriFamily(type); if (typeof(Witsml200.AbstractObject).IsAssignableFrom(type)) { return(baseUri.Append(objectType, Attribute("uuid"))); } if (typeof(IWellObject).IsAssignableFrom(type)) { baseUri = baseUri.Append(ObjectTypes.Well, Attribute("uidWell")); } if (typeof(IWellboreObject).IsAssignableFrom(type)) { baseUri = baseUri.Append(ObjectTypes.Wellbore, Attribute("uidWellbore")); } return(baseUri.Append(objectType, Attribute("uid"))); }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources) where T : IResource { if (EtpUris.IsRootUri(uri)) { resources.Add(etpAdapter.NewProtocol(EtpUris.Witsml200, "WITSML Store (2.0)")); resources.Add(etpAdapter.NewProtocol(EtpUris.Eml210, "EML Common (2.1)")); return; } var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Witsml200)) { return; } if (etpUri.IsBaseUri) { CreateFoldersByObjectType(etpAdapter, etpUri) .ForEach(resources.Add); } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId)) { var isChannelDataAdapterEnabled = WitsmlSettings.IsChannelDataAdapterEnabled; if (!isChannelDataAdapterEnabled && ObjectTypes.ChannelSet.EqualsIgnoreCase(etpUri.ObjectType) && ObjectTypes.Log.EqualsIgnoreCase(parentUri.ObjectType)) { var log = _logDataProvider.Get(parentUri); log?.ChannelSet?.ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri))); } else if (!isChannelDataAdapterEnabled && ObjectTypes.Channel.EqualsIgnoreCase(etpUri.ObjectType) && ObjectTypes.ChannelSet.EqualsIgnoreCase(parentUri.ObjectType)) { var set = _channelSetDataProvider.Get(parentUri); set?.Channel?.ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri))); } else { var objectType = ObjectTypes.GetObjectType(etpUri.ObjectType, etpUri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(etpUri.ObjectType); dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri, hasChildren))); } } else if (ObjectTypes.Log.EqualsIgnoreCase(etpUri.ObjectType)) { var log = _logDataProvider.Get(etpUri); var hasChildren = log?.ChannelSet?.Count ?? 0; CreateFoldersByObjectType(etpAdapter, etpUri, "Log", ObjectTypes.ChannelSet, hasChildren) .ForEach(resources.Add); } else if (ObjectTypes.ChannelSet.EqualsIgnoreCase(etpUri.ObjectType)) { var set = _channelSetDataProvider.Get(etpUri); var hasChildren = set?.Channel?.Count ?? 0; CreateFoldersByObjectType(etpAdapter, etpUri, "ChannelSet", ObjectTypes.Channel, hasChildren) .ForEach(resources.Add); } else { var propertyName = etpUri.ObjectType.ToPascalCase(); CreateFoldersByObjectType(etpAdapter, etpUri, propertyName) .ForEach(resources.Add); } }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources) where T : IResource { if (EtpUris.IsRootUri(uri)) { resources.Add(etpAdapter.NewProtocol(EtpUris.Witsml131, "WITSML Store (1.3.1.1)")); return; } var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Witsml131)) { return; } if (etpUri.IsBaseUri || (string.IsNullOrWhiteSpace(etpUri.ObjectId) && ObjectTypes.Well.EqualsIgnoreCase(etpUri.ObjectType))) { _wellDataProvider.GetAll(etpUri) .ForEach(x => resources.Add(ToResource(etpAdapter, x))); } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId) && ObjectTypes.Wellbore.EqualsIgnoreCase(parentUri.ObjectType)) { var dataProvider = _container.Resolve <IEtpDataProvider>(new ObjectName(etpUri.ObjectType, etpUri.Version)); dataProvider .GetAll(parentUri) .Cast <IWellboreObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x))); } else if (ObjectTypes.Well.EqualsIgnoreCase(etpUri.ObjectType)) { _wellboreDataProvider.GetAll(etpUri) .ForEach(x => resources.Add(ToResource(etpAdapter, x))); } else if (ObjectTypes.Wellbore.EqualsIgnoreCase(etpUri.ObjectType)) { var wellboreObjectType = typeof(IWellboreObject); Providers .OfType <IWitsmlDataAdapter>() .Where(x => wellboreObjectType.IsAssignableFrom(x.DataObjectType)) .Select(x => EtpContentTypes.GetContentType(x.DataObjectType)) .OrderBy(x => x.ObjectType) .ForEach(x => { var hasChildren = ObjectTypes.Log.EqualsIgnoreCase(x.ObjectType) ? _logDataProvider.Count(etpUri) : -1; resources.Add(etpAdapter.NewFolder(etpUri, x, x.ObjectType, hasChildren)); }); } else if (ObjectTypes.Log.EqualsIgnoreCase(etpUri.ObjectType)) { var log = _logDataProvider.Get(etpUri); log?.LogCurveInfo?.ForEach(x => resources.Add(ToResource(etpAdapter, log, x))); } }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources, out string serverSortOrder) where T : IResource { // Default to Name in IResource serverSortOrder = ObjectTypes.NameProperty; var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; if (EtpUris.IsRootUri(uri)) { resources.Add(etpAdapter.NewProtocol(EtpUris.Witsml131, "WITSML Store (1.3.1.1)", _wellDataProvider.Count(etpUri))); return; } // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Witsml131)) { return; } if (etpUri.IsBaseUri || (string.IsNullOrWhiteSpace(etpUri.ObjectId) && ObjectTypes.Well.EqualsIgnoreCase(etpUri.ObjectType))) { _wellDataProvider.GetAll(etpUri) .ForEach(x => resources.Add(ToResource(etpAdapter, x))); serverSortOrder = _wellDataProvider.ServerSortOrder; } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId) && ObjectTypes.Wellbore.EqualsIgnoreCase(parentUri.ObjectType)) { var dataProvider = _container.Resolve <IEtpDataProvider>(new ObjectName(etpUri.ObjectType, etpUri.Version)); serverSortOrder = dataProvider.ServerSortOrder; dataProvider .GetAll(parentUri) .Cast <IWellboreObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x))); } else if (ObjectTypes.Well.EqualsIgnoreCase(etpUri.ObjectType)) { _wellboreDataProvider.GetAll(etpUri) .ForEach(x => resources.Add(ToResource(etpAdapter, x))); serverSortOrder = _wellboreDataProvider.ServerSortOrder; } else if (ObjectTypes.Wellbore.EqualsIgnoreCase(etpUri.ObjectType)) { foreach (var adapter in GetWellboreDataAdapters()) { var type = EtpContentTypes.GetContentType(adapter.DataObjectType); var count = adapter.Count(etpUri); resources.Add(etpAdapter.NewFolder(etpUri, type, type.ObjectType, count)); } } else if (ObjectTypes.Log.EqualsIgnoreCase(etpUri.ObjectType)) { var log = _logDataProvider.Get(etpUri); log?.LogCurveInfo?.ForEach(x => resources.Add(ToResource(etpAdapter, log, x))); serverSortOrder = string.Empty; } }
/// <summary> /// Gets a collection of resources associated to the specified URI. /// </summary> /// <param name="args">The <see cref="ProtocolEventArgs{GetResources, IList}"/> instance containing the event data.</param> public void GetResources(ProtocolEventArgs <GetResources, IList <Resource> > args) { if (EtpUris.IsRootUri(args.Message.Uri)) { args.Context.Add(DiscoveryStoreProvider.NewProtocol(EtpUris.Witsml200, "WITSML Store (2.0)")); args.Context.Add(DiscoveryStoreProvider.NewProtocol(EtpUris.Eml210, "EML Common (2.1)")); return; } var uri = new EtpUri(args.Message.Uri); var parentUri = uri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(uri.Query)) { parentUri = new EtpUri(parentUri + uri.Query); } if (!uri.IsRelatedTo(EtpUris.Witsml200)) { return; } if (uri.IsBaseUri) { CreateFoldersByObjectType(uri) .ForEach(args.Context.Add); } else if (string.IsNullOrWhiteSpace(uri.ObjectId)) { if (ObjectTypes.ChannelSet.EqualsIgnoreCase(uri.ObjectType) && ObjectTypes.Log.EqualsIgnoreCase(parentUri.ObjectType)) { var log = _logDataProvider.Get(parentUri); log?.ChannelSet?.ForEach(x => args.Context.Add(ToResource(x))); } else if (ObjectTypes.Channel.EqualsIgnoreCase(uri.ObjectType) && ObjectTypes.ChannelSet.EqualsIgnoreCase(parentUri.ObjectType)) { var set = _channelSetDataProvider.Get(parentUri); set?.Channel?.ForEach(x => args.Context.Add(ToResource(set, x))); } else { var objectType = ObjectTypes.GetObjectType(uri.ObjectType, uri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(uri.ObjectType); dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => args.Context.Add(ToResource(x, hasChildren))); } } else if (ObjectTypes.Log.EqualsIgnoreCase(uri.ObjectType)) { var log = _logDataProvider.Get(uri); var hasChildren = log?.ChannelSet?.Count ?? 0; CreateFoldersByObjectType(uri, "Log", ObjectTypes.ChannelSet, hasChildren) .ForEach(args.Context.Add); } else if (ObjectTypes.ChannelSet.EqualsIgnoreCase(uri.ObjectType)) { var set = _channelSetDataProvider.Get(uri); var hasChildren = set?.Channel?.Count ?? 0; CreateFoldersByObjectType(uri, "ChannelSet", ObjectTypes.Channel, hasChildren) .ForEach(args.Context.Add); } else { var propertyName = uri.ObjectType.ToPascalCase(); CreateFoldersByObjectType(uri, propertyName) .ForEach(args.Context.Add); } }
private void GetResources <T>(IEtpAdapter etpAdapter, string uri, IList <T> resources, out string serverSortOrder) where T : IResource { // Default to Name in IResource serverSortOrder = ObjectTypes.NameProperty; if (EtpUris.IsRootUri(uri)) { var childCount = CreateFoldersByObjectType(etpAdapter, EtpUris.Witsml200, skipChildCount: true).Count; resources.Add(etpAdapter.NewProtocol(EtpUris.Witsml200, "WITSML Store (2.0)", childCount)); return; } var etpUri = new EtpUri(uri); var parentUri = etpUri.Parent; // Append query string, if any if (!string.IsNullOrWhiteSpace(etpUri.Query)) { parentUri = new EtpUri(parentUri + etpUri.Query); } if (!etpUri.IsRelatedTo(EtpUris.Witsml200) || !IsValidUri(etpUri)) { return; } if (etpUri.IsBaseUri) { CreateFoldersByObjectType(etpAdapter, etpUri) .ForEach(resources.Add); } else if (string.IsNullOrWhiteSpace(etpUri.ObjectId)) { var isChannelDataAdapterEnabled = WitsmlSettings.IsChannelDataAdapterEnabled; if (!isChannelDataAdapterEnabled && ObjectTypes.ChannelSet.EqualsIgnoreCase(etpUri.ObjectType) && ObjectTypes.Log.EqualsIgnoreCase(parentUri.ObjectType)) { var log = _logDataProvider.Get(parentUri); log?.ChannelSet?.OrderBy(x => x.Citation.Title).ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri))); serverSortOrder = _channelSetDataProvider.ServerSortOrder; } else if (!isChannelDataAdapterEnabled && ObjectTypes.Channel.EqualsIgnoreCase(etpUri.ObjectType) && ObjectTypes.ChannelSet.EqualsIgnoreCase(parentUri.ObjectType)) { var set = _channelSetDataProvider.Get(parentUri); set?.Channel?.OrderBy(x => x.Citation.Title).ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri))); serverSortOrder = _channelSetDataProvider.ServerSortOrder; } else { var objectType = ObjectTypes.GetObjectType(etpUri.ObjectType, etpUri.Family, etpUri.Version); var contentType = EtpContentTypes.GetContentType(objectType); var hasChildren = contentType.IsRelatedTo(EtpContentTypes.Eml210) ? 0 : -1; var dataProvider = GetDataProvider(etpUri.ObjectType); serverSortOrder = dataProvider.ServerSortOrder; dataProvider .GetAll(parentUri) .Cast <AbstractObject>() .ForEach(x => resources.Add(ToResource(etpAdapter, x, parentUri, hasChildren))); } } else if (ObjectTypes.Log.EqualsIgnoreCase(etpUri.ObjectType)) { var log = _logDataProvider.Get(etpUri); var hasChildren = log?.ChannelSet?.Count ?? 0; CreateFoldersByObjectType(etpAdapter, etpUri, "Log", ObjectTypes.ChannelSet, hasChildren) .ForEach(resources.Add); } else if (ObjectTypes.ChannelSet.EqualsIgnoreCase(etpUri.ObjectType)) { var set = _channelSetDataProvider.Get(etpUri); var hasChildren = set?.Channel?.Count ?? 0; CreateFoldersByObjectType(etpAdapter, etpUri, "ChannelSet", ObjectTypes.Channel, hasChildren) .ForEach(resources.Add); } else if (ObjectTypes.WellboreGeology.EqualsIgnoreCase(etpUri.ObjectType)) { const int childCount = 0; resources.Add(etpAdapter.NewFolder(etpUri, EtpContentTypes.GetContentType(typeof(CuttingsGeology)), ObjectTypes.CuttingsGeology.ToPascalCase(), childCount)); resources.Add(etpAdapter.NewFolder(etpUri, EtpContentTypes.GetContentType(typeof(InterpretedGeology)), ObjectTypes.InterpretedGeology.ToPascalCase(), childCount)); resources.Add(etpAdapter.NewFolder(etpUri, EtpContentTypes.GetContentType(typeof(ShowEvaluation)), ObjectTypes.ShowEvaluation.ToPascalCase(), childCount)); } else { var propertyName = etpUri.ObjectType.ToPascalCase(); CreateFoldersByObjectType(etpAdapter, etpUri, propertyName) .ForEach(resources.Add); } }