Exemplo n.º 1
0
        private void AddStat(WordTranslation word)
        {
            ++numberOfWords;

            if(wordsCounter.ContainsKey(word.WordsList.Count))
            {
                wordsCounter[word.WordsList.Count] += 1;
            }
            else
            {
                wordsCounter.Add(word.WordsList.Count, 1);
            }
        }
Exemplo n.º 2
0
        public void ThreadPoolCallback(object context)
        {
            InitCalculations(context);

            var translator = TranslatorFactory.GetCurrentTranslator();
            var ratingAlgorithm = RatingAlgorithmFactory.GetAlgorithmInstance();
            var cleaner = new WordCleaner();

            var foundWords = translator.Translate(word);
            var ratedWords = ratingAlgorithm.Rate(word, foundWords);

            foreach (var ratedWord in ratedWords)
            {
                cleaner.Clean(ratedWord.Item2);
            }

            var result = new WordTranslation(word, ratedWords);
            translationManager.DoActionWithTranslatedWord(result);

            EndCalculations(context);
        }
Exemplo n.º 3
0
 private void WriteOnDebug(WordTranslation word)
 {
     foreach(var tr in word.WordsList)
     {
         Debug.WriteLine(
             string.Format("{0} - {1}", word.OrginalWord, tr));
         return;
     }
     Debug.WriteLine("Brak tłumaczenia dla słowa: {0}", word.OrginalWord);
 }
Exemplo n.º 4
0
 private void AddWord(WordTranslation word)
 {
     words.Add(word);
 }
Exemplo n.º 5
0
 public void Write(WordTranslation word)
 {
     AddStat(word);
     AddWord(word);
     WriteOnDebug(word);
 }
Exemplo n.º 6
0
        public void DoActionWithTranslatedWord(WordTranslation result)
        {
            //Jezeli ktorys watek skonczy przetwarzanie, to resultat jest zapisywany
            //na stosie wynikow. Sekcja krytyczna trwa w tym przypadku krotko - todo: zoptymalizowac lock
            //Jezeli stos osiagnie maksymalna pojemnosc, to jeden z watkow roboczych
            //wykona zapis wszystkich elementow ze stosu, jezeli nie zapis zostanie wykonany
            //po zakonczeniu przetwarzania

            lock(syncRoot)
            {
                Debug.WriteLine(string.Format(
                    "Obtained result. Writting on stack - {0}.", result.OrginalWord));
                temporaryResultsList.Push(result);

                if(temporaryResultsList.Count >= maxTemporaryResults)
                {
                    WriteTemporaryResults();
                }
            }
        }