/// <summary> /// Checks if a type is an Energistics Data Object in the specific family version. /// </summary> /// <param name="type">The type to check.</param> /// <param name="standardFamily">The standard family.</param> /// <param name="dataSchemaVersion">The data schema version.</param> /// <returns></returns> public static bool IsDataObjectType(Type type, StandardFamily standardFamily, Version dataSchemaVersion) { var edo = type.GetCustomAttribute<EnergisticsDataObjectAttribute>(); var isEdo = edo != null && edo.StandardFamily == standardFamily && edo.DataSchemaVersion == dataSchemaVersion; return isEdo; }
/// <summary> /// Gets the available data schema versions for the specified standard family. /// </summary> /// <param name="standardFamily">The standard family to get data schema versions for.</param> /// <returns>The data schema versions for the standard family.</returns> /// <exception cref="ArgumentException"><paramref name="standardFamily"/> is not an available standard family.</exception> public static IEnumerable <Version> GetDataSchemaVersions(StandardFamily standardFamily) { if (!IsAvailableStandardFamily(standardFamily)) { throw new ArgumentException(@"Standard family not available", nameof(standardFamily)); } return(FamilyVersions[standardFamily]); }
/// <summary> /// Gets the list of all types in the DevKit that are Energistics Data Objects in the specified standard family and data schema version. /// </summary> /// <param name="standardFamily">The specified standard family.</param> /// <param name="dataSchemaVersion">The specified data schema version.</param> /// <returns></returns> public static IEnumerable <Type> GetAllDataObjectTypes(StandardFamily standardFamily, Version dataSchemaVersion) { Assembly devKit = Assembly.GetAssembly(typeof(StandardFamily)); return(devKit.GetTypes().Where(t => { var edo = t.GetCustomAttribute <EnergisticsDataObjectAttribute>(); return edo != null && edo.StandardFamily == standardFamily && edo.DataSchemaVersion == dataSchemaVersion; })); }
/// <summary> /// Checks if the requested data schema version is present in the specified standard family. /// </summary> /// <param name="standardFamily">The standard family.</param> /// <param name="dataSchemaVersion">The data schema version to check.</param> /// <returns>True if the standard family is present; false otherwise.</returns> /// <exception cref="ArgumentNullException"><paramref name="dataSchemaVersion"/> is null.</exception> public static bool IsAvailableDataSchemaVersion(StandardFamily standardFamily, Version dataSchemaVersion) { dataSchemaVersion.NotNull(nameof(dataSchemaVersion)); if (!IsAvailableStandardFamily(standardFamily)) { return(false); } return(FamilyVersions[standardFamily].Contains(dataSchemaVersion)); }
/// <summary> /// Create a new <see cref="FamilyVersion"/> instance with the specified standard family and data schema version. /// </summary> /// <param name="standardFamily"></param> /// <param name="dataSchemaVersion"></param> /// <exception cref="ArgumentNullException"><paramref name="dataSchemaVersion"/> is null.</exception> /// <exception cref="ArgumentException"><paramref name="standardFamily"/> is not an available standard family or <paramref name="dataSchemaVersion"/> /// is not an available data schema version for the standard family.</exception> public FamilyVersion(StandardFamily standardFamily, Version dataSchemaVersion) { dataSchemaVersion.NotNull(nameof(dataSchemaVersion)); if (!IsAvailableStandardFamily(standardFamily)) { throw new ArgumentException(@"Standard family not available", nameof(standardFamily)); } if (!IsAvailableDataSchemaVersion(standardFamily, dataSchemaVersion)) { throw new ArgumentException($"Data schema version not available for {standardFamily.ToString()}", nameof(dataSchemaVersion)); } StandardFamily = standardFamily; DataSchemaVersion = dataSchemaVersion; }
/// <summary> /// Gets the default model for the specified standard family. /// </summary> /// <param name="standardFamily">The standard family to get the default model for.</param> private void SetModelToDefault(StandardFamily standardFamily) { Version dataSchemaVersion = FamilyVersion.GetDataSchemaVersions(standardFamily).First(); FamilyVersion = new FamilyVersion(standardFamily, dataSchemaVersion); }
/// <summary> /// Gets the list of all types in the DevKit that are Energistics Data Objects in the specified standard family and data schema version. /// </summary> /// <param name="standardFamily">The specified standard family.</param> /// <param name="dataSchemaVersion">The specified data schema version.</param> /// <returns></returns> public static IEnumerable<Type> GetAllDataObjectTypes(StandardFamily standardFamily, Version dataSchemaVersion) { return GetAllDataObjectTypes().Where(t => IsDataObjectType(t, standardFamily, dataSchemaVersion)); }
/// <summary> /// Checks if the requested standard family is present. /// </summary> /// <param name="standardFamily">The standard family to check.</param> /// <returns>True if the standard family is present; false otherwise.</returns> public static bool IsAvailableStandardFamily(StandardFamily standardFamily) { InitFamilyVersions(); return(FamilyVersions.ContainsKey(standardFamily)); }
/// <summary> /// Create a new EnergisticsDataObject attribute with the specified standard and data schema version. /// </summary> /// <param name="standardFamily">The standard family the attributed object is defined in</param> /// <param name="dataSchemaVersion">The data schema version of the attributed object</param> public EnergisticsDataObjectAttribute(StandardFamily standardFamily, string dataSchemaVersion) { StandardFamily = standardFamily; DataSchemaVersion = new Version(dataSchemaVersion); }