description refactor

This commit is contained in:
Efstratios Giannopoulos 2023-11-06 16:17:57 +02:00
parent 9cf91aab50
commit 81528dfe55
51 changed files with 1502 additions and 1689 deletions

View File

@ -1,217 +1,295 @@
package eu.eudat.data;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.converters.enums.DescriptionStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import eu.eudat.data.old.*;
import eu.eudat.data.old.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.UUID;
import java.util.*;
import java.util.stream.Collectors;
@Entity
@Table(name = "\"Description\"")
public class DescriptionEntity {
public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
@Id
@Column(name = "id", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static Set<String> getHints() {
return hints;
}
public static final String _id = "id";
private static final Set<String> hints = new HashSet<>(Arrays.asList("datasetListingModel"));
@Column(name = "label", length = 250, nullable = false)
private String label;
@Id
@Column(name = "id", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static final String _label = "label";
public static final String _id = "id";
@Column(name = "dmp", columnDefinition = "uuid")
private UUID dmp;
@Column(name = "label", length = 250, nullable = false)
private String label;
public static final String _dmp = "dmp";
public static final String _label = "label";
@Column(name = "uri", length = 250)
private String uri;
@Column(name = "dmp", columnDefinition = "uuid")
private UUID dmp;
public static final String _uri = "uri";
public static final String _dmp = "dmp";
@Column(name = "properties")
private String properties;
@Column(name = "uri", length = 250)
private String uri;
public static final String _properties = "properties";
public static final String _uri = "uri";
//TODO: (thgiannos) Previously 'DescriptionTemplate'
@Column(name = "profile", columnDefinition = "uuid")
private UUID profile;
@Column(name = "properties")
private String properties;
public static final String _profile = "profile";
public static final String _properties = "properties";
@Column(name = "reference")
private String reference;
//TODO: (thgiannos) Previously 'DescriptionTemplate'
@Column(name = "profile", columnDefinition = "uuid")
private UUID profile;
public static final String _reference = "reference";
public static final String _profile = "profile";
@Column(name = "status", nullable = false)
@Convert(converter = DescriptionStatusConverter.class)
private DescriptionStatus status;
@Column(name = "reference")
private String reference;
public static final String _status = "status";
public static final String _reference = "reference";
@Column(name = "description")
private String description;
@Column(name = "status", nullable = false)
@Convert(converter = DescriptionStatusConverter.class)
private DescriptionStatus status;
public static final String _description = "description";
public static final String _status = "status";
@Column(name = "dmp_section_index", nullable = false)
private Integer dmpSectionIndex;
@Column(name = "description")
private String description;
public static final String _dmpSectionIndex = "dmpSectionIndex";
public static final String _description = "description";
@Column(name = "creator", columnDefinition = "uuid")
private UUID creator;
@Column(name = "dmp_section_index", nullable = false)
private Integer dmpSectionIndex;
public static final String _creator = "creator";
public static final String _dmpSectionIndex = "dmpSectionIndex";
@Column(name = "created_at", nullable = false)
private Instant createdAt;
@Column(name = "creator", columnDefinition = "uuid")
private UUID creator;
public static final String _createdAt = "createdAt";
public static final String _creator = "creator";
@Column(name = "updated_at", nullable = false)
private Instant updatedAt;
@Column(name = "created_at", nullable = false)
private Instant createdAt;
public static final String _updatedAt = "updatedAt";
public static final String _createdAt = "createdAt";
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
@Column(name = "updated_at", nullable = false)
private Instant updatedAt;
public static final String _isActive = "isActive";
public static final String _updatedAt = "updatedAt";
@Column(name = "\"finalized_at\"")
@Convert(converter = DateToUTCConverter.class)
private Instant finalizedAt;
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
public static final String _finalizedAt = "finalizedAt";
public static final String _isActive = "isActive";
public UUID getId() {
return id;
}
@Column(name = "\"finalized_at\"")
@Convert(converter = DateToUTCConverter.class)
private Instant finalizedAt;
public void setId(UUID id) {
this.id = id;
}
public static final String _finalizedAt = "finalizedAt";
public String getLabel() {
return label;
}
public UUID getId() {
return id;
}
public void setLabel(String label) {
this.label = label;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getDmp() {
return dmp;
}
public String getLabel() {
return label;
}
public void setDmp(UUID dmp) {
this.dmp = dmp;
}
public void setLabel(String label) {
this.label = label;
}
public String getUri() {
return uri;
}
public UUID getDmp() {
return dmp;
}
public void setUri(String uri) {
this.uri = uri;
}
public void setDmp(UUID dmp) {
this.dmp = dmp;
}
public String getProperties() {
return properties;
}
public String getUri() {
return uri;
}
public void setProperties(String properties) {
this.properties = properties;
}
public void setUri(String uri) {
this.uri = uri;
}
public UUID getProfile() {
return profile;
}
public String getProperties() {
return properties;
}
public void setProfile(UUID profile) {
this.profile = profile;
}
public void setProperties(String properties) {
this.properties = properties;
}
public String getReference() {
return reference;
}
public UUID getProfile() {
return profile;
}
public void setReference(String reference) {
this.reference = reference;
}
public void setProfile(UUID profile) {
this.profile = profile;
}
public DescriptionStatus getStatus() {
return status;
}
public String getReference() {
return reference;
}
public void setStatus(DescriptionStatus status) {
this.status = status;
}
public void setReference(String reference) {
this.reference = reference;
}
public String getDescription() {
return description;
}
public DescriptionStatus getStatus() {
return status;
}
public void setDescription(String description) {
this.description = description;
}
public void setStatus(DescriptionStatus status) {
this.status = status;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public String getDescription() {
return description;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public void setDescription(String description) {
this.description = description;
}
public UUID getCreator() {
return creator;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public void setCreator(UUID creator) {
this.creator = creator;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public Instant getCreatedAt() {
return createdAt;
}
public UUID getCreator() {
return creator;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public void setCreator(UUID creator) {
this.creator = creator;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public IsActive getIsActive() {
return isActive;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public Instant getFinalizedAt() {
return finalizedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setFinalizedAt(Instant finalizedAt) {
this.finalizedAt = finalizedAt;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
public Instant getFinalizedAt() {
return finalizedAt;
}
public void setFinalizedAt(Instant finalizedAt) {
this.finalizedAt = finalizedAt;
}
@Override
public void update(DescriptionEntity entity) {
// this.setUri(entity.getUri());
// this.setDescription(entity.getDescription());
// this.setLabel(entity.getLabel());
// this.setProperties(entity.getProperties());
//
// if (entity.getDatasetDataRepositories() == null || entity.getDatasetDataRepositories().size() < 1) {
// if (this.getDatasetDataRepositories() != null) this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories());
// } else {
// if (this.getDatasetDataRepositories() != null) {
// this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories());
// } else {
// this.setDatasetDataRepositories(new HashSet<>());
// }
// this.getDatasetDataRepositories().addAll(entity.getDatasetDataRepositories().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
// }
//
// if (entity.getDatasetExternalDatasets() == null || entity.getDatasetExternalDatasets().size() < 1) {
// if (this.getDatasetExternalDatasets() != null) this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets());
// } else {
// if (this.getDatasetExternalDatasets() != null) {
// this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets());
// } else {
// this.setDatasetExternalDatasets(new HashSet<>());
// }
// this.getDatasetExternalDatasets().addAll(entity.getDatasetExternalDatasets().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
// }
//
// if (entity.getServices() == null || entity.getServices().size() < 1) {
// if (this.getServices() != null) this.getServices().removeAll(this.getServices());
// } else {
// if (this.getServices() != null) {
// this.getServices().removeAll(this.getServices());
// } else {
// this.setServices(new HashSet<>());
// }
// this.getServices().addAll(entity.getServices().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
// }
//
// this.setRegistries(entity.getRegistries());
//
// this.setDmp(entity.getDmp());
// this.setDmpSectionIndex(entity.getDmpSectionIndex());
// this.setStatus(entity.getStatus());
// this.setProfile(entity.getProfile());
// this.setModified(new Date());
// if (entity.getStatus().equals(Status.FINALISED.getValue())) this.setFinalizedAt(new Date());
// if (entity.getCreator() != null) this.creator = entity.getCreator();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public DescriptionEntity buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
return this;
}
}

View File

@ -1,6 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DmpBlueprintEntity;
import eu.eudat.data.EntityDoiEntity;
import eu.eudat.data.converters.DateToUTCConverter;
@ -103,7 +104,7 @@ public class DMP implements DataEntity<DMP, UUID> {
private Integer version;
@OneToMany(mappedBy = "dmp", fetch = FetchType.LAZY)
private Set<Dataset> dataset;
private Set<DescriptionEntity> descriptionEntity;
@ManyToOne(fetch = FetchType.LAZY)
@ -286,11 +287,11 @@ public class DMP implements DataEntity<DMP, UUID> {
this.profile = profile;
}
public Set<Dataset> getDataset() {
return dataset;
public Set<DescriptionEntity> getDataset() {
return descriptionEntity;
}
public void setDataset(Set<Dataset> dataset) {
this.dataset = dataset;
public void setDataset(Set<DescriptionEntity> descriptionEntity) {
this.descriptionEntity = descriptionEntity;
}
public Set<Organisation> getOrganisations() {
@ -395,7 +396,7 @@ public class DMP implements DataEntity<DMP, UUID> {
@Override
public DMP buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
this.id = tuple.get(0).get(base.isEmpty() ? "id" : base + "." + "id", UUID.class);
this.dataset = tuple.stream().map(x -> new Dataset().buildFromTuple(tuple, fields ,base.isEmpty() ? "dataset" : base + "." + "dataset")).collect(Collectors.toSet());
this.descriptionEntity = tuple.stream().map(x -> new DescriptionEntity().buildFromTuple(tuple, fields ,base.isEmpty() ? "dataset" : base + "." + "dataset")).collect(Collectors.toSet());
this.creator = tuple.stream().map(x -> new UserInfo().buildFromTuple(tuple, fields , base.isEmpty() ? "creator" : base + "." + "creator")).collect(Collectors.toList()).get(0);
return this;
}

View File

@ -1,360 +0,0 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import jakarta.persistence.*;
import java.util.*;
import java.util.stream.Collectors;
@Entity
@Table(name = "\"Dataset\"")
@NamedEntityGraphs({
@NamedEntityGraph(
name = "datasetListingModel",
attributeNodes = {/*@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"),
@NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"),*/
@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode(value = "profile", subgraph = "profile"), @NamedAttributeNode("creator")},
subgraphs = {
@NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users"), @NamedAttributeNode("grant"), @NamedAttributeNode("organisations")}),
@NamedSubgraph(name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode("dataRepository")}),
@NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")}),
@NamedSubgraph(name = "profile", attributeNodes = {@NamedAttributeNode("label")})
}),
@NamedEntityGraph(
name = "datasetWizardModel",
attributeNodes = {@NamedAttributeNode("services"), @NamedAttributeNode("datasetDataRepositories"), @NamedAttributeNode("datasetExternalDatasets"), @NamedAttributeNode("registries"),
@NamedAttributeNode("dmp"), @NamedAttributeNode("profile"), @NamedAttributeNode("creator")}),
@NamedEntityGraph(
name = "datasetRecentActivity",
attributeNodes = {@NamedAttributeNode(value = "dmp", subgraph = "dmp")},
subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("users")})),
@NamedEntityGraph(
name = "datasetDataRepositories",
attributeNodes = {@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("creator")},
subgraphs = @NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users")})),
@NamedEntityGraph(
name = "recentDatasetModel",
attributeNodes = {@NamedAttributeNode("services"), @NamedAttributeNode(value = "datasetDataRepositories", subgraph = "datasetDataRepositories"),
@NamedAttributeNode(value = "datasetExternalDatasets", subgraph = "datasetExternalDatasets"), @NamedAttributeNode("registries"),
@NamedAttributeNode(value = "dmp", subgraph = "dmp"), @NamedAttributeNode("profile"), @NamedAttributeNode("creator")},
subgraphs = {
@NamedSubgraph(name = "dmp", attributeNodes = {@NamedAttributeNode("creator"), @NamedAttributeNode("users"), @NamedAttributeNode("grant"), @NamedAttributeNode("organisations")}),
@NamedSubgraph(name = "datasetDataRepositories", attributeNodes = {@NamedAttributeNode("dataRepository")}),
@NamedSubgraph(name = "datasetExternalDatasets", attributeNodes = {@NamedAttributeNode("externalDataset")})
})
})
public class Dataset implements DataEntity<Dataset, UUID> {
public static Set<String> getHints() {
return hints;
}
private static final Set<String> hints = new HashSet<>(Arrays.asList("datasetListingModel"));
public enum Status {
SAVED((short) 0), FINALISED((short) 1), CANCELED((short) 2), DELETED((short) 99),;
private short value;
private Status(short value) {
this.value = value;
}
public short getValue() {
return value;
}
public static Status fromInteger(int value) {
switch (value) {
case 0:
return SAVED;
case 1:
return FINALISED;
case 2:
return CANCELED;
case 99:
return DELETED;
default:
throw new RuntimeException("Unsupported Dataset Status");
}
}
}
@Id
@GeneratedValue
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "\"ID\"", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
@Column(name = "\"Label\"", nullable = false)
private String label;
@ManyToOne(fetch = FetchType.LAZY)
// @Cascade(value=org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "\"DMP\"", nullable = false)
private DMP dmp;
@Column(name = "\"DmpSectionIndex\"")
private Integer dmpSectionIndex;
@Column(name = "\"Uri\"")
private String uri;
@Type(eu.eudat.configurations.typedefinition.XMLType.class)
@Column(name = "\"Properties\"", columnDefinition = "xml")
private String properties;
@ManyToOne(fetch = FetchType.LAZY)
//@Cascade(value=org.hibernate.annotations.CascadeType.ALL)
@JoinColumn(name = "\"Profile\"")
private DescriptionTemplateEntity profile;
@Type(eu.eudat.configurations.typedefinition.XMLType.class)
@Column(name = "\"Reference\"", columnDefinition = "xml")
private String reference;
@OneToMany(fetch = FetchType.LAZY)
@JoinTable(name = "\"DatasetRegistry\"",
joinColumns = {@JoinColumn(name = "\"Dataset\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns = {@JoinColumn(name = "\"Registry\"", referencedColumnName = "\"ID\"")}
)
private Set<Registry> registries;
@OneToMany(mappedBy = "dataset", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<DatasetDataRepository> datasetDataRepositories;
@OneToMany(mappedBy = "dataset", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<DatasetService> services;
@OneToMany(mappedBy = "dataset", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<DatasetExternalDataset> datasetExternalDatasets;
@Column(name = "\"Status\"", nullable = false)
private Short status;
@Column(name = "\"Created\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date created = null;
@Column(name = "\"Modified\"", nullable = false)
@Convert(converter = DateToUTCConverter.class)
private Date modified = new Date();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "\"Creator\"")
private UserInfo creator;
@Column(name = "\"Description\"")
private String description;
@Column(name= "\"FinalizedAt\"")
@Convert(converter = DateToUTCConverter.class)
private Date finalizedAt;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public UserInfo getCreator() {
return creator;
}
public void setCreator(UserInfo creator) {
this.creator = creator;
}
public Short getStatus() {
return status;
}
public void setStatus(Short status) {
this.status = status;
}
public Date getCreated() {
return created;
}
public void setCreated(Date created) {
this.created = created;
}
public Date getModified() {
return modified;
}
public void setModified(Date modified) {
this.modified = modified;
}
public Set<Registry> getRegistries() {
return registries;
}
public void setRegistries(Set<Registry> registries) {
this.registries = registries;
}
public Set<DatasetService> getServices() {
return services;
}
public void setServices(Set<DatasetService> services) {
this.services = services;
}
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public DMP getDmp() {
return dmp;
}
public void setDmp(DMP dmp) {
this.dmp = dmp;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getProperties() {
return properties;
}
public void setProperties(String properties) {
this.properties = properties;
}
public DescriptionTemplateEntity getProfile() {
return profile;
}
public void setProfile(DescriptionTemplateEntity profile) {
this.profile = profile;
}
public Set<DatasetDataRepository> getDatasetDataRepositories() {
return datasetDataRepositories;
}
public void setDatasetDataRepositories(Set<DatasetDataRepository> datasetDataRepositories) {
this.datasetDataRepositories = datasetDataRepositories;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public Set<DatasetExternalDataset> getDatasetExternalDatasets() {
return datasetExternalDatasets;
}
public void setDatasetExternalDatasets(Set<DatasetExternalDataset> datasetExternalDatasets) {
this.datasetExternalDatasets = datasetExternalDatasets;
}
public Date getFinalizedAt() {
return finalizedAt;
}
public void setFinalizedAt(Date finalizedAt) {
this.finalizedAt = finalizedAt;
}
@Override
public void update(Dataset entity) {
this.setUri(entity.getUri());
this.setDescription(entity.getDescription());
this.setLabel(entity.getLabel());
this.setProperties(entity.getProperties());
if (entity.getDatasetDataRepositories() == null || entity.getDatasetDataRepositories().size() < 1) {
if (this.getDatasetDataRepositories() != null) this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories());
} else {
if (this.getDatasetDataRepositories() != null) {
this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories());
} else {
this.setDatasetDataRepositories(new HashSet<>());
}
this.getDatasetDataRepositories().addAll(entity.getDatasetDataRepositories().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
}
if (entity.getDatasetExternalDatasets() == null || entity.getDatasetExternalDatasets().size() < 1) {
if (this.getDatasetExternalDatasets() != null) this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets());
} else {
if (this.getDatasetExternalDatasets() != null) {
this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets());
} else {
this.setDatasetExternalDatasets(new HashSet<>());
}
this.getDatasetExternalDatasets().addAll(entity.getDatasetExternalDatasets().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
}
if (entity.getServices() == null || entity.getServices().size() < 1) {
if (this.getServices() != null) this.getServices().removeAll(this.getServices());
} else {
if (this.getServices() != null) {
this.getServices().removeAll(this.getServices());
} else {
this.setServices(new HashSet<>());
}
this.getServices().addAll(entity.getServices().stream().peek(item -> item.setDataset(this)).collect(Collectors.toList()));
}
this.setRegistries(entity.getRegistries());
this.setDmp(entity.getDmp());
this.setDmpSectionIndex(entity.getDmpSectionIndex());
this.setStatus(entity.getStatus());
this.setProfile(entity.getProfile());
this.setModified(new Date());
if (entity.getStatus().equals(Status.FINALISED.getValue())) this.setFinalizedAt(new Date());
if (entity.getCreator() != null) this.creator = entity.getCreator();
}
@Override
public UUID getKeys() {
return this.id;
}
@Override
public Dataset buildFromTuple(List<Tuple> tuple, List<String> fields, String base) {
String currentBase = base.isEmpty() ? "" : base + ".";
if (fields.contains(currentBase + "id")) this.id = EntityBinder.fromTuple(tuple, currentBase + "id");
return this;
}
}

View File

@ -1,5 +1,6 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
@ -24,7 +25,7 @@ public class DatasetDataRepository implements DataEntity<DatasetDataRepository,
@ManyToOne
@JoinColumn(name = "\"Dataset\"", nullable = false)
private Dataset dataset;
private DescriptionEntity descriptionEntity;
@ManyToOne
@JoinColumn(name = "\"DataRepository\"", nullable = false)
@ -44,12 +45,12 @@ public class DatasetDataRepository implements DataEntity<DatasetDataRepository,
this.id = id;
}
public Dataset getDataset() {
return dataset;
public DescriptionEntity getDataset() {
return descriptionEntity;
}
public void setDataset(Dataset dataset) {
this.dataset = dataset;
public void setDataset(DescriptionEntity descriptionEntity) {
this.descriptionEntity = descriptionEntity;
}
public DataRepository getDataRepository() {
@ -78,7 +79,7 @@ public class DatasetDataRepository implements DataEntity<DatasetDataRepository,
@Override
public void update(DatasetDataRepository entity) {
this.dataset = entity.getDataset();
this.descriptionEntity = entity.getDataset();
this.dataRepository = entity.getDataRepository();
this.role = entity.getRole();
}

View File

@ -1,5 +1,6 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
@ -21,7 +22,7 @@ public class DatasetExternalDataset implements DataEntity<DatasetExternalDataset
@ManyToOne
@JoinColumn(name = "\"Dataset\"", nullable = false)
private Dataset dataset;
private DescriptionEntity descriptionEntity;
@ManyToOne
@JoinColumn(name = "\"ExternalDataset\"", nullable = false)
@ -42,12 +43,12 @@ public class DatasetExternalDataset implements DataEntity<DatasetExternalDataset
this.id = id;
}
public Dataset getDataset() {
return dataset;
public DescriptionEntity getDataset() {
return descriptionEntity;
}
public void setDataset(Dataset dataset) {
this.dataset = dataset;
public void setDataset(DescriptionEntity descriptionEntity) {
this.descriptionEntity = descriptionEntity;
}
public ExternalDataset getExternalDataset() {
@ -76,7 +77,7 @@ public class DatasetExternalDataset implements DataEntity<DatasetExternalDataset
@Override
public void update(DatasetExternalDataset entity) {
this.dataset = entity.getDataset();
this.descriptionEntity = entity.getDataset();
this.externalDataset = entity.getExternalDataset();
this.role = entity.getRole();
}

View File

@ -1,6 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.queryable.queryableentity.DataEntity;
import org.hibernate.annotations.GenericGenerator;
@ -22,7 +23,7 @@ public class DatasetService implements DataEntity<DatasetService, UUID> {
@ManyToOne
@JoinColumn(name = "\"Dataset\"", nullable = false)
private Dataset dataset;
private DescriptionEntity descriptionEntity;
@ManyToOne
@JoinColumn(name = "\"Service\"", nullable = false)
@ -43,12 +44,12 @@ public class DatasetService implements DataEntity<DatasetService, UUID> {
this.id = id;
}
public Dataset getDataset() {
return dataset;
public DescriptionEntity getDataset() {
return descriptionEntity;
}
public void setDataset(Dataset dataset) {
this.dataset = dataset;
public void setDataset(DescriptionEntity descriptionEntity) {
this.descriptionEntity = descriptionEntity;
}
public Service getService() {
@ -77,7 +78,7 @@ public class DatasetService implements DataEntity<DatasetService, UUID> {
@Override
public void update(DatasetService entity) {
this.dataset = entity.getDataset();
this.descriptionEntity = entity.getDataset();
this.service = entity.getService();
this.role = entity.getRole();
}

View File

@ -1,6 +1,7 @@
package eu.eudat.data.old;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.old.helpers.EntityBinder;
import eu.eudat.queryable.queryableentity.DataEntity;
@ -42,7 +43,7 @@ public class Registry implements DataEntity<Registry, UUID> {
joinColumns = {@JoinColumn(name = "\"Registry\"", referencedColumnName = "\"ID\"")},
inverseJoinColumns = {@JoinColumn(name = "\"Dataset\"", referencedColumnName = "\"ID\"")}
)
private Set<Dataset> datasets;
private Set<DescriptionEntity> descriptionEntities;
@Column(name = "\"Status\"", nullable = false)
private Short status;
@ -123,11 +124,11 @@ public class Registry implements DataEntity<Registry, UUID> {
this.definition = definition;
}
public Set<Dataset> getDatasets() {
return datasets;
public Set<DescriptionEntity> getDatasets() {
return descriptionEntities;
}
public void setDatasets(Set<Dataset> datasets) {
this.datasets = datasets;
public void setDatasets(Set<DescriptionEntity> descriptionEntities) {
this.descriptionEntities = descriptionEntities;
}
public UserInfo getCreationUser() {

View File

@ -3,14 +3,12 @@ package eu.eudat.model.builder;
import eu.eudat.authorization.AuthorizationFlags;
import eu.eudat.convention.ConventionService;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DmpEntity;
import eu.eudat.model.Description;
import eu.eudat.model.DescriptionReference;
import eu.eudat.model.Dmp;
import eu.eudat.model.DmpReference;
import eu.eudat.query.DescriptionReferenceQuery;
import eu.eudat.query.DmpQuery;
import eu.eudat.query.DmpReferenceQuery;
import gr.cite.tools.data.builder.BuilderFactory;
import gr.cite.tools.data.query.QueryFactory;
import gr.cite.tools.exception.MyApplicationException;

View File

@ -1,6 +1,6 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.elastic.entities.Tag;
import java.util.Date;
@ -8,7 +8,7 @@ import java.util.List;
import java.util.UUID;
public class DatasetCriteria extends Criteria<Dataset> {
public class DatasetCriteria extends Criteria<DescriptionEntity> {
private Integer status;
private Date periodStart;
private Date periodEnd;

View File

@ -1,6 +1,6 @@
package eu.eudat.data.dao.criteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.elastic.entities.Tag;
import eu.eudat.types.grant.GrantStateType;
@ -10,7 +10,7 @@ import java.util.UUID;
/**
* Created by ikalyvas on 10/2/2018.
*/
public class DatasetPublicCriteria extends Criteria<Dataset>{
public class DatasetPublicCriteria extends Criteria<DescriptionEntity>{
private GrantStateType grantStatus;
private List<UUID> grants;
private List<UUID> datasetProfile;

View File

@ -2,7 +2,7 @@ package eu.eudat.data.dao.entities;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.dao.criteria.DatasetCriteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.UserInfo;
import eu.eudat.queryable.QueryableList;
@ -10,14 +10,14 @@ import javax.management.InvalidApplicationException;
import java.util.List;
import java.util.UUID;
public interface DatasetDao extends DatabaseAccessLayer<Dataset, UUID> {
public interface DatasetDao extends DatabaseAccessLayer<DescriptionEntity, UUID> {
QueryableList<Dataset> getWithCriteria(DatasetCriteria criteria);
QueryableList<DescriptionEntity> getWithCriteria(DatasetCriteria criteria);
QueryableList<Dataset> filterFromElastic(DatasetCriteria criteria, List<UUID> ids);
QueryableList<DescriptionEntity> filterFromElastic(DatasetCriteria criteria, List<UUID> ids);
QueryableList<Dataset> getAuthenticated(QueryableList<Dataset> query, UserInfo principal, List<Integer> roles);
QueryableList<DescriptionEntity> getAuthenticated(QueryableList<DescriptionEntity> query, UserInfo principal, List<Integer> roles);
Dataset isPublicDataset(UUID id) throws InvalidApplicationException;
DescriptionEntity isPublicDataset(UUID id) throws InvalidApplicationException;
}

View File

@ -1,10 +1,12 @@
package eu.eudat.data.dao.entities;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.dao.DatabaseAccess;
import eu.eudat.data.dao.criteria.DatasetCriteria;
import eu.eudat.data.dao.databaselayer.service.DatabaseService;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.UserInfo;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.types.FieldSelectionType;
@ -25,17 +27,17 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@Component("datasetDao")
public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDao {
public class DatasetDaoImpl extends DatabaseAccess<DescriptionEntity> implements DatasetDao {
@Autowired
public DatasetDaoImpl(DatabaseService<Dataset> databaseService) { super(databaseService); }
public DatasetDaoImpl(DatabaseService<DescriptionEntity> databaseService) { super(databaseService); }
@Override
public QueryableList<Dataset> getWithCriteria(DatasetCriteria criteria) {
QueryableList<Dataset> query = getDatabaseService().getQueryable(Dataset.getHints(), Dataset.class);
public QueryableList<DescriptionEntity> getWithCriteria(DatasetCriteria criteria) {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
if (criteria.getIsPublic() != null && criteria.getIsPublic()) {
query.where((builder, root) -> builder.equal(root.get("dmp").get("isPublic"), true));
query.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED.getValue()));
query.where((builder, root) -> builder.equal(root.get("status"), DescriptionStatus.Finalized));
/*query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"),
query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")),
Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));*/
@ -83,13 +85,13 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
if (criteria.hasDoi()) {
query.where((builder, root) -> builder.not(builder.isNull(root.join("dmp").join("dois").get("id"))));
}
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()));
query.where((builder, root) -> builder.notEqual(root.get(DescriptionEntity._isActive), IsActive.Inactive));
query.where((builder, root) -> builder.notEqual(root.get("status"), DescriptionStatus.Canceled));
return query;
}
public QueryableList<Dataset> filterFromElastic(DatasetCriteria criteria, List<UUID> ids) {
QueryableList<Dataset> query = getDatabaseService().getQueryable(Dataset.getHints(), Dataset.class);
public QueryableList<DescriptionEntity> filterFromElastic(DatasetCriteria criteria, List<UUID> ids) {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
query.where(((builder, root) -> root.get("id").in(ids)));
if (!criteria.getAllVersions())
@ -99,32 +101,32 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
}
@Override
public Dataset createOrUpdate(Dataset item) {
return getDatabaseService().createOrUpdate(item, Dataset.class);
public DescriptionEntity createOrUpdate(DescriptionEntity item) {
return getDatabaseService().createOrUpdate(item, DescriptionEntity.class);
}
@Override
public Dataset find(UUID id) throws InvalidApplicationException {
return getDatabaseService().getQueryable(Dataset.class)
.where((builder, root) -> builder.and(builder.notEqual(root.get("status"),Dataset.Status.DELETED.getValue()), builder.notEqual(root.get("status"),Dataset.Status.CANCELED.getValue()), builder.equal((root.get("id")), id))).getSingle();
public DescriptionEntity find(UUID id) throws InvalidApplicationException {
return getDatabaseService().getQueryable(DescriptionEntity.class)
.where((builder, root) -> builder.and(builder.notEqual(root.get(DescriptionEntity._isActive), IsActive.Inactive), builder.notEqual(root.get("status"), DescriptionStatus.Canceled), builder.equal((root.get("id")), id))).getSingle();
}
@Override
public Dataset find(UUID id, String hint) throws InvalidApplicationException {
return getDatabaseService().getQueryable(Dataset.getHints(), Dataset.class).withHint(hint)
.where((builder, root) -> builder.and(builder.notEqual(root.get("status"),Dataset.Status.DELETED.getValue()), builder.notEqual(root.get("status"),Dataset.Status.CANCELED.getValue()), builder.equal((root.get("id")), id))).getSingle();
public DescriptionEntity find(UUID id, String hint) throws InvalidApplicationException {
return getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class).withHint(hint)
.where((builder, root) -> builder.and(builder.notEqual(root.get(DescriptionEntity._isActive), IsActive.Inactive), builder.notEqual(root.get("status"), DescriptionStatus.Canceled), builder.equal((root.get("id")), id))).getSingle();
}
@Override
public Dataset isPublicDataset(UUID id) throws InvalidApplicationException {
QueryableList<Dataset> query = getDatabaseService().getQueryable(Dataset.getHints(), Dataset.class);
public DescriptionEntity isPublicDataset(UUID id) throws InvalidApplicationException {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
query.where(((builder, root) -> builder.equal(root.get("id"), id)));
return query.withHint("datasetListingModel").getSingle();
}
@Override
public QueryableList<Dataset> getAuthenticated(QueryableList<Dataset> query, UserInfo principal, List<Integer> roles) {
public QueryableList<DescriptionEntity> getAuthenticated(QueryableList<DescriptionEntity> query, UserInfo principal, List<Integer> roles) {
if (roles != null && !roles.isEmpty()) {
query.where((builder, root) -> {
Join userJoin = root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT);
@ -138,17 +140,17 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
}
@Override
public void delete(Dataset item) {
public void delete(DescriptionEntity item) {
this.getDatabaseService().delete(item);
}
@Override
public QueryableList<Dataset> asQueryable() {
return this.getDatabaseService().getQueryable(Dataset.class);
public QueryableList<DescriptionEntity> asQueryable() {
return this.getDatabaseService().getQueryable(DescriptionEntity.class);
}
@Async
public CompletableFuture<Dataset> createOrUpdateAsync(Dataset item) {
public CompletableFuture<DescriptionEntity> createOrUpdateAsync(DescriptionEntity item) {
return CompletableFuture.supplyAsync(() -> this.createOrUpdate(item));
}
}

View File

@ -1,7 +1,9 @@
package eu.eudat.data.query.items.table.dataset;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.dao.criteria.DatasetPublicCriteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.types.FieldSelectionType;
@ -15,12 +17,12 @@ import java.util.UUID;
/**
* Created by ikalyvas on 10/2/2018.
*/
public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria, Dataset, UUID> {
public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria, DescriptionEntity, UUID> {
@Override
public QueryableList<Dataset> applyCriteria() {
QueryableList<Dataset> query = this.getQuery();
public QueryableList<DescriptionEntity> applyCriteria() {
QueryableList<DescriptionEntity> query = this.getQuery();
query.where((builder, root) -> builder.equal(root.get("dmp").get("isPublic"), true));
query.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED.getValue()));
query.where((builder, root) -> builder.equal(root.get("status"), DescriptionStatus.Finalized.getValue()));
query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"),
query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")),
Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
@ -45,12 +47,12 @@ public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria,
.where(((builder, root) -> root.get("profile").get("id").in(this.getCriteria().getDatasetProfile())));
if (this.getCriteria().getDmpOrganisations() != null && !this.getCriteria().getDmpOrganisations().isEmpty()) query
.where(((builder, root) -> root.join("dmp").join("organisations").get("reference").in(this.getCriteria().getDmpOrganisations())));
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
query.where((builder, root) -> builder.notEqual(root.get(DescriptionEntity._isActive), IsActive.Inactive));
return query;
}
@Override
public QueryableList<Dataset> applyPaging(QueryableList<Dataset> items) {
public QueryableList<DescriptionEntity> applyPaging(QueryableList<DescriptionEntity> items) {
return null;
}
}

View File

@ -1,7 +1,8 @@
package eu.eudat.data.query.items.table.dataset;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.dao.criteria.DatasetCriteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.types.FieldSelectionType;
@ -10,10 +11,10 @@ import eu.eudat.queryable.types.SelectionField;
import java.util.Arrays;
import java.util.UUID;
public class DatasetTableRequest extends TableQuery<DatasetCriteria, Dataset, UUID> {
public class DatasetTableRequest extends TableQuery<DatasetCriteria, DescriptionEntity, UUID> {
@Override
public QueryableList<Dataset> applyCriteria() {
QueryableList<Dataset> query = this.getQuery();
public QueryableList<DescriptionEntity> applyCriteria() {
QueryableList<DescriptionEntity> query = this.getQuery();
if (this.getCriteria().getLike() != null && !this.getCriteria().getLike().isEmpty())
query.where((builder, root) -> builder.or(
builder.like(builder.upper(root.get("label")), "%" + this.getCriteria().getLike().toUpperCase() + "%"),
@ -28,12 +29,12 @@ public class DatasetTableRequest extends TableQuery<DatasetCriteria, Dataset, UU
query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"), query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")), Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
if (this.getCriteria().getDmpIds() != null && !this.getCriteria().getDmpIds().isEmpty())
query.where((builder, root) -> root.get("dmp").get("id").in(this.getCriteria().getDmpIds()));
query.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED));
query.where((builder, root) -> builder.equal(root.get("status"), DescriptionStatus.Finalized));
return query;
}
@Override
public QueryableList<Dataset> applyPaging(QueryableList<Dataset> items) {
public QueryableList<DescriptionEntity> applyPaging(QueryableList<DescriptionEntity> items) {
return null;
}
}

View File

@ -2,7 +2,7 @@ package eu.eudat.query;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.Grant;
import eu.eudat.data.old.UserInfo;
import eu.eudat.queryable.QueryableList;
@ -134,7 +134,7 @@ public class DMPQuery extends Query<DMP, UUID> {
query.where((builder, root) -> root.get("creator").get("id").in(userInfoSubQuery));
}
if(this.datasetQuery != null){
Subquery<Dataset> datasetSubQuery = this.datasetQuery.getQuery().query(Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:id")));
Subquery<DescriptionEntity> datasetSubQuery = this.datasetQuery.getQuery().query(Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:id")));
query.where((builder, root) -> root.get("id").in(datasetSubQuery ));
}
if (!this.getSelectionFields().isEmpty() && this.getSelectionFields() != null) {

View File

@ -2,7 +2,7 @@ package eu.eudat.query;
import eu.eudat.data.dao.DatabaseAccessLayer;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.queryable.QueryableList;
import eu.eudat.queryable.types.FieldSelectionType;
import eu.eudat.queryable.types.SelectionField;
@ -14,17 +14,17 @@ import java.util.Arrays;
import java.util.List;
import java.util.UUID;
public class DatasetQuery extends Query<Dataset, UUID> {
public class DatasetQuery extends Query<DescriptionEntity, UUID> {
private UUID id;
private String label;
private DMPQuery dmpQuery;
public DatasetQuery(DatabaseAccessLayer<Dataset, UUID> databaseAccessLayer) {
public DatasetQuery(DatabaseAccessLayer<DescriptionEntity, UUID> databaseAccessLayer) {
super(databaseAccessLayer);
}
public DatasetQuery(DatabaseAccessLayer<Dataset, UUID> databaseAccessLayer, List<String> selectionFields) {
public DatasetQuery(DatabaseAccessLayer<DescriptionEntity, UUID> databaseAccessLayer, List<String> selectionFields) {
super(databaseAccessLayer, selectionFields);
}
@ -53,8 +53,8 @@ public class DatasetQuery extends Query<Dataset, UUID> {
}
@Override
public QueryableList<Dataset> getQuery() throws InvalidApplicationException {
QueryableList<Dataset> query = this.databaseAccessLayer.asQueryable();
public QueryableList<DescriptionEntity> getQuery() throws InvalidApplicationException {
QueryableList<DescriptionEntity> query = this.databaseAccessLayer.asQueryable();
if (this.id != null) {
query.where((builder, root) -> builder.equal(root.get("id"), this.id));
}

View File

@ -7,7 +7,7 @@ import eu.eudat.criteria.DMPCriteria;
import eu.eudat.data.dao.criteria.DynamicFieldsCriteria;
import eu.eudat.data.dao.criteria.RequestItem;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem;
import eu.eudat.data.query.items.table.dmp.DataManagementPlanTableRequest;
import eu.eudat.exceptions.datamanagementplan.DMPNewVersionException;
@ -31,7 +31,6 @@ import eu.eudat.models.data.listingmodels.UserInfoListingModel;
import eu.eudat.models.data.listingmodels.VersionListingModel;
import eu.eudat.query.DMPQuery;
import eu.eudat.types.ApiMessageCode;
import eu.eudat.types.Authorities;
import gr.cite.commons.web.authz.service.AuthorizationService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -373,21 +372,21 @@ public class DMPs extends BaseController {
@Transactional
@RequestMapping(method = RequestMethod.POST, value = {"/index"})
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> generateIndex() throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> generateIndex() throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
this.dataManagementPlanManager.generateIndex();
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Generated").payload(null));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Generated").payload(null));
}
@Transactional
@RequestMapping(method = RequestMethod.DELETE, value = {"/index"})
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> clearIndex() throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> clearIndex() throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
this.dataManagementPlanManager.clearIndex();
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Cleared").payload(null));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Cleared").payload(null));
}
/*

View File

@ -38,7 +38,7 @@ public class DatasetProfileController extends BaseController {
/* @Transactional
@RequestMapping(method = RequestMethod.POST, value = {"/datasetprofile/save/{id}"}, consumes = "application/json", produces = "application/json")
public ResponseEntity<Object> updateDataset(@PathVariable String id, @RequestBody PropertiesModel properties) {
eu.eudat.data.old.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(id));
eu.eudat.data.Dataset dataset = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao().find(UUID.fromString(id));
Map<String, Object> values = new HashMap<>();
properties.toMap(values);
JSONObject jobject = new JSONObject(values);

View File

@ -2,7 +2,7 @@ package eu.eudat.controllers;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest;
import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest;
@ -289,33 +289,33 @@ public class Datasets extends BaseController {
@Transactional
@RequestMapping(method = RequestMethod.GET, value = {"/makepublic/{id}"}, produces = "application/json")
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> makePublic(@PathVariable UUID id, Locale locale) throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> makePublic(@PathVariable UUID id, Locale locale) throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
this.datasetManager.makePublic(this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetDao(), id);
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message(this.getApiContext().getHelpersService().getMessageSource().getMessage("dataset.public", new Object[]{}, locale)));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message(this.getApiContext().getHelpersService().getMessageSource().getMessage("dataset.public", new Object[]{}, locale)));
}
@Transactional
@RequestMapping(method = RequestMethod.DELETE, value = {"/delete/{id}"}, produces = "application/json")
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> delete(@PathVariable(value = "id") UUID id) throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> delete(@PathVariable(value = "id") UUID id) throws Exception {
new DatasetWizardManager().delete(this.getApiContext(), id);
this.fileManager.markAllFilesOfEntityIdAsDeleted(id);
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Deleted"));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Deleted"));
}
@Transactional
@RequestMapping(method = RequestMethod.GET, value = {"/{id}/unlock"}, produces = "application/json")
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> unlock(@PathVariable(value = "id") UUID id) throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> unlock(@PathVariable(value = "id") UUID id) throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
try {
new DatasetWizardManager().unlock(this.getApiContext(), id);
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Unlocked"));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Unlocked"));
} catch (DatasetWizardCannotUnlockException datasetWizardCannotUnlockException) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem<Dataset>().status(ApiMessageCode.ERROR_MESSAGE).message(datasetWizardCannotUnlockException.getMessage()));
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.ERROR_MESSAGE).message(datasetWizardCannotUnlockException.getMessage()));
}
}
@ -324,8 +324,8 @@ public class Datasets extends BaseController {
ResponseEntity<ResponseItem<Boolean>> validate(@PathVariable(value = "id") UUID id) throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
Dataset dataset = datasetManager.getEntitySingle(id);
String failedField = datasetManager.checkDatasetValidation(dataset);
DescriptionEntity descriptionEntity = datasetManager.getEntitySingle(id);
String failedField = datasetManager.checkDatasetValidation(descriptionEntity);
if (failedField == null) {
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Boolean>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Valid"));
} else {
@ -342,8 +342,8 @@ public class Datasets extends BaseController {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
try {
Dataset dataset = this.datasetManager.createDatasetFromXml(file, dmpId, datasetProfileId);
if (dataset != null){
DescriptionEntity descriptionEntity = this.datasetManager.createDatasetFromXml(file, dmpId, datasetProfileId);
if (descriptionEntity != null){
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE));
}
else {
@ -362,21 +362,21 @@ public class Datasets extends BaseController {
@Transactional
@RequestMapping(method = RequestMethod.POST, value = {"/index"})
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> generateIndex() throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> generateIndex() throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
this.datasetManager.generateIndex();
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Generated").payload(null));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Generated").payload(null));
}
@Transactional
@RequestMapping(method = RequestMethod.DELETE, value = {"/index"})
public @ResponseBody
ResponseEntity<ResponseItem<Dataset>> clearIndex() throws Exception {
ResponseEntity<ResponseItem<DescriptionEntity>> clearIndex() throws Exception {
this.authorizationService.authorizeForce(Permission.AuthenticatedRole);
this.datasetManager.clearIndex();
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<Dataset>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Cleared").payload(null));
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DescriptionEntity>().status(ApiMessageCode.SUCCESS_MESSAGE).message("Cleared").payload(null));
}

View File

@ -1,8 +1,5 @@
package eu.eudat.controllers;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.authorization.AuthorizationFlags;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.XmlHandlingService;
@ -10,29 +7,27 @@ import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
import eu.eudat.commons.types.descriptiontemplate.FieldSetEntity;
import eu.eudat.commons.types.descriptiontemplate.SectionEntity;
import eu.eudat.commons.types.descriptiontemplate.fielddata.UploadDataEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DmpEntity;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.FileUpload;
import eu.eudat.exceptions.security.UnauthorisedException;
import eu.eudat.logic.managers.DatasetProfileManager;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.services.operations.DatabaseRepository;
import eu.eudat.logic.utilities.documents.helpers.FileEnvelope;
import eu.eudat.logic.utilities.json.JsonSearcher;
import eu.eudat.models.HintedModelFactory;
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
import eu.eudat.models.data.helpers.responses.ResponseItem;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.query.DmpQuery;
import eu.eudat.types.ApiMessageCode;
import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.tools.data.query.QueryFactory;
import jakarta.xml.bind.JAXBException;
import org.apache.poi.util.IOUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpHeaders;
@ -40,7 +35,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.unit.DataSize;
import org.springframework.util.unit.DataUnit;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@ -147,11 +141,14 @@ public class FileController {
}
if(fileUpload.getEntityType().name().equals(FileUpload.EntityType.DATASET.name())) {
Dataset datasetEntity = databaseRepository.getDatasetDao().find(fileUpload.getEntityId(), HintedModelFactory.getHint(DatasetWizardModel.class));
if (datasetEntity == null) {
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(fileUpload.getEntityId(), HintedModelFactory.getHint(DatasetWizardModel.class));
if (descriptionEntityEntity == null) {
throw new NoSuchElementException("No dataset with id " + fileUpload.getEntityId() + " found. This dataset was related to the file with id " + id);
}
if (!datasetEntity.getDmp().isPublic() && datasetEntity.getDmp().getUsers()
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (!dmp.isPublic() && dmp.getUsers()
.stream().filter(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId()))
.collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();

View File

@ -3,6 +3,7 @@ package eu.eudat.controllers.v2;
import com.fasterxml.jackson.core.JsonProcessingException;
import eu.eudat.audit.AuditableAction;
import eu.eudat.authorization.AuthorizationFlags;
import eu.eudat.authorization.Permission;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.model.DescriptionTemplate;
import eu.eudat.model.DmpBlueprint;
@ -12,9 +13,11 @@ import eu.eudat.model.censorship.DmpBlueprintCensor;
import eu.eudat.model.persist.DescriptionTemplatePersist;
import eu.eudat.model.persist.NewVersionDescriptionTemplatePersist;
import eu.eudat.model.result.QueryResult;
import eu.eudat.models.data.helpers.responses.ResponseItem;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.query.lookup.DescriptionTemplateLookup;
import eu.eudat.service.descriptiontemplate.DescriptionTemplateService;
import eu.eudat.types.ApiMessageCode;
import gr.cite.tools.auditing.AuditService;
import gr.cite.tools.data.builder.BuilderFactory;
import gr.cite.tools.data.censor.CensorFactory;
@ -30,6 +33,7 @@ import jakarta.xml.bind.JAXBException;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.transaction.annotation.Transactional;

View File

@ -1,5 +1,7 @@
package eu.eudat.logic.managers;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.dao.criteria.DataManagementPlanCriteria;
import eu.eudat.data.dao.criteria.DatasetCriteria;
@ -10,7 +12,7 @@ import eu.eudat.data.dao.entities.DatasetDao;
import eu.eudat.data.dao.entities.GrantDao;
import eu.eudat.data.dao.entities.OrganisationDao;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.Grant;
import eu.eudat.data.old.UserInfo;
import eu.eudat.data.query.items.table.dataset.DatasetTableRequest;
@ -97,7 +99,7 @@ public class DashBoardManager {
LinkedList<Grant> grants = new LinkedList<>();
for (DMP dmp : dmps) {
numberOfDatasets = numberOfDatasets + dmp.getDataset().stream()
.filter(item -> item.getStatus() == Dataset.Status.FINALISED.getValue()).count();
.filter(item -> item.getStatus() == DescriptionStatus.Finalized).count();
if (dmp.getGrant() != null) {
grants.add(dmp.getGrant());
}
@ -206,7 +208,7 @@ public class DashBoardManager {
.withHint("datasetRecentActivity")
.orderBy((builder, root) -> builder.desc(root.get("modified")))
.take(numberofactivities)
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(Date.from(item.getUpdatedAt())).id(item.getId().toString()).build())
.whenComplete((datasetActivities, throwable) -> activity.setRecentDatasetActivities(datasetActivities));
CompletableFuture<List<RecentActivityData>> grants = grantRepository.getAuthenticated(grantRepository.getWithCriteria(grantCriteria), user)
@ -317,7 +319,7 @@ public class DashBoardManager {
CompletableFuture<List<SearchBarItem>> publicDatasets = datasetRepository.asQueryable()
.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + like.toUpperCase() + "%"))
.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED.getValue()))
.where((builder, root) -> builder.equal(root.get("status"), DescriptionStatus.Finalized))
.where((builder, root) -> builder.equal(root.get("dmp").get("isPublic"), true))
.orderBy((builder, root) -> builder.desc(root.get("modified")))
.selectAsync(item -> new SearchBarItem(item.getId().toString(), item.getLabel(), SearchBarItemType.DATASET.getValue(), true))
@ -335,8 +337,8 @@ public class DashBoardManager {
CompletableFuture<List<SearchBarItem>> datasets = datasetRepository.getAuthenticated(datasetRepository.asQueryable(), user, roles)
.withHint("datasetRecentActivity")
.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + like.toUpperCase() + "%"))
.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()))
.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()))
.where((builder, root) -> builder.notEqual(root.get(DescriptionEntity._isActive), IsActive.Inactive))
.where((builder, root) -> builder.notEqual(root.get("status"), DescriptionStatus.Canceled))
.orderBy((builder, root) -> builder.desc(root.get("modified")))
.selectAsync(item -> new SearchBarItem(item.getId().toString(), item.getLabel(), SearchBarItemType.DATASET.getValue(), false))
.whenComplete((dataSetItems, throwable) -> searchBarItems.addAll(dataSetItems));

View File

@ -4,11 +4,12 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.XmlHandlingService;
import eu.eudat.commons.enums.*;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.commons.enums.EntityType;
import eu.eudat.commons.types.dmpblueprint.*;
import eu.eudat.configurations.dynamicgrant.DynamicGrantConfiguration;
import eu.eudat.configurations.dynamicgrant.entities.Property;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DmpBlueprintEntity;
import eu.eudat.data.EntityDoiEntity;
import eu.eudat.data.dao.criteria.*;
@ -59,8 +60,6 @@ import eu.eudat.models.data.dmp.*;
import eu.eudat.models.data.doi.DepositRequest;
import eu.eudat.models.data.doi.Doi;
import eu.eudat.models.data.dynamicfields.DynamicFieldWithValue;
import eu.eudat.commons.enums.DmpBlueprintFieldCategory;
import eu.eudat.commons.enums.DmpBlueprintSystemFieldType;
import eu.eudat.models.data.funder.FunderDMPEditorModel;
import eu.eudat.models.data.grant.GrantDMPEditorModel;
import eu.eudat.models.data.helpermodels.Tuple;
@ -69,6 +68,7 @@ import eu.eudat.models.data.listingmodels.*;
import eu.eudat.models.data.project.ProjectDMPEditorModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
import eu.eudat.models.data.userinfo.UserListingModel;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.query.DmpBlueprintQuery;
import eu.eudat.queryable.QueryableList;
import eu.eudat.service.dmpblueprint.DmpBlueprintService;
@ -279,12 +279,12 @@ public class DataManagementPlanManager {
return dataTable;
}
private Set<Dataset> retrieveRelevantDatasets(DatasetCriteria datasetCriteria) throws InvalidApplicationException {
private Set<DescriptionEntity> retrieveRelevantDatasets(DatasetCriteria datasetCriteria) throws InvalidApplicationException {
return retrieveRelevantDatasets(datasetCriteria, null);
}
private Set<Dataset> retrieveRelevantDatasets (DatasetCriteria datasetCriteria, UUID principal) throws InvalidApplicationException {
QueryableList<Dataset> datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria)
private Set<DescriptionEntity> retrieveRelevantDatasets (DatasetCriteria datasetCriteria, UUID principal) throws InvalidApplicationException {
QueryableList<DescriptionEntity> datasetItems = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria)
.orderBy((builder, root) -> builder.desc(root.get("modified")));
if (principal != null) {
UserInfo userInfo = apiContext.getOperationsContext().getDatabaseRepository().getUserInfoDao().find(principal);
@ -297,13 +297,13 @@ public class DataManagementPlanManager {
DatasetTableRequest datasetTableRequest = new DatasetTableRequest();
datasetTableRequest.setOffset(0);
datasetTableRequest.setLength(3);
Set<Dataset> datasetsSet = new LinkedHashSet<>();
Set<DescriptionEntity> datasetsSet = new LinkedHashSet<>();
try {
datasetItems = PaginationManager.applyPaging(datasetItems, datasetTableRequest);
List<Dataset> datasets = datasetItems.distinct().toList();
datasetsSet.addAll(datasets);
for (int i = 0; i < maxDatasets - datasets.size(); i++) {
Dataset fakedataset = new Dataset();
List<DescriptionEntity> descriptionEntities = datasetItems.distinct().toList();
datasetsSet.addAll(descriptionEntities);
for (int i = 0; i < maxDatasets - descriptionEntities.size(); i++) {
DescriptionEntity fakedataset = new DescriptionEntity();
fakedataset.setId(UUID.randomUUID());
datasetsSet.add(fakedataset);
}
@ -349,7 +349,7 @@ public class DataManagementPlanManager {
});
});*/
if (isPublic) {
dataManagementPlan.setDatasets(dataManagementPlan.getDatasets().stream().filter(dataset -> dataset.getStatus() == Dataset.Status.FINALISED.getValue()).collect(Collectors.toList()));
dataManagementPlan.setDatasets(dataManagementPlan.getDatasets().stream().filter(dataset -> dataset.getStatus() == DescriptionStatus.Finalized).collect(Collectors.toList()));
}
} else {
dataManagementPlan.fromDataModelNoDatasets(dataManagementPlanEntity);
@ -383,7 +383,7 @@ public class DataManagementPlanManager {
datamanagementPlan.fromDataModelDatasets(dataManagementPlanEntity);
datamanagementPlan.setDatasets(datamanagementPlan.getDatasets().stream().sorted(Comparator.comparing(DatasetOverviewModel::getCreated).reversed()).collect(Collectors.toList()));
if (isPublic) {
datamanagementPlan.setDatasets(datamanagementPlan.getDatasets().stream().filter(dataset -> dataset.getStatus() == Dataset.Status.FINALISED.getValue()).collect(Collectors.toList()));
datamanagementPlan.setDatasets(datamanagementPlan.getDatasets().stream().filter(dataset -> dataset.getStatus() == DescriptionStatus.Finalized).collect(Collectors.toList()));
}
return datamanagementPlan;
@ -492,9 +492,9 @@ public class DataManagementPlanManager {
if (dbTime.toEpochMilli() != modelTime.toEpochMilli()) {
throw new Exception("Another user have already edit that DMP.");
}
List<Dataset> datasetList = dmp1.getDataset().stream().filter(dataset -> dataset.getStatus() != 99).collect(Collectors.toList());
for (Dataset dataset : datasetList) {
if (dataManagementPlan.getProfiles().stream().filter(associatedProfile -> dataset.getProfile().getId().equals(associatedProfile.getDescriptionTemplateId())).findAny().orElse(null) == null)
List<DescriptionEntity> descriptionEntityList = dmp1.getDataset().stream().filter(dataset -> dataset.getIsActive() != IsActive.Inactive).collect(Collectors.toList());
for (DescriptionEntity descriptionEntity : descriptionEntityList) {
if (dataManagementPlan.getProfiles().stream().filter(associatedProfile -> descriptionEntity.getProfile().equals(associatedProfile.getDescriptionTemplateId())).findAny().orElse(null) == null)
throw new Exception("Dataset Template for Dataset Description is missing from the DMP.");
}
if (dataManagementPlan.getStatus() == (int) DMP.DMPStatus.FINALISED.getValue() && dmp1.getStatus().equals(DMP.DMPStatus.FINALISED.getValue()))
@ -596,32 +596,32 @@ public class DataManagementPlanManager {
if (dataManagementPlan.getDatasetsToBeFinalized() != null && !dataManagementPlan.getDatasetsToBeFinalized().isEmpty()) {
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(dataManagementPlan.getDatasetsToBeFinalized()))
.update(root -> root.<Integer>get("status"), Dataset.Status.FINALISED.getValue());
.update(root -> root.<Integer>get("status"), DescriptionStatus.Finalized);
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(dataManagementPlan.getDatasetsToBeFinalized()))
.update(root -> root.<Date>get("finalizedat"), new Date());
List<UUID> datasetsToBeCanceled = new LinkedList<>();
for (DatasetWizardModel dataset : dataManagementPlan.getDatasets()) {
if (!(dataset.getStatus() == (int) Dataset.Status.FINALISED.getValue()) && !dataManagementPlan.getDatasetsToBeFinalized().contains(dataset.getId())) {
if (!(dataset.getStatus() == DescriptionStatus.Finalized) && !dataManagementPlan.getDatasetsToBeFinalized().contains(dataset.getId())) {
datasetsToBeCanceled.add(UUID.fromString(dataset.getId().toString()));
}
}
if (!datasetsToBeCanceled.isEmpty())
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeCanceled))
.update(root -> root.<Integer>get("status"), Dataset.Status.CANCELED.getValue());
.update(root -> root.<Integer>get("status"), DescriptionStatus.Canceled);
} else {
List<UUID> datasetsToBeCanceled = new LinkedList<>();
for (DatasetWizardModel dataset : dataManagementPlan.getDatasets()) {
if (!(dataset.getStatus() == (int) Dataset.Status.FINALISED.getValue())) {
if (!(dataset.getStatus() == DescriptionStatus.Finalized)) {
datasetsToBeCanceled.add(dataset.getId());
}
}
if (!datasetsToBeCanceled.isEmpty())
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeCanceled))
.update(root -> root.<Integer>get("status"), Dataset.Status.CANCELED.getValue());
.update(root -> root.<Integer>get("status"), DescriptionStatus.Canceled);
}
}
@ -666,7 +666,7 @@ public class DataManagementPlanManager {
} else {
metricsManager.increaseValue(MetricNames.DMP, 1, MetricNames.DRAFT);
}
List<Dataset> datasets = new ArrayList<>();
List<DescriptionEntity> descriptionEntities = new ArrayList<>();
DMP tempDMP = dataManagementPlan.toDataModel();
if (tempDMP.getStatus() == (int) DMP.DMPStatus.FINALISED.getValue()) {
checkDmpValidationRules(tempDMP);
@ -689,8 +689,8 @@ public class DataManagementPlanManager {
for (DatasetWizardModel datasetWizardModel: dataManagementPlan.getDatasets()) {
datasetWizardModel.setDmp(new DataManagementPlan().fromDataModel(result));
Dataset dataset = datasetManager.createOrUpdate(datasetWizardModel);
datasets.add(dataset);
DescriptionEntity descriptionEntity = datasetManager.createOrUpdate(datasetWizardModel);
descriptionEntities.add(descriptionEntity);
}
UUID dmpId = result.getId();
@ -910,15 +910,15 @@ public class DataManagementPlanManager {
} catch (IOException | InvalidApplicationException e) {
logger.error(e.getMessage(), e);
}
for (Dataset dataset: dmp.getDataset()) {
for (DescriptionEntity descriptionEntity : dmp.getDataset()) {
try {
List<Tag> tags = new ArrayList<>();
eu.eudat.elastic.entities.Dataset elastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(dataset.getId().toString());
eu.eudat.elastic.entities.Dataset elastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(descriptionEntity.getId().toString());
if (elastic != null) {
tags = elastic.getTags();
}
dataset.setDmp(dmp);
this.datasetManager.updateTags(dataset, tags);
descriptionEntity.setDmp(dmp.getId());
this.datasetManager.updateTags(descriptionEntity, tags);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
@ -1040,89 +1040,97 @@ public class DataManagementPlanManager {
}
private void copyDatasets(DMP newDmp, DatasetDao datasetDao) throws InvalidApplicationException {
List<CompletableFuture<Dataset>> futures = new LinkedList<>();
for (Dataset dataset : newDmp.getDataset()) {
Dataset tempDataset = datasetDao.find(dataset.getId());
List<CompletableFuture<DescriptionEntity>> futures = new LinkedList<>();
for (DescriptionEntity descriptionEntity : newDmp.getDataset()) {
DescriptionEntity tempDescriptionEntity = datasetDao.find(descriptionEntity.getId());
try {
List<Tag> tags = new ArrayList<>();
eu.eudat.elastic.entities.Dataset elastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(dataset.getId().toString());
eu.eudat.elastic.entities.Dataset elastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(descriptionEntity.getId().toString());
if (elastic != null) {
tags = elastic.getTags();
}
UUID dmpId = tempDataset.getDmp().getId();
tempDataset.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
this.datasetManager.updateTags(tempDataset, tags);
UUID dmpId = tempDescriptionEntity.getDmp();
//TODO
//tempDescriptionEntity.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
this.datasetManager.updateTags(tempDescriptionEntity, tags);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
datasetDao.asQueryable().withHint(HintedModelFactory.getHint(DatasetListingModel.class)).where((builder, root) -> builder.equal(root.get("id"), dataset.getId())).getSingleAsync()
datasetDao.asQueryable().withHint(HintedModelFactory.getHint(DatasetListingModel.class)).where((builder, root) -> builder.equal(root.get("id"), descriptionEntity.getId())).getSingleAsync()
.thenApplyAsync(entityDataset -> {
Dataset newDataset = new Dataset();
newDataset.update(entityDataset);
newDataset.setDmp(newDmp);
newDataset.setStatus(Dataset.Status.SAVED.getValue());
if (newDataset.getDatasetDataRepositories() != null) {
newDataset.setDatasetDataRepositories(newDataset.getDatasetDataRepositories().stream().map(item -> {
DataRepository dataRepository = new DataRepository();
dataRepository.setId(item.getDataRepository().getId());
DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
datasetDataRepository.setDataRepository(dataRepository);
datasetDataRepository.setDataset(newDataset);
datasetDataRepository.setData(item.getData());
return datasetDataRepository;
}).collect(Collectors.toSet()));
}
if (newDataset.getDatasetExternalDatasets() != null) {
newDataset.setDatasetExternalDatasets(newDataset.getDatasetExternalDatasets().stream().map(item -> {
ExternalDataset externalDataset = new ExternalDataset();
externalDataset.setId(item.getExternalDataset().getId());
DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
datasetExternalDataset.setExternalDataset(externalDataset);
datasetExternalDataset.setDataset(newDataset);
datasetExternalDataset.setData(item.getData());
return datasetExternalDataset;
}).collect(Collectors.toSet()));
}
if (newDataset.getRegistries() != null) {
newDataset.setRegistries(newDataset.getRegistries().stream().map(item -> {
Registry registry = new Registry();
registry.setId(item.getId());
return registry;
}).collect(Collectors.toSet()));
}
if (newDataset.getServices() != null) {
newDataset.setServices(newDataset.getServices().stream().map(item -> {
Service service = new Service();
service.setId(item.getId());
DatasetService datasetService = new DatasetService();
datasetService.setService(service);
datasetService.setDataset(newDataset);
datasetService.setData(item.getData());
return datasetService;
}).collect(Collectors.toSet()));
}
newDataset.setCreated(new Date());
return newDataset;
DescriptionEntity newDescriptionEntity = new DescriptionEntity();
newDescriptionEntity.update(entityDataset);
newDescriptionEntity.setDmp(newDmp.getId());
newDescriptionEntity.setStatus(DescriptionStatus.Saved);
//TODO
// if (newDescriptionEntity.getDatasetDataRepositories() != null) {
// newDescriptionEntity.setDatasetDataRepositories(newDescriptionEntity.getDatasetDataRepositories().stream().map(item -> {
// DataRepository dataRepository = new DataRepository();
// dataRepository.setId(item.getDataRepository().getId());
//
// DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
// datasetDataRepository.setDataRepository(dataRepository);
// datasetDataRepository.setDataset(newDescriptionEntity);
// datasetDataRepository.setData(item.getData());
// return datasetDataRepository;
// }).collect(Collectors.toSet()));
// }
//
// if (newDescriptionEntity.getDatasetExternalDatasets() != null) {
// newDescriptionEntity.setDatasetExternalDatasets(newDescriptionEntity.getDatasetExternalDatasets().stream().map(item -> {
// ExternalDataset externalDataset = new ExternalDataset();
// externalDataset.setId(item.getExternalDataset().getId());
// DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
// datasetExternalDataset.setExternalDataset(externalDataset);
// datasetExternalDataset.setDataset(newDescriptionEntity);
// datasetExternalDataset.setData(item.getData());
// return datasetExternalDataset;
// }).collect(Collectors.toSet()));
// }
//
// if (newDescriptionEntity.getRegistries() != null) {
// newDescriptionEntity.setRegistries(newDescriptionEntity.getRegistries().stream().map(item -> {
// Registry registry = new Registry();
// registry.setId(item.getId());
// return registry;
// }).collect(Collectors.toSet()));
// }
//
// if (newDescriptionEntity.getServices() != null) {
// newDescriptionEntity.setServices(newDescriptionEntity.getServices().stream().map(item -> {
// Service service = new Service();
// service.setId(item.getId());
// DatasetService datasetService = new DatasetService();
// datasetService.setService(service);
// datasetService.setDataset(newDescriptionEntity);
// datasetService.setData(item.getData());
// return datasetService;
// }).collect(Collectors.toSet()));
// }
newDescriptionEntity.setCreatedAt(Instant.now());
return newDescriptionEntity;
}).thenApplyAsync(item -> {
futures.add(datasetDao.createOrUpdateAsync(item).whenComplete(((dataset1, throwable) -> {
DMP dmp = null;
try {
dmp = this.apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(dataset1.getDmp());
} catch (InvalidApplicationException e) {
throw new RuntimeException(e);
}
metricsManager.increaseValue(MetricNames.DATASET, 1, MetricNames.DRAFT);
eu.eudat.elastic.entities.Dataset datasetElastic = new eu.eudat.elastic.entities.Dataset();
datasetElastic.setId(dataset1.getId().toString());
datasetElastic.setLabel(dataset1.getLabel());
datasetElastic.setDescription(dataset1.getDescription());
datasetElastic.setTemplate(dataset1.getProfile().getId());
datasetElastic.setStatus(dataset1.getStatus());
datasetElastic.setDmp(dataset1.getDmp().getId());
datasetElastic.setGroup(dataset1.getDmp().getGroupId());
if(this.dmpBlueprintService.fieldInBlueprint(dataset1.getDmp().getProfile(), DmpBlueprintSystemFieldType.Grant)) {
datasetElastic.setGrant(dataset1.getDmp().getGrant().getId());
datasetElastic.setTemplate(dataset1.getProfile());
datasetElastic.setStatus(dataset1.getStatus().getValue());
datasetElastic.setDmp(dataset1.getDmp());
datasetElastic.setGroup(dmp.getGroupId());
if(this.dmpBlueprintService.fieldInBlueprint(dmp.getProfile(), DmpBlueprintSystemFieldType.Grant)) {
datasetElastic.setGrant(dmp.getGrant().getId());
}
if (dataset1.getDmp().getUsers() != null) {
datasetElastic.setCollaborators(dataset1.getDmp().getUsers().stream().map(user -> {
if (dmp.getUsers() != null) {
datasetElastic.setCollaborators(dmp.getUsers().stream().map(user -> {
Collaborator collaborator = new Collaborator();
collaborator.setId(user.getId().toString());
collaborator.setRole(user.getRole());
@ -1132,21 +1140,21 @@ public class DataManagementPlanManager {
}
datasetElastic.setLastVersion(true);
datasetElastic.setLastPublicVersion(false);
if (dataset1.getDmp().getOrganisations() != null) {
datasetElastic.setOrganizations(dataset1.getDmp().getOrganisations().stream().map(org -> {
if (dmp.getOrganisations() != null) {
datasetElastic.setOrganizations(dmp.getOrganisations().stream().map(org -> {
Organization organization = new Organization();
organization.setId(org.getId().toString());
organization.setName(org.getLabel());
return organization;
}).collect(Collectors.toList()));
}
datasetElastic.setPublic(dataset1.getDmp().isPublic());
if(this.dmpBlueprintService.fieldInBlueprint(dataset1.getDmp().getProfile(), DmpBlueprintSystemFieldType.Grant)) {
datasetElastic.setGrantStatus(dataset1.getDmp().getGrant().getStatus());
datasetElastic.setPublic(dmp.isPublic());
if(this.dmpBlueprintService.fieldInBlueprint(dmp.getProfile(), DmpBlueprintSystemFieldType.Grant)) {
datasetElastic.setGrantStatus(dmp.getGrant().getStatus());
}
try {
eu.eudat.elastic.entities.Dataset oldDatasetElastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(dataset.getId().toString());
eu.eudat.elastic.entities.Dataset oldDatasetElastic = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(descriptionEntity.getId().toString());
if (oldDatasetElastic != null) {
datasetElastic.setTags(oldDatasetElastic.getTags());
}
@ -1186,8 +1194,9 @@ public class DataManagementPlanManager {
if (elastic != null) {
tags = elastic.getTags();
}
UUID tmdmpId = dataset.getDmp().getId();
dataset.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), tmdmpId)).toList()));
UUID tmdmpId = dataset.getDmp();
//TODO
//dataset.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), tmdmpId)).toList()));
this.datasetManager.updateTags(dataset, tags);
metricsManager.increaseValue(MetricNames.DATASET, 1, MetricNames.PUBLISHED);
} catch (Exception e) {
@ -1206,27 +1215,27 @@ public class DataManagementPlanManager {
throw new Exception("User does not have the privilege to do this action.");
if (dmp.getStatus().equals(DMP.DMPStatus.FINALISED.getValue()))
throw new Exception("DMP is already finalized");
List<Dataset> indexDatasets = new ArrayList<>();
List<DescriptionEntity> indexDescriptionEntities = new ArrayList<>();
if (datasetsToBeFinalized != null && datasetsToBeFinalized.getUuids() != null && !datasetsToBeFinalized.getUuids().isEmpty()) {
List<Dataset> finalizedDatasets = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
List<DescriptionEntity> finalizedDescriptionEntities = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeFinalized.getUuids()))
.toList();
for (Dataset dataset: finalizedDatasets) {
Dataset.Status status = Dataset.Status.fromInteger(dataset.getStatus());
Date finalizedDate = dataset.getFinalizedAt();
dataset.setStatus(Dataset.Status.FINALISED.getValue());
dataset.setFinalizedAt(new Date());
for (DescriptionEntity descriptionEntity : finalizedDescriptionEntities) {
DescriptionStatus status = descriptionEntity.getStatus();
Instant finalizedDate = descriptionEntity.getFinalizedAt();
descriptionEntity.setStatus(DescriptionStatus.Finalized);
descriptionEntity.setFinalizedAt(Instant.now());
DatasetWizardModel wizardModel = new DatasetWizardModel();
wizardModel = wizardModel.fromDataModel(dataset);
wizardModel.setDatasetProfileDefinition(this.datasetManager.getPagedProfile(wizardModel, dataset));
wizardModel = wizardModel.fromDataModel(descriptionEntity);
wizardModel.setDatasetProfileDefinition(this.datasetManager.getPagedProfile(wizardModel, descriptionEntity));
try {
datasetManager.createOrUpdate(wizardModel);
} catch (Exception e) {
dataset.setStatus(status.getValue());
dataset.setFinalizedAt(finalizedDate);
descriptionEntity.setStatus(status);
descriptionEntity.setFinalizedAt(finalizedDate);
throw e;
}
dataset.setModified(new Date());
descriptionEntity.setUpdatedAt(Instant.now());
}
/*apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeFinalized.getUuids()))
@ -1237,35 +1246,35 @@ public class DataManagementPlanManager {
dataset.setFinalizedAt(new Date());
dataset.setModified(new Date());
} );*/
indexDatasets.addAll(finalizedDatasets);
indexDescriptionEntities.addAll(finalizedDescriptionEntities);
List<UUID> datasetsToBeCanceled = new LinkedList<>();
for (Dataset dataset : dmp.getDataset()) {
if (!dataset.getStatus().equals(Dataset.Status.FINALISED.getValue()) && !datasetsToBeFinalized.getUuids().contains(dataset.getId())) {
datasetsToBeCanceled.add(dataset.getId());
for (DescriptionEntity descriptionEntity : dmp.getDataset()) {
if (!descriptionEntity.getStatus().equals(DescriptionStatus.Finalized) && !datasetsToBeFinalized.getUuids().contains(descriptionEntity.getId())) {
datasetsToBeCanceled.add(descriptionEntity.getId());
}
}
if (!datasetsToBeCanceled.isEmpty()) {
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeCanceled))
.update(root -> root.<Integer>get("status"), Dataset.Status.CANCELED.getValue());
List<Dataset> cancelledDatasets = dmp.getDataset().stream().filter(dataset -> datasetsToBeCanceled.contains(dataset.getId())).collect(Collectors.toList());
cancelledDatasets.forEach(dataset -> dataset.setStatus(Dataset.Status.CANCELED.getValue()));
indexDatasets.addAll(cancelledDatasets);
.update(root -> root.<Integer>get("status"), DescriptionStatus.Canceled);
List<DescriptionEntity> cancelledDescriptionEntities = dmp.getDataset().stream().filter(dataset -> datasetsToBeCanceled.contains(dataset.getId())).collect(Collectors.toList());
cancelledDescriptionEntities.forEach(dataset -> dataset.setStatus(DescriptionStatus.Canceled));
indexDescriptionEntities.addAll(cancelledDescriptionEntities);
}
} else {
List<UUID> datasetsToBeCanceled = new LinkedList<>();
for (Dataset dataset : dmp.getDataset()) {
if (!dataset.getStatus().equals(Dataset.Status.FINALISED.getValue())) {
datasetsToBeCanceled.add(dataset.getId());
for (DescriptionEntity descriptionEntity : dmp.getDataset()) {
if (!descriptionEntity.getStatus().equals(DescriptionStatus.Finalized)) {
datasetsToBeCanceled.add(descriptionEntity.getId());
}
}
if (!datasetsToBeCanceled.isEmpty()) {
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao()
.asQueryable().where((builder, root) -> root.get("id").in(datasetsToBeCanceled))
.update(root -> root.<Integer>get("status"), Dataset.Status.CANCELED.getValue());
List<Dataset> cancelledDatasets = dmp.getDataset().stream().filter(dataset -> datasetsToBeCanceled.contains(dataset.getId())).collect(Collectors.toList());
cancelledDatasets.forEach(dataset -> dataset.setStatus(Dataset.Status.CANCELED.getValue()));
indexDatasets.addAll(cancelledDatasets);
.update(root -> root.<Integer>get("status"), DescriptionStatus.Canceled);
List<DescriptionEntity> cancelledDescriptionEntities = dmp.getDataset().stream().filter(dataset -> datasetsToBeCanceled.contains(dataset.getId())).collect(Collectors.toList());
cancelledDescriptionEntities.forEach(dataset -> dataset.setStatus(DescriptionStatus.Canceled));
indexDescriptionEntities.addAll(cancelledDescriptionEntities);
}
}
dmp.setStatus(DMP.DMPStatus.FINALISED.getValue());
@ -1277,9 +1286,9 @@ public class DataManagementPlanManager {
sendNotification(dmp, user, NotificationType.DMP_FINALISED);
metricsManager.decreaseValue(MetricNames.DMP, 1, MetricNames.DRAFT);
metricsManager.increaseValue(MetricNames.DMP, 1, MetricNames.FINALIZED);
this.updateDatasetsIndex(indexDatasets);
metricsManager.decreaseValue(MetricNames.DATASET, indexDatasets.size(), MetricNames.DRAFT);
metricsManager.increaseValue(MetricNames.DATASET, indexDatasets.size(), MetricNames.FINALIZED);
this.updateDatasetsIndex(indexDescriptionEntities);
metricsManager.decreaseValue(MetricNames.DATASET, indexDescriptionEntities.size(), MetricNames.DRAFT);
metricsManager.increaseValue(MetricNames.DATASET, indexDescriptionEntities.size(), MetricNames.FINALIZED);
}
public void undoFinalize(UUID id) throws Exception {
@ -1537,11 +1546,11 @@ public class DataManagementPlanManager {
final Boolean isFinalized = dmpEntity.getStatus() == DMP.DMPStatus.FINALISED.getValue();
final Boolean isPublic = dmpEntity.isPublic();
dmpEntity.getDataset().stream()
.filter(item -> item.getStatus() != Dataset.Status.CANCELED.getValue())
.filter(item -> item.getStatus() != Dataset.Status.DELETED.getValue())
.filter(item -> !isPublic && !isFinalized || item.getStatus() == Dataset.Status.FINALISED.getValue())
.filter(item -> item.getStatus() != DescriptionStatus.Canceled)
.filter(item -> item.getIsActive() != IsActive.Inactive)
.filter(item -> !isPublic && !isFinalized || item.getStatus() == DescriptionStatus.Finalized)
.filter(item -> item.getDmpSectionIndex().equals(section.getOrdinal() - 1))
.sorted(Comparator.comparing(Dataset::getCreated))
.sorted(Comparator.comparing(DescriptionEntity::getCreatedAt))
.forEach(datasetEntity -> {
Map<String, Object> properties = new HashMap<>();
if (datasetEntity.getProperties() != null) {
@ -1591,7 +1600,7 @@ public class DataManagementPlanManager {
//runDatasetTemplate1.setBold(true);
//runDatasetTemplate1.setFontSize(12);
XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun();
runDatasetTemplate.setText(datasetEntity.getProfile().getLabel());
runDatasetTemplate.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getProfile()).first().getLabel());
runDatasetTemplate.setColor("116a78");
//runDatasetTemplate.setBold(true);
//runDatasetTemplate.setFontSize(12);
@ -1637,7 +1646,7 @@ public class DataManagementPlanManager {
runDatasetDescription1.setText("Description: ");
runDatasetDescription1.setColor("000000");
XWPFRun runDatasetDescription = datasetDescParagraph.createRun();
runDatasetDescription.setText(datasetEntity.getProfile().getLabel());
runDatasetDescription.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getProfile()).first().getLabel());
runDatasetDescription.setColor("116a78");
//wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO, 0);
@ -1709,10 +1718,10 @@ public class DataManagementPlanManager {
throw new UnauthorisedException();
final Boolean isFinalized = dmp.getStatus() == DMP.DMPStatus.FINALISED.getValue();
final Boolean isPublic = dmp.isPublic();
List<Dataset> datasets = dmp.getDataset().stream()
.filter(dataset -> dataset.getStatus() != Dataset.Status.DELETED.getValue() &&
dataset.getStatus() != Dataset.Status.CANCELED.getValue())
.filter(dataset -> !isPublic && !isFinalized || dataset.getStatus() == Dataset.Status.FINALISED.getValue())
List<DescriptionEntity> descriptionEntities = dmp.getDataset().stream()
.filter(dataset -> dataset.getIsActive() != IsActive.Inactive &&
dataset.getStatus() != DescriptionStatus.Canceled)
.filter(dataset -> !isPublic && !isFinalized || dataset.getStatus() == DescriptionStatus.Finalized)
.collect(Collectors.toList());
/*String fileName = dmp.getLabel();
fileName = fileName.replaceAll("[^a-zA-Z0-9+ ]", "");*/
@ -1904,33 +1913,33 @@ public class DataManagementPlanManager {
dmpElement.appendChild(extraFields);
Element datasetsElement = xmlDoc.createElement("datasets");
for (Dataset dataset : datasets) {
for (DescriptionEntity descriptionEntity : descriptionEntities) {
Element datasetElement = xmlDoc.createElement("dataset");
datasetElement.setAttribute("name", dataset.getLabel());
datasetElement.setAttribute("name", descriptionEntity.getLabel());
Element datasetDescriptionElement = xmlDoc.createElement("description");
datasetElement.appendChild(datasetDescriptionElement);
datasetDescriptionElement.setTextContent(dataset.getDescription());
datasetDescriptionElement.setTextContent(descriptionEntity.getDescription());
Element datasetDmpSectionIndex = xmlDoc.createElement("dmpSectionIndex");
datasetElement.appendChild(datasetDmpSectionIndex);
datasetDmpSectionIndex.setTextContent(String.valueOf(dataset.getDmpSectionIndex()));
datasetDmpSectionIndex.setTextContent(String.valueOf(descriptionEntity.getDmpSectionIndex()));
Element datsetProfileElement = xmlDoc.createElement("profile-id");
datasetElement.appendChild(datsetProfileElement);
datsetProfileElement.setTextContent(dataset.getProfile().getId().toString());
datsetProfileElement.setTextContent(descriptionEntity.getProfile().toString());
Element datsetProfileLabelElement = xmlDoc.createElement("profile-label");
datasetElement.appendChild(datsetProfileLabelElement);
datsetProfileLabelElement.setTextContent(dataset.getProfile().getLabel());
datsetProfileLabelElement.setTextContent(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntity.getProfile()).first().getLabel());
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
Map<String, Object> properties = new HashMap<>();
if (dataset.getProperties() != null) {
JSONObject jobject = new JSONObject(dataset.getProperties());
if (descriptionEntity.getProperties() != null) {
JSONObject jobject = new JSONObject(descriptionEntity.getProperties());
properties = jobject.toMap();
}
PagedDatasetProfile pagedDatasetProfile = datasetManager.getPagedProfile(datasetWizardModel, dataset);
PagedDatasetProfile pagedDatasetProfile = datasetManager.getPagedProfile(datasetWizardModel, descriptionEntity);
visibilityRuleService.setProperties(properties);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
datasetElement.appendChild(xmlBuilder.createPages(pagedDatasetProfile.getPages(), visibilityRuleService, xmlDoc));
@ -1991,9 +2000,9 @@ public class DataManagementPlanManager {
final boolean isFinalized = dmp.getStatus() == DMP.DMPStatus.FINALISED.getValue();
final boolean isPublic = dmp.isPublic();
dmp.setDataset(dmp.getDataset().stream()
.filter(dataset -> dataset.getStatus() != Dataset.Status.DELETED.getValue() &&
dataset.getStatus() != Dataset.Status.CANCELED.getValue())
.filter(dataset -> !isPublic && !isFinalized || dataset.getStatus() == Dataset.Status.FINALISED.getValue())
.filter(dataset -> dataset.getIsActive() != IsActive.Inactive &&
dataset.getStatus() != DescriptionStatus.Canceled)
.filter(dataset -> !isPublic && !isFinalized || dataset.getStatus() == DescriptionStatus.Finalized)
.collect(Collectors.toSet()));
String result = rdaManager.convertToRDA(dmp);
@ -2220,24 +2229,24 @@ public class DataManagementPlanManager {
List<DatasetListingModel> datasets = new LinkedList<>();
for (DatasetImportModels das: dataManagementPlans.get(0).getDatasetImportModels()) {
Dataset dataset = new Dataset();
dataset.setLabel(das.getName());
dataset.setDmpSectionIndex(das.getDmpSectionIndex());
DescriptionEntity descriptionEntity = new DescriptionEntity();
descriptionEntity.setLabel(das.getName());
descriptionEntity.setDmpSectionIndex(das.getDmpSectionIndex());
try {
dataset.setProfile(databaseRepository.getDatasetProfileDao().find(das.getProfile()));
descriptionEntity.setProfile(das.getProfile());
} catch (Exception ignored) {
dataset.setProfile(databaseRepository.getDatasetProfileDao().find(associatedProfiles.get(0).getDescriptionTemplateId()));
descriptionEntity.setProfile(associatedProfiles.get(0).getDescriptionTemplateId());
}
dataset.setProperties(objectMapper.writeValueAsString(das.getFieldImportModels()));
dataset.setStatus((short) 0);
dataset.setRegistries(new HashSet<>());
dataset.setDatasetDataRepositories(new HashSet<>());
dataset.setServices(new HashSet<>());
dataset.setDatasetExternalDatasets(new HashSet<>());
dataset.setDmp(dmp);
descriptionEntity.setProperties(objectMapper.writeValueAsString(das.getFieldImportModels()));
descriptionEntity.setStatus(DescriptionStatus.Saved);
// descriptionEntity.setRegistries(new HashSet<>());
// descriptionEntity.setDatasetDataRepositories(new HashSet<>());
// descriptionEntity.setServices(new HashSet<>());
// descriptionEntity.setDatasetExternalDatasets(new HashSet<>());
descriptionEntity.setDmp(dmp.getId());
DatasetWizardModel datasetWizard = new DatasetWizardModel();
datasetWizard.setDatasetProfileDefinition(this.datasetManager.getPagedProfile(datasetWizard, dataset));
datasetWizard.fromDataModel(dataset);
datasetWizard.setDatasetProfileDefinition(this.datasetManager.getPagedProfile(datasetWizard, descriptionEntity));
datasetWizard.fromDataModel(descriptionEntity);
this.datasetManager.createOrUpdate(datasetWizard);
// datasets.add(new DatasetListingModel().fromDataModel(dataset));
}
@ -2280,15 +2289,15 @@ public class DataManagementPlanManager {
this.updateIndex(dmp);
}
dmp.getDataset().forEach(dataset -> {
dataset.setStatus(Dataset.Status.SAVED.getValue());
dataset.setCreated(new Date());
dataset.setModified(new Date());
dataset.setDmp(dmp);
dataset.setStatus(DescriptionStatus.Saved);
dataset.setCreatedAt(Instant.now());
dataset.setUpdatedAt(Instant.now());
dataset.setDmp(dmp.getId());
dataset = databaseRepository.getDatasetDao().createOrUpdate(dataset);
dataset.setRegistries(new HashSet<>());
dataset.setDatasetDataRepositories(new HashSet<>());
dataset.setDatasetExternalDatasets(new HashSet<>());
dataset.setServices(new HashSet<>());
// dataset.setRegistries(new HashSet<>());
// dataset.setDatasetDataRepositories(new HashSet<>());
// dataset.setDatasetExternalDatasets(new HashSet<>());
// dataset.setServices(new HashSet<>());
if (dmp.getOrganisations() == null) {
dmp.setOrganisations(new HashSet<>());
}
@ -2381,8 +2390,8 @@ public class DataManagementPlanManager {
}
}
private void updateDatasetsIndex(List<Dataset> datasets) {
datasets.forEach(dataset -> {
private void updateDatasetsIndex(List<DescriptionEntity> descriptionEntities) {
descriptionEntities.forEach(dataset -> {
List<Tag> tags = new ArrayList<>();
eu.eudat.elastic.entities.Dataset elastic = null;
try {
@ -2390,8 +2399,9 @@ public class DataManagementPlanManager {
if (elastic != null) {
tags = elastic.getTags();
}
UUID dmpId = dataset.getDmp().getId();
dataset.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
UUID dmpId = dataset.getDmp();
//TODO
//dataset.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
this.datasetManager.updateTags(dataset, tags);
} catch (Exception e) {
logger.error(e.getMessage(), e);
@ -2570,9 +2580,9 @@ public class DataManagementPlanManager {
ZipOutputStream zout = new ZipOutputStream(fout);
boolean hasFileUploaded = false;
Set<Dataset> datasets = dmp.getDataset();
for (Dataset dataset : datasets) {
List<FileUpload> files = this.apiContext.getOperationsContext().getDatabaseRepository().getFileUploadDao().getFileUploads(dataset.getId());
Set<DescriptionEntity> descriptionEntities = dmp.getDataset();
for (DescriptionEntity descriptionEntity : descriptionEntities) {
List<FileUpload> files = this.apiContext.getOperationsContext().getDatabaseRepository().getFileUploadDao().getFileUploads(descriptionEntity.getId());
for (FileUpload f : files) {
if(!f.getIsDeleted()){
File exportFile = new File(this.environment.getProperty("file.storage") + f.getId());

View File

@ -5,7 +5,10 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.dao.criteria.*;
import eu.eudat.data.dao.entities.DataRepositoryDao;
@ -51,9 +54,11 @@ import eu.eudat.models.data.dmp.DataManagementPlan;
import eu.eudat.models.data.helpers.common.DataTableData;
import eu.eudat.models.data.listingmodels.DatasetListingModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
import eu.eudat.query.DescriptionTemplateQuery;
import eu.eudat.queryable.QueryableList;
import eu.eudat.types.MetricNames;
import gr.cite.commons.web.authz.service.AuthorizationService;
import gr.cite.tools.data.query.QueryFactory;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
@ -117,10 +122,11 @@ public class DatasetManager {
private final FileManager fileManager;
private final UserScope userScope;
private final AuthorizationService authorizationService;
private final QueryFactory queryFactory;
@Autowired
public DatasetManager(ApiContext apiContext, UserManager userManager, ConfigLoader configLoader, Environment environment, MetricsManager metricsManager,
FileManager fileManager, UserScope userScope, AuthorizationService authorizationService) {
FileManager fileManager, UserScope userScope, AuthorizationService authorizationService, QueryFactory queryFactory) {
this.apiContext = apiContext;
this.databaseRepository = apiContext.getOperationsContext().getDatabaseRepository();
this.datasetRepository = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository();
@ -132,6 +138,7 @@ public class DatasetManager {
this.fileManager = fileManager;
this.userScope = userScope;
this.authorizationService = authorizationService;
this.queryFactory = queryFactory;
}
public DataTableData<DatasetListingModel> getPaged(DatasetTableRequest datasetTableRequest) throws Exception {
@ -176,8 +183,8 @@ public class DatasetManager {
}
UserInfo userInfo = builderFactory.getBuilder(UserInfoBuilder.class).id(this.userScope.getUserIdSafe()).build();
// QueryableList<eu.eudat.data.old.Dataset> items = databaseRepository.getDatasetDao().getWithCriteria(datasetTableRequest.getCriteria()).withHint(HintedModelFactory.getHint(DatasetListingModel.class));
QueryableList<Dataset> items;
// QueryableList<eu.eudat.data.Dataset> items = databaseRepository.getDatasetDao().getWithCriteria(datasetTableRequest.getCriteria()).withHint(HintedModelFactory.getHint(DatasetListingModel.class));
QueryableList<DescriptionEntity> items;
if (datasets != null) {
if (!datasets.isEmpty()) {
@ -193,8 +200,8 @@ public class DatasetManager {
items = databaseRepository.getDatasetDao().getWithCriteria(datasetTableRequest.getCriteria()).withHint(HintedModelFactory.getHint(DatasetListingModel.class));//.withFields(Collections.singletonList("id"));
}
List<Integer> roles = new LinkedList<>();
QueryableList<Dataset> pagedItems;
QueryableList<Dataset> authItems;
QueryableList<DescriptionEntity> pagedItems;
QueryableList<DescriptionEntity> authItems;
if (!datasetTableRequest.getCriteria().getIsPublic()) {
if (this.userScope.getUserIdSafe() == null) {
throw new UnauthorisedException("You are not allowed to access those datasets");
@ -251,7 +258,7 @@ public class DatasetManager {
}
/*datasetTableRequest.setQuery(databaseRepository.getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetListingModel.class)));
QueryableList<Dataset> items = datasetTableRequest.applyCriteria();*/
QueryableList<Dataset> items;
QueryableList<DescriptionEntity> items;
if (datasets != null) {
if (!datasets.isEmpty()) {
items = databaseRepository.getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetListingModel.class));
@ -276,7 +283,7 @@ public class DatasetManager {
if (count == 0L) {
count = items.count();
}
QueryableList<Dataset> pagedItems = PaginationManager.applyPaging(items, datasetTableRequest);
QueryableList<DescriptionEntity> pagedItems = PaginationManager.applyPaging(items, datasetTableRequest);
DataTableData<DatasetListingModel> dataTable = new DataTableData<>();
List<DatasetListingModel> datasetListis = pagedItems.
@ -291,17 +298,18 @@ public class DatasetManager {
public DatasetWizardModel getSingle(String id) throws InvalidApplicationException {
DatasetWizardModel dataset = new DatasetWizardModel();
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
if (datasetEntity.getDmp().getUsers()
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (dmp.getUsers()
.stream().filter(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId()))
.collect(Collectors.toList()).size() == 0 && !datasetEntity.getDmp().isPublic())
.collect(Collectors.toList()).size() == 0 && !dmp.isPublic())
throw new UnauthorisedException();
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, datasetEntity));
dataset.fromDataModel(datasetEntity);
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, descriptionEntityEntity));
dataset.fromDataModel(descriptionEntityEntity);
// Creates the Criteria to get all version of DescriptionTemplate in question.
DatasetProfileCriteria profileCriteria = new DatasetProfileCriteria();
UUID profileId = datasetEntity.getProfile().getGroupId();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getGroupId();
List<UUID> uuidList = new LinkedList<>();
uuidList.add(profileId);
profileCriteria.setGroupIds(uuidList);
@ -332,7 +340,7 @@ public class DatasetManager {
DescriptionTemplateEntity profile = profiles.get(0);
// Check if the dataset is on the latest Version.
boolean latestVersion = profile.getVersion().toString().equals(datasetEntity.getProfile().getVersion().toString());
boolean latestVersion = profile.getVersion().toString().equals(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getVersion());
dataset.setIsProfileLatestVersion(latestVersion);
eu.eudat.elastic.entities.Dataset datasetElastic;
@ -355,11 +363,11 @@ public class DatasetManager {
public DatasetWizardModel getSinglePublic(String id) throws Exception {
DatasetWizardModel dataset = new DatasetWizardModel();
Dataset datasetEntity = databaseRepository.getDatasetDao().isPublicDataset(UUID.fromString(id));
if (datasetEntity != null && datasetEntity.getStatus() == 1 && datasetEntity.getDmp().getStatus() == 1) {
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, datasetEntity));
dataset.fromDataModel(datasetEntity);
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().isPublicDataset(UUID.fromString(id));
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (descriptionEntityEntity != null && descriptionEntityEntity.getStatus() == DescriptionStatus.Finalized && dmp.getStatus() == 1) {
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, descriptionEntityEntity));
dataset.fromDataModel(descriptionEntityEntity);
return dataset;
} else {
throw new Exception("Selected dataset is not public");
@ -367,34 +375,35 @@ public class DatasetManager {
}
public DatasetOverviewModel getOverviewSingle(String id, boolean isPublic) throws Exception {
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id));
if (datasetEntity.getStatus() == Dataset.Status.DELETED.getValue()) {
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id));
if (descriptionEntityEntity.getIsActive() == IsActive.Inactive) {
throw new Exception("Dataset is deleted.");
}
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (!isPublic && !this.userScope.isSet()) {
throw new UnauthorisedException();
} else
if (!isPublic && datasetEntity.getDmp().getUsers()
if (!isPublic && dmp.getUsers()
.stream().noneMatch(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId()))) {
throw new UnauthorisedException();
} else if (isPublic && !datasetEntity.getDmp().isPublic()) {
} else if (isPublic && !dmp.isPublic()) {
throw new ForbiddenException("Selected Dataset is not public");
}
DatasetOverviewModel dataset = new DatasetOverviewModel();
dataset.fromDataModel(datasetEntity);
dataset.fromDataModel(descriptionEntityEntity);
return dataset;
}
public Dataset getEntitySingle(UUID id) throws InvalidApplicationException {
public DescriptionEntity getEntitySingle(UUID id) throws InvalidApplicationException {
return databaseRepository.getDatasetDao().find(id);
}
public PagedDatasetProfile getPagedProfile(DatasetWizardModel dataset, Dataset datasetEntity) {
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = userManager.generateDatasetProfileModel(datasetEntity.getProfile());
datasetprofile.setStatus(dataset.getStatus());
if (datasetEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(datasetEntity.getProperties());
public PagedDatasetProfile getPagedProfile(DatasetWizardModel dataset, DescriptionEntity descriptionEntityEntity) {
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = userManager.generateDatasetProfileModel(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first());
datasetprofile.setStatus(dataset.getStatus().getValue());
if (descriptionEntityEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(descriptionEntityEntity.getProperties());
Map<String, Object> properties = jObject.toMap();
datasetprofile.fromJsonObject(properties);
}
@ -403,18 +412,17 @@ public class DatasetManager {
return pagedDatasetProfile;
}
private XWPFDocument getWordDocument(ConfigLoader configLoader, Dataset datasetEntity, VisibilityRuleService visibilityRuleService) throws IOException {
private XWPFDocument getWordDocument(ConfigLoader configLoader, DescriptionEntity descriptionEntityEntity, VisibilityRuleService visibilityRuleService) throws IOException, InvalidApplicationException {
WordBuilder wordBuilder = new WordBuilder(this.environment, configLoader);
DatasetWizardModel dataset = new DatasetWizardModel();
XWPFDocument document = configLoader.getDatasetDocument();
DMP dmpEntity = datasetEntity.getDmp();
DMP dmpEntity = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (!dmpEntity.isPublic() && dmpEntity.getUsers().stream().filter(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId())).collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
wordBuilder.fillFirstPage(dmpEntity, datasetEntity, document, true);
wordBuilder.fillFooter(dmpEntity, datasetEntity, document, true);
wordBuilder.fillFirstPage(dmpEntity, descriptionEntityEntity, document, true);
wordBuilder.fillFooter(dmpEntity, descriptionEntityEntity, document, true);
int powered_pos = wordBuilder.findPosOfPoweredBy(document);
XWPFParagraph powered_par = null;
@ -478,17 +486,17 @@ public class DatasetManager {
}*/
Map<String, Object> properties = new HashMap<>();
if (datasetEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(datasetEntity.getProperties());
if (descriptionEntityEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(descriptionEntityEntity.getProperties());
properties = jObject.toMap();
}
// wordBuilder.addParagraphContent("Dataset Description", document, ParagraphStyle.HEADER2, BigInteger.ZERO);
PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, datasetEntity);
PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, descriptionEntityEntity);
visibilityRuleService.setProperties(properties);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
wordBuilder.build(document, pagedDatasetProfile, visibilityRuleService);
String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
String label = descriptionEntityEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
// File exportFile = new File(label + ".docx");
// Removes the top empty headings.
@ -546,17 +554,18 @@ public class DatasetManager {
}
public FileEnvelope getWordDocumentFile(ConfigLoader configLoader, String id, VisibilityRuleService visibilityRuleService) throws IOException, InvalidApplicationException {
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
if (!datasetEntity.getDmp().isPublic() && datasetEntity.getDmp().getUsers()
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (!dmp.isPublic() && dmp.getUsers()
.stream().filter(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId()))
.collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
String label = descriptionEntityEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
FileEnvelope exportEnvelope = new FileEnvelope();
exportEnvelope.setFilename(label + ".docx");
String uuid = UUID.randomUUID().toString();
File exportFile = new File(this.environment.getProperty("temp.temp") + uuid + ".docx");
XWPFDocument document = getWordDocument(configLoader, datasetEntity, visibilityRuleService);
XWPFDocument document = getWordDocument(configLoader, descriptionEntityEntity, visibilityRuleService);
FileOutputStream out = new FileOutputStream(exportFile);
document.write(out);
out.close();
@ -564,9 +573,9 @@ public class DatasetManager {
return exportEnvelope;
}
public String getWordDocumentText (Dataset datasetEntity) throws Exception {
DatasetWizardModel datasetWizardModel = new DatasetWizardModel().fromDataModel(datasetEntity);
datasetWizardModel.setDatasetProfileDefinition(this.getPagedProfile(datasetWizardModel, datasetEntity));
public String getWordDocumentText (DescriptionEntity descriptionEntityEntity) throws Exception {
DatasetWizardModel datasetWizardModel = new DatasetWizardModel().fromDataModel(descriptionEntityEntity);
datasetWizardModel.setDatasetProfileDefinition(this.getPagedProfile(datasetWizardModel, descriptionEntityEntity));
XWPFDocument document = getLightWordDocument(this.configLoader, datasetWizardModel, new VisibilityRuleServiceImpl());
XWPFWordExtractor extractor = new XWPFWordExtractor(document);
return extractor.getText();/*.replaceAll("\n\\s*", " ");*/
@ -575,37 +584,38 @@ public class DatasetManager {
public FileEnvelope getXmlDocument(String id, VisibilityRuleService visibilityRuleService) throws InstantiationException, IllegalAccessException, IOException, InvalidApplicationException {
ExportXmlBuilder xmlBuilder = new ExportXmlBuilder();
DatasetWizardModel dataset = new DatasetWizardModel();
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
if (!datasetEntity.getDmp().isPublic() && datasetEntity.getDmp().getUsers()
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
DMP dmp = databaseRepository.getDmpDao().find(descriptionEntityEntity.getDmp());
if (!dmp.isPublic() && dmp.getUsers()
.stream().filter(userInfo -> this.userScope.getUserIdSafe().equals(userInfo.getUser().getId()))
.collect(Collectors.toList()).size() == 0)
throw new UnauthorisedException();
Map<String, Object> properties = new HashMap<>();
if (datasetEntity.getProperties() != null) {
JSONObject jobject = new JSONObject(datasetEntity.getProperties());
if (descriptionEntityEntity.getProperties() != null) {
JSONObject jobject = new JSONObject(descriptionEntityEntity.getProperties());
properties = jobject.toMap();
}
PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, datasetEntity);
PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, descriptionEntityEntity);
visibilityRuleService.setProperties(properties);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
File file = xmlBuilder.build(pagedDatasetProfile, datasetEntity.getProfile().getId(), visibilityRuleService, environment);
File file = xmlBuilder.build(pagedDatasetProfile, descriptionEntityEntity.getProfile(), visibilityRuleService, environment);
FileEnvelope fileEnvelope = new FileEnvelope();
fileEnvelope.setFile(file);
String label = datasetEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
String label = descriptionEntityEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
fileEnvelope.setFilename(label);
return fileEnvelope;
}
public Dataset createOrUpdate(DatasetWizardModel datasetWizardModel) throws Exception {
public DescriptionEntity createOrUpdate(DatasetWizardModel datasetWizardModel) throws Exception {
Boolean sendNotification = false;
Dataset tempDataset = null;
DescriptionEntity tempDescriptionEntity = null;
DMP dmp = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(datasetWizardModel.getDmp().getId());
if (datasetWizardModel.getId() != null) {
tempDataset = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(datasetWizardModel.getId());
if (tempDataset != null) {
tempDescriptionEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(datasetWizardModel.getId());
if (tempDescriptionEntity != null) {
Instant dbTime = Instant.ofEpochMilli(tempDataset.getModified().getTime()).truncatedTo(ChronoUnit.SECONDS);
Instant modelTime = Instant.ofEpochMilli(datasetWizardModel.getModified().getTime()).truncatedTo(ChronoUnit.SECONDS);
Instant dbTime = tempDescriptionEntity.getCreatedAt().truncatedTo(ChronoUnit.SECONDS);
Instant modelTime = datasetWizardModel.getModified().truncatedTo(ChronoUnit.SECONDS);
if (modelTime.toEpochMilli() != dbTime.toEpochMilli()) {
throw new Exception("Dataset has been modified already by another user.");
}
@ -616,47 +626,50 @@ public class DatasetManager {
}
if (dmp.getStatus().equals(DMP.DMPStatus.FINALISED.getValue()) && datasetWizardModel.getId() != null)
throw new Exception("DMP is finalized, therefore Dataset cannot be edited.");
Dataset dataset = datasetWizardModel.toDataModel();
dataset.setDmp(dmp);
dataset.setProperties(propertiesModelToString(datasetWizardModel.getDatasetProfileDefinition()));
DescriptionEntity descriptionEntity = datasetWizardModel.toDataModel();
descriptionEntity.setDmp(dmp.getId());
descriptionEntity.setProperties(propertiesModelToString(datasetWizardModel.getDatasetProfileDefinition()));
if (this.apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().getClient() != null) {
this.getTagsFromProfile(datasetWizardModel, dataset);
this.getTagsFromProfile(datasetWizardModel, descriptionEntity);
}
if (datasetWizardModel.getStatus() == (int) Dataset.Status.FINALISED.getValue()) {
String failedField = checkDatasetValidation(dataset);
if (datasetWizardModel.getStatus() == DescriptionStatus.Finalized) {
String failedField = checkDatasetValidation(descriptionEntity);
if (failedField != null) {
throw new Exception("Field value of " + failedField + " must be filled.");
}
}
UserInfo userInfo = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(this.userScope.getUserId()).build();
dataset.setCreator(userInfo);
descriptionEntity.setCreator(userInfo.getId());
createDataRepositoriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao(), dataset);
createExternalDatasetsIfTheyDontExist(dataset);
createRegistriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao(), dataset);
createServicesIfTheyDontExist(dataset);
Dataset dataset1 = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset);
datasetWizardModel.setId(dataset1.getId());
createDataRepositoriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao(), descriptionEntity);
createExternalDatasetsIfTheyDontExist(descriptionEntity);
createRegistriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao(), descriptionEntity);
createServicesIfTheyDontExist(descriptionEntity);
DescriptionEntity descriptionEntity1 = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(descriptionEntity);
datasetWizardModel.setId(descriptionEntity1.getId());
if (datasetWizardModel.getDmp().getGrant() == null) {
datasetWizardModel.setDmp(new DataManagementPlan().fromDataModelNoDatasets(dataset1.getDmp()));
DMP dmp1 = databaseRepository.getDmpDao().find(descriptionEntity1.getDmp());
datasetWizardModel.setDmp(new DataManagementPlan().fromDataModelNoDatasets(dmp1));
}
dataset1.setProfile(this.apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(datasetWizardModel.getProfile().getId()));
descriptionEntity1.setProfile(datasetWizardModel.getProfile().getId());
// datasetWizardModel.setDatasetProfileDefinition(getPagedProfile(datasetWizardModel, dataset1));
UUID dmpId = dataset1.getDmp().getId();
dataset1.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
updateTags(dataset1, datasetWizardModel.getTags());
UUID dmpId = descriptionEntity1.getDmp();
DMP dmp1 = databaseRepository.getDmpDao().find(descriptionEntity1.getDmp());
dmp1.setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
updateTags(descriptionEntity1, datasetWizardModel.getTags());
if (sendNotification) {
if (dataset1.getStatus() != Dataset.Status.FINALISED.getValue()) {
this.sendNotification(dataset1, dataset1.getDmp(), userInfo, NotificationType.DATASET_MODIFIED);
if (descriptionEntity1.getStatus() != DescriptionStatus.Finalized) {
this.sendNotification(descriptionEntity1, dmp1, userInfo, NotificationType.DATASET_MODIFIED);
} else {
this.sendNotification(dataset1, dataset1.getDmp(), userInfo, NotificationType.DATASET_MODIFIED_FINALISED);
this.sendNotification(descriptionEntity1, dmp1, userInfo, NotificationType.DATASET_MODIFIED_FINALISED);
}
}
this.deleteOldFilesAndAddNew(datasetWizardModel, userInfo);
return dataset1;
return descriptionEntity1;
}
private void deleteOldFilesAndAddNew(DatasetWizardModel datasetWizardModel, UserInfo userInfo) throws JsonProcessingException, InvalidApplicationException {
@ -697,7 +710,7 @@ public class DatasetManager {
});
}
private void sendNotification(Dataset dataset, DMP dmp, UserInfo user, NotificationType notificationType) throws InvalidApplicationException {
private void sendNotification(DescriptionEntity descriptionEntity, DMP dmp, UserInfo user, NotificationType notificationType) throws InvalidApplicationException {
List<UserDMP> userDMPS = databaseRepository.getUserDmpDao().asQueryable().where(((builder, root) -> builder.equal(root.get("dmp").get("id"), dmp.getId()))).toList();
for (UserDMP userDMP : userDMPS) {
if (!userDMP.getUser().getId().equals(user.getId())) {
@ -708,8 +721,8 @@ public class DatasetManager {
notification.setIsActive(ActiveStatus.ACTIVE);
notification.setData("{" +
"\"userId\": \"" + userDMP.getUser().getId() + "\"" +
", \"id\": \"" + dataset.getId() + "\"" +
", \"name\": \"" + dataset.getLabel() + "\"" +
", \"id\": \"" + descriptionEntity.getId() + "\"" +
", \"name\": \"" + descriptionEntity.getLabel() + "\"" +
", \"path\": \"" + notificationPaths.get(notificationType) + "\"" +
"}");
notification.setCreatedAt(new Date());
@ -722,9 +735,9 @@ public class DatasetManager {
}
public String checkDatasetValidation(Dataset dataset) throws Exception {
public String checkDatasetValidation(DescriptionEntity descriptionEntity) throws Exception {
List<String> datasetProfileValidators = new LinkedList<>();
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(dataset.getProfile().getId());
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(descriptionEntity.getProfile());
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(new ByteArrayInputStream(profile.getDefinition().getBytes()));
@ -742,12 +755,12 @@ public class DatasetManager {
nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
JSONObject obj = new JSONObject(dataset.getProperties());
JSONObject obj = new JSONObject(descriptionEntity.getProperties());
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
visibilityRuleService.setProperties(obj.toMap());
dataset.setProfile(profile);
PagedDatasetProfile pagedDatasetProfile = this.getPagedProfile(new DatasetWizardModel(), dataset);
descriptionEntity.setProfile(profile.getId());
PagedDatasetProfile pagedDatasetProfile = this.getPagedProfile(new DatasetWizardModel(), descriptionEntity);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
@ -798,7 +811,7 @@ public class DatasetManager {
return jobject.toString();
}
public void updateTags(Dataset datasetEntity, List<Tag> tags) throws Exception {
public void updateTags(DescriptionEntity descriptionEntityEntity, List<Tag> tags) throws Exception {
// if (datasetWizardModel.getTags() != null && !datasetWizardModel.getTags().isEmpty()) {
/*eu.eudat.elastic.entities.Dataset dataset = new eu.eudat.elastic.entities.Dataset();
dataset.setId(datasetWizardModel.getId().toString());
@ -854,92 +867,96 @@ public class DatasetManager {
dataset.setGrantStatus(datasetWizardModel.getDmp().getGrant().getStatus());
dataset.setFormData(this.getWordDocumentText(datasetWizardModel));*/
DatasetMapper mapper = new DatasetMapper(apiContext, this);
eu.eudat.elastic.entities.Dataset dataset = mapper.toElastic(datasetEntity, tags);
eu.eudat.elastic.entities.Dataset dataset = mapper.toElastic(descriptionEntityEntity, tags);
apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().createOrUpdate(dataset);
// }
}
private void createRegistriesIfTheyDontExist(RegistryDao registryDao, Dataset dataset) throws InvalidApplicationException {
if (dataset.getRegistries() != null && !dataset.getRegistries().isEmpty()) {
for (Registry registry : dataset.getRegistries()) {
RegistryCriteria criteria = new RegistryCriteria();
criteria.setLike(registry.getReference());
List<Registry> entries = registryDao.getWithCriteria(criteria).toList();
if (entries != null && !entries.isEmpty()) registry.setId(entries.get(0).getId());
else {
registry.setCreated(new Date());
registryDao.createOrUpdate(registry);
}
}
}
private void createRegistriesIfTheyDontExist(RegistryDao registryDao, DescriptionEntity descriptionEntity) throws InvalidApplicationException {
//TODO implement it on create
// if (descriptionEntity.getRegistries() != null && !descriptionEntity.getRegistries().isEmpty()) {
// for (Registry registry : descriptionEntity.getRegistries()) {
// RegistryCriteria criteria = new RegistryCriteria();
// criteria.setLike(registry.getReference());
// List<Registry> entries = registryDao.getWithCriteria(criteria).toList();
// if (entries != null && !entries.isEmpty()) registry.setId(entries.get(0).getId());
// else {
// registry.setCreated(new Date());
// registryDao.createOrUpdate(registry);
// }
// }
// }
}
private void createDataRepositoriesIfTheyDontExist(DataRepositoryDao dataRepositoryDao, Dataset dataset) throws InvalidApplicationException {
if (dataset.getDatasetDataRepositories() != null && !dataset.getDatasetDataRepositories().isEmpty()) {
for (DatasetDataRepository datasetDataRepository : dataset.getDatasetDataRepositories()) {
DataRepositoryCriteria criteria = new DataRepositoryCriteria();
criteria.setLike(datasetDataRepository.getDataRepository().getReference());
List<DataRepository> entries = dataRepositoryDao.getWithCriteria(criteria).toList();
if (entries != null && !entries.isEmpty()) {
datasetDataRepository.getDataRepository().setId(entries.get(0).getId());
datasetDataRepository.setDataset(dataset);
dataset.getDatasetDataRepositories().add(datasetDataRepository);
} else {
datasetDataRepository.getDataRepository().setId(UUID.randomUUID());
DataRepository dataRepository = dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository());
datasetDataRepository.setDataset(dataset);
datasetDataRepository.setDataRepository(dataRepository);
dataset.getDatasetDataRepositories().add(datasetDataRepository);
}
}
}
private void createDataRepositoriesIfTheyDontExist(DataRepositoryDao dataRepositoryDao, DescriptionEntity descriptionEntity) throws InvalidApplicationException {
//TODO implement it on create
// if (descriptionEntity.getDatasetDataRepositories() != null && !descriptionEntity.getDatasetDataRepositories().isEmpty()) {
// for (DatasetDataRepository datasetDataRepository : descriptionEntity.getDatasetDataRepositories()) {
// DataRepositoryCriteria criteria = new DataRepositoryCriteria();
// criteria.setLike(datasetDataRepository.getDataRepository().getReference());
// List<DataRepository> entries = dataRepositoryDao.getWithCriteria(criteria).toList();
// if (entries != null && !entries.isEmpty()) {
// datasetDataRepository.getDataRepository().setId(entries.get(0).getId());
// datasetDataRepository.setDataset(descriptionEntity);
// descriptionEntity.getDatasetDataRepositories().add(datasetDataRepository);
// } else {
// datasetDataRepository.getDataRepository().setId(UUID.randomUUID());
// DataRepository dataRepository = dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository());
// datasetDataRepository.setDataset(descriptionEntity);
// datasetDataRepository.setDataRepository(dataRepository);
// descriptionEntity.getDatasetDataRepositories().add(datasetDataRepository);
// }
// }
// }
}
private void createServicesIfTheyDontExist(Dataset dataset) throws InvalidApplicationException {
if (dataset.getServices() != null && !dataset.getServices().isEmpty()) {
for (DatasetService service : dataset.getServices()) {
ServiceCriteria criteria = new ServiceCriteria();
criteria.setLike(service.getService().getReference());
List<Service> entries = databaseRepository.getServiceDao().getWithCriteria(criteria).toList();
if (entries != null && !entries.isEmpty()) {
service.setDataset(dataset);
service.getService().setCreated(new Date());
service.setService(service.getService());
this.databaseRepository.getServiceDao().createOrUpdate(service.getService());
dataset.getServices().add(service);
}
}
}
private void createServicesIfTheyDontExist(DescriptionEntity descriptionEntity) throws InvalidApplicationException {
//TODO implement it on create
// if (descriptionEntity.getServices() != null && !descriptionEntity.getServices().isEmpty()) {
// for (DatasetService service : descriptionEntity.getServices()) {
// ServiceCriteria criteria = new ServiceCriteria();
// criteria.setLike(service.getService().getReference());
// List<Service> entries = databaseRepository.getServiceDao().getWithCriteria(criteria).toList();
// if (entries != null && !entries.isEmpty()) {
// service.setDataset(descriptionEntity);
// service.getService().setCreated(new Date());
// service.setService(service.getService());
// this.databaseRepository.getServiceDao().createOrUpdate(service.getService());
// descriptionEntity.getServices().add(service);
// }
// }
// }
}
private void createExternalDatasetsIfTheyDontExist(Dataset dataset) throws InvalidApplicationException {
if (dataset.getDatasetExternalDatasets() != null && !dataset.getDatasetExternalDatasets().isEmpty()) {
for (DatasetExternalDataset datasetExternalDataset : dataset.getDatasetExternalDatasets()) {
ExternalDatasetCriteria criteria = new ExternalDatasetCriteria();
criteria.setLike(datasetExternalDataset.getExternalDataset().getReference());
List<ExternalDataset> entries = databaseRepository.getExternalDatasetDao().getWithCriteria(criteria).toList();
if (entries != null && !entries.isEmpty()) {
datasetExternalDataset.getExternalDataset().setId(entries.get(0).getId());
datasetExternalDataset.setDataset(dataset);
dataset.getDatasetExternalDatasets().add(datasetExternalDataset);
} else {
datasetExternalDataset.getExternalDataset().setId(UUID.randomUUID());
datasetExternalDataset.setDataset(dataset);
ExternalDataset externalDataset = databaseRepository.getExternalDatasetDao().createOrUpdate(datasetExternalDataset.getExternalDataset());
datasetExternalDataset.setExternalDataset(externalDataset);
dataset.getDatasetExternalDatasets().add(datasetExternalDataset);
}
}
}
private void createExternalDatasetsIfTheyDontExist(DescriptionEntity descriptionEntity) throws InvalidApplicationException {
//TODO implement it on create
// if (descriptionEntity.getDatasetExternalDatasets() != null && !descriptionEntity.getDatasetExternalDatasets().isEmpty()) {
// for (DatasetExternalDataset datasetExternalDataset : descriptionEntity.getDatasetExternalDatasets()) {
// ExternalDatasetCriteria criteria = new ExternalDatasetCriteria();
// criteria.setLike(datasetExternalDataset.getExternalDataset().getReference());
// List<ExternalDataset> entries = databaseRepository.getExternalDatasetDao().getWithCriteria(criteria).toList();
// if (entries != null && !entries.isEmpty()) {
// datasetExternalDataset.getExternalDataset().setId(entries.get(0).getId());
// datasetExternalDataset.setDataset(descriptionEntity);
// descriptionEntity.getDatasetExternalDatasets().add(datasetExternalDataset);
// } else {
// datasetExternalDataset.getExternalDataset().setId(UUID.randomUUID());
// datasetExternalDataset.setDataset(descriptionEntity);
// ExternalDataset externalDataset = databaseRepository.getExternalDatasetDao().createOrUpdate(datasetExternalDataset.getExternalDataset());
// datasetExternalDataset.setExternalDataset(externalDataset);
// descriptionEntity.getDatasetExternalDatasets().add(datasetExternalDataset);
// }
// }
// }
}
public void makePublic(DatasetDao datasetDao, UUID id) throws Exception {
Dataset dataset = datasetDao.find(id);
if (dataset.getStatus() != Dataset.Status.FINALISED.getValue())
DescriptionEntity descriptionEntity = datasetDao.find(id);
if (descriptionEntity.getStatus() != DescriptionStatus.Finalized)
throw new Exception("You cannot make public a Dataset That Has not Been Finalised");
datasetDao.createOrUpdate(dataset);
datasetDao.createOrUpdate(descriptionEntity);
metricsManager.increaseValue(MetricNames.DATASET, 1, MetricNames.PUBLISHED);
}
@ -965,7 +982,7 @@ public class DatasetManager {
HttpStatus.OK);
}
public Dataset createDatasetFromXml(MultipartFile importFile, String dmpId, String datasetProfileId) throws JAXBException, IOException, InvalidApplicationException {
public DescriptionEntity createDatasetFromXml(MultipartFile importFile, String dmpId, String datasetProfileId) throws JAXBException, IOException, InvalidApplicationException {
DatasetImportPagedDatasetProfile importModel = new DatasetImportPagedDatasetProfile();
JAXBContext jaxbContext;
@ -1008,21 +1025,21 @@ public class DatasetManager {
JSONObject jsonDatasetProperties = new JSONObject(importMap);
// Creates the entity data set to save.
Dataset entity = new Dataset();
DescriptionEntity entity = new DescriptionEntity();
entity.setProperties(jsonDatasetProperties.toString());
entity.setLabel(importFile.getOriginalFilename());
DMP dmp = new DMP();
dmp.setId(UUID.fromString(dmpId));
entity.setDmp(dmp);
entity.setStatus((short) 0);
entity.setCreated(new Date());
entity.setModified(new Date());
entity.setDmp(dmp.getId());
entity.setStatus(DescriptionStatus.Saved);
entity.setCreatedAt(Instant.now());
entity.setUpdatedAt(Instant.now());
DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
profile.setId(UUID.fromString(datasetProfileId));
entity.setProfile(profile);
entity.setProfile(profile.getId());
UserInfo userInfo = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(this.userScope.getUserId()).build();
entity.setCreator(userInfo);
entity.setCreator(userInfo.getId());
updateTagsXmlImportDataset(apiContext.getOperationsContext().getElasticRepository().getDatasetRepository(), entity);
createRegistriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao(), entity);
@ -1034,19 +1051,20 @@ public class DatasetManager {
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(entity);
}
public void updateTagsXmlImportDataset(DatasetRepository datasetRepository, Dataset dataset) throws IOException {
public void updateTagsXmlImportDataset(DatasetRepository datasetRepository, DescriptionEntity descriptionEntity) throws IOException {
// TODO: When tags functionality return.
}
public DatasetWizardModel datasetUpdateProfile(String id) throws InvalidApplicationException {
DatasetWizardModel dataset = new DatasetWizardModel();
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, datasetEntity));
dataset.fromDataModel(datasetEntity);
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id), HintedModelFactory.getHint(DatasetWizardModel.class));
dataset.setDatasetProfileDefinition(getPagedProfile(dataset, descriptionEntityEntity));
dataset.fromDataModel(descriptionEntityEntity);
// Creates the Criteria to get all version of DescriptionTemplate in question.
DatasetProfileCriteria profileCriteria = new DatasetProfileCriteria();
UUID profileId = datasetEntity.getProfile().getGroupId();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getGroupId();
List<UUID> uuidList = new LinkedList<>();
uuidList.add(profileId);
profileCriteria.setGroupIds(uuidList);
@ -1055,7 +1073,7 @@ public class DatasetManager {
DescriptionTemplateEntity item = databaseRepository.getDatasetProfileDao().getWithCriteria(profileCriteria).getSingle();
// Sets the latest version of dataet Profile to the Dataset in question.
dataset.setDatasetProfileDefinition(getLatestDatasetProfile(datasetEntity, item));
dataset.setDatasetProfileDefinition(getLatestDatasetProfile(descriptionEntityEntity, item));
dataset.setProfile(new DatasetProfileOverviewModel().fromDataModel(item));
// Now at latest version.
@ -1078,11 +1096,11 @@ public class DatasetManager {
return dataset;
}
public PagedDatasetProfile getLatestDatasetProfile(Dataset datasetEntity, DescriptionTemplateEntity profile) {
public PagedDatasetProfile getLatestDatasetProfile(DescriptionEntity descriptionEntityEntity, DescriptionTemplateEntity profile) {
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = userManager.generateDatasetProfileModel(profile);
datasetprofile.setStatus(datasetEntity.getStatus());
if (datasetEntity.getProperties() != null) {
JSONObject jobject = new JSONObject(datasetEntity.getProperties());
datasetprofile.setStatus(descriptionEntityEntity.getStatus().getValue());
if (descriptionEntityEntity.getProperties() != null) {
JSONObject jobject = new JSONObject(descriptionEntityEntity.getProperties());
Map<String, Object> properties = jobject.toMap();
datasetprofile.fromJsonObject(properties);
}
@ -1108,12 +1126,13 @@ public class DatasetManager {
public void generateIndex() throws InvalidApplicationException {
if (this.authorizationService.authorize(Permission.AdminRole)) {
this.apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().asQueryable().toList();
List<Dataset> datasetEntities = new ArrayList<>(this.apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().asQueryable().toList());
datasetEntities.forEach(datasetEntity -> {
List<DescriptionEntity> descriptionEntityEntities = new ArrayList<>(this.apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().asQueryable().toList());
descriptionEntityEntities.forEach(datasetEntity -> {
try {
eu.eudat.elastic.entities.Dataset dataset = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(datasetEntity.getId().toString());
UUID dmpId = datasetEntity.getDmp().getId();
datasetEntity.getDmp().setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
UUID dmpId = datasetEntity.getDmp();
DMP dmp = databaseRepository.getDmpDao().find(datasetEntity.getDmp());
dmp.setUsers(new HashSet<>(apiContext.getOperationsContext().getDatabaseRepository().getUserDmpDao().asQueryable().where((builder, root) -> builder.equal(root.get("dmp").get("id"), dmpId)).toList()));
updateTags(datasetEntity, dataset != null ? dataset.getTags() : null);
} catch (Exception e) {
logger.error(e.getMessage(), e);
@ -1132,9 +1151,9 @@ public class DatasetManager {
}
}
public void getTagsFromProfile(DatasetWizardModel wizardModel, Dataset dataset) throws IOException, InvalidApplicationException {
dataset.setProfile(apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(dataset.getProfile().getId()));
wizardModel.setDatasetProfileDefinition(this.getPagedProfile(wizardModel, dataset));
public void getTagsFromProfile(DatasetWizardModel wizardModel, DescriptionEntity descriptionEntity) throws IOException, InvalidApplicationException {
descriptionEntity.setProfile(descriptionEntity.getProfile());
wizardModel.setDatasetProfileDefinition(this.getPagedProfile(wizardModel, descriptionEntity));
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(wizardModel.getDatasetProfileDefinition());
JsonNode propertiesJson = mapper.readTree(json);
@ -1184,7 +1203,7 @@ public class DatasetManager {
}
@Transactional
private DatasetListingModel mapModel(Dataset item) {
private DatasetListingModel mapModel(DescriptionEntity item) {
/*if (item.getProfile() == null)
return null;*/
DatasetListingModel listingModel = new DatasetListingModel().fromDataModel(item);

View File

@ -1,11 +1,13 @@
package eu.eudat.logic.managers;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.dao.criteria.DatasetProfileCriteria;
import eu.eudat.data.dao.entities.DMPDao;
import eu.eudat.data.dao.entities.DatasetProfileDao;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.UserInfo;
import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest;
@ -51,20 +53,21 @@ public class DatasetWizardManager {
}
public void unlock(ApiContext apiContext, UUID uuid) throws DatasetWizardCannotUnlockException, InvalidApplicationException {
Dataset dataset = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid);
if(dataset.getDmp().getStatus() == DMP.DMPStatus.FINALISED.getValue()) throw new DatasetWizardCannotUnlockException("To perform this action you will need to revert DMP's finalisation");
dataset.setStatus(Dataset.Status.SAVED.getValue());
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(dataset);
DescriptionEntity descriptionEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid);
DMP dmp = apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(descriptionEntity.getDmp());
if(dmp.getStatus() == DMP.DMPStatus.FINALISED.getValue()) throw new DatasetWizardCannotUnlockException("To perform this action you will need to revert DMP's finalisation");
descriptionEntity.setStatus(DescriptionStatus.Saved);
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(descriptionEntity);
return;
}
public void delete(ApiContext apiContext, UUID uuid) throws IOException, InvalidApplicationException {
Dataset oldDataset = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid);
DescriptionEntity oldDescriptionEntity = apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().find(uuid);
eu.eudat.elastic.entities.Dataset oldDatasetElasitc = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(uuid.toString());
oldDataset.setStatus(Dataset.Status.DELETED.getValue());
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(oldDataset);
oldDescriptionEntity.setIsActive(IsActive.Inactive);
apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().createOrUpdate(oldDescriptionEntity);
if (oldDatasetElasitc != null && uuid != null && oldDatasetElasitc.getId()!= null) {
oldDatasetElasitc.setStatus(oldDataset.getStatus());
oldDatasetElasitc.setStatus(oldDescriptionEntity.getStatus().getValue());
apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().createOrUpdate(oldDatasetElasitc);
}
}

View File

@ -412,7 +412,7 @@ public class MetricsManager {
List<DescriptionTemplateEntity> descriptionTemplateEntities = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().getWithCriteria(criteria).withFields(Collections.singletonList("id")).toList();
DatasetCriteria datasetCriteria = new DatasetCriteria();
datasetCriteria.setDatasetTemplates(descriptionTemplateEntities.stream().map(DescriptionTemplateEntity::getId).collect(Collectors.toList()));
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria).select(root -> root.getProfile().getId()).stream().distinct().count();
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria).select(root -> root.getProfile()).stream().distinct().count();
}
}

View File

@ -1,5 +1,6 @@
package eu.eudat.logic.mapper.elastic;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.dao.criteria.DataManagementPlanCriteria;
import eu.eudat.data.old.DMP;
import eu.eudat.elastic.criteria.DatasetCriteria;
@ -22,64 +23,65 @@ public class DatasetMapper {
this.datasetManager = datasetManager;
}
public Dataset toElastic(eu.eudat.data.old.Dataset dataset, List<Tag> tags) throws Exception {
if (dataset.getProfile() == null) {
public Dataset toElastic(DescriptionEntity descriptionEntity, List<Tag> tags) throws Exception {
if (descriptionEntity.getProfile() == null) {
return null;
}
//TODO
Dataset elastic = new Dataset();
elastic.setId(dataset.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(dataset.getLabel());
elastic.setDescription(dataset.getDescription());
elastic.setTemplate(dataset.getProfile().getId());
elastic.setStatus(dataset.getStatus());
elastic.setDmp(dataset.getDmp().getId());
elastic.setGroup(dataset.getDmp().getGroupId());
if (dataset.getDmp().getGrant() != null) {
elastic.setGrant(dataset.getDmp().getGrant().getId());
}
elastic.setCreated(dataset.getCreated());
elastic.setModified(dataset.getModified());
elastic.setFinalizedAt(dataset.getFinalizedAt());
if (dataset.getDmp().getUsers() != null) {
elastic.setCollaborators(dataset.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(dataset.getDmp().getGroupId()));
apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(dmpCriteria).toList().stream()
.max(Comparator.comparing(DMP::getVersion)).ifPresent(dmp -> elastic.setLastVersion(dmp.getId().equals(dataset.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(dataset.getDmp().getId())));
if (elastic.getLastVersion() == null) {
elastic.setLastVersion(true);
}
if (elastic.getLastPublicVersion() == null) {
elastic.setLastPublicVersion(false);
}
if (dataset.getDmp().getOrganisations() != null) {
elastic.setOrganizations(dataset.getDmp().getOrganisations().stream().map(OrganizationMapper::toElastic).collect(Collectors.toList()));
}
elastic.setPublic(dataset.getDmp().isPublic());
if (dataset.getDmp().getGrant() != null) {
elastic.setGrantStatus(dataset.getDmp().getGrant().getStatus());
}
elastic.setFormData(datasetManager.getWordDocumentText(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;
}

View File

@ -70,7 +70,7 @@ public class DmpMapper {
if (dataset1 != null) {
tags = dataset1.getTags();
}
dataset.setDmp(dmp);
dataset.setDmp(dmp.getId());
return datasetMapper.toElastic(dataset, tags);
} catch (Exception e) {
logger.error(e.getMessage(), e);

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.elastic.entities.Tag;
import eu.eudat.logic.managers.DatasetManager;
@ -52,10 +52,10 @@ public class PrefillingMapper {
DescriptionTemplateEntity profile, DatasetManager datasetManager, LicenseManager licenseManager) throws Exception {
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
datasetWizardModel.setProfile(new DatasetProfileOverviewModel().fromDataModel(profile));
Dataset dataset = new Dataset();
dataset.setProfile(profile);
DescriptionEntity descriptionEntity = new DescriptionEntity();
descriptionEntity.setProfile(profile.getId());
Map<String, Object> properties = new HashMap<>();
JsonNode parentNode = mapper.readTree(mapper.writeValueAsString(datasetManager.getPagedProfile(datasetWizardModel, dataset)));
JsonNode parentNode = mapper.readTree(mapper.writeValueAsString(datasetManager.getPagedProfile(datasetWizardModel, descriptionEntity)));
for (DefaultPrefillingMapping prefillingMapping: prefillingGet.getMappings()) {
List<String> sourceKeys = Arrays.asList(prefillingMapping.getSource().split("\\."));
Object sourceValue = null;
@ -81,8 +81,8 @@ public class PrefillingMapper {
for (PrefillingFixedMapping fixedMapping: prefillingGet.getFixedMappings()) {
setValue(fixedMapping, fixedMapping.getValue(), datasetWizardModel, parentNode, properties, type, licenseManager);
}
dataset.setProperties(mapper.writeValueAsString(properties));
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, dataset));
descriptionEntity.setProperties(mapper.writeValueAsString(properties));
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, descriptionEntity));
return datasetWizardModel;
}

View File

@ -2,6 +2,7 @@ package eu.eudat.logic.security.repositorydeposit.mapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.*;
import eu.eudat.depositinterface.models.*;
import eu.eudat.commons.types.xml.XmlBuilder;
@ -52,11 +53,12 @@ public class DMPToDepositMapper {
}
@Transactional
private static DatasetDepositModel fromDataset(Dataset entity){
private static DatasetDepositModel fromDataset(DescriptionEntity entity){
DatasetDepositModel deposit = new DatasetDepositModel();
deposit.setLabel(entity.getLabel());
deposit.setDescription(entity.getDescription());
deposit.setProfileDefinition(entity.getProfile().getDefinition());
//TODO
//deposit.setProfileDefinition(entity.getProfile().getDefinition());
deposit.setProperties(entity.getProperties());
deposit.setFields(fromDefinitionAndProperties(deposit.getProfileDefinition(), deposit.getProperties()));
return deposit;

View File

@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.commons.enums.FieldDataComboBoxType;
import eu.eudat.commons.types.descriptiontemplate.fielddata.*;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.Organisation;
import eu.eudat.data.old.Researcher;
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
@ -1014,7 +1014,7 @@ public class WordBuilder {
return -1;
}
public void fillFirstPage(DMP dmpEntity, Dataset datasetEntity, XWPFDocument document, boolean isDataset) {
public void fillFirstPage(DMP dmpEntity, DescriptionEntity descriptionEntityEntity, XWPFDocument document, boolean isDataset) {
int parPos = 0;
int descrParPos = -1;
XWPFParagraph descrPar = null;
@ -1030,17 +1030,17 @@ public class WordBuilder {
} else if(text.contains("{ARGOS.DMP.VERSION}")) {
text = text.replace("{ARGOS.DMP.VERSION}", "Version " + dmpEntity.getVersion());
r.setText(text, 0);
} else if(datasetEntity != null && text.contains("{ARGOS.DATASET.TITLE}")) {
text = text.replace("{ARGOS.DATASET.TITLE}", datasetEntity.getLabel());
} else if(descriptionEntityEntity != null && text.contains("{ARGOS.DATASET.TITLE}")) {
text = text.replace("{ARGOS.DATASET.TITLE}", descriptionEntityEntity.getLabel());
r.setText(text, 0);
// } else if(text.equals("Description") && ((!isDataset && (dmpEntity == null || dmpEntity.getDescription() != null)) || (isDataset && (datasetEntity == null || datasetEntity.getDescription() == null)))) {
// r.setText("", 0);
} else if((dmpEntity != null && text.contains("{ARGOS.DMP.DESCRIPTION}") && !isDataset) || (datasetEntity != null && text.contains("{ARGOS.DATASET.DESCRIPTION}") && isDataset)) {
} else if((dmpEntity != null && text.contains("{ARGOS.DMP.DESCRIPTION}") && !isDataset) || (descriptionEntityEntity != null && text.contains("{ARGOS.DATASET.DESCRIPTION}") && isDataset)) {
descrParPos = parPos;
descrPar = p;
if(dmpEntity != null && !isDataset) {
text = text.replace("{ARGOS.DMP.DESCRIPTION}", "");
} else if(datasetEntity != null && isDataset) {
} else if(descriptionEntityEntity != null && isDataset) {
text = text.replace("{ARGOS.DATASET.DESCRIPTION}", "");
}
r.setText(text, 0);
@ -1080,10 +1080,10 @@ public class WordBuilder {
HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(descrPar, 0, cursor);
NodeTraversor.traverse(htmlToWorldBuilder, htmlDoc);
}
if((descrParPos != -1) && (datasetEntity != null) && (datasetEntity.getDescription() != null) && isDataset) {
if((descrParPos != -1) && (descriptionEntityEntity != null) && (descriptionEntityEntity.getDescription() != null) && isDataset) {
XmlCursor cursor = descrPar.getCTP().newCursor();
cursor.toNextSibling();
Document htmlDoc = Jsoup.parse(((String)datasetEntity.getDescription()).replaceAll("\n", "<br>"));
Document htmlDoc = Jsoup.parse(((String) descriptionEntityEntity.getDescription()).replaceAll("\n", "<br>"));
HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(descrPar, 0, cursor);
NodeTraversor.traverse(htmlToWorldBuilder, htmlDoc);
}
@ -1116,7 +1116,7 @@ public class WordBuilder {
}
}
public void fillFooter(DMP dmpEntity, Dataset datasetEntity, XWPFDocument document, boolean isDataset) {
public void fillFooter(DMP dmpEntity, DescriptionEntity descriptionEntityEntity, XWPFDocument document, boolean isDataset) {
document.getFooterList().forEach(xwpfFooter -> {
List<XWPFRun> runs = xwpfFooter.getParagraphs().get(0).getRuns();
if(runs != null){
@ -1127,8 +1127,8 @@ public class WordBuilder {
text = text.replace("{ARGOS.DMP.TITLE}", dmpEntity.getLabel());
r.setText(text, 0);
}
if(text.contains("{ARGOS.DATASET.TITLE}") && datasetEntity != null){
text = text.replace("{ARGOS.DATASET.TITLE}", datasetEntity.getLabel());
if(text.contains("{ARGOS.DATASET.TITLE}") && descriptionEntityEntity != null){
text = text.replace("{ARGOS.DATASET.TITLE}", descriptionEntityEntity.getLabel());
r.setText(text, 0);
}
if(text.contains("{ARGOS.DMP.LICENSE}")){

View File

@ -1,13 +1,13 @@
package eu.eudat.models.data.dashboard.recent.model;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import eu.eudat.models.data.listingmodels.UserInfoListingModel;
import java.util.Date;
import java.util.stream.Collectors;
public class RecentDatasetModel extends RecentActivityModel<Dataset, RecentDatasetModel> {
public class RecentDatasetModel extends RecentActivityModel<DescriptionEntity, RecentDatasetModel> {
private String dmp;
private String dmpId;
@ -28,54 +28,56 @@ public class RecentDatasetModel extends RecentActivityModel<Dataset, RecentDatas
}
@Override
public RecentActivityModel fromEntity(Dataset entity) {
public RecentActivityModel fromEntity(DescriptionEntity entity) {
//TODO
this.setType(RecentActivityType.DATASET.getIndex());
this.setId(entity.getId().toString());
this.setTitle(entity.getLabel());
this.setCreated(entity.getCreated());
this.setModified(entity.getModified());
this.setStatus(entity.getStatus());
this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
this.setFinalizedAt(entity.getFinalizedAt());
this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()): null);
if (entity.getDmp() != null && entity.getDmp().getGrant() != null) {
this.setGrant(entity.getDmp().getGrant().getLabel());
}
this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
this.setPublic(entity.getDmp().isPublic());
this.setUsers(entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()));
// this.setId(entity.getId().toString());
// this.setTitle(entity.getLabel());
// this.setCreated(entity.getCreated());
// this.setModified(entity.getModified());
// this.setStatus(entity.getStatus());
// this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
// this.setFinalizedAt(entity.getFinalizedAt());
// this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
// this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()): null);
// if (entity.getDmp() != null && entity.getDmp().getGrant() != null) {
// this.setGrant(entity.getDmp().getGrant().getLabel());
// }
// this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
// this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
// this.setPublic(entity.getDmp().isPublic());
// this.setUsers(entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()));
return this;
}
public RecentDatasetModel fromDmpEntity(Dataset entity) {
public RecentDatasetModel fromDmpEntity(DescriptionEntity entity) {
//TODO
this.setType(RecentActivityType.DATASET.getIndex());
this.setId(entity.getId().toString());
this.setTitle(entity.getLabel());
this.setCreated(entity.getCreated());
this.setModified(entity.getModified());
this.setStatus(entity.getStatus());
this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
this.setFinalizedAt(entity.getFinalizedAt());
this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null);
if (entity.getDmp() != null && entity.getDmp().getGrant() != null) {
this.setGrant(entity.getDmp().getGrant().getLabel());
}
this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
// this.setId(entity.getId().toString());
// this.setTitle(entity.getLabel());
// this.setCreated(entity.getCreated());
// this.setModified(entity.getModified());
// this.setStatus(entity.getStatus());
// this.setVersion(entity.getDmp() != null ? entity.getDmp().getVersion(): 0);
// this.setFinalizedAt(entity.getFinalizedAt());
// this.setPublishedAt(entity.getDmp() != null ? entity.getDmp().getPublishedAt() : new Date());
// this.setProfile(entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null);
// if (entity.getDmp() != null && entity.getDmp().getGrant() != null) {
// this.setGrant(entity.getDmp().getGrant().getLabel());
// }
// this.setDmp( entity.getDmp() != null ? entity.getDmp().getLabel() : "");
// this.setDmpId(entity.getDmp() != null ? entity.getDmp().getId().toString() : "");
return this;
}
@Override
public RecentDatasetModel fromDataModel(Dataset entity) {
public RecentDatasetModel fromDataModel(DescriptionEntity entity) {
return (RecentDatasetModel) this.fromEntity(entity);
}
@Override
public Dataset toDataModel() throws Exception {
public DescriptionEntity toDataModel() throws Exception {
return null;
}

View File

@ -1,5 +1,6 @@
package eu.eudat.models.data.dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.DatasetDataRepository;
import eu.eudat.data.old.DatasetService;
import eu.eudat.models.DataModel;
@ -12,7 +13,7 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class Dataset implements DataModel<eu.eudat.data.old.Dataset, Dataset> {
public class Dataset implements DataModel<DescriptionEntity, Dataset> {
private UUID id;
private String label;
private String reference;
@ -131,60 +132,62 @@ public class Dataset implements DataModel<eu.eudat.data.old.Dataset, Dataset> {
this.profile = profile;
}
public Dataset fromDataModel(eu.eudat.data.old.Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.properties = entity.getProperties();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.profile = new DatasetProfileListingModel();
this.profile.fromDataModel(entity.getProfile());
this.registries = entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList());
this.dataRepositories = entity.getDatasetDataRepositories().stream().map(item -> new DataRepository().fromDataModel(item.getDataRepository())).collect(Collectors.toList());
this.services = entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList());
this.created = entity.getCreated();
public Dataset fromDataModel(DescriptionEntity entity) {
//TODO
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.properties = entity.getProperties();
// this.reference = entity.getReference();
// this.description = entity.getDescription();
// this.profile = new DatasetProfileListingModel();
// this.profile.fromDataModel(entity.getProfile());
// this.registries = entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList());
// this.dataRepositories = entity.getDatasetDataRepositories().stream().map(item -> new DataRepository().fromDataModel(item.getDataRepository())).collect(Collectors.toList());
// this.services = entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList());
// this.created = entity.getCreated();
return this;
}
public eu.eudat.data.old.Dataset toDataModel() throws Exception {
eu.eudat.data.old.Dataset entity = new eu.eudat.data.old.Dataset();
entity.setId(this.id);
entity.setLabel(this.label);
entity.setReference(this.reference);
entity.setUri(this.uri);
entity.setProperties(this.properties);
entity.setStatus(this.status);
entity.setDmp(dmp.toDataModel());
entity.setDescription(this.description);
entity.setCreated(this.created != null ? this.created : new Date());
entity.setModified(new Date());
entity.setProfile(profile.toDataModel()); ///TODO
if (!this.registries.isEmpty()) {
entity.setRegistries(new HashSet<eu.eudat.data.old.Registry>());
for (Registry registry : this.registries) {
entity.getRegistries().add(registry.toDataModel());
}
}
if (!this.dataRepositories.isEmpty()) {
entity.setDatasetDataRepositories(new HashSet<>());
for (DataRepository dataRepositoryModel : this.dataRepositories) {
DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
eu.eudat.data.old.DataRepository dataRepository = dataRepositoryModel.toDataModel();
datasetDataRepository.setDataRepository(dataRepository);
entity.getDatasetDataRepositories().add(datasetDataRepository);
}
}
if (!this.services.isEmpty()) {
entity.setServices(new HashSet<DatasetService>());
for (Service serviceModel : this.services) {
eu.eudat.data.old.Service service = serviceModel.toDataModel();
DatasetService datasetService = new DatasetService();
datasetService.setService(service);
entity.getServices().add(datasetService);
}
}
public DescriptionEntity toDataModel() throws Exception {
DescriptionEntity entity = new DescriptionEntity();
//TODO
// entity.setId(this.id);
// entity.setLabel(this.label);
// entity.setReference(this.reference);
// entity.setUri(this.uri);
// entity.setProperties(this.properties);
// entity.setStatus(this.status);
// entity.setDmp(dmp.toDataModel());
// entity.setDescription(this.description);
// entity.setCreated(this.created != null ? this.created : new Date());
// entity.setModified(new Date());
// entity.setProfile(profile.toDataModel()); ///TODO
// if (!this.registries.isEmpty()) {
// entity.setRegistries(new HashSet<eu.eudat.data.old.Registry>());
// for (Registry registry : this.registries) {
// entity.getRegistries().add(registry.toDataModel());
// }
// }
//
// if (!this.dataRepositories.isEmpty()) {
// entity.setDatasetDataRepositories(new HashSet<>());
// for (DataRepository dataRepositoryModel : this.dataRepositories) {
// DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
// eu.eudat.data.old.DataRepository dataRepository = dataRepositoryModel.toDataModel();
// datasetDataRepository.setDataRepository(dataRepository);
// entity.getDatasetDataRepositories().add(datasetDataRepository);
// }
// }
//
// if (!this.services.isEmpty()) {
// entity.setServices(new HashSet<DatasetService>());
// for (Service serviceModel : this.services) {
// eu.eudat.data.old.Service service = serviceModel.toDataModel();
// DatasetService datasetService = new DatasetService();
// datasetService.setService(service);
// entity.getServices().add(datasetService);
// }
// }
return entity;
}

View File

@ -1,30 +1,32 @@
package eu.eudat.models.data.dataset;
import eu.eudat.data.old.Dataset;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.models.DataModel;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import eu.eudat.models.data.grant.GrantOverviewModel;
import eu.eudat.models.data.listingmodels.DataManagementPlanOverviewModel;
import eu.eudat.models.data.listingmodels.UserInfoListingModel;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class DatasetOverviewModel implements DataModel<Dataset, DatasetOverviewModel> {
public class DatasetOverviewModel implements DataModel<DescriptionEntity, DatasetOverviewModel> {
private UUID id;
private String label;
private short status;
private DescriptionStatus status;
private DatasetProfileOverviewModel datasetTemplate;
private List<UserInfoListingModel> users;
private DataManagementPlanOverviewModel dmp;
private GrantOverviewModel grant;
private String description;
private Boolean isPublic;
private Date modified;
private Date created;
private Instant modified;
private Instant created;
public UUID getId() {
return id;
@ -40,10 +42,10 @@ public class DatasetOverviewModel implements DataModel<Dataset, DatasetOverviewM
this.label = label;
}
public short getStatus() {
public DescriptionStatus getStatus() {
return status;
}
public void setStatus(short status) {
public void setStatus(DescriptionStatus status) {
this.status = status;
}
@ -94,43 +96,44 @@ public class DatasetOverviewModel implements DataModel<Dataset, DatasetOverviewM
isPublic = aPublic;
}
public Date getModified() {
public Instant getModified() {
return modified;
}
public void setModified(Date modified) {
public void setModified(Instant modified) {
this.modified = modified;
}
public Date getCreated() {
public Instant getCreated() {
return created;
}
public void setCreated(Date created) {
public void setCreated(Instant created) {
this.created = created;
}
@Override
public DatasetOverviewModel fromDataModel(Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.status = entity.getStatus();
this.datasetTemplate = new DatasetProfileOverviewModel().fromDataModel(entity.getProfile());
this.users = entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList());
this.dmp = new DataManagementPlanOverviewModel().fromDataModel(entity.getDmp());
if (entity.getDmp().getGrant() != null) {
this.grant = new GrantOverviewModel().fromDataModel(entity.getDmp().getGrant());
}
this.description = entity.getDescription();
this.isPublic = entity.getDmp().isPublic();
this.modified = entity.getModified();
this.created = entity.getCreated();
public DatasetOverviewModel fromDataModel(DescriptionEntity entity) {
//TODO Implement it on transfer
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.status = entity.getStatus();
// this.datasetTemplate = new DatasetProfileOverviewModel().fromDataModel(entity.getProfile());
// this.users = entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList());
// this.dmp = new DataManagementPlanOverviewModel().fromDataModel(entity.getDmp());
// if (entity.getDmp().getGrant() != null) {
// this.grant = new GrantOverviewModel().fromDataModel(entity.getDmp().getGrant());
// }
// this.description = entity.getDescription();
// this.isPublic = entity.getDmp().isPublic();
// this.modified = entity.getCreatedAt();
// this.created = entity.getUpdatedAt();
return this;
}
@Override
public Dataset toDataModel() throws Exception {
public DescriptionEntity toDataModel() throws Exception {
return null;
}

View File

@ -1,5 +1,7 @@
package eu.eudat.models.data.datasetwizard;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.*;
import eu.eudat.elastic.entities.Tag;
@ -13,19 +15,20 @@ import eu.eudat.models.data.externaldataset.ExternalDatasetListingModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
import net.minidev.json.JSONValue;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel> {
public class DatasetWizardModel implements DataModel<DescriptionEntity, DatasetWizardModel> {
private UUID id;
private String label;
private String reference;
private String uri;
private String description;
private short status;
private Date created;
private DescriptionStatus status;
private Instant created;
private DataManagementPlan dmp;
private Integer dmpSectionIndex;
private PagedDatasetProfile datasetProfileDefinition;
@ -36,7 +39,7 @@ public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel
private List<ExternalDatasetListingModel> externalDatasets;
private DatasetProfileOverviewModel profile;
private Boolean isProfileLatestVersion;
private Date modified;
private Instant modified;
public UUID getId() {
return id;
@ -73,17 +76,17 @@ public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel
this.description = description;
}
public short getStatus() {
public DescriptionStatus getStatus() {
return status;
}
public void setStatus(short status) {
public void setStatus(DescriptionStatus status) {
this.status = status;
}
public Date getCreated() {
public Instant getCreated() {
return created;
}
public void setCreated(Date created) {
public void setCreated(Instant created) {
this.created = created;
}
@ -158,154 +161,157 @@ public class DatasetWizardModel implements DataModel<Dataset, DatasetWizardModel
isProfileLatestVersion = profileLatestVersion;
}
public Date getModified() {
public Instant getModified() {
return modified;
}
public void setModified(Date modified) {
public void setModified(Instant modified) {
this.modified = modified;
}
@Override
public DatasetWizardModel fromDataModel(Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.status = entity.getStatus();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.profile = new DatasetProfileOverviewModel();
this.profile = this.profile.fromDataModel(entity.getProfile());
this.uri = entity.getUri();
this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
DataRepository dataRepository = new DataRepository().fromDataModel(item.getDataRepository());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
dataRepository.setInfo(values.get("info"));
}
return dataRepository;
}).collect(Collectors.toList()) : new ArrayList<>();
this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
this.created = entity.getCreated();
this.dmp = new DataManagementPlan().fromDataModelNoDatasets(entity.getDmp());
this.dmpSectionIndex = entity.getDmpSectionIndex();
this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel().fromDataModel(item.getExternalDataset());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
externalDatasetListingModel.setInfo(values.get("info"));
externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
}
return externalDatasetListingModel;
}).collect(Collectors.toList()) : new ArrayList<>();
this.modified = entity.getModified();
public DatasetWizardModel fromDataModel(DescriptionEntity entity) {
//TODO Implement it on transfer
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.status = entity.getStatus();
// this.reference = entity.getReference();
// this.description = entity.getDescription();
// this.profile = new DatasetProfileOverviewModel();
// this.profile = this.profile.fromDataModel(entity.getProfile());
// this.uri = entity.getUri();
// this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
// this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
// DataRepository dataRepository = new DataRepository().fromDataModel(item.getDataRepository());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// dataRepository.setInfo(values.get("info"));
// }
// return dataRepository;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
// this.created = entity.getCreated();
// this.dmp = new DataManagementPlan().fromDataModelNoDatasets(entity.getDmp());
// this.dmpSectionIndex = entity.getDmpSectionIndex();
// this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
// ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel().fromDataModel(item.getExternalDataset());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// externalDatasetListingModel.setInfo(values.get("info"));
// externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
// }
// return externalDatasetListingModel;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.modified = entity.getUpdatedAt();
return this;
}
public DatasetWizardModel fromDataModelNoDmp(Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.status = entity.getStatus();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.profile = new DatasetProfileOverviewModel();
this.profile = this.profile.fromDataModel(entity.getProfile());
this.uri = entity.getUri();
this.dmpSectionIndex = entity.getDmpSectionIndex();
this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
DataRepository dataRepository = new DataRepository().fromDataModel(item.getDataRepository());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
dataRepository.setInfo(values.get("info"));
}
return dataRepository;
}).collect(Collectors.toList()) : new ArrayList<>();
this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
this.created = entity.getCreated();
this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel().fromDataModel(item.getExternalDataset());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
externalDatasetListingModel.setInfo(values.get("info"));
externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
}
return externalDatasetListingModel;
}).collect(Collectors.toList()) : new ArrayList<>();
this.modified = entity.getModified();
public DatasetWizardModel fromDataModelNoDmp(DescriptionEntity entity) {
//TODO Implement it on transfer
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.status = entity.getStatus();
// this.reference = entity.getReference();
// this.description = entity.getDescription();
// this.profile = new DatasetProfileOverviewModel();
// this.profile = this.profile.fromDataModel(entity.getProfile());
// this.uri = entity.getUri();
// this.dmpSectionIndex = entity.getDmpSectionIndex();
// this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new Registry().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
// this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
// DataRepository dataRepository = new DataRepository().fromDataModel(item.getDataRepository());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// dataRepository.setInfo(values.get("info"));
// }
// return dataRepository;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
// this.created = entity.getCreated();
// this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
// ExternalDatasetListingModel externalDatasetListingModel = new ExternalDatasetListingModel().fromDataModel(item.getExternalDataset());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// externalDatasetListingModel.setInfo(values.get("info"));
// externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
// }
// return externalDatasetListingModel;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.modified = entity.getModified();
return this;
}
@Override
public Dataset toDataModel() throws Exception {
Dataset entity = new Dataset();
entity.setId(this.id);
entity.setLabel(this.label);
entity.setReference(this.reference);
entity.setUri(this.uri);
entity.setStatus(this.status);
if (this.status == (int) Dataset.Status.FINALISED.getValue())
entity.setFinalizedAt(new Date());
DMP dmp = new DMP();
dmp.setId(this.dmp.getId());
entity.setDmp(dmp);
entity.setDmpSectionIndex(this.dmpSectionIndex);
entity.setDescription(this.description);
entity.setCreated(this.created != null ? this.created : new Date());
entity.setModified(new Date());
DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
profile.setId(this.profile.getId());
entity.setProfile(profile);
if (this.registries != null && !this.registries.isEmpty()) {
entity.setRegistries(new HashSet<>());
for (Registry registry : this.registries) {
entity.getRegistries().add(registry.toDataModel());
}
}
if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) {
entity.setDatasetDataRepositories(new HashSet<>());
for (DataRepository dataRepositoryModel : this.dataRepositories) {
eu.eudat.data.old.DataRepository dataRepository = dataRepositoryModel.toDataModel();
DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
datasetDataRepository.setDataRepository(dataRepository);
Map<String, Map<String, String>> data = new HashMap<>();
Map<String, String> values = new HashMap<>();
values.put("info", dataRepositoryModel.getInfo());
data.put("data", values);
datasetDataRepository.setData(JSONValue.toJSONString(data));
entity.getDatasetDataRepositories().add(datasetDataRepository);
}
}
if (this.services != null && !this.services.isEmpty()) {
entity.setServices(new HashSet<>());
for (Service serviceModel : this.services) {
eu.eudat.data.old.Service service = serviceModel.toDataModel();
DatasetService datasetService = new DatasetService();
datasetService.setService(service);
entity.getServices().add(datasetService);
}
}
if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) {
entity.setDatasetExternalDatasets(new HashSet<>());
for (ExternalDatasetListingModel externalDataset : this.externalDatasets) {
ExternalDataset externalDatasetEntity = externalDataset.toDataModel();
DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
datasetExternalDataset.setExternalDataset(externalDatasetEntity);
Map<String,Map<String,String>> data = new HashMap<>();
Map<String,String> values = new HashMap<>();
values.put("info",externalDataset.getInfo());
values.put("type",externalDataset.getType().toString());
data.put("data",values);
datasetExternalDataset.setData(JSONValue.toJSONString(data));
entity.getDatasetExternalDatasets().add(datasetExternalDataset);
}
}
public DescriptionEntity toDataModel() throws Exception {
DescriptionEntity entity = new DescriptionEntity();
//TODO Implement it on transfer
// entity.setId(this.id);
// entity.setLabel(this.label);
// entity.setReference(this.reference);
// entity.setUri(this.uri);
// entity.setStatus(this.status);
// if (this.status == (int) DescriptionEntity.Status.FINALISED.getValue())
// entity.setFinalizedAt(new Date());
// DMP dmp = new DMP();
// dmp.setId(this.dmp.getId());
// entity.setDmp(dmp);
// entity.setDmpSectionIndex(this.dmpSectionIndex);
// entity.setDescription(this.description);
// entity.setCreated(this.created != null ? this.created : new Date());
// entity.setModified(new Date());
// DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
// profile.setId(this.profile.getId());
// entity.setProfile(profile);
// if (this.registries != null && !this.registries.isEmpty()) {
// entity.setRegistries(new HashSet<>());
// for (Registry registry : this.registries) {
// entity.getRegistries().add(registry.toDataModel());
// }
// }
//
// if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) {
// entity.setDatasetDataRepositories(new HashSet<>());
// for (DataRepository dataRepositoryModel : this.dataRepositories) {
// eu.eudat.data.old.DataRepository dataRepository = dataRepositoryModel.toDataModel();
// DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
// datasetDataRepository.setDataRepository(dataRepository);
// Map<String, Map<String, String>> data = new HashMap<>();
// Map<String, String> values = new HashMap<>();
// values.put("info", dataRepositoryModel.getInfo());
// data.put("data", values);
// datasetDataRepository.setData(JSONValue.toJSONString(data));
// entity.getDatasetDataRepositories().add(datasetDataRepository);
// }
// }
//
// if (this.services != null && !this.services.isEmpty()) {
// entity.setServices(new HashSet<>());
// for (Service serviceModel : this.services) {
// eu.eudat.data.old.Service service = serviceModel.toDataModel();
// DatasetService datasetService = new DatasetService();
// datasetService.setService(service);
// entity.getServices().add(datasetService);
// }
// }
//
// if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) {
// entity.setDatasetExternalDatasets(new HashSet<>());
// for (ExternalDatasetListingModel externalDataset : this.externalDatasets) {
// ExternalDataset externalDatasetEntity = externalDataset.toDataModel();
// DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
// datasetExternalDataset.setExternalDataset(externalDatasetEntity);
// Map<String,Map<String,String>> data = new HashMap<>();
// Map<String,String> values = new HashMap<>();
// values.put("info",externalDataset.getInfo());
// values.put("type",externalDataset.getType().toString());
// data.put("data",values);
// datasetExternalDataset.setData(JSONValue.toJSONString(data));
// entity.getDatasetExternalDatasets().add(datasetExternalDataset);
// }
// }
return entity;
}

View File

@ -2,6 +2,9 @@ package eu.eudat.models.data.dmp;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DmpBlueprintEntity;
import eu.eudat.data.old.*;
import eu.eudat.models.DataModel;
@ -283,11 +286,11 @@ public class DataManagementPlan implements DataModel<DMP, DataManagementPlan> {
if (entity.getDataset() != null) {
if (entity.isPublic()) {
this.datasets = entity.getDataset().stream()
.filter(dataset -> !dataset.getStatus().equals(Dataset.Status.DELETED.getValue()) && !dataset.getStatus().equals(Dataset.Status.CANCELED.getValue()) && !dataset.getStatus().equals(Dataset.Status.SAVED.getValue()))
.filter(dataset -> !dataset.getIsActive().equals(IsActive.Inactive) && !dataset.getStatus().equals(DescriptionStatus.Canceled) && !dataset.getStatus().equals(DescriptionStatus.Saved))
.map(x -> new DatasetWizardModel().fromDataModelNoDmp(x)).collect(Collectors.toList());
} else {
this.datasets = entity.getDataset().stream()
.filter(dataset -> !dataset.getStatus().equals(Dataset.Status.DELETED.getValue()) && !dataset.getStatus().equals(Dataset.Status.CANCELED.getValue()))
.filter(dataset -> !dataset.getIsActive().equals(IsActive.Inactive) && !dataset.getStatus().equals(DescriptionStatus.Saved))
.map(x -> new DatasetWizardModel().fromDataModelNoDmp(x)).collect(Collectors.toList());
}
}

View File

@ -1,6 +1,7 @@
package eu.eudat.models.data.dmp;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.*;
import eu.eudat.models.DataModel;
import eu.eudat.models.data.dataset.Dataset;
@ -176,14 +177,14 @@ public class DataManagementPlanNewVersionModel implements DataModel<DMP, DataMan
entity.setCreated(new Date());
entity.setLabel(this.label);
entity.setModified(new Date());
List<eu.eudat.data.old.Dataset> datasets = new LinkedList<>();
List<DescriptionEntity> descriptionEntities = new LinkedList<>();
if (this.datasets != null) {
for (Dataset dataset : this.datasets) {
eu.eudat.data.old.Dataset entityDataset = new eu.eudat.data.old.Dataset();
entityDataset.setId(dataset.getId());
datasets.add(entityDataset);
DescriptionEntity entityDescriptionEntity = new DescriptionEntity();
entityDescriptionEntity.setId(dataset.getId());
descriptionEntities.add(entityDescriptionEntity);
}
entity.setDataset(new HashSet<>(datasets));
entity.setDataset(new HashSet<>(descriptionEntities));
}
if (this.organisations != null && !this.organisations.isEmpty())
entity.setOrganisations(new HashSet<>(this.organisations.stream().map(item -> item.toDataModel()).collect(Collectors.toList())));

View File

@ -2,9 +2,11 @@ package eu.eudat.models.data.listingmodels;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.DMPDatasetProfile;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.models.DataModel;
import eu.eudat.models.data.dataset.DatasetOverviewModel;
import eu.eudat.models.data.dmp.AssociatedProfile;
@ -195,7 +197,7 @@ public class DataManagementPlanOverviewModel implements DataModel<DMP, DataManag
this.modifiedTime = entity.getModified();
this.finalizedAt = entity.getFinalizedAt();
this.organisations = entity.getOrganisations().stream().map(item -> new Organisation().fromDataModel(item)).collect(Collectors.toList());
this.datasets = entity.getDataset().stream().filter(dataset -> !dataset.getStatus().equals(Dataset.Status.DELETED.getValue()) && !dataset.getStatus().equals(Dataset.Status.CANCELED.getValue())).map(x-> new DatasetOverviewModel().fromDataModel(x)).collect(Collectors.toList());
this.datasets = entity.getDataset().stream().filter(dataset -> !dataset.getIsActive().equals(IsActive.Inactive) && !dataset.getStatus().equals(DescriptionStatus.Canceled)).map(x-> new DatasetOverviewModel().fromDataModel(x)).collect(Collectors.toList());
this.users = entity.getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList());
this.description = entity.getDescription();
if (entity.getResearchers() != null) {

View File

@ -1,11 +1,13 @@
package eu.eudat.models.data.listingmodels;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.Grant;
import eu.eudat.models.DataModel;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -13,19 +15,19 @@ import java.util.UUID;
import java.util.stream.Collectors;
public class DatasetListingModel implements DataModel<Dataset, DatasetListingModel> {
public class DatasetListingModel implements DataModel<DescriptionEntity, DatasetListingModel> {
private String id;
private String label;
private String grant;
private String dmp;
private String dmpId;
private DatasetProfileOverviewModel profile;
private int status;
private Date created;
private Date modified;
private DescriptionStatus status;
private Instant created;
private Instant modified;
private String description;
private Date finalizedAt;
private Date dmpPublishedAt;
private Instant finalizedAt;
private Instant dmpPublishedAt;
private int version;
private List<UserInfoListingModel> users;
private Boolean isPublic;
@ -73,24 +75,24 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
this.profile = profile;
}
public int getStatus() {
public DescriptionStatus getStatus() {
return status;
}
public void setStatus(int status) {
public void setStatus(DescriptionStatus status) {
this.status = status;
}
public Date getCreated() {
public Instant getCreated() {
return created;
}
public void setCreated(Date created) {
public void setCreated(Instant created) {
this.created = created;
}
public Date getModified() {
public Instant getModified() {
return modified;
}
public void setModified(Date modified) {
public void setModified(Instant modified) {
this.modified = modified;
}
@ -101,17 +103,17 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
this.description = description;
}
public Date getFinalizedAt() {
public Instant getFinalizedAt() {
return finalizedAt;
}
public void setFinalizedAt(Date finalizedAt) {
public void setFinalizedAt(Instant finalizedAt) {
this.finalizedAt = finalizedAt;
}
public Date getDmpPublishedAt() {
public Instant getDmpPublishedAt() {
return dmpPublishedAt;
}
public void setDmpPublishedAt(Date dmpPublishedAt) {
public void setDmpPublishedAt(Instant dmpPublishedAt) {
this.dmpPublishedAt = dmpPublishedAt;
}
@ -139,54 +141,56 @@ public class DatasetListingModel implements DataModel<Dataset, DatasetListingMod
}
@Override
public DatasetListingModel fromDataModel(Dataset entity) {
this.id = entity.getId() != null ? entity.getId().toString() : "";
this.label = entity.getLabel();
this.created = entity.getCreated();
this.modified = entity.getModified();
this.grant = (entity.getDmp() != null && entity.getDmp().getGrant() != null) ? entity.getDmp().getGrant().getLabel() : "";
this.dmp = entity.getDmp() != null ? entity.getDmp().getLabel() : "";
this.dmpId = entity.getDmp() != null ? entity.getDmp().getId().toString() : "";
this.profile = entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null;
this.description = entity.getDescription();
this.status = entity.getStatus();
if (entity.getFinalizedAt() == null && entity.getStatus() == Dataset.Status.FINALISED.getValue()) {
this.finalizedAt = entity.getDmp().getFinalizedAt();
} else {
this.finalizedAt = entity.getFinalizedAt();
}
this.dmpPublishedAt = entity.getDmp().getPublishedAt();
this.version = entity.getDmp().getVersion();
this.users = entity.getDmp() != null ? entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()) : new ArrayList<>();
this.isPublic = entity.getDmp() != null ? entity.getDmp().isPublic() : false;
public DatasetListingModel fromDataModel(DescriptionEntity entity) {
//TODO Implement it on transfer
// this.id = entity.getId() != null ? entity.getId().toString() : "";
// this.label = entity.getLabel();
// this.created = entity.getCreatedAt();
// this.modified = entity.getUpdatedAt();
// this.grant = (entity.getDmp() != null && entity.getDmp().getGrant() != null) ? entity.getDmp().getGrant().getLabel() : "";
// this.dmp = entity.getDmp() != null ? entity.getDmp().getLabel() : "";
// this.dmpId = entity.getDmp() != null ? entity.getDmp().getId().toString() : "";
// this.profile = entity.getProfile() != null ? new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()) : null;
// this.description = entity.getDescription();
// this.status = entity.getStatus();
// if (entity.getFinalizedAt() == null && entity.getStatus() == DescriptionStatus.Finalized) {
// this.finalizedAt = entity.getDmp().getFinalizedAt();
// } else {
// this.finalizedAt = entity.getFinalizedAt();
// }
// this.dmpPublishedAt = entity.getDmp().getPublishedAt();
// this.version = entity.getDmp().getVersion();
// this.users = entity.getDmp() != null ? entity.getDmp().getUsers().stream().map(x -> new UserInfoListingModel().fromDataModel(x)).collect(Collectors.toList()) : new ArrayList<>();
// this.isPublic = entity.getDmp() != null ? entity.getDmp().isPublic() : false;
return this;
}
@Override
public Dataset toDataModel() {
Dataset entity = new Dataset();
entity.setId(UUID.fromString(this.getId()));
entity.setLabel(this.getLabel());
entity.setCreated(this.getCreated());
entity.setModified(this.getModified());
entity.setDescription(this.getDescription());
entity.setFinalizedAt(this.getFinalizedAt());
entity.setStatus(Integer.valueOf(this.getStatus()).shortValue());
DMP dmp = new DMP();
if (this.getGrant() != null && !this.getGrant().isEmpty()) {
Grant grant = new Grant();
grant.setLabel(this.getGrant());
dmp.setGrant(grant);
}
dmp.setLabel(this.getDmp());
dmp.setId(UUID.fromString(this.getDmpId()));
dmp.setPublishedAt(this.getDmpPublishedAt());
dmp.setVersion(this.getVersion());
dmp.setUsers(this.getUsers().stream().map(UserInfoListingModel::toDataModel).collect(Collectors.toSet()));
dmp.setPublic(this.getPublic());
dmp.setFinalizedAt(this.getFinalizedAt());
entity.setDmp(dmp);
entity.setProfile(this.getProfile() != null ? this.getProfile().toDataModel() : null);
public DescriptionEntity toDataModel() {
//TODO Implement it on transfer
DescriptionEntity entity = new DescriptionEntity();
// entity.setId(UUID.fromString(this.getId()));
// entity.setLabel(this.getLabel());
// entity.setCreatedAt(this.getCreated());
// entity.setUpdatedAt(this.getModified());
// entity.setDescription(this.getDescription());
// entity.setFinalizedAt(this.getFinalizedAt());
// entity.setStatus(this.getStatus());
// DMP dmp = new DMP();
// if (this.getGrant() != null && !this.getGrant().isEmpty()) {
// Grant grant = new Grant();
// grant.setLabel(this.getGrant());
// dmp.setGrant(grant);
// }
// dmp.setLabel(this.getDmp());
// dmp.setId(UUID.fromString(this.getDmpId()));
// dmp.setPublishedAt(this.getDmpPublishedAt());
// dmp.setVersion(this.getVersion());
// dmp.setUsers(this.getUsers().stream().map(UserInfoListingModel::toDataModel).collect(Collectors.toSet()));
// dmp.setPublic(this.getPublic());
// dmp.setFinalizedAt(this.getFinalizedAt());
// entity.setDmp(dmp);
// entity.setProfile(this.getProfile() != null ? this.getProfile().toDataModel() : null);
return entity;
}

View File

@ -1,12 +1,14 @@
package eu.eudat.models.data.quickwizard;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import eu.eudat.models.data.dmp.DataManagementPlan;
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
import eu.eudat.models.data.user.composite.PagedDatasetProfile;
import java.time.Instant;
import java.util.Date;
public class DatasetDescriptionQuickWizardModel extends PagedDatasetProfile {
@ -25,10 +27,10 @@ public class DatasetDescriptionQuickWizardModel extends PagedDatasetProfile {
public DatasetWizardModel toDataModel(DataManagementPlan dmp, DescriptionTemplateEntity profile){
DatasetWizardModel newDataset = new DatasetWizardModel();
newDataset.setLabel(datasetLabel);
newDataset.setCreated(new Date());
newDataset.setCreated(Instant.now());
newDataset.setProfile(new DatasetProfileOverviewModel().fromDataModel(profile));
newDataset.setDmp(dmp);
newDataset.setStatus((short) this.getStatus());
newDataset.setStatus(DescriptionStatus.of((short)this.getStatus()));
//newDataset.setStatus(Dataset.Status.SAVED.getValue());

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.JsonPath;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.logic.managers.DatasetManager;
import eu.eudat.commons.types.xml.XmlBuilder;
import org.json.JSONArray;
@ -150,23 +150,23 @@ public class DatasetRDAExportModel {
}
public DatasetRDAExportModel fromDataModel(Dataset dataset, DatasetManager datasetManager) {
public DatasetRDAExportModel fromDataModel(DescriptionEntity descriptionEntity, DatasetManager datasetManager) {
// Map of template Ids to rda values.
JSONObject jObject = new JSONObject(dataset.getProperties());
JSONObject jObject = new JSONObject(descriptionEntity.getProperties());
Map<String, Object> templateIdsToValues = jObject.toMap();
/*--------- Building dataset rda export model ---------*/
DatasetRDAExportModel datasetRDAExportModel = new DatasetRDAExportModel();
datasetRDAExportModel.setDataset_id(new IdRDAExportModel(dataset.getId().toString(), "other"));
if (dataset.getDescription() != null) datasetRDAExportModel.setDescription(dataset.getDescription().replace("\n", " "));
datasetRDAExportModel.setIssued(DateFormat.getDateInstance(DateFormat.SHORT).format(dataset.getCreated()));
datasetRDAExportModel.setDataset_id(new IdRDAExportModel(descriptionEntity.getId().toString(), "other"));
if (descriptionEntity.getDescription() != null) datasetRDAExportModel.setDescription(descriptionEntity.getDescription().replace("\n", " "));
datasetRDAExportModel.setIssued(DateFormat.getDateInstance(DateFormat.SHORT).format(descriptionEntity.getCreatedAt()));
datasetRDAExportModel.setLanguage("en"); // mock data
datasetRDAExportModel.setTitle(dataset.getLabel());
datasetRDAExportModel.setTitle(descriptionEntity.getLabel());
// Transform the answered dataset description to json so we can parse it and fill the rda model.
JSONObject datasetDescriptionJson = null;
try {
String jsonResult = mapper.writeValueAsString(datasetManager.getSingle(dataset.getId().toString()).getDatasetProfileDefinition());
String jsonResult = mapper.writeValueAsString(datasetManager.getSingle(descriptionEntity.getId().toString()).getDatasetProfileDefinition());
datasetDescriptionJson = new JSONObject(jsonResult);
} catch (JsonProcessingException | InvalidApplicationException e) {
logger.error(e.getMessage(), e);
@ -192,26 +192,27 @@ public class DatasetRDAExportModel {
datasetRDAExportModel.setSensitive_data("unknown");
}
//TODO
/*--------- Building type. ---------*/
datasetRDAExportModel.setType(buildSingleProperties("dataset.type", datasetDescriptionJson, templateIdsToValues));
/*--------- Building data_quality_assurance. ---------*/
datasetRDAExportModel.setData_quality_assurance(buildDataQualityAssurance(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
/*--------- Building distribution. ---------*/
datasetRDAExportModel.setDistribution(buildDistribution(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
/*--------- Building keywords. ---------*/
datasetRDAExportModel.setKeyword(buildKeywords(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
/*--------- Building metadata items. ---------*/
datasetRDAExportModel.setMetadata(buildMetadata(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
/*--------- Building security and privacy items. ---------*/
datasetRDAExportModel.setSecurity_and_privacy(buildSecurityAndPrivacy(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
/*--------- Building technical_resource. ---------*/
datasetRDAExportModel.setTechnical_resource(buildTechnicalResource(datasetDescriptionJson, templateIdsToValues, dataset.getProfile().getDefinition()));
// datasetRDAExportModel.setType(buildSingleProperties("dataset.type", datasetDescriptionJson, templateIdsToValues));
//
// /*--------- Building data_quality_assurance. ---------*/
// datasetRDAExportModel.setData_quality_assurance(buildDataQualityAssurance(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
//
// /*--------- Building distribution. ---------*/
// datasetRDAExportModel.setDistribution(buildDistribution(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
//
// /*--------- Building keywords. ---------*/
// datasetRDAExportModel.setKeyword(buildKeywords(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
//
// /*--------- Building metadata items. ---------*/
// datasetRDAExportModel.setMetadata(buildMetadata(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
//
// /*--------- Building security and privacy items. ---------*/
// datasetRDAExportModel.setSecurity_and_privacy(buildSecurityAndPrivacy(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
//
// /*--------- Building technical_resource. ---------*/
// datasetRDAExportModel.setTechnical_resource(buildTechnicalResource(datasetDescriptionJson, templateIdsToValues, descriptionEntity.getProfile().getDefinition()));
return datasetRDAExportModel;
}

View File

@ -1,8 +1,10 @@
package eu.eudat.models.data.rda;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.EntityDoiEntity;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.UserDMP;
import eu.eudat.logic.managers.DatasetManager;
@ -139,9 +141,9 @@ public class DmpRDAExportModel {
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
dmpRda.created = formatter.format(entity.getCreated());
dmpRda.dataset = new LinkedList<>();
for (Dataset dataset : entity.getDataset()) {
if (dataset.getStatus() != Dataset.Status.DELETED.getValue() && dataset.getStatus() != Dataset.Status.CANCELED.getValue())
dmpRda.dataset.add(new DatasetRDAExportModel().fromDataModel(dataset, datasetManager));
for (DescriptionEntity descriptionEntity : entity.getDataset()) {
if (descriptionEntity.getIsActive() != IsActive.Inactive && descriptionEntity.getStatus() != DescriptionStatus.Canceled)
dmpRda.dataset.add(new DatasetRDAExportModel().fromDataModel(descriptionEntity, datasetManager));
}
dmpRda.description = entity.getDescription().replace("\n", " ");
if (entity.getDois() != null && !entity.getDois().isEmpty()) {

View File

@ -1,23 +1,23 @@
package eu.eudat.models.data.urls;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import java.util.UUID;
/**
* Created by ikalyvas on 7/23/2018.
*/
public class DatasetUrlListing extends UrlListing<Dataset, DatasetUrlListing> {
public class DatasetUrlListing extends UrlListing<DescriptionEntity, DatasetUrlListing> {
@Override
public DatasetUrlListing fromDataModel(Dataset entity) {
public DatasetUrlListing fromDataModel(DescriptionEntity entity) {
this.setLabel(entity.getLabel());
this.setUrl(entity.getId().toString());
return this;
}
@Override
public Dataset toDataModel() {
Dataset entity = new Dataset();
public DescriptionEntity toDataModel() {
DescriptionEntity entity = new DescriptionEntity();
entity.setId(UUID.fromString(this.getUrl()));
entity.setLabel(this.getLabel());
return entity;

View File

@ -3,6 +3,7 @@ package eu.eudat.models.rda.mapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.elastic.criteria.DatasetCriteria;
import eu.eudat.elastic.entities.Tag;
@ -43,20 +44,20 @@ public class DatasetRDAMapper {
}
@Transactional
public Dataset toRDA(eu.eudat.data.old.Dataset dataset, eu.eudat.models.rda.Dmp dmp) {
public Dataset toRDA(DescriptionEntity descriptionEntity, eu.eudat.models.rda.Dmp dmp) {
Dataset rda = new Dataset();
// rda.setDatasetId(DatasetIdRDAMapper.toRDA(dataset.getId()));
if (dataset.getLabel() == null) {
if (descriptionEntity.getLabel() == null) {
throw new IllegalArgumentException("Dataset Label is missing");
}
rda.setTitle(dataset.getLabel());
rda.setDescription(dataset.getDescription());
rda.setAdditionalProperty("template", dataset.getProfile().getId());
rda.setTitle(descriptionEntity.getLabel());
rda.setDescription(descriptionEntity.getDescription());
rda.setAdditionalProperty("template", descriptionEntity.getProfile());
try {
JSONObject jObject = new JSONObject(dataset.getProperties());
JSONObject jObject = new JSONObject(descriptionEntity.getProperties());
Map<String, Object> templateIdsToValues = jObject.toMap();
DatasetWizardModel datasetWizardModel = new DatasetWizardModel().fromDataModel(dataset);
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, dataset));
DatasetWizardModel datasetWizardModel = new DatasetWizardModel().fromDataModel(descriptionEntity);
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, descriptionEntity));
ObjectMapper mapper = new ObjectMapper();
String datasetDescriptionJson = mapper.writeValueAsString(datasetWizardModel.getDatasetProfileDefinition());
JsonNode datasetDescriptionObj = mapper.readTree(datasetDescriptionJson);
@ -65,7 +66,7 @@ public class DatasetRDAMapper {
rda.setDatasetId(DatasetIdRDAMapper.toRDA(idNodes));
}
if (rda.getDatasetId() == null) {
rda.setDatasetId(new DatasetId(dataset.getId().toString(), DatasetId.Type.OTHER));
rda.setDatasetId(new DatasetId(descriptionEntity.getId().toString(), DatasetId.Type.OTHER));
}
List<JsonNode> typeNodes = JsonSearcher.findNodes(datasetDescriptionObj, "schematics", "rda.dataset.type");
if (!typeNodes.isEmpty() && !typeNodes.get(0).get("value").asText().isEmpty()) {
@ -80,11 +81,13 @@ public class DatasetRDAMapper {
rda.setLanguage(Language.fromValue(lang));
}
catch (IllegalArgumentException e){
logger.warn("Language " + lang + " from semantic rda.dataset.language was not found. Setting '" + dataset.getProfile().getLanguage() +"' as language from the dataset profile.");
rda.setLanguage(LanguageRDAMapper.mapLanguageIsoToRDAIso(dataset.getProfile().getLanguage()));
//TODO
// logger.warn("Language " + lang + " from semantic rda.dataset.language was not found. Setting '" + descriptionEntity.getProfile().getLanguage() +"' as language from the dataset profile.");
// rda.setLanguage(LanguageRDAMapper.mapLanguageIsoToRDAIso(descriptionEntity.getProfile().getLanguage()));
}
} else {
rda.setLanguage(LanguageRDAMapper.mapLanguageIsoToRDAIso(dataset.getProfile().getLanguage()));
//TODO
// rda.setLanguage(LanguageRDAMapper.mapLanguageIsoToRDAIso(descriptionEntity.getProfile().getLanguage()));
}
List<JsonNode> metadataNodes = JsonSearcher.findNodes(datasetDescriptionObj, "schematics", "rda.dataset.metadata");
if (!metadataNodes.isEmpty()) {
@ -147,7 +150,7 @@ public class DatasetRDAMapper {
rda.setAdditionalProperty("keyword" + (i + 1), keywordNodes.get(i).get("id").asText());
}
} else if (apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().exists()) {
List<String> tags = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(dataset.getId().toString()).getTags().stream().map(Tag::getName).collect(Collectors.toList());
List<String> tags = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().findDocument(descriptionEntity.getId().toString()).getTags().stream().map(Tag::getName).collect(Collectors.toList());
rda.setKeyword(tags);
}
List<JsonNode> personalDataNodes = JsonSearcher.findNodes(datasetDescriptionObj, "schematics", "rda.dataset.personal_data");
@ -280,21 +283,22 @@ public class DatasetRDAMapper {
}
public eu.eudat.data.old.Dataset toEntity(Dataset rda, DescriptionTemplateEntity defaultProfile) {
eu.eudat.data.old.Dataset entity = new eu.eudat.data.old.Dataset();
public DescriptionEntity toEntity(Dataset rda, DescriptionTemplateEntity defaultProfile) {
DescriptionEntity entity = new DescriptionEntity();
entity.setLabel(rda.getTitle());
entity.setDescription(rda.getDescription());
try {
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(rda.getAdditionalProperties().get("template").toString()));
entity.setProfile(profile);
entity.setProfile(profile.getId());
}catch(Exception e) {
logger.warn(e.getMessage(), e);
entity.setProfile(defaultProfile);
entity.setProfile(defaultProfile.getId());
}
try {
Map<String, Object> properties = new HashMap<>();
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
datasetWizardModel.setProfile(new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()));
//TODO
//datasetWizardModel.setProfile(new DatasetProfileOverviewModel().fromDataModel(entity.getProfile()));
datasetWizardModel.setDatasetProfileDefinition(datasetManager.getPagedProfile(datasetWizardModel, entity));
ObjectMapper mapper = new ObjectMapper();
String datasetDescriptionJson = mapper.writeValueAsString(datasetWizardModel.getDatasetProfileDefinition());

View File

@ -123,7 +123,7 @@ public class DmpRDAMapper {
rda.getContributor().addAll(dmp.getResearchers().stream().map(ContributorRDAMapper::toRDA).collect(Collectors.toList()));
}
// rda.getContributor().addAll(dmp.getUsers().stream().map(ContributorRDAMapper::toRDA).collect(Collectors.toList()));
rda.setDataset(dmp.getDataset().stream().filter(dataset -> dataset.getStatus() != eu.eudat.elastic.entities.Dmp.DMPStatus.DELETED.getValue()).map(dataset -> datasetRDAMapper.toRDA(dataset, rda)).collect(Collectors.toList()));
rda.setDataset(dmp.getDataset().stream().filter(dataset -> dataset.getStatus().getValue() != eu.eudat.elastic.entities.Dmp.DMPStatus.DELETED.getValue()).map(dataset -> datasetRDAMapper.toRDA(dataset, rda)).collect(Collectors.toList()));
if (dmp.getProject() != null) {
rda.setProject(Collections.singletonList(ProjectRDAMapper.toRDA(dmp.getProject(), dmp.getGrant())));
}

View File

@ -1,7 +1,7 @@
package eu.eudat.publicapi.criteria.dataset;
import eu.eudat.data.dao.criteria.Criteria;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.elastic.entities.Tag;
import io.swagger.annotations.ApiModelProperty;
@ -10,7 +10,7 @@ import java.util.List;
import java.util.UUID;
public class DatasetPublicCriteria extends Criteria<Dataset> {
public class DatasetPublicCriteria extends Criteria<DescriptionEntity> {
@ApiModelProperty(value = "periodStart", name = "periodStart", dataType = "Date", example = "2022-01-01T13:19:42.210Z")
private Date periodStart;
@ApiModelProperty(value = "periodEnd", name = "periodEnd", dataType = "Date", example = "2022-12-31T13:19:42.210Z")

View File

@ -1,7 +1,9 @@
package eu.eudat.publicapi.managers;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.query.definition.helpers.ColumnOrderings;
import eu.eudat.elastic.criteria.DatasetCriteria;
@ -61,7 +63,7 @@ public class DatasetPublicManager {
}
datasetCriteria.setGroupIds(datasetTableRequest.getCriteria().getGroupIds());
datasetCriteria.setGrantStatus(GrantStateType.ONGOING.getValue().shortValue()); // grant status ongoing
datasetCriteria.setStatus(Dataset.Status.FINALISED.getValue()); // dataset status finalized
datasetCriteria.setStatus(DescriptionStatus.Finalized.getValue()); // dataset status finalized
if (datasetTableRequest.getOrderings() != null) {
datasetCriteria.setSortCriteria(DmpPublicCriteriaMapper.toElasticSorting(datasetTableRequest.getOrderings()));
}
@ -83,7 +85,7 @@ public class DatasetPublicManager {
/*datasetTableRequest.setQuery(databaseRepository.getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetPublicListingModel.class)));
QueryableList<Dataset> items = datasetTableRequest.applyCriteria();*/
datasetTableRequest.setQuery(databaseRepository.getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetPublicListingModel.class)));
QueryableList<Dataset> items;
QueryableList<DescriptionEntity> items;
if (datasets != null) {
if (!datasets.isEmpty()) {
items = databaseRepository.getDatasetDao().asQueryable().withHint(HintedModelFactory.getHint(DatasetPublicListingModel.class));
@ -108,7 +110,7 @@ public class DatasetPublicManager {
if (count == 0L) {
count = items.count();
}
QueryableList<Dataset> pagedItems = PaginationManager.applyPaging(items, datasetTableRequest);
QueryableList<DescriptionEntity> pagedItems = PaginationManager.applyPaging(items, datasetTableRequest);
DataTableData<DatasetPublicListingModel> dataTable = new DataTableData<>();
List<DatasetPublicListingModel> datasetLists = pagedItems.
@ -120,22 +122,23 @@ public class DatasetPublicManager {
}
public DatasetPublicModel getOverviewSinglePublic(String id) throws Exception {
Dataset datasetEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id));
if (datasetEntity.getStatus() == Dataset.Status.DELETED.getValue()) {
DescriptionEntity descriptionEntityEntity = databaseRepository.getDatasetDao().find(UUID.fromString(id));
if (descriptionEntityEntity.getIsActive() == IsActive.Inactive) {
throw new Exception("Dataset is deleted.");
}
if (!datasetEntity.getDmp().isPublic()) {
throw new ForbiddenException("Selected Dataset is not public");
}
//TODO
// if (!descriptionEntityEntity.getDmp().isPublic()) {
// throw new ForbiddenException("Selected Dataset is not public");
// }
DatasetPublicModel dataset = new DatasetPublicModel();
dataset.setDatasetProfileDefinition(this.getPagedProfile(dataset.getStatus(), datasetEntity));
dataset.fromDataModel(datasetEntity);
dataset.setDatasetProfileDefinition(this.getPagedProfile(dataset.getStatus(), descriptionEntityEntity));
dataset.fromDataModel(descriptionEntityEntity);
return dataset;
}
@Transactional
private DatasetPublicListingModel mapPublicModel(Dataset item) {
private DatasetPublicListingModel mapPublicModel(DescriptionEntity item) {
/*if (item.getProfile() == null)
return null;*/
DatasetPublicListingModel listingPublicModel = new DatasetPublicListingModel().fromDataModel(item);
@ -151,16 +154,17 @@ public class DatasetPublicManager {
return listingPublicModel;
}
private PagedDatasetProfile getPagedProfile(int status, Dataset datasetEntity){
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = this.generateDatasetProfileModel(datasetEntity.getProfile());
datasetprofile.setStatus(status);
if (datasetEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(datasetEntity.getProperties());
Map<String, Object> properties = jObject.toMap();
datasetprofile.fromJsonObject(properties);
}
private PagedDatasetProfile getPagedProfile(DescriptionStatus status, DescriptionEntity descriptionEntityEntity){
//TODO
// eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = this.generateDatasetProfileModel(descriptionEntityEntity.getProfile());
// datasetprofile.setStatus(status.getValue());
// if (descriptionEntityEntity.getProperties() != null) {
// JSONObject jObject = new JSONObject(descriptionEntityEntity.getProperties());
// Map<String, Object> properties = jObject.toMap();
// datasetprofile.fromJsonObject(properties);
// }
PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile();
pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile);
// pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile);
return pagedDatasetProfile;
}

View File

@ -1,7 +1,7 @@
package eu.eudat.publicapi.models.listingmodels;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.old.Grant;
import eu.eudat.models.DataModel;
import eu.eudat.publicapi.models.datasetprofile.DatasetProfilePublicModel;
@ -13,7 +13,7 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
public class DatasetPublicListingModel implements DataModel<Dataset, DatasetPublicListingModel> {
public class DatasetPublicListingModel implements DataModel<DescriptionEntity, DatasetPublicListingModel> {
private String id;
private String label;
private String grant;
@ -121,53 +121,55 @@ public class DatasetPublicListingModel implements DataModel<Dataset, DatasetPubl
}
@Override
public DatasetPublicListingModel fromDataModel(Dataset entity) {
this.id = entity.getId() != null ? entity.getId().toString() : "";
this.label = entity.getLabel();
this.createdAt = entity.getCreated();
this.modifiedAt = entity.getModified();
if(entity.getDmp() != null && entity.getDmp().getGrant() != null) {
this.grant = entity.getDmp().getGrant().getLabel();
}
this.dmp = entity.getDmp() != null ? entity.getDmp().getLabel() : "";
this.dmpId = entity.getDmp() != null ? entity.getDmp().getId().toString() : "";
this.profile = entity.getProfile() != null ? new DatasetProfilePublicModel().fromDataModel(entity.getProfile()) : null;
this.description = entity.getDescription();
if (entity.getFinalizedAt() == null && entity.getStatus() == Dataset.Status.FINALISED.getValue()) {
this.finalizedAt = entity.getDmp().getFinalizedAt();
} else {
this.finalizedAt = entity.getFinalizedAt();
}
this.dmpPublishedAt = entity.getDmp().getPublishedAt();
this.version = entity.getDmp().getVersion();
this.users = entity.getDmp() != null ? entity.getDmp().getUsers().stream().map(x -> new UserInfoPublicModel().fromDataModel(x)).collect(Collectors.toList()) : new ArrayList<>();
public DatasetPublicListingModel fromDataModel(DescriptionEntity entity) {
//TODO
// this.id = entity.getId() != null ? entity.getId().toString() : "";
// this.label = entity.getLabel();
// this.createdAt = entity.getCreated();
// this.modifiedAt = entity.getModified();
// if(entity.getDmp() != null && entity.getDmp().getGrant() != null) {
// this.grant = entity.getDmp().getGrant().getLabel();
// }
// this.dmp = entity.getDmp() != null ? entity.getDmp().getLabel() : "";
// this.dmpId = entity.getDmp() != null ? entity.getDmp().getId().toString() : "";
// this.profile = entity.getProfile() != null ? new DatasetProfilePublicModel().fromDataModel(entity.getProfile()) : null;
// this.description = entity.getDescription();
// if (entity.getFinalizedAt() == null && entity.getStatus() == DescriptionEntity.Status.FINALISED.getValue()) {
// this.finalizedAt = entity.getDmp().getFinalizedAt();
// } else {
// this.finalizedAt = entity.getFinalizedAt();
// }
// this.dmpPublishedAt = entity.getDmp().getPublishedAt();
// this.version = entity.getDmp().getVersion();
// this.users = entity.getDmp() != null ? entity.getDmp().getUsers().stream().map(x -> new UserInfoPublicModel().fromDataModel(x)).collect(Collectors.toList()) : new ArrayList<>();
return this;
}
@Override
public Dataset toDataModel() {
Dataset entity = new Dataset();
entity.setId(UUID.fromString(this.getId()));
entity.setLabel(this.getLabel());
entity.setCreated(this.getCreatedAt());
entity.setModified(this.getModifiedAt());
entity.setDescription(this.getDescription());
entity.setFinalizedAt(this.getFinalizedAt());
entity.setStatus(Dataset.Status.FINALISED.getValue());
DMP dmp = new DMP();
if (this.getGrant() != null && !this.getGrant().isEmpty()) {
Grant grant = new Grant();
grant.setLabel(this.getGrant());
dmp.setGrant(grant);
}
dmp.setLabel(this.getDmp());
dmp.setId(UUID.fromString(this.getDmpId()));
dmp.setPublishedAt(this.getDmpPublishedAt());
dmp.setVersion(this.getVersion());
dmp.setUsers(this.getUsers().stream().map(UserInfoPublicModel::toDataModel).collect(Collectors.toSet()));
dmp.setFinalizedAt(this.getFinalizedAt());
entity.setDmp(dmp);
entity.setProfile(this.getProfile() != null ? this.getProfile().toDataModel() : null);
public DescriptionEntity toDataModel() {
//TODO
DescriptionEntity entity = new DescriptionEntity();
// entity.setId(UUID.fromString(this.getId()));
// entity.setLabel(this.getLabel());
// entity.setCreated(this.getCreatedAt());
// entity.setModified(this.getModifiedAt());
// entity.setDescription(this.getDescription());
// entity.setFinalizedAt(this.getFinalizedAt());
// entity.setStatus(DescriptionEntity.Status.FINALISED.getValue());
// DMP dmp = new DMP();
// if (this.getGrant() != null && !this.getGrant().isEmpty()) {
// Grant grant = new Grant();
// grant.setLabel(this.getGrant());
// dmp.setGrant(grant);
// }
// dmp.setLabel(this.getDmp());
// dmp.setId(UUID.fromString(this.getDmpId()));
// dmp.setPublishedAt(this.getDmpPublishedAt());
// dmp.setVersion(this.getVersion());
// dmp.setUsers(this.getUsers().stream().map(UserInfoPublicModel::toDataModel).collect(Collectors.toSet()));
// dmp.setFinalizedAt(this.getFinalizedAt());
// entity.setDmp(dmp);
// entity.setProfile(this.getProfile() != null ? this.getProfile().toDataModel() : null);
return entity;
}

View File

@ -2,10 +2,12 @@ package eu.eudat.publicapi.models.overviewmodels;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.commons.types.descriptiontemplate.DefinitionEntity;
import eu.eudat.data.old.DMP;
import eu.eudat.data.old.DMPDatasetProfile;
import eu.eudat.data.old.Dataset;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.commons.types.xml.XmlBuilder;
import eu.eudat.models.DataModel;
@ -184,10 +186,10 @@ public class DataManagementPlanPublicModel implements DataModel<DMP, DataManagem
this.modifiedAt = entity.getModified();
this.finalizedAt = entity.getFinalizedAt();
this.organisations = entity.getOrganisations().stream().map(item -> new OrganizationPublicModel().fromDataModel(item)).collect(Collectors.toList());
this.datasets = entity.getDataset().stream().filter(dataset -> !dataset.getStatus().equals(Dataset.Status.DELETED.getValue()) && !dataset.getStatus().equals(Dataset.Status.CANCELED.getValue()))
this.datasets = entity.getDataset().stream().filter(dataset -> !dataset.getIsActive().equals(IsActive.Inactive) && !dataset.getStatus().equals(DescriptionStatus.Canceled))
.map(datasetEntity-> {
DatasetPublicModel dataset = new DatasetPublicModel();
dataset.setDatasetProfileDefinition(this.getPagedProfile(dataset.getStatus(), datasetEntity));
dataset.setDatasetProfileDefinition(this.getPagedProfile(dataset.getStatus().getValue(), datasetEntity));
dataset.fromDataModel(datasetEntity);
return dataset;
}).collect(Collectors.toList());
@ -217,16 +219,17 @@ public class DataManagementPlanPublicModel implements DataModel<DMP, DataManagem
return this;
}
private PagedDatasetProfile getPagedProfile(int status, Dataset datasetEntity){
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = this.generateDatasetProfileModel(datasetEntity.getProfile());
datasetprofile.setStatus(status);
if (datasetEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(datasetEntity.getProperties());
Map<String, Object> properties = jObject.toMap();
datasetprofile.fromJsonObject(properties);
}
private PagedDatasetProfile getPagedProfile(int status, DescriptionEntity descriptionEntityEntity){
//TODO
// eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = this.generateDatasetProfileModel(descriptionEntityEntity.getProfile());
// datasetprofile.setStatus(status);
// if (descriptionEntityEntity.getProperties() != null) {
// JSONObject jObject = new JSONObject(descriptionEntityEntity.getProperties());
// Map<String, Object> properties = jObject.toMap();
// datasetprofile.fromJsonObject(properties);
// }
PagedDatasetProfile pagedDatasetProfile = new PagedDatasetProfile();
pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile);
//pagedDatasetProfile.buildPagedDatasetProfile(datasetprofile);
return pagedDatasetProfile;
}

View File

@ -1,5 +1,7 @@
package eu.eudat.publicapi.models.overviewmodels;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.DescriptionTemplateEntity;
import eu.eudat.data.old.*;
import eu.eudat.elastic.entities.Tag;
@ -16,13 +18,13 @@ import net.minidev.json.JSONValue;
import java.util.*;
import java.util.stream.Collectors;
public class DatasetPublicModel implements DataModel<Dataset, DatasetPublicModel> {
public class DatasetPublicModel implements DataModel<DescriptionEntity, DatasetPublicModel> {
private UUID id;
private String label;
private String reference;
private String uri;
private String description;
private short status;
private DescriptionStatus status;
private Date createdAt;
private DataManagementPlanPublicListingModel dmp;
private PagedDatasetProfile datasetProfileDefinition;
@ -69,10 +71,10 @@ public class DatasetPublicModel implements DataModel<Dataset, DatasetPublicModel
this.description = description;
}
public short getStatus() {
public DescriptionStatus getStatus() {
return status;
}
public void setStatus(short status) {
public void setStatus(DescriptionStatus status) {
this.status = status;
}
@ -147,142 +149,145 @@ public class DatasetPublicModel implements DataModel<Dataset, DatasetPublicModel
}
@Override
public DatasetPublicModel fromDataModel(Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.status = entity.getStatus();
this.profile = new DatasetProfilePublicModel();
this.profile = this.profile.fromDataModel(entity.getProfile());
this.uri = entity.getUri();
this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new RegistryPublicModel().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
DataRepositoryPublicModel dataRepository = new DataRepositoryPublicModel().fromDataModel(item.getDataRepository());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
dataRepository.setInfo(values.get("info"));
}
return dataRepository;
}).collect(Collectors.toList()) : new ArrayList<>();
this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new ServicePublicModel().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
this.createdAt = entity.getCreated();
this.dmp = new DataManagementPlanPublicListingModel().fromDataModelNoDatasets(entity.getDmp());
this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
ExternalDatasetPublicListingModel externalDatasetListingModel = new ExternalDatasetPublicListingModel().fromDataModel(item.getExternalDataset());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
externalDatasetListingModel.setInfo(values.get("info"));
externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
}
return externalDatasetListingModel;
}).collect(Collectors.toList()) : new ArrayList<>();
this.modifiedAt = entity.getModified();
public DatasetPublicModel fromDataModel(DescriptionEntity entity) {
//TODO:
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.reference = entity.getReference();
// this.description = entity.getDescription();
// this.status = entity.getStatus();
// this.profile = new DatasetProfilePublicModel();
// this.profile = this.profile.fromDataModel(entity.getProfile());
// this.uri = entity.getUri();
// this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new RegistryPublicModel().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
// this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
// DataRepositoryPublicModel dataRepository = new DataRepositoryPublicModel().fromDataModel(item.getDataRepository());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// dataRepository.setInfo(values.get("info"));
// }
// return dataRepository;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new ServicePublicModel().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
// this.createdAt = entity.getCreated();
// this.dmp = new DataManagementPlanPublicListingModel().fromDataModelNoDatasets(entity.getDmp());
// this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
// ExternalDatasetPublicListingModel externalDatasetListingModel = new ExternalDatasetPublicListingModel().fromDataModel(item.getExternalDataset());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// externalDatasetListingModel.setInfo(values.get("info"));
// externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
// }
// return externalDatasetListingModel;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.modifiedAt = entity.getModified();
return this;
}
public DatasetPublicModel fromDataModelNoDmp(Dataset entity) {
this.id = entity.getId();
this.label = entity.getLabel();
this.reference = entity.getReference();
this.description = entity.getDescription();
this.status = entity.getStatus();
this.profile = new DatasetProfilePublicModel();
this.profile = this.profile.fromDataModel(entity.getProfile());
this.uri = entity.getUri();
this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new RegistryPublicModel().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
DataRepositoryPublicModel dataRepository = new DataRepositoryPublicModel().fromDataModel(item.getDataRepository());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
dataRepository.setInfo(values.get("info"));
}
return dataRepository;
}).collect(Collectors.toList()) : new ArrayList<>();
this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new ServicePublicModel().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
this.createdAt = entity.getCreated();
this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
ExternalDatasetPublicListingModel externalDatasetListingModel = new ExternalDatasetPublicListingModel().fromDataModel(item.getExternalDataset());
if (item.getData() != null) {
Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
Map<String, String> values = data.get("data");
externalDatasetListingModel.setInfo(values.get("info"));
externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
}
return externalDatasetListingModel;
}).collect(Collectors.toList()) : new ArrayList<>();
this.modifiedAt = entity.getModified();
public DatasetPublicModel fromDataModelNoDmp(DescriptionEntity entity) {
//TODO:
// this.id = entity.getId();
// this.label = entity.getLabel();
// this.reference = entity.getReference();
// this.description = entity.getDescription();
// this.status = entity.getStatus();
// this.profile = new DatasetProfilePublicModel();
// this.profile = this.profile.fromDataModel(entity.getProfile());
// this.uri = entity.getUri();
// this.registries = entity.getRegistries() != null ? entity.getRegistries().stream().map(item -> new RegistryPublicModel().fromDataModel(item)).collect(Collectors.toList()) : new ArrayList<>();
// this.dataRepositories = entity.getDatasetDataRepositories() != null ? entity.getDatasetDataRepositories().stream().map(item -> {
// DataRepositoryPublicModel dataRepository = new DataRepositoryPublicModel().fromDataModel(item.getDataRepository());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// dataRepository.setInfo(values.get("info"));
// }
// return dataRepository;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.services = entity.getServices() != null ? entity.getServices().stream().map(item -> new ServicePublicModel().fromDataModel(item.getService())).collect(Collectors.toList()) : new ArrayList<>();
// this.createdAt = entity.getCreated();
// this.externalDatasets = entity.getDatasetExternalDatasets() != null ? entity.getDatasetExternalDatasets().stream().map(item -> {
// ExternalDatasetPublicListingModel externalDatasetListingModel = new ExternalDatasetPublicListingModel().fromDataModel(item.getExternalDataset());
// if (item.getData() != null) {
// Map<String, Map<String, String>> data = (Map<String, Map<String, String>>) JSONValue.parse(item.getData());
// Map<String, String> values = data.get("data");
// externalDatasetListingModel.setInfo(values.get("info"));
// externalDatasetListingModel.setType(Integer.parseInt(values.get("type")));
// }
// return externalDatasetListingModel;
// }).collect(Collectors.toList()) : new ArrayList<>();
// this.modifiedAt = entity.getModified();
return this;
}
@Override
public Dataset toDataModel() throws Exception {
Dataset entity = new Dataset();
entity.setId(this.id);
entity.setLabel(this.label);
entity.setStatus(this.status);
entity.setReference(this.reference);
entity.setUri(this.uri);
entity.setFinalizedAt(new Date());
DMP dmp = new DMP();
dmp.setId(UUID.fromString(this.dmp.getId()));
entity.setDmp(dmp);
entity.setDescription(this.description);
entity.setCreated(this.createdAt != null ? this.createdAt : new Date());
entity.setModified(new Date());
DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
profile.setId(this.profile.getId());
entity.setProfile(profile);
if (this.registries != null && !this.registries.isEmpty()) {
entity.setRegistries(new HashSet<>());
for (RegistryPublicModel registry : this.registries) {
entity.getRegistries().add(registry.toDataModel());
}
}
if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) {
entity.setDatasetDataRepositories(new HashSet<>());
for (DataRepositoryPublicModel dataRepositoryModel : this.dataRepositories) {
DataRepository dataRepository = dataRepositoryModel.toDataModel();
DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
datasetDataRepository.setDataRepository(dataRepository);
Map<String, Map<String, String>> data = new HashMap<>();
Map<String, String> values = new HashMap<>();
values.put("info", dataRepositoryModel.getInfo());
data.put("data", values);
datasetDataRepository.setData(JSONValue.toJSONString(data));
entity.getDatasetDataRepositories().add(datasetDataRepository);
}
}
if (this.services != null && !this.services.isEmpty()) {
entity.setServices(new HashSet<>());
for (ServicePublicModel serviceModel : this.services) {
Service service = serviceModel.toDataModel();
DatasetService datasetService = new DatasetService();
datasetService.setService(service);
entity.getServices().add(datasetService);
}
}
if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) {
entity.setDatasetExternalDatasets(new HashSet<>());
for (ExternalDatasetPublicListingModel externalDataset : this.externalDatasets) {
ExternalDataset externalDatasetEntity = externalDataset.toDataModel();
DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
datasetExternalDataset.setExternalDataset(externalDatasetEntity);
Map<String,Map<String,String>> data = new HashMap<>();
Map<String,String> values = new HashMap<>();
values.put("info",externalDataset.getInfo());
values.put("type",externalDataset.getType().toString());
data.put("data",values);
datasetExternalDataset.setData(JSONValue.toJSONString(data));
entity.getDatasetExternalDatasets().add(datasetExternalDataset);
}
}
public DescriptionEntity toDataModel() throws Exception {
//TODO:
DescriptionEntity entity = new DescriptionEntity();
// entity.setId(this.id);
// entity.setLabel(this.label);
// entity.setStatus(this.status);
// entity.setReference(this.reference);
// entity.setUri(this.uri);
// entity.setFinalizedAt(new Date());
// DMP dmp = new DMP();
// dmp.setId(UUID.fromString(this.dmp.getId()));
// entity.setDmp(dmp);
// entity.setDescription(this.description);
// entity.setCreated(this.createdAt != null ? this.createdAt : new Date());
// entity.setModified(new Date());
// DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
// profile.setId(this.profile.getId());
// entity.setProfile(profile);
// if (this.registries != null && !this.registries.isEmpty()) {
// entity.setRegistries(new HashSet<>());
// for (RegistryPublicModel registry : this.registries) {
// entity.getRegistries().add(registry.toDataModel());
// }
// }
//
// if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) {
// entity.setDatasetDataRepositories(new HashSet<>());
// for (DataRepositoryPublicModel dataRepositoryModel : this.dataRepositories) {
// DataRepository dataRepository = dataRepositoryModel.toDataModel();
// DatasetDataRepository datasetDataRepository = new DatasetDataRepository();
// datasetDataRepository.setDataRepository(dataRepository);
// Map<String, Map<String, String>> data = new HashMap<>();
// Map<String, String> values = new HashMap<>();
// values.put("info", dataRepositoryModel.getInfo());
// data.put("data", values);
// datasetDataRepository.setData(JSONValue.toJSONString(data));
// entity.getDatasetDataRepositories().add(datasetDataRepository);
// }
// }
//
// if (this.services != null && !this.services.isEmpty()) {
// entity.setServices(new HashSet<>());
// for (ServicePublicModel serviceModel : this.services) {
// Service service = serviceModel.toDataModel();
// DatasetService datasetService = new DatasetService();
// datasetService.setService(service);
// entity.getServices().add(datasetService);
// }
// }
//
// if (this.externalDatasets != null && !this.externalDatasets.isEmpty()) {
// entity.setDatasetExternalDatasets(new HashSet<>());
// for (ExternalDatasetPublicListingModel externalDataset : this.externalDatasets) {
// ExternalDataset externalDatasetEntity = externalDataset.toDataModel();
// DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset();
// datasetExternalDataset.setExternalDataset(externalDatasetEntity);
// Map<String,Map<String,String>> data = new HashMap<>();
// Map<String,String> values = new HashMap<>();
// values.put("info",externalDataset.getInfo());
// values.put("type",externalDataset.getType().toString());
// data.put("data",values);
// datasetExternalDataset.setData(JSONValue.toJSONString(data));
// entity.getDatasetExternalDatasets().add(datasetExternalDataset);
// }
// }
return entity;
}

View File

@ -1,6 +1,8 @@
package eu.eudat.publicapi.request.dataset;
import eu.eudat.data.old.Dataset;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.DescriptionEntity;
import eu.eudat.data.query.definition.TableQuery;
import eu.eudat.publicapi.criteria.dataset.DatasetPublicCriteria;
import eu.eudat.queryable.QueryableList;
@ -12,12 +14,12 @@ import java.util.Date;
import java.util.UUID;
public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria, Dataset, UUID> {
public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria, DescriptionEntity, UUID> {
@Override
public QueryableList<Dataset> applyCriteria() {
QueryableList<Dataset> query = this.getQuery();
public QueryableList<DescriptionEntity> applyCriteria() {
QueryableList<DescriptionEntity> query = this.getQuery();
query.where((builder, root) -> builder.equal(root.get("dmp").get("isPublic"), true));
query.where((builder, root) -> builder.equal(root.get("status"), Dataset.Status.FINALISED.getValue()));
query.where((builder, root) -> builder.equal(root.get("status"), DescriptionStatus.Finalized));
// query.initSubQuery(String.class).where((builder, root) -> builder.equal(root.get("dmp").get("version"),
// query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.equal(externalRoot.get("dmp").get("groupId"), nestedRoot.get("dmp").get("groupId")),
// Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "dmp:version")), String.class)));
@ -54,12 +56,12 @@ public class DatasetPublicTableRequest extends TableQuery<DatasetPublicCriteria,
query.<String>subQueryMax((builder1, externalRoot, nestedRoot) -> builder1.and(builder1.equal(externalRoot.get("profile").get("groupId"),
nestedRoot.get("profile").get("groupId")), builder1.equal(nestedRoot.get("dmp").get("isPublic"), true)), Arrays.asList(new SelectionField(FieldSelectionType.COMPOSITE_FIELD, "profile:version")), String.class)));
}
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
query.where((builder, root) -> builder.notEqual(root.get("isActive"), IsActive.Inactive));
return query;
}
@Override
public QueryableList<Dataset> applyPaging(QueryableList<Dataset> items) {
public QueryableList<DescriptionEntity> applyPaging(QueryableList<DescriptionEntity> items) {
return null;
}
}