Exemplo n.º 1
0
        // Menu -> AddPhrase_LanguageSelection -> AddPhrase
        private IUserInterface BuildAddPhraseSection <T>() where T : PhraseAndTranslation
        {
            string sectionName = "add_phrase";
            string textForPhrase, textForTranslation;

            if (typeof(T) == typeof(RuPhraseAndTranslation))
            {
                textForPhrase      = $"{localization[$"{sectionName}:phrase_in_russian"]} ({localization[$"{sectionName}:info_1"]}):";
                textForTranslation = $"{localization[$"{sectionName}:phrase_in_english"]} ({localization[$"{sectionName}:info_2"]}):";
            }
            else
            {
                textForPhrase      = $"{localization[$"{sectionName}:phrase_in_english"]} ({localization[$"{sectionName}:info_1"]}):";
                textForTranslation = $"{localization[$"{sectionName}:phrase_in_russian"]} ({localization[$"{sectionName}:info_2"]}):";
            }
            string successAdded = $"{localization[$"{sectionName}:phrase_added"]}. {localization[$"common:press_any_key_to_continue"]}";

            TextInputtingInterface.VariableInfoPair[] pairs = new[]
            {
                new TextInputtingInterface.VariableInfoPair {
                    Info = textForPhrase
                },
                new TextInputtingInterface.VariableInfoPair {
                    Info = textForTranslation
                }
            };
            TextInputtingInterface addPhraseInterface = new TextInputtingInterface(pairs, successAdded, () => $"{programName} - {localization[$"{sectionName}:section_name"]}");

            addPhraseInterface.OnGettingData += (data) =>
            {
                string phrase      = data.ElementAt(0);
                string translation = data.ElementAt(1);
                try
                {
                    if (typeof(T) == typeof(RuPhraseAndTranslation))
                    {
                        RuPhraseAndTranslation.Create(phrase, translation, dataContainer.RuPhrasesDb, dataContainer.EnPhrasesDb);
                    }
                    else
                    {
                        EnPhraseAndTranslation.Create(phrase, translation, dataContainer.EnPhrasesDb, dataContainer.RuPhrasesDb);
                    }
                }
                catch (PhraseExistsException exception)
                {
                    exception.Phrase.AddTranslation(translation);
                }
                SerializeDataContainer();
            };
            return(addPhraseInterface);
        }
        public override void AddTranslation(string translation)
        {
            int translationListOldCount = Translations.Count();

            // В этом методе происходит связывание только с теми объектами, которые содержатся в БД
            base.AddTranslation(translation);
            if (translationListOldCount == Translations.Count())
            {
                // Если перевод не добавился, тогда проверяем содержался ли он уже в коллекции Translations
                if (ContainsTranslation(translation))
                {
                    return;
                }
                // Если перевода нет в Translations, значит этого объекта нет в translationsDb, поэтому необходимо создать его
                RuPhraseAndTranslation ruPhrase = new RuPhraseAndTranslation(translation, this, RuPhrasesDb, EnPhrasesDb);
                Translations.AddLast(ruPhrase);
            }
        }
Exemplo n.º 3
0
 // Нет проверки наличия translation в БД, так как, если был передан объект translation, то он уже добавлен в БД
 // Если же объект translation был удален из БД, тогда будет брошено исключение ArgumentException
 public EnPhraseAndTranslation(string phrase, RuPhraseAndTranslation translation,
                               LinkedList <EnPhraseAndTranslation> enPhrasesDb, LinkedList <RuPhraseAndTranslation> ruPhrasesDb)
     : base(phrase, translation, enPhrasesDb, ruPhrasesDb)
 {
     enPhrasesDb.AddLast(this);
 }
 public static EnPhraseAndTranslation Create(string phrase, RuPhraseAndTranslation translation,
                                             LinkedList <EnPhraseAndTranslation> enPhrasesDb, LinkedList <RuPhraseAndTranslation> ruPhrasesDb)
 {
     return(new EnPhraseAndTranslation(phrase, translation, enPhrasesDb, ruPhrasesDb));
 }