示例#1
0
        public void Proceed()
        {
            PrepareFileElms();

            AssignEarlyRepeatedFiles();

            m_proc.Session = Session.Create(
                FileElm_List.Count, FileParent_List.Count);

            for (int i = 0; i < FileElm_List.Count; i++)
            {
                FileElm fe = FileElm_List[i];
                fe.ID = m_proc.Session.StartFile_ID + i;
            }

            for (int i = 0; i < FileParent_List.Count; i++)
            {
                FileElm_Parent fp = FileParent_List[i];
                fp.ID = m_proc.Session.StartFolder_ID + i;
            }


            InsertParentFolders();

            InsertCandidateFiles();

            AssignRepeatedFiles_WithDB();

            AssignCoreFile_IDs_AndUpdate_DB();
        }
示例#2
0
        public void FillCandidateFileRow(
            AddingFiles.Data.DsAddingFiles.CandidateFilesRow dr, FileElm fe)
        {
            dr.CandidateFile_ID = fe.ID;

            dr.Session_ID = m_proc.Session.Session_ID;

            dr.Name = fe.Name;

            dr.FolderPath = fe.FolderPath;

            dr.CandidateFile_ID = fe.ID;

            dr.UniqueNum_1 = (long)fe.UniqueNum_1;

            dr.UniqueNum_2 = (long)fe.UniqueNum_2;

            dr.UniqueNum_3 = (long)fe.UniqueNum_3;

            dr.UniqueNum_4 = (long)fe.UniqueNum_4;

            dr.DateModified = fe.DateModified;

            dr.Size = fe.Size;

            dr.CandidateFile_ID = fe.ID;

            dr.FileAdding_Status_ID = (int)fe.Status.ID;

            dr.StatusMsg = fe.StatusMsg;

            dr.MovingAction_ID = (int)fe.MovingAction.ID;
        }
示例#3
0
        public void AssignEarlyRepeatedFiles()
        {
            for (int i = 0; i < FileElm_List.Count; i++)
            {
                FileElm fe_I = FileElm_List[i];

                if (fe_I.Status != FileStatus.Ready)
                {
                    continue;
                }



                for (int j = i + 1; j < FileElm_List.Count; j++)
                {
                    FileElm fe_J = FileElm_List[j];

                    //if (fe_J.Status == FileStatus.Failed ||
                    //  fe_J.Status == FileStatus.Repeated)

                    if (fe_J.Status != FileStatus.Ready)
                    {
                        continue;
                    }

                    if (fe_J.Size == fe_I.Size &&
                        fe_J.UniqueNum_1 == fe_I.UniqueNum_1 &&
                        fe_J.UniqueNum_2 == fe_I.UniqueNum_2 &&
                        fe_J.UniqueNum_3 == fe_I.UniqueNum_3 &&
                        fe_J.UniqueNum_4 == fe_I.UniqueNum_4
                        )
                    {
                        fe_J.Status           = FileStatus.Repeated;
                        fe_J.Repeated_FileElm = fe_I;
                    }
                }
            }
        }
示例#4
0
        public void PrepareFileElms()
        {
            List <FolderInfo> foldInf_List = new List <FolderInfo>(
                m_proc.ConfirmingPaths.FolderInfo_List);

            FileElm_List = new List <FileElm>(100000);

            FileParent_List = new List <FileElm_Parent>(100000);


            List <FileElm_Parent> fe_Parent_List =
                new List <FileElm_Parent>(10000);


            //foreach (FolderInfo foldInf in foldInf_List)
            for (int i = 0; i < foldInf_List.Count; i++)
            {
                FolderInfo foldInf = foldInf_List[i];

                if (foldInf.Status != FolderStatus.Ready)
                {
                    continue;
                }

                fe_Parent_List.Add(new FileElm_Parent
                {
                    DirectoryInfo = foldInf.DirectoryInfo
                });

                if (foldInf.IncludeSubFolders)
                {
                    DirectoryInfo[] di_List = null;

                    try
                    {
                        di_List = foldInf.DirectoryInfo.GetDirectories(
                            //"*.*", SearchOption.AllDirectories);
                            "*.*", SearchOption.TopDirectoryOnly);
                    }
                    catch
                    {
                        continue;
                    }

                    foreach (DirectoryInfo di in di_List)
                    {
                        //fe_Parent_List.Add(new FileElm_Parent
                        //{
                        //    DirectoryInfo = di
                        //});

                        foldInf_List.Add(new FolderInfo
                        {
                            DirectoryInfo     = di,
                            Path              = di.FullName,
                            IncludeSubFolders = true,
                            Status            = FolderStatus.Ready
                        });
                    }
                }
            }

            foreach (FileElm_Parent fe_Parent in fe_Parent_List)
            {
                fe_Parent.TestWriteAccess();
            }

            foreach (FileElm_Parent fe_Parent in fe_Parent_List)
            {
                FileInfo[] fiColl = null;

                try
                {
                    fiColl = fe_Parent.DirectoryInfo.GetFiles(
                        "*.pdf", SearchOption.TopDirectoryOnly);
                }
                catch
                {
                    continue;
                }

                foreach (FileInfo fi in fiColl)
                {
                    string sLast_4 = Util.Get_FileExtension(fi.Name);

                    if (sLast_4.ToLower() != ".pdf")
                    {
                        continue;
                    }

                    FileElm fiElm = new FileElm {
                        FileInfo = fi, ParentFolder = fe_Parent
                    };

                    FileElm_List.Add(fiElm);

                    fiElm.PrepareUniqueNums();
                }

                if (fiColl.Length > 0)
                {
                    FileParent_List.Add(fe_Parent);
                }
            }
        }