package eu.eudat.migration.services; import eu.eudat.data.entities.UserInfo; import eu.eudat.migration.dao.TemplateRepository; import eu.eudat.migration.dao.UserRepository; import eu.eudat.migration.entities.Perm; import eu.eudat.migration.entities.Plan; import eu.eudat.migration.entities.Template; import eu.eudat.migration.entities.User; import eu.eudat.migration.properties.ConfigProperties; import eu.eudat.migration.properties.DefaultEntities; import eu.eudat.models.data.admin.composite.DatasetProfile; import eu.eudat.models.data.datasetwizard.DatasetWizardModel; import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.dmp.DataManagementPlanEditorModel; import eu.eudat.models.data.listingmodels.UserInfoListingModel; import eu.eudat.models.data.security.Principal; import eu.eudat.types.Authorities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @Service public class DMPRoadmapService { private static final Logger logger = LoggerFactory.getLogger(DMPRoadmapService.class); /** * DMPRoadmap Repositories */ private final TemplateRepository templateRepository; private final UserRepository userRepository; /** * Default Entities */ private final DefaultEntities defaultEntities; /** * Services */ private final ArgosService argosService; /** * Metadata */ private final List datasetProfiles = new ArrayList<>(); private final List dmps = new ArrayList<>(); private final List datasets = new ArrayList<>(); private Principal principal; @Autowired public DMPRoadmapService(TemplateRepository templateRepository, UserRepository userRepository, ArgosService argosService, ConfigProperties properties) { this.templateRepository = templateRepository; this.userRepository = userRepository; this.defaultEntities = properties.getEntities(); this.argosService = argosService; } public void migrateUsers() { this.argosService.createUserInfo(Objects.requireNonNull(defaultUser())); List users = this.userRepository.findAll(); users.forEach(user -> { logger.info("Create user with email: " + user.getEmail()); this.argosService.createUserInfo(user.buildUserInfo()); }); } public void migrate() { try { List users = this.userRepository.findAll().stream().filter(user -> user.getPerms().stream().map(Perm::getName).collect(Collectors.toList()).contains("modify_templates")).map(user -> this.argosService.getUserInfo(user.getEmail()) ).collect(Collectors.toList()); UserInfo userInfo = this.argosService.getUserInfo(users.size() > 0 ? users.get(0).getEmail() : defaultEntities.getUser().getEmail()); for (Long group : templateRepository.findAllGroups()) { List