Esempio n. 1
0
        /// <summary>
        /// Loads this instance.
        /// </summary>
        public void Load()
        {
            this.__data = new Data();

            this.__gedcomFileContent = ReadGedcomFileContents(this.__filePath);

            //Split on "0 @" to get an array of Individuals, Families, Notes, Source, Repository, Object (File)
            string[] records = this.__gedcomFileContent.Replace("0 @", "\u0646@").Split('\u0646');

            foreach (var record in records)
            {
                if (record.StartsWith("@") && !record.StartsWith("@SUBM@ SUBM"))
                {
                    //The GEDCOM file is structured one row per element. Split the record into elements.
                    var elements = record.Replace("\r\n", "\r").Split('\r');

                    RecordTypes recordType = (RecordTypes)Enum.Parse(typeof(RecordTypes), elements[0].Replace(" ", "").Split('@')[2]);

                    //Check what type of record we are working with.
                    switch (recordType)
                    {
                    case RecordTypes.INDI:
                        __data.Individuals.Add(PersonEntity.Create(elements));
                        break;

                    case RecordTypes.FAM:
                        __data.Families.Add(FamilyEntity.Create(elements));
                        break;

                    case RecordTypes.NOTE:
                        __data.Notes.Add(NoteEntity.Create(elements));
                        break;

                    case RecordTypes.OBJE:
                        __data.Objects.Add(FileEntity.Create(elements));
                        break;

                    case RecordTypes.REPO:
                        __data.Repositories.Add(RepositoryEntity.Create(elements));
                        break;

                    case RecordTypes.SOUR:
                        __data.Sources.Add(SourceEntity.Create(elements));
                        break;
                    }
                }
            }
        }