public void ReloadSnapshot() { if (!_snapshot.IsNullOrEmpty()) { ResourceEntities.LoadSnapshot(_snapshot); } }
private bool InternalLoad([NotNull][ItemNotNull] IEnumerable <IGrouping <string, ProjectFile> > resourceFilesByDirectory) { Contract.Requires(resourceFilesByDirectory != null); if (!LoadEntities(resourceFilesByDirectory)) { return(false); // nothing has changed, no need to continue } if (!string.IsNullOrEmpty(_snapshot)) { ResourceEntities.LoadSnapshot(_snapshot); } var cultureKeys = ResourceEntities .SelectMany(entity => entity.Languages) .Select(lang => lang.CultureKey) .Distinct() .OrderBy(item => item.Culture?.DisplayName) .ToArray(); Cultures.SynchronizeWith(cultureKeys); OnLoaded(); return(true); }
private ResourceManager([NotNull] ISourceFilesProvider sourceFilesProvider, [NotNull] IConfiguration configuration) { Configuration = configuration; _sourceFilesProvider = sourceFilesProvider; TableEntries = ResourceEntities.ObservableSelectMany(entity => entity.Entries); }
public void DeleteResource(string resourceIDString) { if (resourceIDString.ConvertListString().Count > 0) { //ObjectQuery<WTF.Resource.Entity.Sys_Resource> query = this.CurrentEntities.sys_resource.Where("it.ResourceID in {" + resourceIDString.ConvertStringID() + "}", new ObjectParameter[0]).Include("Sys_ResourceType").Include("Sys_ResourceVer"); List <Sys_Resource> query = this.CurrentEntities.sys_resource.Where("it.ResourceID in {" + resourceIDString.ConvertStringID() + "}", new ObjectParameter[0]).Include("Sys_ResourceType").Include("Sys_ResourceVer").ToList(); List <string> resourceFilePath = new List <string>(); using (IEnumerator <WTF.Resource.Entity.Sys_Resource> enumerator = query.GetEnumerator()) { while (enumerator.MoveNext()) { WTF.Resource.Entity.Sys_Resource objResource = enumerator.Current; WTF.Resource.Entity.Sys_ResourcePath path = this.CurrentEntities.sys_resourcepath.First <WTF.Resource.Entity.Sys_ResourcePath>(s => s.ResourcePathID == objResource.Sys_ResourceType.ResourcePathID); foreach (WTF.Resource.Entity.Sys_ResourceVer ver in objResource.Sys_ResourceVer) { if (string.IsNullOrEmpty(ver.DictionaryPath)) { resourceFilePath.Add(this.GetresourceFullFileNamePath(path.StoragePath, (AccessModeCodeType)objResource.Sys_ResourceType.AccessModeCodeType, objResource.Sys_ResourceType.ResourceTypeCode, this.GetResourcePathFormatValue(ver.UpdateDateTime, ver.ResourceVerID, objResource.Sys_ResourceType.PathFormatCodeType), ver.ResourceGUIDFileName, ver.ResourceFileName, false)); } else { resourceFilePath.Add(Path.Combine(path.StoragePath, ver.DictionaryPath)); } } } } if (resourceFilePath.Count > 0) { this.DeleteResourceFile(resourceFilePath); } this.objCurrentEntities = null; this.CurrentEntities.sys_resource.DeleteDataPrimaryKey <WTF.Resource.Entity.Sys_Resource>(resourceIDString); } }
public ResourceManager(ISourceFilesProvider sourceFilesProvider, IConfiguration configuration, ITracer tracer) { Configuration = configuration; _sourceFilesProvider = sourceFilesProvider; _tracer = tracer; TableEntries = ResourceEntities.ObservableSelectMany(entity => entity.Entries); }
/// <summary> /// Saves all modified resource files. /// </summary> /// <exception cref="IOException"></exception> /// <exception cref="UnauthorizedAccessException"></exception> public void Save() { var changedResourceLanguages = ResourceEntities .SelectMany(entity => entity.Languages) .Where(lang => lang.HasChanges) .ToArray(); changedResourceLanguages.ForEach(resourceLanguage => resourceLanguage.Save()); }
private bool LoadEntities([NotNull][ItemNotNull] IEnumerable <IGrouping <string, ProjectFile> > fileNamesByDirectory) { var hasChanged = false; var unmatchedEntities = ResourceEntities.ToList(); foreach (var directory in fileNamesByDirectory) { var directoryName = directory.Key; var filesByBaseName = directory.GroupBy(file => file.GetBaseName(), StringComparer.OrdinalIgnoreCase); foreach (var files in filesByBaseName) { if (!files.Any()) { continue; } var baseName = files.Key; var filesByProject = files.GroupBy(file => file.ProjectName); foreach (var item in filesByProject) { var projectName = item.Key; var projectFiles = item.ToArray(); if (string.IsNullOrEmpty(projectName) || !projectFiles.Any()) { continue; } var existingEntity = ResourceEntities.FirstOrDefault(entity => entity.EqualsAll(projectName, baseName, directoryName)); if (existingEntity != null) { if (existingEntity.Update(projectFiles)) { hasChanged = true; } unmatchedEntities.Remove(existingEntity); } else { ResourceEntities.Add(new ResourceEntity(this, projectName !, baseName, directoryName, projectFiles)); hasChanged = true; } } } } ResourceEntities.RemoveRange(unmatchedEntities); hasChanged |= unmatchedEntities.Any(); return(hasChanged); }
internal void invokeResourceStop() { onResourceStop?.Invoke(); lock (ResourceEntities) { for (int i = ResourceEntities.Count - 1; i >= 0; i--) { deleteEntityInternal(ResourceEntities[i]); } ResourceEntities.Clear(); } lock (ResourceColShapes) { for (int i = ResourceColShapes.Count - 1; i >= 0; i--) { Program.ServerInstance.ColShapeManager.Remove(ResourceColShapes[i]); } ResourceColShapes.Clear(); } }
private async Task <bool> InternalLoadAsync(ICollection <IGrouping <string, ProjectFile> > resourceFilesByDirectory, CancellationToken?cancellationToken) { if (!await LoadEntitiesAsync(resourceFilesByDirectory, cancellationToken).ConfigureAwait(true)) { return(false); // nothing has changed, no need to continue } if (!_snapshot.IsNullOrEmpty()) { ResourceEntities.LoadSnapshot(_snapshot); } var cultureKeys = ResourceEntities .SelectMany(entity => entity.Languages) .Select(lang => lang.CultureKey) .Distinct() .OrderBy(item => item.Culture?.DisplayName) .ToArray(); Cultures.SynchronizeWith(cultureKeys); OnLoaded(); return(true); }
public string CreateSnapshot() { Contract.Ensures(Contract.Result <string>() != null); return(_snapshot = ResourceEntities.CreateSnapshot()); }
public void LoadSnapshot(string value) { ResourceEntities.LoadSnapshot(value); _snapshot = value; }
public ResourceManager(IConfiguration configuration, ITracer tracer) { Configuration = configuration; Tracer = tracer; TableEntries = ResourceEntities.ObservableSelectMany(entity => entity.Entries); }
public string CreateSnapshot() { return(_snapshot = ResourceEntities.CreateSnapshot()); }
private bool LoadEntities([NotNull] IEnumerable<IGrouping<string, ProjectFile>> fileNamesByDirectory) { Contract.Requires(fileNamesByDirectory != null); var hasChanged = false; var unmatchedEntities = ResourceEntities.ToList(); foreach (var directory in fileNamesByDirectory) { Contract.Assume(directory != null); var directoryName = directory.Key; Contract.Assume(!string.IsNullOrEmpty(directoryName)); var filesByBaseName = directory.GroupBy(file => file.GetBaseName()); foreach (var files in filesByBaseName) { if ((files == null) || !files.Any()) continue; var baseName = files.Key; Contract.Assume(!string.IsNullOrEmpty(baseName)); var filesByProject = files.GroupBy(file => file.ProjectName); foreach (var item in filesByProject) { Contract.Assume(item != null); var projectName = item.Key; var projectFiles = item.ToArray(); if (string.IsNullOrEmpty(projectName) || !projectFiles.Any()) continue; var existingEntity = ResourceEntities.FirstOrDefault(entity => entity.EqualsAll(projectName, baseName, directoryName)); if (existingEntity != null) { if (existingEntity.Update(projectFiles)) hasChanged = true; unmatchedEntities.Remove(existingEntity); } else { ResourceEntities.Add(new ResourceEntity(this, projectName, baseName, directoryName, projectFiles)); hasChanged = true; } } } } ResourceEntities.RemoveRange(unmatchedEntities); hasChanged |= unmatchedEntities.Any(); return hasChanged; }
public void ReloadSnapshot() { if (!string.IsNullOrEmpty(_snapshot)) ResourceEntities.LoadSnapshot(_snapshot); }