private void ExportAll_Execute(object parameter) { try { var success = 0; var fail = 0; var progDialogVM = new ProgressDialogViewModel() { PercentageMax = packages.Count }; var progDialog = new View.ProgressDialog { DataContext = progDialogVM }; var task = Task.Run(() => { var outputFolder = mainView.FilePath.Replace(".", "_") + "_pkgfiles"; Directory.CreateDirectory(outputFolder); for (var i = 0; i < packages.Count;) { var resource = packages[i].Resource; var fragment = packages[i].Fragment; var folderPath = Path.Combine(outputFolder, resource.Folder); var fileName = ErpResourceExporter.GetFragmentFileName(resource, fragment); var filePath = Path.Combine(folderPath, fileName) + ".json"; progDialogVM.ProgressStatus.Report("Exporting " + fileName + "... "); try { Directory.CreateDirectory(folderPath); using var fs = File.Open(filePath, FileMode.Create, FileAccess.Write, FileShare.Read); using var sw = new StreamWriter(fs); packages[i].ExportPkg(sw); progDialogVM.ProgressStatus.Report("SUCCESS" + Environment.NewLine); ++success; } catch when(!System.Diagnostics.Debugger.IsAttached) { progDialogVM.ProgressStatus.Report("FAIL" + Environment.NewLine); ++fail; } progDialogVM.ProgressPercentage.Report(++i); } progDialogVM.ProgressStatus.Report(string.Format("{0} Succeeded, {1} Failed", success, fail)); }); progDialog.ShowDialog(); task.Wait(); } catch { MessageBox.Show("There was an error, could not export all pkg files!", Properties.Resources.AppTitleLong, MessageBoxButton.OK, MessageBoxImage.Error); } }
public ResourcesWorkspaceViewModel(MainViewModel mainView) : base(mainView) { resourceExporter = new ErpResourceExporter(); resources = new ObservableCollection <ErpResourceViewModel>(); _displayName = "All Resources"; Export = new RelayCommand(Export_Execute, Export_CanExecute); Import = new RelayCommand(Import_Execute, Import_CanExecute); ExportAll = new RelayCommand(ExportAll_Execute, ExportAll_CanExecute); ImportAll = new RelayCommand(ImportAll_Execute, ImportAll_CanExecute); }
static void Export(string file, string folder) { ErpFile erp = new ErpFile(); using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)) erp.Read(fs); var statuProgress = new Progress <string>(status => { _stringBuilder.Append(status); }); var resourceExporter = new ErpResourceExporter(); resourceExporter.Export(erp, folder, statuProgress, null); }
static void Import(string file, string folder) { ErpFile erp = new ErpFile(); using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read)) erp.Read(fs); var progressStatus = new Progress <string>(status => { _stringBuilder.Append(status); }); var resourceExporter = new ErpResourceExporter(); resourceExporter.Import(erp, Directory.GetFiles(folder, "*", SearchOption.AllDirectories), progressStatus, null); using (var fs = File.Open(file, FileMode.Create, FileAccess.Write, FileShare.Read)) erp.Write(fs); }
private void ImportAll_Execute(object parameter) { try { var directory = mainView.FilePath.Replace(".", "_") + "_pkgfiles"; if (Directory.Exists(directory) == true) { var success = 0; var fail = 0; var skip = 0; var found = false; var progDialogVM = new ProgressDialogViewModel { PercentageMax = packages.Count }; var progDialog = new View.ProgressDialog { DataContext = progDialogVM }; var task = Task.Run(() => { for (var i = 0; i < packages.Count;) { var resource = packages[i].Resource; var fragment = packages[i].Fragment; var folderPath = Path.Combine(directory, resource.Folder); var fileName = ErpResourceExporter.GetFragmentFileName(resource, fragment); var expFilePath = Path.Combine(folderPath, fileName) + ".json"; progDialogVM.ProgressStatus.Report("Importing " + fileName + "... "); try { foreach (var filePath in Directory.GetFiles(directory, "*.json", SearchOption.AllDirectories)) { if (Path.Equals(filePath, expFilePath)) { using var fs = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); packages[i].ImportPkg(fs); if (packages[i].IsSelected) { packages[i].IsSelected = false; packages[i].IsSelected = true; } found = true; break; } } if (found) { progDialogVM.ProgressStatus.Report("SUCCESS" + Environment.NewLine); ++success; } else { progDialogVM.ProgressStatus.Report("SKIP" + Environment.NewLine); ++skip; } } catch { progDialogVM.ProgressStatus.Report("FAIL" + Environment.NewLine); ++fail; } progDialogVM.ProgressPercentage.Report(++i); } progDialogVM.ProgressStatus.Report(string.Format("{0} Succeeded, {1} Skipped, {2} Failed", success, skip, fail)); }); progDialog.ShowDialog(); task.Wait(); } else { MessageBox.Show("Could not find pkgfiles folder!", Properties.Resources.AppTitleLong, MessageBoxButton.OK, MessageBoxImage.Error); } } catch { MessageBox.Show("There was an error, could not import all pkg files!", Properties.Resources.AppTitleLong, MessageBoxButton.OK, MessageBoxImage.Error); } }