Пример #1
0
        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);
        }
Пример #2
0
        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));
        }