Beispiel #1
0
        private static Note BuildNote(DataHierarchyItem note, GEDCOMContext context)
        {
            var result = new Note();
            result.Context = context;

            var textItems = note.Items.Where(i => (i.Value.StartsWith("CONT") || i.Value.StartsWith("CONC")));
            var changeItems = note.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = note.Items.Where(i => i.Value.StartsWith("CREA"));
            var userDefinedItems = note.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = note.Value.GetID("N", 0);

            foreach (var textItem in textItems)
                if (textItem.Value.StartsWith("CONT"))
                    result.Text += Environment.NewLine + textItem.Value.GetSubstring(5);
                else if (textItem.Value.StartsWith("CONC"))
                    result.Text += textItem.Value.GetSubstring(5);
            while (result.Text.StartsWith(Environment.NewLine))
                result.Text = result.Text.Substring(Environment.NewLine.Length);
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #2
0
        private static Name BuildName(DataHierarchyItem name, GEDCOMContext context)
        {
            var result = new Name();
            result.Context = context;

            var typeItems = name.Items.Where(i => i.Value.StartsWith("TYPE"));
            var givenNameItems = name.Items.Where(i => i.Value.StartsWith("GIVN"));
            var secondGivenNameItems = name.Items.Where(i => i.Value.StartsWith("SECG"));
            var surnameItems = name.Items.Where(i => i.Value.StartsWith("SURN"));
            var surnamePrefixItems = name.Items.Where(i => i.Value.StartsWith("SPFX"));
            var namePrefixItems = name.Items.Where(i => i.Value.StartsWith("NPFX"));
            var nameSuffixItems = name.Items.Where(i => i.Value.StartsWith("NSFX"));
            var userDefinedItems = name.Items.Where(i => i.Value.StartsWith("_"));

            result.Type = typeItems.GetValue();
            result.GivenName = givenNameItems.GetValue();
            result.SecondGivenName = secondGivenNameItems.GetValue();
            result.Surname = surnameItems.GetValue();
            result.SurnamePrefix = surnamePrefixItems.GetValue();
            result.NamePrefix = namePrefixItems.GetValue();
            result.NameSuffix = nameSuffixItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #3
0
 public void ContextOutputsGEDCOM()
 {
     var context = new GEDCOMContext("test.ged");
     context.SubmitChanges("output.ged");
     var expected = File.ReadAllLines("test.ged");
     var actual = File.ReadAllLines("output.ged");
     Assert.AreEqual(expected.Length, actual.Length);
     for (var i = 0; i < expected.Length; i++)
         Assert.AreEqual(expected[i], actual[i]);
 }
Beispiel #4
0
        private static Child BuildChild(DataHierarchyItem child, GEDCOMContext context)
        {
            var result = new Child();
            result.Context = context;

            var pedigreeItems = child.Items.Where(i => i.Value.StartsWith("PEDI"));
            var userDefinedItems = child.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = child.Value.GetID("I");
            result.Pedigree = pedigreeItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #5
0
        private static EntitySource BuildEntitySource(DataHierarchyItem source, GEDCOMContext context)
        {
            var result = new EntitySource();
            result.Context = context;

            var qualityOfDataItems = source.Items.Where(i => i.Value.StartsWith("QUAY"));
            var userDefinedItems = source.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = source.Value.GetID("S");
            result.QualityOfData = qualityOfDataItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #6
0
        private static Gedcom BuildGedcom(DataHierarchyItem gedcom, GEDCOMContext context)
        {
            var result = new Gedcom();
            result.Context = context;

            var versionItems = gedcom.Items.Where(i => i.Value.StartsWith("VERS"));
            var formatItems = gedcom.Items.Where(i => i.Value.StartsWith("FORM"));
            var userDefinedItems = gedcom.Items.Where(i => i.Value.StartsWith("_"));

            result.Version = versionItems.GetValue();
            result.Format = formatItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #7
0
        private static Label BuildLabel(DataHierarchyItem label, GEDCOMContext context)
        {
            var result = new Label();
            result.Context = context;

            var titleItems = label.Items.Where(i => i.Value.StartsWith("TITL"));
            var colorItems = label.Items.Where(i => i.Value.StartsWith("COLR"));
            var userDefinedItems = label.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = label.Value.GetID("L", 0);
            result.Title = titleItems.GetValue();
            result.ColorText = colorItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #8
0
        private static HeaderSource BuildHeaderSource(DataHierarchyItem source, GEDCOMContext context)
        {
            var result = new HeaderSource();
            result.Context = context;

            var nameItems = source.Items.Where(i => i.Value.StartsWith("NAME"));
            var versionItems = source.Items.Where(i => i.Value.StartsWith("VERS"));
            var corporateItems = source.Items.Where(i => i.Value.StartsWith("CORP"));
            var userDefinedItems = source.Items.Where(i => i.Value.StartsWith("_"));

            result.Name = nameItems.GetValue();
            result.Version = versionItems.GetValue();
            result.Corporate = corporateItems.GetValue();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #9
0
        private static Header BuildHeader(DataHierarchyItem header, GEDCOMContext context)
        {
            var result = new Header();
            result.Context = context;

            var sourceItems = header.Items.Where(i => i.Value.StartsWith("SOUR"));
            var characterItems = header.Items.Where(i => i.Value.StartsWith("CHAR"));
            var gedcomItems = header.Items.Where(i => i.Value.StartsWith("GEDC"));
            var userDefinedItems = header.Items.Where(i => i.Value.StartsWith("_"));

            result.Source = HeaderSource.FromDataHierarchy(sourceItems, context).LastOrDefault();
            result.Character = characterItems.GetValue();
            result.Gedcom = Gedcom.FromDataHierarchy(gedcomItems, context).LastOrDefault();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #10
0
        private static UserDefinedTag BuildUserDefinedTag(DataHierarchyItem userDefinedTag, GEDCOMContext context)
        {
            var result = new UserDefinedTag();
            result.Context = context;

            if (userDefinedTag.Value.Contains(' '))
            {
                result.Tag = userDefinedTag.Value.Split(' ')[0];
                result.Value = userDefinedTag.Value.Split(' ')[1];
            }
            else
            {
                result.Tag = userDefinedTag.Value.Split(' ')[0];
                result.Value = string.Empty;
            }
            result.UserDefinedTags = userDefinedTag.Items.Select(i => BuildUserDefinedTag(i, context)).ToList();

            return result;
        }
Beispiel #11
0
        private static LINQ2GEDCOM.Entities.DateTime BuildDateTime(DataHierarchyItem dateTime, GEDCOMContext context, DateType dateType)
        {
            var result = new LINQ2GEDCOM.Entities.DateTime(dateType);
            result.Context = context;

            var changeDateItems = dateTime.Items.Where(i => i.Value.StartsWith("DATE"));
            var userDefinedItems = dateTime.Items.Where(i => i.Value.StartsWith("_"));

            foreach (var changeDateItem in changeDateItems)
            {
                result.Date = changeDateItem.Value.GetSubstring(5);
                result.Time = changeDateItem.Items.Where(i => i.Value.StartsWith("TIME")).GetValue();
                result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);
            }

            return result;
        }
Beispiel #12
0
        private static Individual BuildIndividual(DataHierarchyItem individual, GEDCOMContext context)
        {
            var result = new Individual();
            result.Context = context;

            var nameItems = individual.Items.Where(i => i.Value.StartsWith("NAME"));
            var sexItems = individual.Items.Where(i => i.Value.StartsWith("SEX"));
            var burialItems = individual.Items.Where(i => i.Value.StartsWith("BURI"));
            var deathItems = individual.Items.Where(i => i.Value.StartsWith("DEAT"));
            var birthItems = individual.Items.Where(i => i.Value.StartsWith("BIRT"));
            var adoptionItems = individual.Items.Where(i => i.Value.StartsWith("ADOP"));
            var immigrationItems = individual.Items.Where(i => i.Value.StartsWith("IMMI"));
            var naturalizationItems = individual.Items.Where(i => i.Value.StartsWith("NATU"));
            var emigrationItems = individual.Items.Where(i => i.Value.StartsWith("EMIG"));
            var militaryServiceItems = individual.Items.Where(i => i.Value.StartsWith("MISE"));
            var ordinanceItems = individual.Items.Where(i => i.Value.StartsWith("ORDI"));
            var ordinationItems = individual.Items.Where(i => i.Value.StartsWith("ORDN"));
            var sourceItems = individual.Items.Where(i => i.Value.StartsWith("SOUR"));
            var noteItems = individual.Items.Where(i => i.Value.StartsWith("NOTE"));
            var objectItems = individual.Items.Where(i => i.Value.StartsWith("OBJE"));
            var changeItems = individual.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = individual.Items.Where(i => i.Value.StartsWith("CREA"));
            var familySpouseItems = individual.Items.Where(i => i.Value.StartsWith("FAMS"));
            var familyChildItems = individual.Items.Where(i => i.Value.StartsWith("FAMC"));
            var userDefinedItems = individual.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = individual.Value.GetID("I", 0);
            result.Names = Name.FromDataHierarchy(nameItems, context);
            result.Sex = sexItems.GetValue(4);
            result.Burial = Event.FromDataHierarchy(burialItems, context, Event.EventType.Burial).LastOrDefault();
            result.Death = Event.FromDataHierarchy(deathItems, context, Event.EventType.Death).LastOrDefault();
            result.Birth = Event.FromDataHierarchy(birthItems, context, Event.EventType.Birth).LastOrDefault();
            result.Adoption = Event.FromDataHierarchy(adoptionItems, context, Event.EventType.Adoption).LastOrDefault();
            result.Immigrations = Event.FromDataHierarchy(immigrationItems, context, Event.EventType.Immigration);
            result.Naturalizations = Event.FromDataHierarchy(naturalizationItems, context, Event.EventType.Naturalization);
            result.Emigrations = Event.FromDataHierarchy(emigrationItems, context, Event.EventType.Emigration);
            result.MilitaryServices = Event.FromDataHierarchy(militaryServiceItems, context, Event.EventType.MilitaryService);
            result.Ordinances = Event.FromDataHierarchy(ordinanceItems, context, Event.EventType.Ordinance);
            result.Ordinations = Event.FromDataHierarchy(ordinationItems, context, Event.EventType.Ordination);
            result.Sources = EntitySource.FromDataHierarchy(sourceItems, context);
            result.NoteIDs = noteItems.GetIDs("N");
            result.ObjectIDs = objectItems.GetIDs("O");
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.SpousalFamilyIDs = familySpouseItems.GetIDs("F");
            result.ParentFamilyID = familyChildItems.GetID("F");
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #13
0
 internal static IList<UserDefinedTag> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context)
 {
     return items.Select(i => BuildUserDefinedTag(i, context)).ToList();
 }
Beispiel #14
0
        private static LINQ2GEDCOM.Entities.Object BuildObject(DataHierarchyItem _object, GEDCOMContext context)
        {
            var result = new LINQ2GEDCOM.Entities.Object();
            result.Context = context;

            var titleItems = _object.Items.Where(i => i.Value.StartsWith("TITL"));
            var fileItems = _object.Items.Where(i => i.Value.StartsWith("FILE"));
            var noteItems = _object.Items.Where(i => i.Value.StartsWith("NOTE"));
            var changeItems = _object.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = _object.Items.Where(i => i.Value.StartsWith("CREA"));
            var sourceItems = _object.Items.Where(i => i.Value.StartsWith("SOUR"));
            var userDefinedItems = _object.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = _object.Value.GetID("O", 0);
            result.Title = titleItems.GetValue();
            result.File = fileItems.GetValue();
            result.NoteIDs = noteItems.GetIDs("N");
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.Sources = EntitySource.FromDataHierarchy(sourceItems, context);
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #15
0
 internal static IList<Child> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context)
 {
     return items.Select(i => BuildChild(i, context)).ToList();
 }
Beispiel #16
0
        private static Family BuildFamily(DataHierarchyItem family, GEDCOMContext context)
        {
            var result = new Family();
            result.Context = context;

            var husbandItems = family.Items.Where(i => i.Value.StartsWith("HUSB"));
            var wifeItems = family.Items.Where(i => i.Value.StartsWith("WIFE"));
            var sourceItems = family.Items.Where(i => i.Value.StartsWith("SOUR"));
            var objectItems = family.Items.Where(i => i.Value.StartsWith("OBJE"));
            var changeItems = family.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = family.Items.Where(i => i.Value.StartsWith("CREA"));
            var childItems = family.Items.Where(i => i.Value.StartsWith("CHIL"));
            var marriageItems = family.Items.Where(i => i.Value.StartsWith("MARR"));
            var divorceItems = family.Items.Where(i => i.Value.StartsWith("DIV"));
            var userDefinedItems = family.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = family.Value.GetID("F", 0);
            result.HusbandID = husbandItems.GetID("I");
            result.WifeID = wifeItems.GetID("I");
            result.ObjectIDs = objectItems.GetIDs("O");
            result.Sources = EntitySource.FromDataHierarchy(sourceItems, context);
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.Children = Child.FromDataHierarchy(childItems, context);
            result.Marriage = Event.FromDataHierarchy(marriageItems, context, Event.EventType.Marriage).LastOrDefault();
            result.Divorce = Event.FromDataHierarchy(divorceItems, context, Event.EventType.Divorce).LastOrDefault();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #17
0
        private static Event BuildEvent(DataHierarchyItem _event, GEDCOMContext context, EventType eventType)
        {
            var result = new Event(eventType);
            result.Context = context;

            var dateItems = _event.Items.Where(i => i.Value.StartsWith("DATE"));
            var agencyItems = _event.Items.Where(i => i.Value.StartsWith("AGNC"));
            var addressITems = _event.Items.Where(i => i.Value.StartsWith("ADDR"));
            var placeItems = _event.Items.Where(i => i.Value.StartsWith("PLAC"));
            var longitudeItems = _event.Items.Where(i => i.Value.StartsWith("LONG"));
            var latitudeItems = _event.Items.Where(i => i.Value.StartsWith("LATI"));
            var causeItems = _event.Items.Where(i => i.Value.StartsWith("CAUS"));
            var sourceItems = _event.Items.Where(i => i.Value.StartsWith("SOUR"));
            var noteItems = _event.Items.Where(i => i.Value.StartsWith("NOTE"));
            var changeItems = _event.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = _event.Items.Where(i => i.Value.StartsWith("CREA"));
            var userDefinedItems = _event.Items.Where(i => i.Value.StartsWith("_"));

            result.EventText = _event.Value.GetSubstring(5);
            result.Date = dateItems.GetValue();
            result.Agency = agencyItems.GetValue();
            result.Address = addressITems.GetValue();
            result.Place = placeItems.GetValue();
            result.Latitude = latitudeItems.GetValue();
            result.Longitude = longitudeItems.GetValue();
            result.Cause = causeItems.GetValue();
            result.Sources = EntitySource.FromDataHierarchy(sourceItems, context);
            result.NoteIDs = noteItems.GetIDs("N");
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }
Beispiel #18
0
 internal static IList<Event> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context, EventType eventType)
 {
     return items.Select(i => BuildEvent(i, context, eventType)).ToList();
 }
Beispiel #19
0
 internal static IList<DateTime> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context, DateType dateType)
 {
     return items.Select(i => BuildDateTime(i, context, dateType)).ToList();
 }
Beispiel #20
0
        private static Source BuildSource(DataHierarchyItem source, GEDCOMContext context)
        {
            var result = new Source();
            result.Context = context;

            var titleItems = source.Items.Where(i => i.Value.StartsWith("TITL"));
            var authorItems = source.Items.Where(i => i.Value.StartsWith("AUTH"));
            var dateItems = source.Items.Where(i => i.Value.StartsWith("DATE"));
            var noteItems = source.Items.Where(i => i.Value.StartsWith("NOTE"));
            var textItems = source.Items.Where(i => i.Value.StartsWith("TEXT"));
            var objectItems = source.Items.Where(i => i.Value.StartsWith("OBJE"));
            var changeItems = source.Items.Where(i => i.Value.StartsWith("CHAN"));
            var createItems = source.Items.Where(i => i.Value.StartsWith("CREA"));
            var userDefinedItems = source.Items.Where(i => i.Value.StartsWith("_"));

            result.ID = source.Value.GetID("S", 0);
            result.Title = titleItems.GetValue();
            result.Author = authorItems.GetValue();
            result.Date = dateItems.GetValue();
            result.NoteIDs = noteItems.GetIDs("N");
            result.ObjectIDs = objectItems.GetIDs("O");
            foreach (var textItem in textItems)
            {
                var contItems = textItem.Items.Where(i => (i.Value.StartsWith("CONT") || i.Value.StartsWith("CONC")));
                foreach (var contItem in contItems)
                    if (contItem.Value.StartsWith("CONT"))
                        result.Text += Environment.NewLine + contItem.Value.GetSubstring(5);
                    else if (contItem.Value.StartsWith("CONC"))
                        result.Text += contItem.Value.GetSubstring(5);
            }
            if (!string.IsNullOrWhiteSpace(result.Text))
                while (result.Text.StartsWith(Environment.NewLine))
                    result.Text = result.Text.Substring(Environment.NewLine.Length);
            result.Change = DateTime.FromDataHierarchy(changeItems, context, DateTime.DateType.Change).LastOrDefault();
            result.Create = DateTime.FromDataHierarchy(createItems, context, DateTime.DateType.Create).LastOrDefault();
            result.UserDefinedTags = UserDefinedTag.FromDataHierarchy(userDefinedItems, context);

            return result;
        }