Beispiel #1
0
        static public SictBerictAusDsLeeserFund FundAusFileSystemInfo(
            FileSystemInfo DataiFileSystemInfo,
            byte[] BedinungHashSHA1 = null)
        {
            if (null == DataiFileSystemInfo)
            {
                return(null);
            }

            var DataiInhalt = Bib3.Glob.InhaltAusDataiMitPfaad(DataiFileSystemInfo.FullName);

            if (null == DataiInhalt)
            {
                return(null);
            }

            var DataiInhaltHashSHA1 = new SHA1Managed().ComputeHash(DataiInhalt);

            if (null != BedinungHashSHA1)
            {
                if (!BedinungHashSHA1.SequenceEqual(DataiInhaltHashSHA1))
                {
                    return(null);
                }
            }

            var SictSctruktur = BerictKeteGliidBehältnisAusDatai(DataiInhalt);

            var Fund = new SictBerictAusDsLeeserFund(DataiFileSystemInfo, DataiInhalt, DataiInhaltHashSHA1, SictSctruktur);

            return(Fund);
        }
Beispiel #2
0
        public IEnumerable <SictBerictAusDsLeeserFund> Suuce(
            int SuuceRükwärtsScritAnzaalScrankeMax,
            int SuuceVorwärtsScritAnzaalScrankeMax)
        {
            var Kete           = this.Kete;
            var BeginErgeebnis = this.BeginErgeebnis;

            if (null == Kete)
            {
                return(null);
            }

            if (null == BeginErgeebnis)
            {
                return(null);
            }

            var Directory = BeginErgeebnis.Directory;

            if (null == Directory)
            {
                return(null);
            }

            if (!Directory.Exists)
            {
                return(null);
            }

            /*
             * 2013.10.03
             *
             * var MengeFileSystemInfo = Directory.GetFileSystemInfos();
             * */

            var MengeFileSystemInfo = Directory.GetFiles();

            if (null == MengeFileSystemInfo)
            {
                return(null);
            }

            var MengeFileSystemInfoOrdnetNaacLastWriteTime =
                MengeFileSystemInfo
                .OrderBy((Kandidaat) => Kandidaat.LastWriteTimeUtc)
                .ToArray();

            var SuuceRükwärtsListeFund = new List <SictBerictAusDsLeeserFund>();
            var SuuceVorwärtsListeFund = new List <SictBerictAusDsLeeserFund>();

            var BisherBegin = Kete.FirstOrDefault();

            for (int i = 0; i < SuuceRükwärtsScritAnzaalScrankeMax; i++)
            {
                if (null == BisherBegin)
                {
                    break;
                }

                var BisherBeginFileSystemInfo = BisherBegin.FileSystemInfo;

                var BisherBeginBehältnis = BisherBegin.Behältnis;

                if (null == BisherBeginBehältnis)
                {
                    break;
                }

                var BisherBeginBehältnisAlgemain = BisherBeginBehältnis.Algemain;

                var BisherBeginBehältnisAlgemainVorherGliidDatai = BisherBeginBehältnisAlgemain.VorherGliidDatai;

                if (null == BisherBeginBehältnisAlgemainVorherGliidDatai)
                {
                    break;
                }

                var BedinungHashSHA1 = BisherBeginBehältnisAlgemainVorherGliidDatai.IdentSHA1;

                if (null == BedinungHashSHA1)
                {
                    break;
                }

                if (null == BisherBeginFileSystemInfo)
                {
                    break;
                }

                var MengeKandidaatDatai =
                    MengeFileSystemInfoOrdnetNaacLastWriteTime
                    .Where((Kandidaat) => Kandidaat.LastWriteTimeUtc < BisherBeginFileSystemInfo.LastWriteTimeUtc)
                    .Reverse()
                    .Take(4)
                    .ToArray();

                SictBerictAusDsLeeserFund Fund = null;

                foreach (var KandidaatDatai in MengeKandidaatDatai)
                {
                    Fund = FundAusFileSystemInfo(KandidaatDatai, BedinungHashSHA1);

                    if (null != Fund)
                    {
                        break;
                    }
                }

                if (null == Fund)
                {
                    break;
                }

                BisherBegin = Fund;

                SuuceRükwärtsListeFund.Add(Fund);
            }

            var BisherEnde = Kete.LastOrDefault();

            for (int i = 0; i < SuuceVorwärtsScritAnzaalScrankeMax; i++)
            {
                if (null == BisherEnde)
                {
                    break;
                }

                var BisherEndeFileSystemInfo = BisherEnde.FileSystemInfo;

                var BisherEndeBehältnis = BisherEnde.Behältnis;

                var BedinungHashSHA1 = BisherEnde.DataiInhaltHashSHA1;

                if (null == BedinungHashSHA1)
                {
                    break;
                }

                if (null == BisherEndeFileSystemInfo)
                {
                    break;
                }

                var MengeKandidaatDatai =
                    MengeFileSystemInfoOrdnetNaacLastWriteTime
                    .Where((Kandidaat) => BisherEndeFileSystemInfo.LastWriteTimeUtc < Kandidaat.LastWriteTimeUtc)
                    .Take(4)
                    .ToArray();

                SictBerictAusDsLeeserFund Fund = null;

                foreach (var KandidaatDatai in MengeKandidaatDatai)
                {
                    var KandidaatFund = FundAusFileSystemInfo(KandidaatDatai, null);

                    if (null == KandidaatFund)
                    {
                        continue;
                    }

                    var KandidaatFundBehältnis = KandidaatFund.Behältnis;

                    if (null == KandidaatFundBehältnis)
                    {
                        continue;
                    }

                    var KandidaatFundBehältnisAlgemain = KandidaatFundBehältnis.Algemain;

                    if (null == KandidaatFundBehältnisAlgemain)
                    {
                        continue;
                    }

                    var KandidaatFundBehältnisAlgemainVorherGliidDatai = KandidaatFundBehältnisAlgemain.VorherGliidDatai;

                    if (null == KandidaatFundBehältnisAlgemainVorherGliidDatai)
                    {
                        continue;
                    }

                    if (!BedinungHashSHA1.SequenceEqual(KandidaatFundBehältnisAlgemainVorherGliidDatai.IdentSHA1))
                    {
                        continue;
                    }

                    Fund = KandidaatFund;
                    break;
                }

                if (null == Fund)
                {
                    break;
                }

                BisherEnde = Fund;

                SuuceVorwärtsListeFund.Add(Fund);
            }

            var SuuceRükwärtsListeFundOrdnet = SuuceRükwärtsListeFund.Reversed().ToArray();

            Kete.InsertRange(0, SuuceRükwärtsListeFundOrdnet);
            Kete.AddRange(SuuceVorwärtsListeFund);

            return(SuuceRükwärtsListeFundOrdnet.Concat(SuuceVorwärtsListeFund).ToArray());
        }