/// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        /// <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);
        }
Exemple #9
0
        /// <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);
        }
Exemple #10
0
        /// <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);
        }
Exemple #13
0
        /// <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);
        }
Exemple #14
0
        /// <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);
        }