All Implemented Interfaces:
PackageManifest, Serializable

public class AiccMetadata extends BaseModuleMetadata<AiccManifest>
Represents metadata for an AICC eLearning module, including AICC-specific fields such as course structure, assignable units, prerequisites, objectives, credit type, time limit actions, and objective relationships.

This class extends the base BaseModuleMetadata class to provide metadata specific to AICC modules, enabling structured storage of AICC format details.

See Also:
  • Constructor Details

    • AiccMetadata

      public AiccMetadata()
  • Method Details

    • create

      public static AiccMetadata create(AiccManifest manifest, boolean xapiEnabled, String manifestFile)
      Creates and initializes an instance of AiccMetadata based on the provided AICC manifest.
      Parameters:
      manifest - the AICC manifest from which metadata will be extracted
      xapiEnabled - a boolean indicating whether xAPI is enabled
      manifestFile - the filename of the AICC .crs file discovered during parsing
      Returns:
      a populated instance of AiccMetadata containing metadata extracted from the manifest
    • hasMultipleLaunchableUnits

      public boolean hasMultipleLaunchableUnits()
      Description copied from class: ModuleMetadata
      Determines whether this module contains multiple launchable units.

      This affects player configuration defaults such as navigation controls, table of contents display, and launch behavior. In Rustici Engine and similar LMS platforms, this flag is used to conditionally enable multi-SCO navigation features.

      • SCORM 1.2: Multiple resources with scormType="sco"
      • SCORM 2004: Multiple items in organization
      • AICC: Multiple assignable units
      • cmi5/xAPI: Always false (single AU/activity)
      Specified by:
      hasMultipleLaunchableUnits in class ModuleMetadata<AiccManifest>
      Returns:
      true if the module contains multiple launchable units, false otherwise
    • getManifestFile

      public String getManifestFile()
      Gets the AICC manifest filename (e.g., "course.crs").

      Unlike other module types where the manifest filename is constant, AICC allows the .crs file to have any name, so this value is discovered during parsing.

      Specified by:
      getManifestFile in class ModuleMetadata<AiccManifest>
      Returns:
      the discovered AICC .crs filename
    • setManifestFile

      public void setManifestFile(String manifestFile)
      Sets the manifest file to the specified path.
      Overrides:
      setManifestFile in class ModuleMetadata<AiccManifest>
      Parameters:
      manifestFile - the file path of the manifest to be set
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class BaseModuleMetadata<AiccManifest>
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class BaseModuleMetadata<AiccManifest>
    • getAssignableUnitIds

      public List<String> getAssignableUnitIds()
      Retrieves a list of assignable unit IDs.
      Returns:
      an immutable list of assignable unit IDs.
    • getAssignableUnitNames

      public List<String> getAssignableUnitNames()
      Retrieves a list of unit names that can be assigned.
      Returns:
      an unmodifiable list of assignable unit names
    • getPrerequisitesEdgeCount

      public Integer getPrerequisitesEdgeCount()
      Retrieves the count of prerequisite edges.
      Returns:
      the number of prerequisite edges as an Integer
    • getPrerequisitesGraph

      public Map<String,List<String>> getPrerequisitesGraph()
      Retrieves a map representing the prerequisites graph of courses or tasks. Each key in the map corresponds to a course or task, and its associated value is a list of prerequisites required to complete the key task or course.
      Returns:
      an unmodifiable map where keys are strings representing individual items (e.g., courses or tasks) and values are lists of strings representing the prerequisites for each item.
    • getObjectivesRelationCount

      public Integer getObjectivesRelationCount()
      Retrieves the count of objectives relations.
      Returns:
      the number of objectives relations as an Integer
    • getObjectiveIds

      public List<String> getObjectiveIds()
      Retrieves the list of objective IDs.
      Returns:
      a list containing the objective IDs as immutable strings
    • getObjectivesByAu

      public Map<String,List<String>> getObjectivesByAu()
      Retrieves a map containing objectives categorized by assessment units.
      Returns:
      an unmodifiable map where the keys are assessment unit identifiers and the values are lists of objectives associated with each assessment unit.
    • getAssignableUnitChildren

      public Map<String,List<String>> getAssignableUnitChildren()
      Retrieves a map representing the assignable unit children.
      Returns:
      an unmodifiable map where the keys are strings representing the parent units and the values are lists of strings representing their respective child units.
    • getParsedPrerequisites

      public List<AiccPrerequisite> getParsedPrerequisites()
      Retrieves a list of parsed prerequisites.
      Returns:
      an unmodifiable list containing the parsed prerequisites.
    • getObjectiveMetadata

      public List<AiccObjectiveMetadata> getObjectiveMetadata()
      Retrieves a list of AiccObjectiveMetadata objects representing the objective metadata.
      Returns:
      an immutable list of AiccObjectiveMetadata objects
    • requiresLevel2

      public boolean requiresLevel2()
      Determines if the level 2 requirement is needed.
      Returns:
      true if level 2 is required, false otherwise.
    • requiresLevel3

      public boolean requiresLevel3()
      Determines whether level 3 access is required.
      Returns:
      true if level 3 access is required, false otherwise.
    • requiresLevel4

      public boolean requiresLevel4()
      Indicates whether level 4 access or requirements are necessary.
      Returns:
      true if level 4 is required, otherwise false