예제 #1
0
        private ComparisonRuleForUser GetComparisonRuleForUser(XElement xRule)
        {
            string description = GetChildElementValue(xRule, "description");
            var    rule        = new ComparisonRuleForUser(TextFormatter.FirstUpperCharAndTrim(description));

            XElement xExamples = GetChildElement(xRule, "examples");

            foreach (XElement xExample in GetChildElements(xExamples, "example"))
            {
                ComparisonRuleExampleForUser example = GetComparisonExampleForUser(xExample);
                rule.AddExample(example);
            }

            return(rule);
        }
예제 #2
0
        private bool CreateExamples(IEnumerable <ComparisonRuleExampleForUser> ruleExamples,
                                    ComparisonRuleForUser newComparisonRuleForUser,
                                    StudyLanguageContext c)
        {
            bool result           = true;
            int  orderRuleExample = 1;

            foreach (ComparisonRuleExampleForUser ruleExample in ruleExamples)
            {
                SourceWithTranslation example = ruleExample.Example;
                SourceWithTranslation sentenceWithTranslation =
                    _sentencesQuery.GetOrCreate(SentenceType.ComparisonExample,
                                                example.Source,
                                                example.Translation,
                                                null);
                long sentenceTranslationId = sentenceWithTranslation.Id;
                if (IdValidator.IsInvalid(sentenceTranslationId))
                {
                    LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                        "ComparisonsQuery.GetOrCreate не удалось создать предложения примера! " +
                        "Предложение: {0}, перевод предложения {1}",
                        sentenceWithTranslation.Source.Text, sentenceWithTranslation.Translation.Text);
                    result = false;
                    continue;
                }

                long ruleId = newComparisonRuleForUser.Id;
                ComparisonRuleExample comparisonRuleExample = GetOrCreateComparisonRuleExample(ruleId,
                                                                                               sentenceTranslationId,
                                                                                               ruleExample.Description,
                                                                                               orderRuleExample++, c);

                if (IdValidator.IsInvalid(comparisonRuleExample.Id))
                {
                    LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat(
                        "ComparisonsQuery.GetOrCreate не удалось создать пример для правила сравнения! " +
                        "Id примера: {0}, sentenceWithTranslationId {1}",
                        ruleId, sentenceTranslationId);
                    result = false;
                    continue;
                }

                var exampleForUser = new ComparisonRuleExampleForUser(comparisonRuleExample, sentenceWithTranslation);
                newComparisonRuleForUser.AddExample(exampleForUser);
            }
            return(result);
        }