Ejemplo n.º 1
0
        /// <summary>
        /// Extracts the phrase (if found) in the given language.
        /// </summary>
        /// <param name="translation"></param>
        /// <param name="languageText"></param>
        /// <returns>If found, returns phrase in given language. Otherwise, returns null.</returns>
        public static PhraseEdit ExtractPhrase(TranslationEdit translation,
                                               string languageText)
        {
            var results = (from phrase in translation.Phrases
                           where phrase.Language.Text == languageText
                           select phrase).FirstOrDefault();

            return(results);
        }
Ejemplo n.º 2
0
        public void DataPortal_Create(Criteria.PhraseTextLanguageTextPairsCriteria criteria)
        {
            //INITIALIZE TRANSLATION CREATOR
            RetrieverId = Guid.NewGuid();
            Translation = TranslationEdit.NewTranslationEdit();

            //FILL TRANSLATION.PHRASES WITH EMPTY PHRASES
            for (int i = 0; i < criteria.PhraseTextLanguageTextPairs.Count; i++)
            {
                Translation.Phrases.AddNew();
            }

            //FILL IN THE PHRASE DATA
            for (int j = 0; j < criteria.PhraseTextLanguageTextPairs.Count; j++)
            {
                //EXTRACT DATA FROM TUPLE
                var pair         = criteria.PhraseTextLanguageTextPairs[j];
                var phraseText   = pair.Item1;
                var languageText = pair.Item2;

                //ENTER DATA INTO THE BLANK PHRASES
                var phraseEdit = Translation.Phrases[j];
                phraseEdit.Text = phraseText;

                //DO THE LANGUAGE
                //TRY TO GET LANGUAGE EDIT FROM DB
                var allLanguages = LanguageList.GetAll();
                var results      = from languageEdit in allLanguages
                                   where languageEdit.Text == languageText
                                   select languageEdit;
                if (results.Count() > 0)
                {
                    //THE LANGUAGE ALREADY EXISTS (OMG I'M TIRED AND THIS IS TERRIBLE)
                    var childLanguageEdit = results.First();
                    phraseEdit.Language = childLanguageEdit;
                }
                else
                {
                    //THE LANGUAGE DOES NOT EXIST YET
                    phraseEdit.Language.Id   = Guid.NewGuid();
                    phraseEdit.Language.Text = languageText;
                }
            }

            //SAVE THE TRANSLATION (SYNC CUZ WE'RE ON THE SERVER)
            Translation = Translation.Save();
        }
Ejemplo n.º 3
0
        public void DataPortal_Create()
        {
            RetrieverId = Guid.NewGuid();

            Translation = TranslationEdit.NewTranslationEdit();

            var phraseA = Translation.Phrases.AddNew();

            phraseA.LanguageId = LanguageEdit.GetDefaultLanguageId();
            //phraseA.Language = LanguageEdit.GetLanguageEdit(phraseA.LanguageId);
            phraseA.Language = DataPortal.FetchChild <LanguageEdit>(phraseA.LanguageId);

            var phraseB = Translation.Phrases.AddNew();

            phraseB.LanguageId = LanguageEdit.GetDefaultLanguageId();
            //phraseB.Language = LanguageEdit.GetLanguageEdit(phraseB.LanguageId);
            phraseB.Language = DataPortal.FetchChild <LanguageEdit>(phraseB.LanguageId);
        }
Ejemplo n.º 4
0
        public void DataPortal_Create(Criteria.ListOfPhrasesCriteria phrasesCriteria)
        {
            //INITIALIZE TRANSLATION CREATOR
            RetrieverId = Guid.NewGuid();
            Translation = TranslationEdit.NewTranslationEdit();

            //WILL USE THIS TO POPULATE THE TRANSLATION
            List <PhraseEdit> phrasesToUse = new List <PhraseEdit>(phrasesCriteria.Phrases);

            //FILL TRANSLATION.PHRASES WITH EMPTY PHRASES
            for (int i = 0; i < phrasesToUse.Count; i++)
            {
                Translation.Phrases.AddNew();
            }

            //RETRIEVE ANY ALREADY-EXISTING PHRASES IN DB
            var retriever = PhrasesByTextAndLanguageRetriever.CreateNew(phrasesCriteria);

            for (int i = 0; i < phrasesToUse.Count; i++)
            {
                var phraseToAdd = phrasesToUse[i];

                //IF THE RETRIEVEDPHRASES CONTAINS TO THE KEY (WHICH IT SHOULD)
                //AND THE RETRIEVER FOUND AN ALREADY EXISTING PHRASE IN DB,
                //THEN REPLACE PHRASETOADD WITH THAT DB PHRASE
                if (retriever.RetrievedPhrases.ContainsKey(phraseToAdd.Id) &&
                    retriever.RetrievedPhrases[phraseToAdd.Id] != null)
                {
                    phraseToAdd = retriever.RetrievedPhrases[phraseToAdd.Id];
                }

                var translationChildPhrase = Translation.Phrases[i];
                var dto = phraseToAdd.CreateDto();
                translationChildPhrase.LoadFromDtoBypassPropertyChecks(dto);
            }
        }
