Beispiel #1
0
        /// <summary>
        /// Metoda vrátí generaci se zadaným pořadovým číslem, které obdrží. Zároveň vymaže všechny budoucí záznamy.
        /// </summary>
        /// <param name="number">pořadové číslo generace</param>
        /// <returns>Metoda vrací generaci s požadovaným pořadovým číslem.</returns>
        public Generation LoadRecord(int number)
        {
            Generation wantedGeneration = Changelog[0].Generation; //generace s požadovaným pořadovým číslem
            Generation loadedRecord     = Changelog[0].Generation; //záznam načtený z Changelogu

            for (int i = 0; i < Changelog.Count; i++)
            {
                //získání generace, která předchází požadované generaci
                //generaace jsou řazeny chronologicky
                if (Changelog[i].Generation.GenerationNumber < number)
                {
                    loadedRecord = Changelog[i].Generation;
                }
            }

            int difference = number - loadedRecord.GenerationNumber; //počet generací mezi načteným záznamem a požadovanou generací

            wantedGeneration = loadedRecord;
            //dopočítání požadované generace
            for (int i = 0; i < difference; i++)
            {
                wantedGeneration = new Generation(wantedGeneration.GenerationNumber + 1, wantedGeneration.NextGeneration());
            }

            int serialNumber = Changelog.IndexOf(loadedRecord); //pořadové číslo záznamu v Changelogu, který předchází požadované generaci

            //vymazání všech generací, které následují
            Changelog.RemoveRange(serialNumber + 1, Changelog.Count - serialNumber - 1);

            CurrentGeneration = wantedGeneration.GenerationNumber; //aktuální číslo vykreslené generace

            return(wantedGeneration);
        }