<dependency>
<groupId>org.vaadin.artur.exampledata</groupId>
<artifactId>exampledata</artifactId>
<version>3.2.0</version>
</dependency>
@SpringComponent
public class DataGenerator {
@Bean
public CommandLineRunner loadData(ContactRepository contactRepository, CompanyRepository companyRepository,
StatusRepository statusRepository) {
return args -> {
Logger logger = LoggerFactory.getLogger(getClass());
if (contactRepository.count() != 0L) {
logger.info("Using existing database");
return;
}
int seed = 123;
logger.info("Generating demo data");
var companyGenerator = new ExampleDataGenerator<>(Company.class, LocalDateTime.now());
companyGenerator.setData(Company::setName, DataType.COMPANY_NAME);
var companies = companyRepository.saveAll(companyGenerator.create(5, seed));
var statuses = statusRepository
.saveAll(Stream.of("Imported lead", "Not contacted", "Contacted", "Customer", "Closed (lost)")
.map(Status::new).collect(Collectors.toList()));
logger.info("... generating 50 Contact entities...");
var contactGenerator = new ExampleDataGenerator<>(Contact.class, LocalDateTime.now());
contactGenerator.setData(Contact::setFirstName, DataType.FIRST_NAME);
contactGenerator.setData(Contact::setLastName, DataType.LAST_NAME);
contactGenerator.setData(Contact::setEmail, DataType.EMAIL);
Random r = new Random(seed);
var contacts = contactGenerator.create(50, seed).stream().map(contact -> {
contact.setCompany(companies.get(r.nextInt(companies.size())));
contact.setStatus(statuses.get(r.nextInt(statuses.size())));
return contact;
}).collect(Collectors.toList());
contactRepository.saveAll(contacts);
logger.info("Generated demo data");
};
}
When running the project from the VScode's built-in Terminal with Powershell using mvn
, the first "Generating demo data" line is logged, but none of the following log lines appear. The contactRepository.saveAll method is never called, so the repository remains empty.