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); }
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); } }
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)); }
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); }