argos/dmp-backend/web/src/main/java/eu/eudat/models/rda/mapper/DmpRDAMapper.java

52 lines
1.6 KiB
Java

package eu.eudat.models.rda.mapper;
import eu.eudat.data.entities.DMP;
import eu.eudat.data.entities.UserDMP;
import eu.eudat.data.entities.UserInfo;
import eu.eudat.models.rda.Dmp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.transaction.Transactional;
import java.util.Collections;
import java.util.stream.Collectors;
@Component
public class DmpRDAMapper {
private DatasetRDAMapper datasetRDAMapper;
@Autowired
public DmpRDAMapper(DatasetRDAMapper datasetRDAMapper) {
this.datasetRDAMapper = datasetRDAMapper;
}
@Transactional
public Dmp toRDA(DMP dmp) {
Dmp rda = new Dmp();
if (dmp.getDoi() != null && !dmp.getDoi().isEmpty()) {
rda.setDmpId(DmpIdRDAMapper.toRDA(dmp.getDoi()));
} else {
rda.setDmpId(DmpIdRDAMapper.toRDA(dmp.getId()));
}
rda.setCreated(dmp.getCreated());
rda.setDescription(dmp.getDescription());
rda.setModified(dmp.getModified());
rda.setTitle(dmp.getLabel());
UserInfo creator;
if (dmp.getCreator() != null) {
creator = dmp.getCreator();
} else {
creator = dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())).map(UserDMP::getUser).findFirst().orElse(new UserInfo());
}
rda.setContact(ContactRDAMapper.toRDA(creator));
rda.setContributor(dmp.getUsers().stream().map(ContributorRDAMapper::toRDA).collect(Collectors.toList()));
rda.setDataset(dmp.getDataset().stream().map(dataset -> datasetRDAMapper.toRDA(dataset)).collect(Collectors.toList()));
rda.setProject(Collections.singletonList(ProjectRDAMapper.toRDA(dmp.getProject(), dmp.getGrant())));
return rda;
}
}