Exemple #1
0
        private bool AddExsitingLanguageResource(StringResource resource, AdditionPolicy policy, Language lang)
        {
            bool changed;
            var  existing = lang.StringResources.FirstOrDefault(r => r.ResourceName.CaseInsensitiveEquals(resource.ResourceName));

            if (existing != null)
            {
                switch (policy)
                {
                case AdditionPolicy.ReplaceExisting:
                    existing.ResourceName  = resource.ResourceName;
                    existing.ResourceValue = resource.ResourceValue;
                    existing.IsStatic      = resource.IsStatic;
                    _stringResourceLanguageRepository.Update(existing);
                    changed = true;
                    break;

                case AdditionPolicy.SkipExisting:
                default:
                    changed = false;
                    break;
                }
            }
            else
            {
                _stringResourceLanguageRepository.Insert(resource);
                changed = true;
            }

            return(changed);
        }
Exemple #2
0
        public async Task ImportLanguageXmlAsync(string cultureName, string xml, AdditionPolicy policy)
        {
            if (!xml.IsNullOrWhiteSpace())
            {
                XDocument xd = XDocument.Load(xml);
                string    culture;
                XElement  root = LoadLanguageElement(xd, out culture);
                Dictionary <string, StringResource> resources = LoadLanguageResources(culture, root);

                var langSvc = this.CreateLanguageService();
                await langSvc.AddStringResourcesAsync(resources.Values, policy);
            }
        }
Exemple #3
0
        public async Task <bool> AddStringResourceAsync(StringResource resource, AdditionPolicy policy)
        {
            Guard.ArgumentNotNull(resource, nameof(resource));
            ThrowIfInvalidResource(resource);
            bool     changed = false;
            Language lang    = await GetLanguageWithoutCacheAsync(resource.Culture, true);

            if (lang == null)
            {
                lang    = AddNotExistingLanguageResource(resource);
                changed = true;
            }
            else
            {
                changed = AddExsitingLanguageResource(resource, policy, lang);
            }

            await _stringResourceLanguageRepository.CommitChangesAsync();

            _cacheManager.Remove(GetLanguageCacheKey(resource.Culture));
            return(changed);
        }
 public Task <int> AddStringResourcesAsync(IEnumerable <StringResource> resources, AdditionPolicy policy = AdditionPolicy.ReplaceExisting)
 {
     return(Task.FromResult(0));
 }
 public Task <bool> AddStringResourceAsync(StringResource resource, AdditionPolicy policy = AdditionPolicy.SkipExisting)
 {
     return(Task.FromResult(false));
 }
Exemple #6
0
        public async Task <int> AddStringResourcesAsync(IEnumerable <StringResource> resources, AdditionPolicy policy)
        {
            if (resources.IsNullOrEmpty())
            {
                return(0);
            }
            HashSet <String> namesForQuery = new HashSet <string>();

            foreach (var r in resources)
            {
                ThrowIfInvalidResource(r);
                namesForQuery.Add(r.Culture.ToLower());
            }
            var existingLanguages = await(from l in _languageRepository.Table
                                          where namesForQuery.Contains(l.Culture)
                                          select l)
                                    .Include(l => l.StringResources).ToArrayAsync();

            List <Language> newLanguages = new List <Language>();
            int             changedCount = 0;

            foreach (var r in resources)
            {
                Language resourceLang = existingLanguages.FirstOrDefault(l => l.Culture.CaseInsensitiveEquals(r.Culture));
                bool     exisitngLang = resourceLang != null;
                if (exisitngLang)
                {
                    if (AddExsitingLanguageResource(r, policy, resourceLang))
                    {
                        changedCount++;
                    }
                }
                else
                {
                    resourceLang = newLanguages.FirstOrDefault(l => l.Culture.CaseInsensitiveEquals(r.Culture));
                    if (resourceLang != null)
                    {
                        _stringResourceLanguageRepository.Insert(r);
                    }
                    else
                    {
                        resourceLang = this.AddNotExistingLanguageResource(r);
                        newLanguages.Add(resourceLang);
                    }
                    changedCount++;
                }
            }

            await _languageRepository.CommitChangesAsync();

            foreach (var c in existingLanguages.Select(l => l.Culture))
            {
                _cacheManager.Remove(GetLanguageCacheKey(c));
            }
            return(changedCount);
        }