/* * SPDX-License-Identifier: AGPL-3.0-or-later * Copyright (C) 2025 Sergej Görzen * This file is part of OmiLAXR.xAPI. */ #if !XAPI_REGISTRY_EXISTS using System; using System.Collections; using System.Collections.Generic; using OmiLAXR; namespace xAPI.Registry { /// /// Static utility class providing error messages when xAPI Registry is not available. /// Serves as a safety net for compilation scenarios where the xAPI Registry package /// is not installed, providing clear guidance to developers about required dependencies. /// internal static class xApiRegistry { /// /// Standard error message displayed when xAPI Registry functionality is accessed without proper installation. /// Guides developers to install the required 'xAPI4Unity' package to enable full xAPI Registry support. /// public const string CatchMessage = "Use 'xAPI4Unity to create a valid xAPI Registry."; } /// /// Extension methods stub that throws informative exceptions when xAPI Registry is unavailable. /// Prevents compilation errors while clearly indicating missing dependency requirements /// for proper xAPI actor conversion functionality. /// public static class OmiLAXR_Ext { /// /// Stub method for Actor to xAPI_Actor conversion that indicates missing xAPI Registry. /// public static xAPI_Actor ToXAPIActor(this Actor actor) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Stub method for Actor array to xAPI_Actor array conversion that indicates missing xAPI Registry. /// public static xAPI_Actor[] ToXAPIActors(this Actor[] actor) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Stub method for Team to xAPI_Actor conversion that indicates missing xAPI Registry. /// public static xAPI_Actor ToXAPIActor(this Team team) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Stub method for Instructor to xAPI_Actor conversion that indicates missing xAPI Registry. /// public static xAPI_Actor ToXAPIActor(this Instructor team) => throw new NotImplementedException(xApiRegistry.CatchMessage); } /// /// Stub structure for xAPI_Actor that throws informative exceptions when accessed without xAPI Registry. /// Provides interface compatibility while clearly indicating missing dependency requirements. /// public struct xAPI_Actor { /// /// Actor name property stub that indicates missing xAPI Registry dependency. /// public string Name => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Actor email property stub that indicates missing xAPI Registry dependency. /// public string Email => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Actor constructor stub that indicates missing xAPI Registry dependency. /// public xAPI_Actor(string name = "", string email = "") => throw new NotImplementedException(xApiRegistry.CatchMessage); } /// /// Empty stub class for xAPI_Contexts when xAPI Registry is not available. /// Prevents compilation errors while indicating missing functionality. /// public class xAPI_Contexts {} /// /// Abstract stub class for xAPI_Definition that provides interface compatibility. /// All methods throw NotImplementedException to indicate missing xAPI Registry dependency. /// public abstract class xAPI_Definition { /// /// Definition key property stub that indicates missing xAPI Registry dependency. /// public string Key => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Multilingual names dictionary stub that indicates missing xAPI Registry dependency. /// public Dictionary Names => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Multilingual descriptions dictionary stub that indicates missing xAPI Registry dependency. /// public Dictionary Descriptions => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// ID creation method stub that indicates missing xAPI Registry dependency. /// public string CreateValidId(string uri) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Path matching method stub that indicates missing xAPI Registry dependency. /// public bool MatchesPath(string path, char sep = '/') => throw new NotImplementedException(xApiRegistry.CatchMessage); } /// /// Stub class for xAPI_Activity extending xAPI_Definition for interface compatibility. /// public class xAPI_Activity : xAPI_Definition {} /// /// Stub class for xAPI_Verb extending xAPI_Definition for interface compatibility. /// public class xAPI_Verb : xAPI_Definition { // Inherits all stub functionality from xAPI_Definition } /// /// Stub class for xAPI_Extension extending xAPI_Definition for interface compatibility. /// public class xAPI_Extension : xAPI_Definition { // Inherits all stub functionality from xAPI_Definition } /// /// Abstract stub class for xAPI_Extensions extending Dictionary for interface compatibility. /// Provides dictionary interface while throwing exceptions for xAPI Registry dependency. /// public abstract class xAPI_Extensions : Dictionary { /// /// Key existence check stub that indicates missing xAPI Registry dependency. /// public bool ContainsKey(string key) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Path existence check stub that indicates missing xAPI Registry dependency. /// public bool ContainsPath(string key) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Range addition method stub that indicates missing xAPI Registry dependency. /// public bool AddRange(xAPI_Extensions ext) => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Path-based removal method stub that indicates missing xAPI Registry dependency. /// public bool Remove(string path, char sep = '/') => throw new NotImplementedException(xApiRegistry.CatchMessage); /// /// Key-based removal method stub that indicates missing xAPI Registry dependency. /// public bool RemoveByKey(string key) => throw new NotImplementedException(xApiRegistry.CatchMessage); } /// /// Stub class for context-specific xAPI extensions when xAPI Registry is unavailable. /// public class xAPI_Extensions_Context : xAPI_Extensions {} /// /// Stub class for result-specific xAPI extensions when xAPI Registry is unavailable. /// public class xAPI_Extensions_Result : xAPI_Extensions {} /// /// Stub class for activity-specific xAPI extensions when xAPI Registry is unavailable. /// public class xAPI_Extensions_Activity : xAPI_Extensions {} } #endif