private void generateDataViewRawData(final Path dir,
                                         final int fileNo,
                                         final String feedName,
                                         final String recordSeparator,
                                         final DataWriterMode dataWriterMode,
                                         final int loremWordCount,
                                         final LocalDateTime startDate,
                                         final long randomSeed) {
        final Path file = makeInputFilePath(dir, fileNo, feedName);
        final DataWriter dataWriter = switch (dataWriterMode) {
            case CSV -> buildCsvDataWriter();
            case XML -> buildXmlDataWriter();
        };

        runAsync(() -> {
            final DurationTimer timer = DurationTimer.start();
            DataGenerator.buildDefinition()
                    .addFieldDefinition(DataGenerator.randomDateTimeField(
                            "dateTime",
                            startDate,
                            startDate.plusDays(28),
                            DateTimeFormatter.ISO_DATE_TIME
                    ))
                    .addFieldDefinition(DataGenerator.randomIpV4Field(
                            "machineIp"))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "machineMacAddress",
                            faker -> faker.internet().macAddress()
                    ))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "firstName",
                            faker -> faker.name().firstName()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "surname",
                            faker -> faker.name().lastName()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "username",
                            faker -> faker.internet().username()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "bloodGroup",
                            faker -> faker.bloodtype().bloodGroup()))
                    .addFieldDefinition(DataGenerator.randomEmoticonEmojiField(
                            "emotionalState"))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "address",
                            faker ->
                                    faker.address().fullAddress()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "company",
                            faker -> faker.company().name()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "companyLogo",
                            faker -> faker.company().logo()))
                    .addFieldDefinition(DataGenerator.fakerField(
                            "lorum",
                            faker -> String.join(" ", faker.lorem().words(loremWordCount))))
                    .setDataWriter(dataWriter)
                    .consumedBy(DataGenerator.getFileOutputConsumer(file, recordSeparator))
                    .rowCount(2_000)
                    .withRandomSeed(randomSeed)
                    .generate();
            LOGGER.info("Generated file {} in {}",
                    file.toAbsolutePath().normalize(), timer);
        });
    }
To aid testing the generation without running {@link SetupSampleData}
stroom-app/src/test/java/stroom/test/SampleDataGenerator.java