public IList <DynamicText> GetAllDynamicText(string name, string scope)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var dictionaryScope = GetDictionaryScope(dbContext, scope);
                var staticTextDao   = new StaticTextDao(dbContext.StaticText);
                var values          = staticTextDao.FindByNameAndScope(name, dictionaryScope, dbContext.CultureHierarchy);

                var resultList = new List <DynamicText>();
                foreach (var value in values)
                {
                    var dynamicText = new DynamicText
                    {
                        FallBack         = false,
                        Culture          = value.Culture.Name,
                        DictionaryScope  = value.DictionaryScope.Name,
                        Format           = value.Format,
                        ModificationTime = value.ModificationTime,
                        ModificationUser = value.ModificationUser,
                        Name             = value.Name,
                        Text             = value.Text
                    };
                    resultList.Add(dynamicText);
                }

                return(resultList);
            }
        }
        public DynamicText SaveDynamicText(DynamicText dynamicText,
                                           IfDefaultNotExistAction actionForDefaultCulture = IfDefaultNotExistAction.DoNothing)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var dao             = new StaticTextDao(dbContext.StaticText);
                var dictionaryScope = GetDictionaryScope(dbContext, dynamicText.DictionaryScope);
                if (dictionaryScope.Name != dynamicText.DictionaryScope)
                {
                    dictionaryScope = CreateDictionaryScope(dbContext, dynamicText.DictionaryScope);
                }

                var culture         = GetCultureByNameOrGetDefault(dbContext, dynamicText.Culture);
                var existsInCulture = culture.Name == dynamicText.Culture;

                if (!existsInCulture)
                {
                    culture = CreateCulture(dbContext, dynamicText.Culture);
                    CreateCultureHierarchy(dbContext, culture);
                }

                var staticText = dao.FindByNameAndCultureAndScope(
                    dynamicText.Name, culture, dictionaryScope, dbContext.CultureHierarchy
                    );
                if (staticText == null || !existsInCulture || staticText.CultureId != culture.Id)
                {
                    staticText = new StaticText
                    {
                        Format           = dynamicText.Format,
                        ModificationTime = DateTime.UtcNow,
                        ModificationUser = dynamicText.ModificationUser,
                        Name             = dynamicText.Name,
                        Text             = dynamicText.Text,
                        Culture          = culture,
                        DictionaryScope  = dictionaryScope
                    };

                    dao.Create(staticText);
                }
                else
                {
                    staticText.Format           = dynamicText.Format;
                    staticText.ModificationTime = DateTime.UtcNow;
                    staticText.ModificationUser = dynamicText.ModificationUser;
                    staticText.Name             = dynamicText.Name;
                    staticText.Text             = dynamicText.Text;

                    dao.Update(staticText);
                }

                ExecuteDefaultCultureAction(actionForDefaultCulture, dynamicText, culture, dictionaryScope, dbContext,
                                            dao);

                dbContext.SaveChanges();

                return(dynamicText);
            }
        }
예제 #3
0
        public void FindAllByCultureAndScopeTest()
        {
            using (var context = new StaticTextsContext(m_builderOptions))
            {
                var culture         = context.Culture.First(t => t.Id == 1);
                var dictionaryScope = context.DictionaryScope.First(t => t.Id == 2);


                var staticTextDao = new StaticTextDao(context.StaticText);
                var result        = staticTextDao.FindAllByCultureAndScope(culture, dictionaryScope);
                Assert.AreEqual(7, result.Length);
                Assert.AreEqual("support", result[0].Name);
            }
        }
        public LocalizedString DatabaseTranslateFormat(string text, object[] parameters, CultureInfo cultureInfo, string scope)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var cultureDao = new CultureDao(dbContext.Culture);
                var culture    = cultureDao.FindByName(cultureInfo.Name);

                var dictionaryScopeDao = new DictionaryScopeDao(dbContext.DictionaryScope);
                var dictionaryScope    = dictionaryScopeDao.FindByName(scope);

                var         staticTextDao = new StaticTextDao(dbContext.StaticText);
                IStaticText dbResult      = staticTextDao.FindByNameAndCultureAndScope(text, culture, dictionaryScope, dbContext.CultureHierarchy);

                return(new LocalizedString(text, dbResult.Text, false));
            }
        }
        public LocalizedString DatabaseTranslate(string text, CultureInfo cultureInfo, string scope)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var culture         = GetCultureByNameOrGetDefault(dbContext, cultureInfo.Name);
                var dictionaryScope = GetDictionaryScope(dbContext, scope);

                var         staticTextDao = new StaticTextDao(dbContext.StaticText);
                IStaticText dbResult      = staticTextDao.FindByNameAndCultureAndScope(text, culture, dictionaryScope, dbContext.CultureHierarchy);

                if (dbResult == null)
                {
                    return(null);
                }
                return(new LocalizedString(text, dbResult.Text, false));
            }
        }