Ejemplo n.º 5
0
        public void DataPortal_Create(Criteria.TranslationPairSearchCriteria criteria)
        {
            RetrieverId = Guid.NewGuid();
            Translation = null;
            //Translation = TranslationEdit.NewTranslationEdit();

            using (var dalManager = DalFactory.GetDalManager())
            {
                var phraseDal = dalManager.GetProvider <IPhraseDal>();
                Result <ICollection <PhraseDto> > result = phraseDal.GetAll();
                if (!result.IsSuccess)
                {
                    Exception error = result.GetExceptionFromInfo();
                    if (error != null)
                    {
                        throw error;
                    }
                    else
                    {
                        throw new FetchFailedException(result.Msg);
                    }
                }

                var allPhraseDtos = result.Obj;


                //WE HAVE A LIST OF ALL THE PHRASES.  NOW SEARCH THROUGH FOR OUR PHRASES.

                //PHRASE A
                var foundPhraseADto = (from phraseDto in allPhraseDtos
                                       where phraseDto.Text == criteria.PhraseA.Text &&
                                       phraseDto.LanguageId == criteria.PhraseA.LanguageId
                                       select phraseDto).FirstOrDefault();

                if (foundPhraseADto == null)
                {
                    //PHRASE A WAS NOT FOUND IN DB, SO THERE IS NO TRANSLATION.
                    return;
                }

                //PHRASE B
                var foundPhraseBDto = (from phraseDto in allPhraseDtos
                                       where phraseDto.Text == criteria.PhraseB.Text &&
                                       phraseDto.LanguageId == criteria.PhraseB.LanguageId
                                       select phraseDto).FirstOrDefault();

                if (foundPhraseBDto == null)
                {
                    //PHRASE A WAS NOT FOUND IN DB, SO THERE IS NO TRANSLATION.
                    return;
                }


                //WE FOUND BOTH PHRASES, NOW WE LOOK FOR TRANSLATION WITH PHRASE A.  WE WILL THEN
                //LOOK WITHIN THOSE RESULTS FOR PHRASE B.  WE WILL THEN NARROW ANY POSSIBLE MULTIPLE
                //TRANSLATIONS WITH CONTEXT TEXT.


                //LOOK FOR TRANSLATION WITH PHRASE A
                var phraseAEdit = DataPortal.Fetch <PhraseEdit>(foundPhraseADto.Id);
                var translationsContainingPhraseA = TranslationList.GetAllTranslationsContainingPhraseById(phraseAEdit);

                //IF WE FIND NO TRANSLATIONS WITH PHRASE A, THEN WE RETURN WITH NO TRANSLATION FOUND
                if (translationsContainingPhraseA.Count == 0)
                {
                    return;
                }

                //WE FOUND TRANSLATIONS WITH PHRASE A
                //NOW LOOK WITHIN RESULTS FOR PHRASE B
                var translationsWithBothPhrases = (from translation in translationsContainingPhraseA
                                                   where (from phrase in translation.Phrases
                                                          where phrase.Id == foundPhraseBDto.Id
                                                          select phrase).Count() > 0
                                                   select translation);

                //THERE ARE NO TRANSLATIONS WITH BOTH PHRASES, SO RETURN WITH TRANSLATION == NULL
                if (translationsWithBothPhrases.Count() == 0)
                {
                    return;
                }


                //WE FOUND TRANSLATIONS CONTAINING BOTH PHRASES,
                //AND WE MUST NOW CHECK AGAINST CONTEXT (IF PROVIDED)
                if (!string.IsNullOrEmpty(criteria.ContextText))
                {
                    //CONTEXT TEXT HAS BEEN PROVIDED
                    //WE CHOOSE [SQL].FIRSTORDEFAULT() BECAUSE IF WE CANNOT MATCH THE CONTEXT, THEN OUR SEARCH
                    //SHOULD RETURN NULL
                    Translation = (from t in translationsWithBothPhrases
                                   where t.ContextPhrase != null &&
                                   t.ContextPhrase.Text == criteria.ContextText
                                   select t).FirstOrDefault();
                }
                else
                {
                    //CONTEXT TEXT HAS NOT BEEN PROVIDED
                    //WE KNOW WE HAVE FOUND AT LEAST ONE, AND THIS SETS TRANSLATION TO THE FIRST TRANSLATION FOUND.
                    Translation = translationsWithBothPhrases.First();
                }
            }
        }