/// <summary> Constructor for a new instance of the LOM_System_Requirements class </summary>
 public LOM_System_Requirements()
 {
     RequirementType = RequirementTypeEnum.UNDEFINED;
     Name            = new LOM_VocabularyState();
 }
 /// <summary> Constructor for a new instance of the LOM_Classification class </summary>
 public LOM_Classification()
 {
     taxonPaths = new List<LOM_TaxonPath>();
     Purpose = new LOM_VocabularyState();
 }
 /// <summary> Add a new educational context ( IEEE-LOM 5.6 )  </summary>
 /// <param name="Value"> Educational context </param>
 public void Add_Context(LOM_VocabularyState Value)
 {
     context.Add(Value);
 }
        private void read_educational(XmlReader Input_XmlReader, LearningObjectMetadata lomInfo)
        {
            // Loop through reading each XML node
            do
            {
                // get the right division information based on node type
                if (Input_XmlReader.NodeType == XmlNodeType.Element)
                {
                    string name = Input_XmlReader.Name.ToLower();
                    if (( lom_namespace.Length > 0 ) && ( name.IndexOf( lom_namespace ) == 0))
                        name = name.Substring(lom_namespace.Length);

                    switch (name)
                    {
                        //case "requirement":
                        case "interactivitytype":
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                string interactivityTemp = Input_XmlReader.Value.Trim();
                                switch( interactivityTemp )
                                {
                                    case "active":
                                        lomInfo.InteractivityType = InteractivityTypeEnum.active;
                                        break;

                                    case "expositive":
                                        lomInfo.InteractivityType = InteractivityTypeEnum.expositive;
                                        break;

                                    case "mixed":
                                        lomInfo.InteractivityType = InteractivityTypeEnum.mixed;
                                        break;
                                }
                            }
                            break;

                        case "learningresourcetype":
                            LOM_VocabularyState learningResourceType = new LOM_VocabularyState();
                            if (Input_XmlReader.MoveToAttribute("source"))
                                learningResourceType.Source = Input_XmlReader.Value.Trim();
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                learningResourceType.Value = Input_XmlReader.Value.Trim();
                                lomInfo.Add_LearningResourceType(learningResourceType);
                            }
                            break;

                        case "interactivitylevel":
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                string interactivityLevelTemp = Input_XmlReader.Value.ToLower().Trim();
                                switch( interactivityLevelTemp )
                                {
                                    case "very low":
                                        lomInfo.InteractivityLevel = InteractivityLevelEnum.very_low;
                                        break;

                                    case "low":
                                        lomInfo.InteractivityLevel = InteractivityLevelEnum.low;
                                        break;

                                    case "medium":
                                        lomInfo.InteractivityLevel = InteractivityLevelEnum.medium;
                                        break;

                                    case "high":
                                        lomInfo.InteractivityLevel = InteractivityLevelEnum.high;
                                        break;

                                    case "very high":
                                        lomInfo.InteractivityLevel = InteractivityLevelEnum.very_high;
                                        break;
                                }
                            }
                            break;

                        case "intendedenduserrole":
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                string endUserRoleTemp = Input_XmlReader.Value.ToLower().Trim();
                                switch (endUserRoleTemp)
                                {
                                    case "teacher":
                                        lomInfo.Add_IntendedEndUserRole( IntendedEndUserRoleEnum.teacher);
                                        break;

                                    case "author":
                                        lomInfo.Add_IntendedEndUserRole( IntendedEndUserRoleEnum.author);
                                        break;

                                    case "learner":
                                        lomInfo.Add_IntendedEndUserRole( IntendedEndUserRoleEnum.learner);
                                        break;

                                    case "manager":
                                        lomInfo.Add_IntendedEndUserRole( IntendedEndUserRoleEnum.manager);
                                        break;
                                }
                            }
                            break;

                        case "context":
                            LOM_VocabularyState context = new LOM_VocabularyState();
                            if (Input_XmlReader.MoveToAttribute("source"))
                                context.Source = Input_XmlReader.Value.Trim();
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                context.Value = Input_XmlReader.Value.Trim();
                                lomInfo.Add_Context(context);
                            }
                            break;

                        case "typicalagerange":
                            // Need to gather all the language strings here
                            do
                            {
                                string subname = Input_XmlReader.Name.ToLower();
                                if (( lom_namespace.Length > 0 ) && ( subname.IndexOf( lom_namespace ) == 0))
                                    subname = subname.Substring(lom_namespace.Length);

                                // Stop when done looping through the language strings
                                if ((Input_XmlReader.NodeType == XmlNodeType.EndElement) && (subname == "typicalagerange"))
                                    break;

                                // Start of a new language string?
                                if (( Input_XmlReader.NodeType == XmlNodeType.Element ) && ( subname == "langstring" ))
                                {
                                    LOM_LanguageString agerange = new LOM_LanguageString();
                                    if (Input_XmlReader.MoveToAttribute("lang"))
                                        agerange.Language = Input_XmlReader.Value.Trim();
                                    Input_XmlReader.Read();
                                    if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                                    {
                                        agerange.Value = Input_XmlReader.Value.Trim();
                                        lomInfo.Add_TypicalAgeRange(agerange);
                                    }
                                }
                            } while (Input_XmlReader.Read());
                            break;

                        case "difficulty":
                            Input_XmlReader.Read();
                            if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                            {
                                string difficultyTemp = Input_XmlReader.Value.ToLower().Trim();
                                switch (difficultyTemp)
                                {
                                    case "very easy":
                                        lomInfo.DifficultyLevel = DifficultyLevelEnum.very_easy;
                                        break;

                                    case "easy":
                                        lomInfo.DifficultyLevel = DifficultyLevelEnum.easy;
                                        break;

                                    case "medium":
                                        lomInfo.DifficultyLevel = DifficultyLevelEnum.medium;
                                        break;

                                    case "difficult":
                                        lomInfo.DifficultyLevel = DifficultyLevelEnum.difficult;
                                        break;

                                    case "very difficult":
                                        lomInfo.DifficultyLevel = DifficultyLevelEnum.very_difficult;
                                        break;
                                }
                            }
                            break;

                        case "typicallearningtime":
                            // Need to gather all the language strings here
                            do
                            {
                                string subname = Input_XmlReader.Name.ToLower();
                                if ((lom_namespace.Length > 0) && (subname.IndexOf(lom_namespace) == 0))
                                    subname = subname.Substring(lom_namespace.Length);

                                // Stop when done looping through the language strings
                                if ((Input_XmlReader.NodeType == XmlNodeType.EndElement) && (subname == "typicallearningtime"))
                                    break;

                                // Start of a new language string?
                                if ((Input_XmlReader.NodeType == XmlNodeType.Element) && (subname == "duration"))
                                {
                                    Input_XmlReader.Read();
                                    if ((Input_XmlReader.NodeType == XmlNodeType.Text) && (Input_XmlReader.Value.Trim().Length > 0))
                                    {
                                        lomInfo.TypicalLearningTime = Input_XmlReader.Value.Trim();
                                    }
                                }
                            } while (Input_XmlReader.Read());
                            break;
                    }
                }
            } while (Input_XmlReader.Read());
        }
 /// <summary> Add a new learning resource type ( IEEE-LOM 5.2 )  </summary>
 /// <param name="Value"> Learning resource type with possible source value </param>
 public void Add_LearningResourceType(LOM_VocabularyState Value)
 {
     learningResourceTypes.Add(Value);
 }
 /// <summary> Constructor for a new instance of the LOM_System_Requirements class </summary>
 public LOM_System_Requirements()
 {
     RequirementType = RequirementTypeEnum.UNDEFINED;
     Name = new LOM_VocabularyState();
 }
 /// <summary> Constructor for a new instance of the LOM_Classification class </summary>
 public LOM_Classification()
 {
     taxonPaths = new List <LOM_TaxonPath>();
     Purpose    = new LOM_VocabularyState();
 }
 /// <summary> Add a new learning resource type ( IEEE-LOM 5.2 )  </summary>
 /// <param name="Value"> Learning resource type with possible source value </param>
 public void Add_LearningResourceType(LOM_VocabularyState Value )
 {
     learningResourceTypes.Add( Value );
 }
 /// <summary> Add a new educational context ( IEEE-LOM 5.6 )  </summary>
 /// <param name="Value"> Educational context </param>
 public void Add_Context(LOM_VocabularyState Value )
 {
     context.Add(Value);
 }