/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } MsPlacesPart part = new MsPlacesPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Places.Add(new Faker <MsPlace>() .RuleFor(p => p.Area, f => f.PickRandom("France", "Germany", "Italy")) .RuleFor(p => p.Address, f => $"{f.Lorem.Word()}, {f.Lorem.Word()}") .RuleFor(p => p.City, f => f.Address.City()) .RuleFor(p => p.Site, f => f.PickRandom("A library", "A monastery")) .RuleFor(p => p.Rank, (short)n) .RuleFor(p => p.Sources, SeedHelper.GetDocReferences(1, 3)) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } MsPlacePart part = new Faker <MsPlacePart>() .RuleFor(p => p.Area, f => f.PickRandom("France", "Germany", "Italy")) .RuleFor(p => p.Address, f => $"{f.Lorem.Word()}, {f.Lorem.Word()}") .RuleFor(p => p.City, f => f.Address.City()) .RuleFor(p => p.Site, f => f.PickRandom("A library", "A monastery")) .RuleFor(p => p.Subscriber, f => f.Lorem.Word()) .RuleFor(p => p.SubscriptionLoc, f => new MsLocation { N = (short)f.Random.Number(20, 60), S = f.Random.Bool() ? "v" : "r", L = (short)f.Random.Number(1, 20) }) .RuleFor(p => p.Sources, SeederHelper.GetDocReferences(1, 3)) .Generate(); SetPartMetadata(part, roleId, item); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } ChronotopicsPart part = new ChronotopicsPart(); SetPartMetadata(part, roleId, item); for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Chronotopes.Add(new Faker <Chronotope>() .RuleFor(c => c.Tag, f => f.Lorem.Word()) .RuleFor(c => c.Place, f => f.Lorem.Word()) .RuleFor(c => c.Date, HistoricalDate.Parse($"{1200 + n} AD")) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } MsLayoutsPart part = new MsLayoutsPart(); int count = Randomizer.Seed.Next(1, 3); for (int n = 1; n <= count; n++) { part.Layouts.Add(GetLayout()); } SetPartMetadata(part, roleId, item); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } int birth = Randomizer.Seed.Next(1500, 1520); PrisonerInfoPart part = new Faker <PrisonerInfoPart>() .RuleFor(p => p.PrisonerId, f => f.Lorem.Word().ToLowerInvariant()) .RuleFor(p => p.PrisonId, f => f.Lorem.Word().ToLowerInvariant()) .RuleFor(p => p.Sex, f => f.PickRandom('M', 'F')) .RuleFor(p => p.Name, SeederHelper.GetPersonName()) .RuleFor(p => p.BirthDate, HistoricalDate.Parse($"{birth} AD")) .RuleFor(p => p.DeathDate, HistoricalDate.Parse($"{birth + 40} AD")) // TODO: use thesauri for these data .RuleFor(p => p.Origin, f => f.PickRandom("it", "fr", "sp")) .RuleFor(p => p.Charge, f => f.PickRandom( "heresy", "blasphemy", "witchcraft")) .RuleFor(p => p.Judgement, f => f.PickRandom("conviction", "acquittal")) .RuleFor(p => p.DetentionStart, HistoricalDate.Parse($"{birth + 20} AD")) .RuleFor(p => p.DetentionEnd, HistoricalDate.Parse($"{birth + 40} AD")) .Generate(); SetPartMetadata(part, roleId, item); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } if (_options?.Categories == null || _options.Categories.Length == 0 || _options.MaxCategoriesPerItem < 1) { return(null); } CategoriesPart part = new CategoriesPart(); SetPartMetadata(part, roleId, item); // pick from 1 to 3 categories, all different int count = Randomizer.Seed.Next(1, _options.MaxCategoriesPerItem + 1); foreach (string category in SeedHelper.RandomPickOf( _options.Categories, count)) { part.Categories.Add(category); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } PersonWorksPart part = new PersonWorksPart(); SetPartMetadata(part, roleId, item); string[] languages = new[] { "eng", "ita", "fra", "deu", "spa" }; for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Works.Add(new Faker <PersonWork>() .RuleFor(a => a.Language, f => f.PickRandom(languages)) .RuleFor(a => a.IsDubious, f => f.Random.Bool(0.2f)) .RuleFor(a => a.IsLost, f => f.Random.Bool(0.2f)) .RuleFor(a => a.Genre, f => f.Lorem.Word()) .RuleFor(a => a.Titles, f => new List <string>(new[] { f.Lorem.Sentence() })) .RuleFor(a => a.Chronotopes, SeederHelper.GetChronotopes(1, 3)) .RuleFor(a => a.References, SeederHelper.GetDocReferences(1, 3)) .RuleFor(a => a.Note, f => f.Random.Bool(0.2f)? f.Lorem.Sentence() : null) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } MsMaterialDscPart part = new Faker <MsMaterialDscPart>() .RuleFor(p => p.Material, f => f.PickRandom("paper", "parchment")) .RuleFor(p => p.Format, f => f.Lorem.Word()) .RuleFor(p => p.State, f => f.Lorem.Word()) .RuleFor(p => p.StateNote, f => f.Lorem.Sentence()) .Generate(); SetPartMetadata(part, roleId, item); // counts for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Counts.Add(new Faker <DecoratedCount>() .RuleFor(d => d.Id, f => f.Lorem.Word()) .RuleFor(d => d.Value, f => f.Random.Number(1, 100)) .RuleFor(d => d.Note, f => f.PickRandom(null, f.Lorem.Sentence())) .Generate()); } // palimpsests for (int n = 1; n <= Randomizer.Seed.Next(1, 3 + 1); n++) { part.Palimpsests.Add(new Faker <MsPalimpsest>() .RuleFor(p => p.Range, f => new MsLocationRange { Start = new MsLocation { N = (short)n, S = n % 2 == 0 ? "v" : "r", L = (short)(f.Random.Number(1, 20)) }, End = new MsLocation { N = (short)n + 1, S = (n + 1) % 2 == 0 ? "v" : "r", L = (short)(f.Random.Number(1, 20)) } }) .RuleFor(p => p.Date, HistoricalDate.Parse($"{1300 + n} AD")) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } MsContentsPart part = new MsContentsPart(); SetPartMetadata(part, roleId, item); int count = Randomizer.Seed.Next(1, 3 + 1); for (int n = 1; n <= count; n++) { int sn = (n - 1) * 2; part.Contents.Add(new Faker <MsContent>() .RuleFor(c => c.Author, f => f.Lorem.Word()) .RuleFor(c => c.ClaimedAuthor, f => f.PickRandom(null, f.Lorem.Word())) .RuleFor(c => c.Work, f => f.Lorem.Word()) .RuleFor(c => c.Title, f => f.Lorem.Sentence()) .RuleFor(c => c.Incipit, f => f.Lorem.Sentence()) .RuleFor(c => c.Explicit, f => f.Lorem.Sentence()) .RuleFor(c => c.Ranges, new List <MsLocationRange>(new[] { new MsLocationRange { Start = new MsLocation { N = n, S = n % 2 == 0 ? "v" : "r", L = n * 5 }, End = new MsLocation { N = n + 1, S = n % 2 == 0 ? "r" : "v", L = n * 5 } } })) .RuleFor(c => c.State, f => f.PickRandom("partial", "integral")) .RuleFor(c => c.Note, f => f.Lorem.Sentence()) .RuleFor(c => c.Units, GetUnits(Randomizer.Seed.Next(1, 3 + 1))) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } PrisonInfoPart part = new Faker <PrisonInfoPart>() .RuleFor(p => p.PrisonId, f => f.Lorem.Word().ToLowerInvariant()) .RuleFor(p => p.Place, f => f.Address.City()) .Generate(); SetPartMetadata(part, roleId, item); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } MsContentsPart part = new MsContentsPart(); SetPartMetadata(part, roleId, item); int count = Randomizer.Seed.Next(1, 3 + 1); for (int n = 1; n <= count; n++) { int sn = n * 2; part.Contents.Add(new Faker <MsContent>() .RuleFor(c => c.Start, f => new MsLocation { N = sn, S = sn % 2 == 0? "v" : "r", L = f.Random.Number(1, 20) }) .RuleFor(c => c.End, f => new MsLocation { N = (sn + 1), S = (sn + 1) % 2 == 0 ? "v" : "r", L = f.Random.Number(1, 20) }) .RuleFor(c => c.Work, f => $"{f.Lorem.Word()}.{f.Lorem.Word()}") .RuleFor(c => c.Location, f => f.Lorem.Random.Number(1, 24) + "." + f.Lorem.Random.Number(1, 100)) .RuleFor(c => c.Title, f => f.Lorem.Sentence(3)) .RuleFor(c => c.Incipit, f => f.Lorem.Sentence(5, 3)) .RuleFor(c => c.Explicit, f => f.Lorem.Sentence(5, 3)) .RuleFor(c => c.Note, f => f.Random.Bool(0.2f)? f.Lorem.Sentence() : null) .RuleFor(c => c.Editions, SeedHelper.GetDocReferences(1, 3)) .Generate()); } return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } PrisonLocationPart part = new Faker <PrisonLocationPart>() .RuleFor(p => p.PrisonId, f => f.Lorem.Word().ToLowerInvariant()) .RuleFor(p => p.Cell, f => $"{f.Random.Number(1, 30)}") .RuleFor(p => p.Location, f => $"{f.PickRandom('A','B','C','D','E')}{f.Random.Number(1, 10)}") .Generate(); SetPartMetadata(part, roleId, item); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (factory == null) { throw new ArgumentNullException(nameof(factory)); } AttachmentsPart part = new AttachmentsPart(); SetPartMetadata(part, roleId, item); part.Attachments = SeederHelper.GetAttachments(1, 3); return(part); }
/// <summary> /// Creates and seeds a new part. /// </summary> /// <param name="item">The item this part should belong to.</param> /// <param name="roleId">The optional part role ID.</param> /// <param name="factory">The part seeder factory. This is used /// for layer parts, which need to seed a set of fragments.</param> /// <returns>A new part.</returns> /// <exception cref="ArgumentNullException">item or factory</exception> public override IPart GetPart(IItem item, string roleId, PartSeederFactory factory) { if (item == null) { throw new ArgumentNullException(nameof(item)); } MsHistoryPart part = new Faker <MsHistoryPart>() .RuleFor(p => p.Provenances, f => GetProvenances(f.Random.Number(1, 3))) .RuleFor(p => p.History, f => f.Lorem.Sentence()) .RuleFor(p => p.Owners, f => new List <string>(new[] { f.Name.FirstName() })) .RuleFor(p => p.Subscription, GetSubscription()) .RuleFor(p => p.Annotations, f => GetAnnotations(f.Random.Number(1, 3))) .Generate(); SetPartMetadata(part, roleId, item); return(part); }