/// <summary> /// Test non-serializable filter behavior. /// </summary> /// <param name="loc"></param> protected void CheckFilterNonSerializable(bool loc) { AbstractFilter <BinarizableEntry> .unmarshErr = true; ICacheEntryEventListener <int, BinarizableEntry> lsnr = new Listener <BinarizableEntry>(); ICacheEntryEventFilter <int, BinarizableEntry> filter = new LocalFilter(); ContinuousQuery <int, BinarizableEntry> qry = loc ? new ContinuousQuery <int, BinarizableEntry>(lsnr, filter, true) : new ContinuousQuery <int, BinarizableEntry>(lsnr, filter); if (loc) { using (cache1.QueryContinuous(qry)) { // Local put must be fine. int key1 = PrimaryKey(cache1); cache1.GetAndPut(key1, Entry(key1)); CheckFilterSingle(key1, null, Entry(key1)); } } else { Assert.Throws <BinaryObjectException>(() => { using (cache1.QueryContinuous(qry)) { // No-op. } }); } }
public static LocalFilter ToLocalFilter(this FilterItemViewModel filterItemViewModel) { var localFilter = new LocalFilter(); localFilter.Id = filterItemViewModel.FilterId; localFilter.Type = filterItemViewModel.SettingsItemName; localFilter.IsActive = filterItemViewModel.IsChecked; localFilter.FilterItems = new List <LocalFilterItem>(); localFilter.ItemsToDeleteIds = filterItemViewModel.itemsToDelete; //var selectedItems = new List<LocalFilterItem>(); foreach (var selectedItemTileViewModel in filterItemViewModel.SelectedItemTileViewModels) { var fI = new LocalFilterItem() { Id = selectedItemTileViewModel.Id, Name = selectedItemTileViewModel.Name // filterItemViewModel.SettingsItems.FirstOrDefault(item => item.Id == selectedItemTileViewModel.Id) // .Name }; localFilter.FilterItems.Add(fI); } // foreach (var settingsItem in filterItemViewModel.SettingsItems) // { // localFilter.FilterItems.Add(new LocalFilterItem() // { // Name = settingsItem.Name // }); // } return(localFilter); }
public void SetFIlterItem(LocalFilter localFilter) { foreach (var localFilterItem in localFilter.FilterItems) { var settingItem = SettingsItems.FirstOrDefault(item => item.Name == localFilterItem.Name); if (settingItem != null) { AddSelected(settingItem.Name, localFilterItem.Id); } } IsChecked = localFilter.IsActive; FilterId = localFilter.Id; Parent.HasChanged(false); }
public static LocalFilter ToLocalFilter(this Filter from) { var localFilter = new LocalFilter { Id = from.Id, IsActive = from.IsActive, Type = from.FilterType.Name }; localFilter.FilterItems = new List <LocalFilterItem>(); foreach (var filterItem in from.FilterItems) { localFilter.FilterItems.Add(filterItem.ToLocalFilterItem()); } return(localFilter); }
/// <summary> /// <see cref="IHandler{T,K}.FetchContent(x,string,x,ICollection{string})"/> /// </summary> public override async Task FetchContent(LocalDirectory parsedSource, string targetFolder, LocalFilter filter, ICollection <string> outputLog) { await Task.Run(async() => { if (parsedSource.GetImages() != null) { outputLog.Add($"Starting filtering of {parsedSource.GetImages().Count()} images."); var sync = new object(); foreach (var image in parsedSource.GetImages().Where(image => image != null).AsParallel()) { var imageName = Filenamer.Clean(await image.GetImageName()); try { if (filter(await image.GetHeight(), await image.GetWidth(), await image.GetAspectRatio())) { var path = Filenamer.DetermineUniqueFilename(Path.Combine(targetFolder, imageName)); File.WriteAllBytes(path, await image.GetImage()); lock (sync) { outputLog.Add($"Image copied: {imageName}"); image.Dispose(); } } else { lock (sync) { outputLog.Add($"Image skipped: {imageName}"); image.Dispose(); } } } catch (IOException) { lock (sync) { outputLog.Add($"IO Failure - Error occured while saving or loading image: {imageName}"); image.Dispose(); } } } } outputLog.Add("Filtering finished."); }); }
/// <summary> /// <see cref="IHandler{T,K}.FetchContent(x,string,x,ICollection{string})"/> /// </summary> public override async Task FetchContent(LocalDirectory parsedSource, string targetFolder, LocalFilter filter, ICollection <string> outputLog, bool saveNestedCollectionsInNestedFolders = false) { await Task.Run(() => { if (parsedSource.GetImages() != null) { outputLog.Add($"Starting filtering of {parsedSource.GetImages().Count()} images."); var sync = new object(); //Limit degree of parallelism to avoid sending too many http-requests at the same time. // 8 seems like a reasonable amount of requests to have in-flight at a time. var parallelOptions = new ParallelOptions { MaxDegreeOfParallelism = 8 }; Parallel.ForEach(parsedSource.GetImages().Where(image => image != null), parallelOptions, image => { var localTargetFolder = targetFolder; if (saveNestedCollectionsInNestedFolders) { var path = Path.GetDirectoryName(image.ImagePath); if (!string.IsNullOrWhiteSpace(path)) { Debug.Assert(parsedSource.Directory.Length <= path.Length, $"Directory length longer than path.\nDirectory: {parsedSource.Directory}\nPath: {path}"); Debug.Assert(path.Substring(0, parsedSource.Directory.Length) == parsedSource.Directory, $"Directory doesn't exist in image path.\nDirectory: {parsedSource.Directory}\nPath: {path}"); var sourceDir = new DirectoryInfo(parsedSource.Directory); var innerFolders = new List <string>(); var innerFolder = new DirectoryInfo(path); while (sourceDir.FullName != innerFolder?.FullName) { innerFolders.Add(innerFolder.Name); innerFolder = innerFolder.Parent; } innerFolders.Add(targetFolder); innerFolders.Reverse(); localTargetFolder = Path.Combine(innerFolders.ToArray()); } } using (image) { var imageName = Filenamer.Clean(image.GetImageName().Result); try { if (filter(image.GetHeight().Result, image.GetWidth().Result, image.GetAspectRatio().Result)) { //Dont create the folder unless we actually have something to save in it. if (!Directory.Exists(localTargetFolder)) { Directory.CreateDirectory(localTargetFolder); } var path = Filenamer.DetermineUniqueFilename(Path.Combine(localTargetFolder, imageName)); File.WriteAllBytes(path, image.GetImage().Result); WriteToLog(sync, outputLog, $"Image copied: {imageName}"); } else { WriteToLog(sync, outputLog, $"Image skipped: {imageName}"); } } catch (IOException) { WriteToLog(sync, outputLog, $"IO Failure - Error occured while saving or loading image: {imageName}"); } } }); } outputLog.Add("Filtering finished."); }); }