//+ CLASSIFICATION internal static void AddToType(Identifiable.Id id, IdentifiableType type) { if (!CLASS_LISTING.ContainsKey(type)) { GuuCore.LOGGER.LogError($"Trying to add identifiable {id} to type {type}. but type listing isn't registered"); return; } CLASS_LISTING[type].Add(id); }
/// <summary> /// Registers a new identifiable type /// </summary> /// <param name="type">The type to register</param> /// <param name="hashSet">The hash set used for the listings</param> public static void RegisterType(IdentifiableType type, HashSet <Identifiable.Id> hashSet) { if (ModLoader.CurrentStep != LoadingState.REGISTER) { throw new Exception("You can only register things during the 'Register' step"); } if (!CLASS_LISTING.ContainsKey(type)) { GuuCore.LOGGER.LogError($"The identifiable type {type} is already registered"); return; } CLASS_LISTING.Add(type, hashSet); }
/// <summary> /// The assemble identifiable. /// </summary> /// <param name="assembleInto"> /// The assemble into. /// </param> /// <param name="assembleFrom"> /// The assemble from. /// </param> public void AssembleIdentifiable(IdentifiableType assembleInto, IIdentifiableObject assembleFrom) { if (this.HasAnnotations(assembleFrom)) { assembleInto.Annotations = new Annotations(this.GetAnnotationsType(assembleFrom)); } string str0 = assembleFrom.Id; if (!string.IsNullOrWhiteSpace(str0)) { assembleInto.id = assembleFrom.Id; } if (assembleFrom.Uri != null) { assembleInto.uri = assembleFrom.Uri; } assembleInto.urn = assembleFrom.Urn; }
/// <summary> /// Organizes the identifiable by adding it to its list /// </summary> /// <param name="id">The ID to organize</param> /// <param name="type">The type of identifiable</param> public virtual void Organize(Identifiable.Id id, IdentifiableType type) => IdentifiableRegistry.AddToType(id, type);
/// <summary> /// Checks if an identifiable is from a type /// </summary> /// <param name="id">The id of the identifiable to check</param> /// <param name="type">The type of identifiable to check for</param> /// <returns>True if it is a valid type, false otherwise</returns> public static bool IsTypeValid(Identifiable.Id id, IdentifiableType type) => CLASS_LISTING.ContainsKey(type) && CLASS_LISTING[type].Contains(id);
/////////////////////////////////////////////////////////////////////////////////////////////////// ////////////BUILD FROM READER ////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// // public IdentifiableCore(SdmxStructureType structure, SdmxReader reader, ISdmxStructure parent) { // super(structure, reader, parent); // id = reader.getAttributeValue("id", true); // if(reader.getAttributeValue("uri", false) != null) { // setUri(reader.getAttributeValue("uri", false)); // } // } /////////////////////////////////////////////////////////////////////////////////////////////////// ////////////BUILD FROM V2.1 SCHEMA ////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Initializes a new instance of the <see cref="IdentifiableCore"/> class. /// </summary> /// <param name="createdFrom"> /// The created from. /// </param> /// <param name="structureType"> /// The structure type. /// </param> /// <param name="parent"> /// The parent. /// </param> protected IdentifiableCore(IdentifiableType createdFrom, SdmxStructureType structureType, ISdmxStructure parent) : base(createdFrom, structureType, parent) { this._id = createdFrom.id; this.Uri = createdFrom.uri; this.ValidateIdentifiableAttributes(); }