public override void RunSub(ICloneable _threadParameter) { this.JudgeTaskCancelFlag(); CheckFileParameter param = (CheckFileParameter)_threadParameter; MatchFile.CheckDirectoryIsExists(param.OriginalDirectory, true); MatchFile.CheckDirectoryIsExists(param.OutputDirectory, true); DirectoryInfo originalFold = new DirectoryInfo(param.OriginalDirectory); DirectoryInfo destinationFold = new DirectoryInfo(param.OutputDirectory); var originalfiles = originalFold.GetFiles(); var destinationfiles = destinationFold.GetFiles(); List <CheckResult> listCheckResult = new List <CheckResult>(); List <PairFile> convertingFileList = MatchFile.GetPairFileList(param); // Check Original First foreach (FileInfo file in originalfiles) { this.JudgeTaskCancelFlag(); CheckResult checkresult = this.AnalyzeandReturnCheckResult(file, convertingFileList, destinationfiles); listCheckResult.Add(checkresult); } //check destination foreach (FileInfo file in destinationfiles) { this.JudgeTaskCancelFlag(); CheckResult checkresult; try { checkresult = listCheckResult.First(f => { return((f.DestinationFileNameWithExtension == Path.GetFileNameWithoutExtension(file.Name)) && (f.DestinationExtension == Path.GetExtension(file.Name))); }); if (checkresult == null) { // Destination is more than original listCheckResult.Add(GetDestinationCheckResult(file)); } } catch (InvalidOperationException ex) { // no equal item listCheckResult.Add(GetDestinationCheckResult(file)); } catch (Exception ex) { } } LogCheckResult(listCheckResult); foreach (DirectoryInfo dir in originalFold.GetDirectories()) { CheckFileParameter paramSub = (CheckFileParameter)param.Clone(); paramSub.OriginalDirectory = dir.FullName; paramSub.OutputDirectory += "\\" + dir.Name; RunSub(paramSub); } }
public override bool CheckParameter() { CheckFileParameter paramCheckFile = (CheckFileParameter)ThreadParameter; if (!PathCheck(paramCheckFile)) { return(false); } return(true); }
private static PairFile GetPairFile(CheckFileParameter librparam, FileInfo file, bool IsRename, byte Index) { PairFile pairFile = new PairFile(file.FullName); // pairFile.originalFile = new FileInfo(); pairFile.outputDir = librparam.OutputDirectory; pairFile.outputFileExtension = librparam.OutputFileExtension; pairFile.IsRename = IsRename; pairFile.serialNumber = Index; // pairFile.CreateSerialNumberFile(); return(pairFile); }
private bool PathCheck(CheckFileParameter param) { DirectoryInfo originalFold = new DirectoryInfo(param.OriginalDirectory); DirectoryInfo destinationFold = new DirectoryInfo(param.OutputDirectory); if (!originalFold.Exists) { log.Log("Original Path is not exists."); return(false); } if (!destinationFold.Exists) { log.Log("Destination Path is not exists."); return(false); } return(true); }
private CheckFileParameter GetCheckFileParameter() { CheckFileParameter param = new CheckFileParameter(); param.OriginalDirectory = this.txtCheck_OriginalDir.Text.Trim(); param.OutputDirectory = this.txtCheck_OutputDir.Text.Trim(); param.OriginalExtension = this.txtCheck_OriginalExtension.Text.Trim(); param.OutputFileExtension = this.txtCheck_OutputFileExtension.Text.Trim(); FormSetting f = new FormSetting(); param.AllExtensionOfLibreOfficeSupporting = f.GetAllExtensions(); return(param); }
private async void Button2_Click(object sender, EventArgs e) { //tokenSource = new CancellationTokenSource(); //token = tokenSource.Token; //task = Task.Run(() => doSomething(200),token); //try { // await task; //} //catch (Exception ex) //{ // log.Log("task isCanceled:" + task.IsCanceled.ToString()); // log.Log("task isCompleted" + task.IsCompleted.ToString()); //} // log.Log(Path.GetExtension("intervju.docx")); //FileInfo oneFile = new FileInfo(@"c:\test AB\intervju.docx"); //FileInfo twoFile = oneFile.; //Get original files list try { //this.SetFolderButtonStatus(false); StartNewTask(); CheckFileParameter param = new CheckFileParameter(); param.OutputDirectory = this.lbDestination.Text.Trim(); param.OriginalDirectory = this.lbOriginal.Text.Trim(); param.OutputFileExtension = "pdf"; param.OriginalExtension = "pdf"; param.AllExtensionOfLibreOfficeSupporting = "pdf"; SameFile Threading = new SameFile(this.log, this.tokenSource, param); Task task = Threading.Run(); await task; // } catch (Exception ex) { log.RecordError(ex.Message); //this.SetFolderButtonStatus(true); } finally { //this.SetFolderButtonStatus(true); } }
public override void RunSub(ICloneable _threadParameter) { this.JudgeTaskCancelFlag(); CheckFileParameter param = (CheckFileParameter)_threadParameter; MatchFile.CheckDirectoryIsExists(param.OriginalDirectory, true); MatchFile.CheckDirectoryIsExists(param.OutputDirectory, true); DirectoryInfo originalFold = new DirectoryInfo(param.OriginalDirectory); DirectoryInfo destinationFold = new DirectoryInfo(param.OutputDirectory); var originalfiles = originalFold.GetFiles(); var destinationfiles = destinationFold.GetFiles(); List <CheckResult> listCheckResult = new List <CheckResult>(); List <PairFile> convertingFileList = MatchFile.GetPairFileList(param); // Check Original First foreach (FileInfo file in originalfiles) { this.JudgeTaskCancelFlag(); CheckResult checkresult = this.AnalyzeandReturnCheckResult(file, convertingFileList, destinationfiles); if ((checkresult.OriginalFileNameWithExtension == checkresult.DestinationFileNameWithExtension) && (checkresult.OriginalExtension == checkresult.DestinationExtension) && (checkresult.OriginalFileSize == checkresult.DestinationFileSize)) { listCheckResult.Add(checkresult); } } //check destination LogCheckResult(listCheckResult); foreach (DirectoryInfo dir in originalFold.GetDirectories()) { CheckFileParameter paramSub = (CheckFileParameter)param.Clone(); paramSub.OriginalDirectory = dir.FullName; paramSub.OutputDirectory += "\\" + dir.Name; RunSub(paramSub); } }
private async void BtnCheck_Click(object sender, EventArgs e) { try { this.SetCheckFileButtonStatus(false); StartNewTask(); CheckFileParameter param = GetCheckFileParameter(); CheckFile checkhreading = new CheckFile(this.log, this.tokenSource, param); task = checkhreading.Run(); await task; // } catch (Exception ex) { log.RecordError(ex.Message); //this.SetFolderButtonStatus(true); } finally { this.SetCheckFileButtonStatus(true); } }
public static List <PairFile> GetPairFileList(CheckFileParameter param) { List <PairFile> pairFileList = new List <PairFile>(); DirectoryInfo originalFold = new DirectoryInfo(param.OriginalDirectory); DirectoryInfo destinationFold = new DirectoryInfo(param.OutputDirectory); if (!originalFold.Exists) { return(pairFileList); } if (!destinationFold.Exists) { return(pairFileList); } // //Get original files list var originalFileList = originalFold.GetFiles().Where(s => { bool rtn = false; var extensionlist = param.OriginalExtension.Split(';'); foreach (string item in extensionlist) { rtn = rtn || s.Name.ToLower().EndsWith("." + item.ToLower()); } return(rtn); }); //Get LibreOffice support list var LibreOfficeSupportFileList = originalFold.GetFiles().Where(s => { bool rtn = false; var extensionlist = param.AllExtensionOfLibreOfficeSupporting.Split(';'); foreach (string item in extensionlist) { rtn = rtn || s.Name.ToLower().EndsWith("." + item.ToLower()); } return(rtn); }); //Create converting File List while (originalFileList.Count() > 0) // (FileInfo item in originalFileList) { FileInfo file = originalFileList.First(); // originalFileList = originalFileList.Except(new FileInfo[] { file }, new FileInfoComparer()); IEnumerable <FileInfo> result = LibreOfficeSupportFileList.Where(s => { return(Path.GetFileNameWithoutExtension(file.Name) == Path.GetFileNameWithoutExtension(s.Name)); }); originalFileList = originalFileList.Except(result, new FileInfoComparer()); if (result.Count() == 1) { //no conflict //reduce originalFileList PairFile pairFile = GetPairFile(param, result.First(), false, 0); pairFileList.Add(pairFile); } else { //result.Count() must >1 , no possible it is < 1 //conflict happens byte index = 1; foreach (FileInfo item in result) { PairFile pairFile = GetPairFile(param, item, true, index); //pairFile.CreateSerialNumberFile(); pairFileList.Add(pairFile); index += 1; } } } return(pairFileList); }