46 lines
1.8 KiB
Java
46 lines
1.8 KiB
Java
package eu.eudat.models.rda.mapper;
|
|
|
|
import eu.eudat.data.entities.Funder;
|
|
import eu.eudat.data.entities.Grant;
|
|
import eu.eudat.logic.services.ApiContext;
|
|
import eu.eudat.models.rda.Project;
|
|
|
|
import java.util.*;
|
|
|
|
public class ProjectRDAMapper {
|
|
|
|
public static Project toRDA(eu.eudat.data.entities.Project project, Grant grant) {
|
|
Project rda = new Project();
|
|
rda.setTitle(project.getLabel());
|
|
rda.setDescription(project.getDescription());
|
|
if (project.getStartdate() != null) {
|
|
rda.setStart(project.getStartdate().toString());
|
|
}
|
|
if (project.getEnddate() != null) {
|
|
rda.setEnd(project.getEnddate().toString());
|
|
}
|
|
rda.setFunding(Collections.singletonList(FundingRDAMapper.toRDA(grant)));
|
|
|
|
return rda;
|
|
}
|
|
|
|
public static Map<String, Object> toEntity(Project rda, ApiContext apiContext) {
|
|
Map<String, Object> entities = new HashMap<>();
|
|
|
|
entities.put("project", new eu.eudat.data.entities.Project());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setLabel(rda.getTitle());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setDescription(rda.getDescription());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setId(UUID.randomUUID());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setStatus((short)1);
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setCreated(new Date());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setModified(new Date());
|
|
((eu.eudat.data.entities.Project) entities.get("project")).setType(0);
|
|
apiContext.getOperationsContext().getDatabaseRepository().getProjectDao().createOrUpdate(((eu.eudat.data.entities.Project) entities.get("project")));
|
|
for (int i = 0; i < rda.getFunding().size(); i++) {
|
|
entities.put("grant" + (i + 1), FundingRDAMapper.toEntity(rda.getFunding().get(i), apiContext));
|
|
}
|
|
|
|
return entities;
|
|
}
|
|
}
|