コード例 #1
0
ファイル: IntegrationTestBase.cs プロジェクト: orri93/witsml
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: WitsmlParser.cs プロジェクト: nilsbenson/witsml
        /// <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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        public void Well200DataAdapter_Well_Can_Be_Serialized_To_Xml()
        {
            var xml = EnergisticsConverter.ObjectToXml(Well);

            Console.WriteLine(xml);
            Assert.IsNotNull(xml);
        }
コード例 #6
0
ファイル: WitsmlStore141Tests.cs プロジェクト: wdstest/witsml
        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);
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
 /// <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);
     }
 }
コード例 #16
0
ファイル: WitsmlStore141Tests.cs プロジェクト: wdstest/witsml
        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);
        }
コード例 #17
0
ファイル: WitsmlStore141Tests.cs プロジェクト: wdstest/witsml
        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);
        }
コード例 #18
0
ファイル: WitsmlStore141Tests.cs プロジェクト: wdstest/witsml
        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);
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
ファイル: IntegrationTestBase.cs プロジェクト: orri93/witsml
        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);
        }
コード例 #22
0
        /// <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));
        }
コード例 #23
0
        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));
        }