2017-12-15 00:01:26 +01:00
|
|
|
package eu.eudat.managers;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
import eu.eudat.dao.entities.DMPDao;
|
2017-12-20 15:52:09 +01:00
|
|
|
import eu.eudat.dao.entities.OrganisationDao;
|
|
|
|
import eu.eudat.dao.entities.ResearcherDao;
|
|
|
|
import eu.eudat.dao.entities.UserInfoDao;
|
2017-12-17 22:34:24 +01:00
|
|
|
import eu.eudat.entities.DMP;
|
2017-12-19 09:38:47 +01:00
|
|
|
import eu.eudat.models.criteria.DataManagementPlanCriteria;
|
2017-12-20 15:52:09 +01:00
|
|
|
import eu.eudat.models.criteria.OrganisationCriteria;
|
|
|
|
import eu.eudat.models.criteria.ResearcherCriteria;
|
2017-12-19 09:38:47 +01:00
|
|
|
import eu.eudat.models.dmp.DataManagementPlan;
|
|
|
|
import eu.eudat.models.dmp.DataManagementPlanCriteriaRequest;
|
2017-12-15 00:01:26 +01:00
|
|
|
import eu.eudat.models.dmp.DataManagementPlanTableRequest;
|
|
|
|
import eu.eudat.models.helpers.DataTableData;
|
2017-12-19 15:09:49 +01:00
|
|
|
import eu.eudat.models.listingmodels.DataManagementPlanListingModel;
|
2017-12-20 15:52:09 +01:00
|
|
|
import eu.eudat.models.security.Principal;
|
2017-12-17 22:34:24 +01:00
|
|
|
import eu.eudat.queryable.QueryableList;
|
2017-12-15 00:01:26 +01:00
|
|
|
import eu.eudat.utilities.builders.DomainModelConverter;
|
|
|
|
|
|
|
|
public class DataManagementPlanManager {
|
|
|
|
|
2017-12-19 15:09:49 +01:00
|
|
|
public DataTableData<DataManagementPlanListingModel> getPaged(DMPDao dmpsRepository, DataManagementPlanTableRequest dataManagementPlanTableRequest) throws IllegalAccessException, InstantiationException{
|
2017-12-17 22:34:24 +01:00
|
|
|
QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanTableRequest.getCriteria());
|
|
|
|
QueryableList<DMP> pagedItems = PaginationManager.applyPaging(items,dataManagementPlanTableRequest);
|
2017-12-19 15:09:49 +01:00
|
|
|
List<DataManagementPlanListingModel> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, DataManagementPlanListingModel>().fromDataModel( pagedItems.toList(), DataManagementPlanListingModel.class);
|
|
|
|
DataTableData<DataManagementPlanListingModel> dataTable = new DataTableData<DataManagementPlanListingModel>();
|
2017-12-15 00:01:26 +01:00
|
|
|
dataTable.setData(datamanagementPlans);
|
2017-12-19 15:09:49 +01:00
|
|
|
dataTable.setTotalCount(items.count());
|
2017-12-15 00:01:26 +01:00
|
|
|
return dataTable;
|
|
|
|
}
|
|
|
|
|
|
|
|
public eu.eudat.models.dmp.DataManagementPlan getSingle(DMPDao dmpsRepository, String id) throws InstantiationException, IllegalAccessException{
|
|
|
|
eu.eudat.models.dmp.DataManagementPlan datamanagementPlan = new eu.eudat.models.dmp.DataManagementPlan();
|
2017-12-17 22:34:24 +01:00
|
|
|
datamanagementPlan.fromDataModel(dmpsRepository.find(UUID.fromString(id)));
|
2017-12-15 00:01:26 +01:00
|
|
|
return datamanagementPlan;
|
|
|
|
}
|
2017-12-19 09:38:47 +01:00
|
|
|
|
|
|
|
public List<DataManagementPlan> getWithCriteria(DMPDao dmpsRepository, DataManagementPlanCriteriaRequest dataManagementPlanCriteria) throws IllegalAccessException, InstantiationException{
|
|
|
|
QueryableList<DMP> items = dmpsRepository.getWithCriteria(dataManagementPlanCriteria.getCriteria());
|
|
|
|
List<eu.eudat.models.dmp.DataManagementPlan> datamanagementPlans = new DomainModelConverter<eu.eudat.entities.DMP, eu.eudat.models.dmp.DataManagementPlan>().fromDataModel( items.toList(), eu.eudat.models.dmp.DataManagementPlan.class);
|
|
|
|
return datamanagementPlans;
|
|
|
|
}
|
2017-12-20 15:52:09 +01:00
|
|
|
|
|
|
|
public static void createOrUpdate(DMPDao dmpsRepository, ResearcherDao researcherRepository, UserInfoDao userInfoDao, OrganisationDao organisationRepository, DataManagementPlan dataManagementPlan, Principal principal){
|
|
|
|
DMP newDmp = dataManagementPlan.toDataModel();
|
|
|
|
createOrganisationsIfTheyDontExist(newDmp,organisationRepository);
|
|
|
|
createResearchersIfTheyDontExist(newDmp,researcherRepository);
|
|
|
|
newDmp.setCreator(userInfoDao.read(principal.getId()));
|
|
|
|
dmpsRepository.createOrUpdate(newDmp);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void createResearchersIfTheyDontExist(DMP newDmp,ResearcherDao researcherRepository){
|
|
|
|
if(newDmp.getResearchers()!=null&&!newDmp.getResearchers().isEmpty()){
|
|
|
|
for(eu.eudat.entities.Researcher researcher : newDmp.getResearchers()){
|
|
|
|
ResearcherCriteria criteria = new ResearcherCriteria();
|
|
|
|
criteria.setLike(researcher.getReference());
|
|
|
|
List<eu.eudat.entities.Researcher> entries = researcherRepository.listBy(criteria);
|
|
|
|
if(entries!=null&&!entries.isEmpty())researcher.setId(entries.get(0).getId());
|
|
|
|
else researcher = researcherRepository.create(researcher);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void createOrganisationsIfTheyDontExist(DMP newDmp,OrganisationDao organisationRepository){
|
|
|
|
if(newDmp.getOrganisations()!=null&&!newDmp.getOrganisations().isEmpty()){
|
|
|
|
for(eu.eudat.entities.Organisation organisation: newDmp.getOrganisations()){
|
|
|
|
OrganisationCriteria criteria = new OrganisationCriteria();
|
|
|
|
criteria.setLike(organisation.getReference());
|
|
|
|
List<eu.eudat.entities.Organisation> entries = organisationRepository.listBy(criteria);
|
|
|
|
if(entries!=null&&!entries.isEmpty())organisation.setId(entries.get(0).getId());
|
|
|
|
else organisation = organisationRepository.create(organisation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2017-12-15 00:01:26 +01:00
|
|
|
}
|