argos/dmp-backend/web/src/main/java/eu/eudat/logic/mapper/elastic/DatasetMapper.java

84 lines
4.1 KiB
Java

package eu.eudat.logic.mapper.elastic;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.elastic.entities.Dataset;
import eu.eudat.elastic.entities.Tag;
import eu.eudat.logic.managers.DatasetManager;
import eu.eudat.logic.services.ApiContext;
import java.util.*;
public class DatasetMapper {
private final ApiContext apiContext;
private final DatasetManager datasetManager;
public DatasetMapper(ApiContext apiContext, DatasetManager datasetManager) {
this.apiContext = apiContext;
this.datasetManager = datasetManager;
}
public Dataset toElastic(DescriptionEntity descriptionEntity, List<Tag> tags) throws Exception {
//TODO
// if (descriptionEntity.getDescriptionTemplateId() == null) {
// return null;
// }
Dataset elastic = new Dataset();
// elastic.setId(descriptionEntity.getId().toString());
// if (tags != null && !tags.isEmpty()) {
// DatasetCriteria criteria = new DatasetCriteria();
// criteria.setTags(tags);
// criteria.setHasTags(true);
// List<Tag> tags1 = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().query(criteria).stream().map(eu.eudat.elastic.entities.Dataset::getTags).flatMap(Collection::stream)
// .filter(StreamDistinctBy.distinctByKey(Tag::getId)).filter(tag -> tags.stream().anyMatch(tag1 -> tag1.getName().equals(tag.getName()))).collect(Collectors.toList());
// if (tags1.isEmpty()) {
// tags.forEach(tag -> tag.setId(UUID.randomUUID().toString()));
// elastic.setTags(tags);
// } else {
// if (tags1.size() < tags.size()) {
// tags.stream().filter(tag -> tag.getId() == null || tag.getId().equals("")).forEach(tag -> tags1.add(new Tag(UUID.randomUUID().toString(), tag.getName())));
// }
// elastic.setTags(tags1);
// }
// }
// elastic.setLabel(descriptionEntity.getLabel());
// elastic.setDescription(descriptionEntity.getDescription());
// elastic.setTemplate(descriptionEntity.getProfile().getId());
// elastic.setStatus(descriptionEntity.getStatus());
// elastic.setDmp(descriptionEntity.getDmp().getId());
// elastic.setGroup(descriptionEntity.getDmp().getGroupId());
// if (descriptionEntity.getDmp().getGrant() != null) {
// elastic.setGrant(descriptionEntity.getDmp().getGrant().getId());
// }
// elastic.setCreated(descriptionEntity.getCreated());
// elastic.setModified(descriptionEntity.getModified());
// elastic.setFinalizedAt(descriptionEntity.getFinalizedAt());
// if (descriptionEntity.getDmp().getUsers() != null) {
// elastic.setCollaborators(descriptionEntity.getDmp().getUsers().stream().map(user -> CollaboratorMapper.toElastic(user.getUser(), user.getRole())).collect(Collectors.toList()));
// }
// DataManagementPlanCriteria dmpCriteria = new DataManagementPlanCriteria();
// dmpCriteria.setAllVersions(true);
// dmpCriteria.setGroupIds(Collections.singletonList(descriptionEntity.getDmp().getGroupId()));
// apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dmpCriteria).toList().stream()
// .max(Comparator.comparing(DMP::getVersion)).ifPresent(dmp -> elastic.setLastVersion(dmp.getId().equals(descriptionEntity.getDmp().getId())));
// apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dmpCriteria).toList().stream().filter(DMP::isPublic)
// .max(Comparator.comparing(DMP::getVersion)).ifPresent(dmp -> elastic.setLastPublicVersion(dmp.getId().equals(descriptionEntity.getDmp().getId())));
// if (elastic.getLastVersion() == null) {
// elastic.setLastVersion(true);
// }
// if (elastic.getLastPublicVersion() == null) {
// elastic.setLastPublicVersion(false);
// }
// if (descriptionEntity.getDmp().getOrganisations() != null) {
// elastic.setOrganizations(descriptionEntity.getDmp().getOrganisations().stream().map(OrganizationMapper::toElastic).collect(Collectors.toList()));
// }
// elastic.setPublic(descriptionEntity.getDmp().isPublic());
// if (descriptionEntity.getDmp().getGrant() != null) {
// elastic.setGrantStatus(descriptionEntity.getDmp().getGrant().getStatus());
// }
// elastic.setFormData(datasetManager.getWordDocumentText(descriptionEntity));
return elastic;
}
}