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; }
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; }
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]); }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
internal static IList<UserDefinedTag> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context) { return items.Select(i => BuildUserDefinedTag(i, context)).ToList(); }
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; }
internal static IList<Child> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context) { return items.Select(i => BuildChild(i, context)).ToList(); }
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; }
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; }
internal static IList<Event> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context, EventType eventType) { return items.Select(i => BuildEvent(i, context, eventType)).ToList(); }
internal static IList<DateTime> FromDataHierarchy(IEnumerable<DataHierarchyItem> items, GEDCOMContext context, DateType dateType) { return items.Select(i => BuildDateTime(i, context, dateType)).ToList(); }
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; }