/// <summary> /// Creates an <see cref="IEnergisticsCollection"/> container and wraps the current entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns>A <see cref="IEnergisticsCollection"/> instance.</returns> public static IEnergisticsCollection CreateCollection(this IDataObject entity) { if (entity == null) { return(null); } var type = entity.GetType(); var objectType = ObjectTypes.GetObjectType(type); var family = ObjectTypes.GetFamily(type); var version = ObjectTypes.GetVersion(type); var groupType = ObjectTypes.GetObjectGroupType(objectType, family, version); var property = ObjectTypes.GetObjectTypeListPropertyInfo(objectType, family, version); var group = Activator.CreateInstance(groupType) as IEnergisticsCollection; var list = Activator.CreateInstance(property.PropertyType) as IList; if (list == null) { return(group); } list.Add(entity); property.SetValue(group, list); return(group); }
public void ObjectTypes_GetObjectGroupType_Returns_Correct_WbGeometry_Type_For_131() { var objectType = ObjectTypes.GetObjectGroupType(ObjectTypes.WbGeometry, ObjectFamilies.Witsml, WMLSVersion.WITSML131); Assert.AreEqual(typeof(Witsml131.WellboreGeometryList), objectType); Assert.AreEqual(ObjectTypes.Unknown, ObjectTypes.GetObjectGroupType(null)); }
/// <summary> /// Transforms the supplied data object to the specified version. /// </summary> /// <param name="collection">The data object collection.</param> /// <param name="dataVersion">The data schema version.</param> /// <returns>The transformed data object, if successful; otherwise, the original data object.</returns> public static IEnergisticsCollection Transform(IEnergisticsCollection collection, string dataVersion) { var objectType = ObjectTypes.GetObjectType(collection); var listType = ObjectTypes.GetObjectGroupType(objectType, dataVersion); var converter = _upgradeMethod.MakeGenericMethod(collection.GetType(), listType); try { collection = (IEnergisticsCollection)converter.Invoke(null, new object[] { collection }); collection.SetVersion(dataVersion); } catch (Exception ex) { _log.Warn($"Unable to convert to data schema version: {dataVersion}", ex); } return(collection); }
public void ObjectTypes_GetObjectGroupType_Returns_Correct_WbGeometry_Type_For_141() { var objectType = ObjectTypes.GetObjectGroupType(ObjectTypes.WbGeometry, OptionsIn.DataVersion.Version141); Assert.AreEqual(typeof(Witsml141.WellboreGeometryList), objectType); }