protected DataObject CreateDataObject <TList, TObject>(EtpUri uri, TObject instance) where TList : IEnergisticsCollection where TObject : IDataObject { var dataObject = new DataObject() { Resource = new Resource() { Uri = uri, ContentType = uri.ContentType, Name = instance.Name, ResourceType = ResourceTypes.DataObject.ToString(), CustomData = new Dictionary <string, string>(), HasChildren = -1 } }; var list = ObjectTypes.GetObjectTypeListPropertyInfo(uri.ObjectType, uri.Version); var collection = Activator.CreateInstance <TList>(); list.SetValue(collection, new List <TObject> { instance }); dataObject.SetString(EnergisticsConverter.ObjectToXml(collection)); return(dataObject); }
public void Log200DataAdapter_Log_Can_Be_Added_With_Increasing_Time_Data() { AddParents(); var numDataValue = 150; var dtChannelIndex = DevKit.LogGenerator.CreateDateTimeIndex(); DevKit.InitHeader(Log, LoggingMethod.surface, dtChannelIndex); var secondaryIndex = DevKit.LogGenerator.CreateMeasuredDepthIndex(IndexDirection.increasing); var channelSet = Log.ChannelSet.First(); channelSet.Index.Add(secondaryIndex); // Generate 150 rows of data DevKit.LogGenerator.GenerateChannelData(Log.ChannelSet, numDataValue); File.WriteAllText("TestData/TimeLog-2.0-Well.xml", EnergisticsConverter.ObjectToXml(Well)); File.WriteAllText("TestData/TimeLog-2.0-Wellbore.xml", EnergisticsConverter.ObjectToXml(Wellbore)); File.WriteAllText("TestData/TimeLog-2.0.xml", EnergisticsConverter.ObjectToXml(Log)); DevKit.AddAndAssert(Log); var log = DevKit.GetAndAssert(Log); Assert.AreEqual(Log.Citation.Title, log.Citation.Title); Assert.AreEqual(Log.Uuid, log.Uuid); }
/// <summary> /// Serialize WITSML query results to XML and remove empty elements and xsi:nil attributes. /// </summary> /// <param name="obj">The object.</param> /// <param name="nilOnly">if set to <c>true</c> only elements with nil="true" are removed.</param> /// <returns>The serialized XML string.</returns> public static string ToXml(object obj, bool nilOnly = false) { _log.Debug("Serializing object to XML."); if (obj == null) { return(string.Empty); } var xml = EnergisticsConverter.ObjectToXml(obj); var xmlDoc = Parse(xml); var root = xmlDoc.Root; if (root == null) { return(string.Empty); } root = root.UpdateRootElementName(obj.GetType()); foreach (var element in root.Elements()) { RemoveEmptyElements(element, nilOnly); } return(root.ToString(SaveOptions.OmitDuplicateNamespaces)); }
public void WITSMLWebServiceConnection_GetCap_Can_Get_Cap_Server() { var response = _devKit.Proxy.GetCap <CapServers>(OptionsIn.DataVersion.Version141); Console.WriteLine(EnergisticsConverter.ObjectToXml(response)); Assert.IsNotNull(response); }
public void Well200DataAdapter_Well_Can_Be_Serialized_To_Xml() { var xml = EnergisticsConverter.ObjectToXml(Well); Console.WriteLine(xml); Assert.IsNotNull(xml); }
public void Witsml_Store_GetFromStore_Error_401_Missing_Plural_Root_Element() { var list = new LogList(); var xmlIn = EnergisticsConverter.ObjectToXml(list).Replace("logs", "log"); var response = _devKit.GetFromStore(ObjectTypes.Log, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.MissingPluralRootElement, response.Result); }
public void Log200DataAdapter_Log_Can_Be_Added_With_Decreasing_Log_Data() { AddParents(); var numDataValue = 150; var secondaryIndex = DevKit.LogGenerator.CreateDateTimeIndex(); var mdChannelIndexDecreasing = DevKit.LogGenerator.CreateMeasuredDepthIndex(IndexDirection.decreasing); DevKit.InitHeader(Log, LoggingMethod.surface, mdChannelIndexDecreasing); var channelSet = Log.ChannelSet.First(); channelSet.Index.Add(secondaryIndex); // Generate rows of data DevKit.LogGenerator.GenerateChannelData(Log.ChannelSet, numDataValue); File.WriteAllText("TestData/DecreasingDepthLog-2.0-Well.xml", EnergisticsConverter.ObjectToXml(Well)); File.WriteAllText("TestData/DecreasingDepthLog-2.0-Wellbore.xml", EnergisticsConverter.ObjectToXml(Wellbore)); File.WriteAllText("TestData/DecreasingDepthLog-2.0.xml", EnergisticsConverter.ObjectToXml(Log)); DevKit.AddAndAssert(Log); var log = DevKit.GetAndAssert(Log); Assert.AreEqual(Log.Citation.Title, log.Citation.Title); Assert.AreEqual(Log.Uuid, log.Uuid); var mnemonics = channelSet.Index.Select(i => i.Mnemonic).Concat(channelSet.Channel.Select(c => c.Mnemonic)).ToList(); var logData = _channelDataProvider.GetChannelData(channelSet.GetUri(), new Range <double?>(null, null), mnemonics, null); // Test that the rows of data before and after are the same. Assert.AreEqual(numDataValue, logData.Count); var start = logData[0][0][0]; var end = logData[numDataValue - 1][0][0]; // Test the log is still decreasing Assert.IsTrue(double.Parse(end.ToString()) < double.Parse(start.ToString())); // Check PointMetadata values foreach (var row in logData) { var ropValues = ChannelDataReader.ReadValue(row[1][0]) as object[]; var hkldValues = ChannelDataReader.ReadValue(row[1][1]) as object[]; Assert.IsNull(hkldValues); if (ropValues == null) { continue; } Assert.AreEqual(2, ropValues.Length); Assert.IsTrue(ropValues[0] == null || ropValues[0] is double); Assert.IsTrue(ropValues[1] == null || ropValues[1] is bool); } }
public void SetupParameters <TList, TObject>(List <TObject> entityList, string wmlTypeIn, out string typeIn, out string queryIn) where TList : IEnergisticsCollection { var objectType = ObjectTypes.GetObjectType <TList>(); var version = ObjectTypes.GetVersion(typeof(TList)); var property = ObjectTypes.GetObjectTypeListProperty(objectType, version); var info = typeof(TList).GetProperty(property); var list = New <TList>(x => info.SetValue(x, entityList)); typeIn = wmlTypeIn ?? objectType; queryIn = EnergisticsConverter.ObjectToXml(list); // WitsmlParser.ToXml(list); }
public void WitsmlValidator_AddToStore_Error_486_Data_Object_Types_Dont_Match() { var wells = new WellList { Well = DevKit.List(Well) }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); var response = DevKit.AddToStore(ObjectTypes.Wellbore, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.DataObjectTypesDontMatch, response.Result); }
public void Trajectory131Validator_AddToStore_Error_486_Data_Object_Types_Dont_Match() { AddParents(); var trajectories = new TrajectoryList { Trajectory = DevKit.List(Trajectory) }; var xmlIn = EnergisticsConverter.ObjectToXml(trajectories); var response = DevKit.AddToStore(ObjectTypes.Log, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.DataObjectTypesDontMatch, response.Result); }
public void WitsmlValidator_AddToStore_Error_413_Unsupported_Data_Object() { // Use an unsupported data schema version var wells = new WellList { Well = DevKit.List(Well), Version = "1.4.x.y" }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); var response = DevKit.AddToStore(ObjectTypes.Well, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.DataObjectNotSupported, response.Result); }
public void WitsmlValidator_UpdateInStore_444_Input_Template_Multiple_DataObjects() { // Add a well to the store AddWell(Well, "WellTest444"); var wells = new WellList { Well = DevKit.List(Well, Well) }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); var updateResponse = DevKit.UpdateInStore(ObjectTypes.Well, xmlIn, null, null); // Assert that we have multiple wells Assert.IsNotNull(updateResponse); Assert.AreEqual((short)ErrorCodes.InputTemplateMultipleDataObjects, updateResponse.Result); }
public void WitsmlValidator_AddToStore_Error_468_Missing_Version_Attribute() { // Use an unsupported data schema version var wells = new WellList { Well = DevKit.List(Well), Version = null }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); var response = DevKit.AddToStore(ObjectTypes.Well, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.MissingDataSchemaVersion, response.Result); }
public void WitsmlValidator_AddToStore_Error_487_Data_Object_Not_Supported() { var entity = new Target { Name = "Entity-to-test-unsupported-error" }; var list = new TargetList { Target = DevKit.List(entity) }; var xmlIn = EnergisticsConverter.ObjectToXml(list); var response = DevKit.AddToStore("target", xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.DataObjectTypeNotSupported, response.Result); }
/// <summary> /// Gets the placement. /// </summary> /// <param name="window">The window.</param> /// <returns>The placement XML.</returns> public static string GetPlacement(this Window window) { try { // Persist window placement details to application settings WindowPlacement wp; var hwnd = new WindowInteropHelper(window).Handle; SafeNativeMethods.GetWindowPlacement(hwnd, out wp); return(EnergisticsConverter.ObjectToXml(wp)); } catch { // Ignore return(null); } }
public void WitsmlStore_AddToStore_Error_404_Invalid_Schema_Version() { var client = new CapClient { ApiVers = "1.4.1.1", SchemaVersion = "1.4.1.1,1.3.1.1" }; var clients = new CapClients { Version = "1.4.1.1", CapClient = client }; var capabilitiesIn = EnergisticsConverter.ObjectToXml(clients); var well = new Well { Name = "Well-to-add-invalid-schema-version" }; var response = _devKit.Add <WellList, Well>(well, capClient: capabilitiesIn); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.InvalidClientSchemaVersion, response.Result); }
public void WitsmlStore_AddToStore_Error_467_Unsupported_Data_Schema_Version() { var client = new CapClient { ApiVers = "1.4.1.1" }; var clients = new CapClients { Version = "1.4.x.y", CapClient = client }; var capabilitiesIn = EnergisticsConverter.ObjectToXml(clients); var well = new Well { Name = _devKit.Name("Well-to-add-unsupported-schema-version"), TimeZone = _devKit.TimeZone }; var response = _devKit.Add <WellList, Well>(well, capClient: capabilitiesIn); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.ApiVersionNotSupported, response.Result); }
public void WitsmlStore_AddToStore_Error_473_Schema_Version_Not_Match() { var client = new CapClient { ApiVers = "1.4.1.1", SchemaVersion = "1.3.1.1" }; var clients = new CapClients { Version = "1.4.1.1", CapClient = client }; var capabilitiesIn = EnergisticsConverter.ObjectToXml(clients); var well = new Well { Name = _devKit.Name("Well-to-add-schema-version-not-match"), TimeZone = _devKit.TimeZone }; var response = _devKit.Add <WellList, Well>(well, capClient: capabilitiesIn); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.SchemaVersionNotMatch, response.Result); }
public void WitsmlValidator_UpdateInStore_Error_468_Missing_Version_Attribute() { // Add a well and Assert Success AddWell(Well, "Well-to-add-missing-version-attribute"); var wells = new WellList { Well = DevKit.List(Well), Version = null }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); // Update and Assert that the version was missing for update. var updateResponse = DevKit.UpdateInStore(ObjectTypes.Well, xmlIn, null, null); Assert.IsNotNull(updateResponse); Assert.AreEqual((short)ErrorCodes.MissingDataSchemaVersion, updateResponse.Result); }
public void WitsmlValidator_AddToStore_Error_444_Mulitple_Data_Objects_Error() { var well1 = new Well { Name = DevKit.Name("Well-to-01"), TimeZone = DevKit.TimeZone, Uid = DevKit.Uid() }; var well2 = new Well { Name = DevKit.Name("Well-to-02"), TimeZone = DevKit.TimeZone, Uid = DevKit.Uid() }; var wells = new WellList { Well = DevKit.List(well1, well2) }; var xmlIn = EnergisticsConverter.ObjectToXml(wells); var response = DevKit.AddToStore(ObjectTypes.Well, xmlIn, null, null); Assert.IsNotNull(response); Assert.AreEqual((short)ErrorCodes.InputTemplateMultipleDataObjects, response.Result); }
protected DataObject CreateDataObject <TObject>(EtpUri uri, TObject instance) where TObject : AbstractObject { var dataObject = new DataObject() { Resource = new Resource() { Uri = uri, ContentType = uri.ContentType, Name = $"{instance.Citation?.Title}", ResourceType = ResourceTypes.DataObject.ToString(), CustomData = new Dictionary <string, string>(), HasChildren = -1 } }; dataObject.SetString(EnergisticsConverter.ObjectToXml(instance)); return(dataObject); }
/// <summary> /// Serialize WITSML query results to XML and remove empty elements and xsi:nil attributes. /// </summary> /// <param name="obj">The object.</param> /// <param name="nilOnly">if set to <c>true</c> only elements with nil="true" are removed.</param> /// <param name="removeTypePrefix">if set to <c>true</c> any type prefix will be removed.</param> /// <returns>The serialized XML string.</returns> public static string ToXml(object obj, bool nilOnly = false, bool removeTypePrefix = false) { _log.Debug("Serializing object to XML."); if (obj == null) { return(string.Empty); } var xml = EnergisticsConverter.ObjectToXml(obj); var xmlDoc = Parse(xml); var root = xmlDoc.Root; if (root == null) { return(string.Empty); } var elementName = ObjectTypes.GetElementNameOverride(obj.GetType()); root = root.UpdateRootElementName(obj.GetType(), removeTypePrefix, elementNameOverride: elementName); if (ObjectTypes.GetVersion(root).StartsWith("1.")) { foreach (var element in root.Elements()) { RemoveEmptyElements(element, nilOnly); } } else { RemoveEmptyElements(root, nilOnly); } return(root.ToString(SaveOptions.OmitDuplicateNamespaces)); }
public WitsmlQueryParser Parser <T>(T entity, string options = null) { var document = WitsmlParser.Parse(EnergisticsConverter.ObjectToXml(entity)); return(new WitsmlQueryParser(document.Root, ObjectTypes.GetObjectType <T>(), options)); }