64 lines
2.8 KiB
Java
64 lines
2.8 KiB
Java
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;
|
|
}
|
|
}
|