package org.molgenis.data.settings; import org.molgenis.data.DataService; import org.molgenis.data.Entity; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; import static java.util.Objects.requireNonNull; import static org.molgenis.data.settings.DefaultSettingsEntityType.ATTR_ID; /** * Populates the data service with default setting values for all {@link DefaultSettingsEntityType} beans. */ @Component public class SettingsPopulator { private final DataService dataService; @Autowired public SettingsPopulator(DataService dataService) { this.dataService = requireNonNull(dataService); } public void initialize(ContextRefreshedEvent event) { ApplicationContext ctx = event.getApplicationContext(); ctx.getBeansOfType(DefaultSettingsEntityType.class).values().forEach(this::initialize); } private void initialize(DefaultSettingsEntityType defaultSettingsEntityType) { Entity settingsEntity = defaultSettingsEntityType.getSettings(); if (settingsEntity == null) { Entity defaultSettingsEntity = defaultSettingsEntityType.getDefaultSettings(); defaultSettingsEntity.set(ATTR_ID, defaultSettingsEntityType.getSimpleName()); dataService.add(defaultSettingsEntityType.getName(), defaultSettingsEntity); } } }