예제 #6
0
        public void FindByNameAndCultureAndScopeTest()
        {
            using (var context = new StaticTextsContext(m_builderOptions))
            {
                var culture         = context.Culture.First(t => t.Id == 1);
                var dictionaryScope = context.DictionaryScope.First(t => t.Id == 2);


                var         staticTextDao = new StaticTextDao(context.StaticText);
                IStaticText result        = staticTextDao.FindByNameAndCultureAndScope("support", culture, dictionaryScope,
                                                                                       context.CultureHierarchy);
                Assert.AreEqual(1, result.Id);
                Assert.AreEqual(1, result.Format);
                Assert.AreEqual(
                    "# Podpora\r\nPodpora Vokabuláře webového: \r\n\r\n2012–2015 projekt MK ČR č. DF12P01OVV028 *Informační technologie ve službách jazykového kulturního bohatství (IT JAKUB)*  \r\n2010–2015 projekt MŠMT LINDAT-CLARIN č. LM2010013 *Vybudování a provoz českého uzlu pan-evropské infrastruktury pro výzkum*  \r\n2010–2014 projekt GA ČR č. P406/10/1140 *Výzkum historické češtiny (na základě nových materiálových bází)*  \r\n2010–2014 projekt GA ČR č. P406/10/1153 *Slovní zásoba staré češtiny a její lexikografické zpracování*  \r\n2005–2011 projekt MŠMT ČR LC 546 *Výzkumné centrum vývoje staré a střední češtiny (od praslovanských kořenů po současný stav)*  \r\n",
                    result.Text);
            }
        }
        public IDictionary <string, LocalizedString> GetDictionary(CultureInfo cultureInfo, string scope)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var culture         = GetCultureByNameOrGetDefault(dbContext, cultureInfo.Name);
                var dictionaryScope = GetDictionaryScope(dbContext, scope);

                var staticTextDao    = new StaticTextDao(dbContext.StaticText);
                var result           = staticTextDao.FindAllByCultureAndScope(culture, dictionaryScope);
                var resultDictionary = new Dictionary <string, LocalizedString>();
                foreach (var singleStaticText in result)
                {
                    resultDictionary.Add(singleStaticText.Name, new LocalizedString(singleStaticText.Name, singleStaticText.Text, false));
                }

                return(resultDictionary);
            }
        }
        public void DeleteDynamicText(string name, string scope, CultureInfo cultureInfo)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var culture         = GetCultureByNameOrGetDefault(dbContext, cultureInfo.Name);
                var dao             = new StaticTextDao(dbContext.StaticText);
                var dictionaryScope = GetDictionaryScope(dbContext, scope);
                var staticText      = dao.FindByNameAndCultureAndScope(
                    name, culture, dictionaryScope, dbContext.CultureHierarchy
                    );

                if (staticText == null)
                {
                    return;
                }

                dao.Delete(staticText);

                dbContext.SaveChanges();
            }
        }
        public void DeleteAllDynamicText(string name, string scope)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var dao             = new StaticTextDao(dbContext.StaticText);
                var dictionaryScope = GetDictionaryScope(dbContext, scope);
                var staticTextList  = dao.FindByNameAndScope(name, dictionaryScope, dbContext.CultureHierarchy);

                if (staticTextList.Count == 0)
                {
                    return;
                }

                foreach (var staticText in staticTextList)
                {
                    dao.Delete(staticText);
                }

                dbContext.SaveChanges();
            }
        }
        public DynamicText GetDynamicText(string name, string scope, CultureInfo cultureInfo)
        {
            using (var dbContext = m_dbContextFunc.Invoke())
            {
                var dictionaryScope = GetDictionaryScope(dbContext, scope);
                var culture         = GetCultureByNameOrGetDefault(dbContext, cultureInfo.Name);

                var value = new StaticTextDao(dbContext.StaticText).FindByNameAndCultureAndScope(
                    name, culture, dictionaryScope, dbContext.CultureHierarchy
                    );

                return(new DynamicText
                {
                    FallBack = value.Culture.Name != cultureInfo.Name,
                    Culture = value.Culture.Name,
                    DictionaryScope = value.DictionaryScope.Name,
                    Format = value.Format,
                    ModificationTime = value.ModificationTime,
                    ModificationUser = value.ModificationUser,
                    Name = value.Name,
                    Text = value.Text
                });
            }
        }
        /// <summary>
        /// Executes an action on default culture text if it does not exist. Actions include - nothing, create empty string, copy current culture text
        /// </summary>
        /// <param name="actionForDefaultCulture">Specific action</param>
        /// <param name="dynamicText">Current dynamic text entity</param>
        /// <param name="currentCulture">Current culture entity</param>
        /// <param name="dictionaryScope">Current dictionary scope entity</param>
        /// <param name="dbContext">Database context</param>
        /// <param name="dao">DAO of static text entity</param>
        private void ExecuteDefaultCultureAction(IfDefaultNotExistAction actionForDefaultCulture,
                                                 DynamicText dynamicText, Culture currentCulture,
                                                 DictionaryScope dictionaryScope, IDatabaseStaticTextContext dbContext, StaticTextDao dao)
        {
            var defaultCulture = GetDefaultCulture(dbContext);

            if (currentCulture == defaultCulture)
            {
                return;
            }

            var defaultText = dao.FindByNameAndCultureAndScope(
                dynamicText.Name, defaultCulture, dictionaryScope, dbContext.CultureHierarchy
                );

            if (defaultText != null)
            {
                return;
            }

            defaultText = new StaticText
            {
                Format           = dynamicText.Format,
                ModificationTime = DateTime.UtcNow,
                ModificationUser = dynamicText.ModificationUser,
                Name             = dynamicText.Name,
                Culture          = defaultCulture,
                DictionaryScope  = dictionaryScope,
            };

            switch (actionForDefaultCulture)
            {
            case IfDefaultNotExistAction.DoNothing:
                return;

            case IfDefaultNotExistAction.CreateEmpty:
                defaultText.Text = string.Empty;
                dao.Create(defaultText);
                break;

            case IfDefaultNotExistAction.CreateTextCopy:
                defaultText.Text = dynamicText.Text;
                dao.Create(defaultText);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(actionForDefaultCulture), actionForDefaultCulture,
                                                      "Invalid default language save action");
            }
        }