private static StaticCourse LoadCourse(TemplateLoader templateLoader, XElement courseElement, string parentScoreTemplate, string parentLevelTemplates, string parentCreditsStr) { string courseName = XmlHelper.GetAttributeValue(courseElement, "name"); string scoreTemplate = XmlHelper.GetAttributeValue(courseElement, "scores") ?? parentScoreTemplate; if (scoreTemplate == null) { throw XmlHelper.CreateException(courseElement, "Unspecified score template"); } string courseTemplates = XmlHelper.GetAttributeValue(courseElement, "levels") ?? parentLevelTemplates; if (courseTemplates == null) { throw XmlHelper.CreateException(courseElement, "Unspecified level template"); } string creditsStr = XmlHelper.GetAttributeValue(courseElement, "credits") ?? parentCreditsStr; if (creditsStr == null) { throw XmlHelper.CreateException(courseElement, "Unspecified credits value"); } double credits; if (!StringParser.TryParseDoubleStrict(creditsStr, out credits) || credits < 0) { throw XmlHelper.CreateException(courseElement, "Invalid credits value: " + creditsStr); } LevelGroup[] groups = templateLoader.BuildLevels(courseTemplates); ScoreTable scoreTable = templateLoader.BuildScoreTable(scoreTemplate); return(new StaticCourse(courseName, credits, groups, scoreTable)); }
private static StaticCourse LoadCourse(TemplateLoader templateLoader, XElement courseElement, string parentScoreTemplate, string parentLevelTemplates, string parentCreditsStr) { string courseName = XmlHelper.GetAttributeValue(courseElement, "name"); string scoreTemplate = XmlHelper.GetAttributeValue(courseElement, "scores") ?? parentScoreTemplate; if (scoreTemplate == null) throw XmlHelper.CreateException(courseElement, "Unspecified score template"); string courseTemplates = XmlHelper.GetAttributeValue(courseElement, "levels") ?? parentLevelTemplates; if (courseTemplates == null) throw XmlHelper.CreateException(courseElement, "Unspecified level template"); string creditsStr = XmlHelper.GetAttributeValue(courseElement, "credits") ?? parentCreditsStr; if (creditsStr == null) throw XmlHelper.CreateException(courseElement, "Unspecified credits value"); double credits; if (!StringParser.TryParseDoubleStrict(creditsStr, out credits) || credits < 0) throw XmlHelper.CreateException(courseElement, "Invalid credits value: " + creditsStr); LevelGroup[] groups = templateLoader.BuildLevels(courseTemplates); ScoreTable scoreTable = templateLoader.BuildScoreTable(scoreTemplate); return new StaticCourse(courseName, credits, groups, scoreTable); }