Пример #1
0
        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);
            }
        }
Пример #2
0
        public override bool CheckParameter()
        {
            CheckFileParameter paramCheckFile = (CheckFileParameter)ThreadParameter;

            if (!PathCheck(paramCheckFile))
            {
                return(false);
            }
            return(true);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
 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);
     }
 }
Пример #9
0
        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);
        }