package eu.eudat.logic.managers; import eu.eudat.data.entities.DMP; import eu.eudat.data.entities.Project; import eu.eudat.data.entities.UserInfo; import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.helpers.FileStorageService; import eu.eudat.logic.services.operations.DatabaseRepository; import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.quickwizard.DatasetDescriptionQuickWizardModel; import eu.eudat.models.data.quickwizard.QuickWizardModel; import eu.eudat.models.data.security.Principal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; import java.text.ParseException; @Component public class QuickWizardManager { private ApiContext apiContext; private DatabaseRepository databaseRepository; private FileStorageService fileStorageService; private DatasetManager datasetManager; @Autowired public QuickWizardManager(ApiContext apiContext, DatasetManager datasetManager) { this.apiContext = apiContext; this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); this.fileStorageService = apiContext.getOperationsContext().getFileStorageService(); } public void createOrUpdate(QuickWizardModel quickWizard, Principal principal) throws Exception { //Create Project eu.eudat.data.entities.Project projectEntity = createOrUpdate(quickWizard.getProject().toDataProject(), principal); //Create Dmp eu.eudat.data.entities.DMP dmpEntity = createOrUpdate(quickWizard.getDmp().toDataDmp(projectEntity), principal); //Create Datasets quickWizard.getDmp().setId(dmpEntity.getId()); for(DatasetDescriptionQuickWizardModel dataset : quickWizard.getDatasets().getDatasetsList()){ this.datasetManager.createOrUpdate(dataset.toDataModel(quickWizard.getDmp().toDataDmp(projectEntity),quickWizard.getDmp().getDatasetProfile().getId()), principal); } } private Project createOrUpdate(eu.eudat.models.data.project.Project project, Principal principal) throws ParseException, IOException { eu.eudat.data.entities.Project projectEntity = project.toDataModel(); projectEntity.setType(eu.eudat.data.entities.Project.ProjectType.INTERNAL.getValue()); projectEntity.setCreationUser(databaseRepository.getUserInfoDao().find(principal.getId())); Project projectEntityRet = databaseRepository.getProjectDao().createOrUpdate(projectEntity); return projectEntityRet; } private DMP createOrUpdate(DataManagementPlan dataManagementPlan, Principal principal) throws Exception { DMP newDmp = dataManagementPlan.toDataModel(); UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); newDmp.setCreator(user); DMP dmpret = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(newDmp); return dmpret; } }