public static Document Read(FileInfo file) { IReader reader; var nameContent = file.Name; var doc = Engine.GenerateDocument( file.FullName, CleanUpSpaces(nameContent), CleanUpSpaces(GetPinyin(nameContent)), "unsupported"); var fileType = FileTypeMap.GetType(file.Extension); string tag; switch (fileType) { case FileTypeMap.TypeCode.TypeText: tag = "text"; reader = new TextReader(file); break; case FileTypeMap.TypeCode.TypeDocx: tag = "word"; reader = new WordReader(file); break; case FileTypeMap.TypeCode.TypePptx: tag = "powerpoint"; reader = new PowerPointReader(file); break; case FileTypeMap.TypeCode.TypeXlsx: tag = "excel"; reader = new ExcelReader(file); break; case FileTypeMap.TypeCode.TypeImage: tag = "image"; reader = new ImageReader(file); break; case FileTypeMap.TypeCode.TypePdf: tag = "pdf"; reader = new PDFReader(file); break; case FileTypeMap.TypeCode.TypeUnsupported: return(doc); default: return(doc); } // In Database\Engine.cs we defined that the max length is 80 var paddingBlank = new string(' ', 80); var content = reader.ReadAll(); var pinyin = GetPinyin(content); content = nameContent + paddingBlank + CleanUpSpaces(content); content = CleanUpSpaces(content); pinyin = CleanUpSpaces(pinyin); doc = Engine.GenerateDocument(file.FullName, content, pinyin, tag); return(doc); }
private async Task <ObservableCollection <MovieViewModel> > setViewModel() { // We just update Setting and Filter models, no delete - no insert var setting = await settingService.GetSettingByIdAsync(1); var filter = await filterService.GetFilterByIdAsync(1); // FileSizes - FileTypes var fileSizes = await fileSizeService.GetFileSizesAsync(); var fileTypes = await fileTypeService.GetFileTypesAsync(); // Get viewmodels this.Dispatcher.Invoke(() => { settingViewModel = SettingMap.MapToSettingViewModel(setting); filterViewModel = FilterMap.MapToFilterViewModel(filter); filterViewModel.FileTypeViewModels = FileTypeMap.MapToFileTypeViewModelList(fileTypes); filterViewModel.FileSizeViewModels = FileSizeMap.MapToFileSizeViewModelList(fileSizes); dockPanelFilter.DataContext = filterViewModel; } ); // Show message if MoviesPath is not set if (!Directory.Exists(settingViewModel.MoviesPath)) { this.Dispatcher.Invoke(() => { MessageBoxResult result = ModernDialog.ShowMessage("A(z) '" + settingViewModel.MoviesPath + "' mappa nem létezik, így nem lehet filmeket keresni! Szeretnéd megváltoztatni most?", "'Filmek' mappa nem létezik", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) { IInputElement target = NavigationHelper.FindFrame("_top", this); NavigationCommands.GoToPage.Execute("/Views/Content/SettingServer.xaml", target); } else { IInputElement target = NavigationHelper.FindFrame("_top", this); LinkCommands.NavigateLink.Execute("/Views/Pages/Introduction.xaml", target); } }); } // Get movies and set viewmodel else { // Get movies from database moviesFromDb = await movieService.GetMoviesAsync(); movieViewModels = MovieMap.MapToMovieViewModelList(moviesFromDb); await Task.Factory.StartNew(async() => { moviesFromFileServer = await MovieServer.GetMovieTitles(settingViewModel.MoviesPath, FileTypeMap.MapToFileTypeList(settingViewModel.FileTypeViewModels)); }); // We have no movies in database if (movieViewModels.Count <= 0) { await movieService.InsertAllMovieAsync(moviesFromFileServer).ContinueWith(async moviesResult => { movieViewModels = MovieMap.MapToMovieViewModelList(await moviesResult); // Start Socket Server after new movies socketServer.StartServer(settingViewModel); } ); //movieViewModels = MovieMap.MapToMovieViewModelList(insertedMovies); } else { // Delete and insert changes var deleted = moviesFromDb.Where(m => !moviesFromFileServer.Select(c => c.Title).Contains(m.Title)).ToList(); var inserted = moviesFromFileServer.Where(c => !moviesFromDb.Select(m2 => m2.Title).Contains(c.Title)).ToList(); if (deleted != null && deleted.Count > 0) { // Delete my movies await movieService.DeleteMoviesByListIdAsync(deleted.Select(d => d.Id).ToList()); } if (inserted != null && inserted.Count > 0) { // Insert my movies await movieService.InsertAllMovieAsync(inserted).ContinueWith(moviesResult => // Start Socket Server after new movies socketServer.StartServer(settingViewModel) ); } // Correct current movies what can search with TMDB moviesFromDb = await movieService.GetMoviesAsync(); movieViewModels = MovieMap.MapToMovieViewModelList(moviesFromDb); } }; return(await Task.FromResult(movieViewModels)); }