package eu.eudat.logic.managers; import eu.eudat.data.dao.criteria.ProjectCriteria; import eu.eudat.data.dao.entities.ContentDao; import eu.eudat.data.dao.entities.ProjectDao; import eu.eudat.data.dao.entities.UserInfoDao; import eu.eudat.data.entities.*; 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; @Autowired public QuickWizardManager(ApiContext apiContext) { this.apiContext = apiContext; this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository(); } public 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; } public DMP createOrUpdate(DataManagementPlan dataManagementPlan, Principal principal) throws Exception { DMP newDmp = dataManagementPlan.toDataModel(); UserInfo user = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal.getId()); createProjectIfItDoesntExist(newDmp, user); newDmp.setCreator(user); DMP dmpret = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(newDmp); return dmpret; } private void createProjectIfItDoesntExist(DMP newDmp, UserInfo userInfo) { if (newDmp.getProject() != null) { Project project = newDmp.getProject(); ProjectCriteria criteria = new ProjectCriteria(); criteria.setReference(project.getReference()); eu.eudat.data.entities.Project projectEntity = databaseRepository.getProjectDao().getWithCriteria(criteria).getSingleOrDefault(); if (projectEntity != null) project.setId(projectEntity.getId()); else { project.setType(Project.ProjectType.EXTERNAL.getValue()); databaseRepository.getProjectDao().createOrUpdate(project); } } } }