description refactor

This commit is contained in:
Efstratios Giannopoulos 2023-11-07 10:29:27 +02:00
parent 20873ca13e
commit 662c5ad7e8
41 changed files with 618 additions and 433 deletions

View File

@ -0,0 +1,22 @@
package eu.eudat.commons.types.description;
public class FieldEntity {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,15 @@
package eu.eudat.commons.types.description;
import java.util.List;
public class PropertyDefinitionEntity {
private List<FieldEntity> fields;
public List<FieldEntity> getFields() {
return fields;
}
public void setFields(List<FieldEntity> fields) {
this.fields = fields;
}
}

View File

@ -1,4 +1,4 @@
package eu.eudat.commons.config.filepath;
package eu.eudat.configurations.filepath;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

View File

@ -1,4 +1,4 @@
package eu.eudat.commons.config.filepath;
package eu.eudat.configurations.filepath;
import org.springframework.boot.context.properties.ConfigurationProperties;

View File

@ -6,65 +6,45 @@ 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.*;
import java.util.stream.Collectors;
@Entity
@Table(name = "\"Description\"")
public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
public static Set<String> getHints() {
return hints;
}
private static final Set<String> hints = new HashSet<>(Arrays.asList("datasetListingModel"));
@Id
@Column(name = "id", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static final String _id = "id";
@Column(name = "label", length = 250, nullable = false)
@Column(name = "label", length = DescriptionEntity._labelLength, nullable = false)
private String label;
public static final int _labelLength = 250;
public static final String _label = "label";
@Column(name = "dmp", columnDefinition = "uuid")
@Column(name = "dmp", columnDefinition = "uuid", nullable = false)
private UUID dmp;
public static final String _dmp = "dmp";
@Column(name = "uri", length = 250)
private String uri;
public static final String _uri = "uri";
@Column(name = "properties")
private String properties;
public static final String _properties = "properties";
//TODO: (thgiannos) Previously 'DescriptionTemplate'
@Column(name = "profile", columnDefinition = "uuid")
private UUID profile;
@Column(name = "description_template", columnDefinition = "uuid", nullable = false)
private UUID descriptionTemplate;
public static final String _profile = "profile";
@Column(name = "reference")
private String reference;
public static final String _reference = "reference";
public static final String _descriptionTemplate = "descriptionTemplate";
@Column(name = "status", nullable = false)
@Convert(converter = DescriptionStatusConverter.class)
@ -77,16 +57,6 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
public static final String _description = "description";
@Column(name = "dmp_section_index", nullable = false)
private Integer dmpSectionIndex;
public static final String _dmpSectionIndex = "dmpSectionIndex";
@Column(name = "creator", columnDefinition = "uuid")
private UUID creator;
public static final String _creator = "creator";
@Column(name = "created_at", nullable = false)
private Instant createdAt;
@ -109,6 +79,16 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
public static final String _finalizedAt = "finalizedAt";
@Column(name = "created_by", columnDefinition = "uuid", nullable = false)
private UUID createdBy;
public static final String _createdBy = "createdBy";
@Column(name = "dmp_description_template", columnDefinition = "uuid", nullable = false)
private UUID dmpDescriptionTemplate;
public static final String _dmpDescriptionTemplate = "dmpDescriptionTemplate";
public UUID getId() {
return id;
}
@ -133,14 +113,6 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
this.dmp = dmp;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getProperties() {
return properties;
}
@ -149,20 +121,12 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
this.properties = properties;
}
public UUID getProfile() {
return profile;
public UUID getDescriptionTemplate() {
return descriptionTemplate;
}
public void setProfile(UUID profile) {
this.profile = profile;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
public void setDescriptionTemplate(UUID descriptionTemplate) {
this.descriptionTemplate = descriptionTemplate;
}
public DescriptionStatus getStatus() {
@ -181,22 +145,6 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
this.description = description;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public UUID getCreator() {
return creator;
}
public void setCreator(UUID creator) {
this.creator = creator;
}
public Instant getCreatedAt() {
return createdAt;
}
@ -229,6 +177,22 @@ public class DescriptionEntity implements DataEntity<DescriptionEntity, UUID> {
this.finalizedAt = finalizedAt;
}
public UUID getCreatedBy() {
return createdBy;
}
public void setCreatedBy(UUID createdBy) {
this.createdBy = createdBy;
}
public UUID getDmpDescriptionTemplate() {
return dmpDescriptionTemplate;
}
public void setDmpDescriptionTemplate(UUID dmpDescriptionTemplate) {
this.dmpDescriptionTemplate = dmpDescriptionTemplate;
}
@Override
public void update(DescriptionEntity entity) {
// this.setUri(entity.getUri());

View File

@ -18,10 +18,10 @@ public class DescriptionReferenceEntity {
public static final String _id = "id";
@Column(name = "data")
private String data;
public static final String _data = "data";
// @Column(name = "data")
// private String data;
//
// public static final String _data = "data";
@Column(name = "description_id", columnDefinition = "uuid", nullable = false)
private UUID descriptionId;
@ -59,14 +59,6 @@ public class DescriptionReferenceEntity {
this.id = id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public UUID getDescriptionId() {
return descriptionId;
}

View File

@ -0,0 +1,97 @@
package eu.eudat.data;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.DateToUTCConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.UUID;
@Entity
@Table(name = "\"DescriptionTag\"")
public class DescriptionTagEntity {
@Id
@Column(name = "id", updatable = false, nullable = false, columnDefinition = "BINARY(16)")
private UUID id;
public static final String _id = "id";
@Column(name = "description", columnDefinition = "uuid", nullable = false)
private UUID description;
public static final String _description = "description";
@Column(name = "tag", columnDefinition = "uuid", nullable = false)
private UUID tag;
public static final String _tag = "tag";
@Column(name = "created_at")
@Convert(converter = DateToUTCConverter.class)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@Column(name = "updated_at")
@Convert(converter = DateToUTCConverter.class)
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
public static final String _isActive = "isActive";
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public UUID getDescription() {
return description;
}
public void setDescription(UUID description) {
this.description = description;
}
public UUID getTag() {
return tag;
}
public void setTag(UUID tag) {
this.tag = tag;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
}

View File

@ -0,0 +1,95 @@
package eu.eudat.data;
import eu.eudat.commons.enums.DescriptionTemplateStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.data.converters.enums.DescriptionTemplateStatusConverter;
import eu.eudat.data.converters.enums.IsActiveConverter;
import eu.eudat.queryable.queryableentity.DataEntity;
import jakarta.persistence.*;
import org.hibernate.annotations.Type;
import java.time.Instant;
import java.util.List;
import java.util.UUID;
@Entity
@Table(name = "\"Tag\"")
public class TagEntity {
@Id
@Column(name = "id", columnDefinition = "uuid", updatable = false, nullable = false)
private UUID id;
public static final String _id = "id";
@Column(name = "\"label\"", length = TagEntity._labelLength, nullable = false)
private String label;
public static final String _label = "label";
public static final int _labelLength = 250;
@Column(name = "is_active", nullable = false)
@Convert(converter = IsActiveConverter.class)
private IsActive isActive;
public static final String _isActive = "isActive";
@Column(name = "\"created_at\"", nullable = false)
private Instant createdAt = null;
public static final String _createdAt = "createdAt";
@Column(name = "\"updated_at\"", nullable = false)
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
@Column(name = "\"created_by\"", nullable = false)
private UUID createdBy;
public static final String _createdBy = "createdBy";
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 IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public UUID getCreatedBy() {
return createdBy;
}
public void setCreatedBy(UUID createdBy) {
this.createdBy = createdBy;
}
}

View File

@ -2,6 +2,7 @@ package eu.eudat.model;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.model.descriptionproperties.PropertyDefinition;
import java.time.Instant;
import java.util.List;
@ -21,21 +22,13 @@ public class Description {
public static final String _dmp = "dmp";
private String uri;
public static final String _uri = "uri";
private String properties;
private PropertyDefinition properties;
public static final String _properties = "properties";
private UUID profile;
private DescriptionTemplate descriptionTemplate;
public static final String _profile = "profile";
private String reference;
public static final String _reference = "reference";
public static final String _descriptionTemplate = "descriptionTemplate";
private DescriptionStatus status;
@ -45,13 +38,9 @@ public class Description {
public static final String _description = "description";
private Integer dmpSectionIndex;
private UUID createdBy;
public static final String _dmpSectionIndex = "dmpSectionIndex";
private UUID creator;
public static final String _creator = "creator";
public static final String _createdBy = "createdBy";
private Instant createdAt;
@ -77,6 +66,14 @@ public class Description {
public static final String _descriptionReferences = "descriptionReferences";
private List<DescriptionTag> descriptionTags;
public static final String _descriptionTags = "descriptionTags";
private UUID dmpDescriptionTemplate;
public static final String _dmpDescriptionTemplate = "dmpDescriptionTemplate";
public UUID getId() {
return id;
}
@ -101,38 +98,14 @@ public class Description {
this.dmp = dmp;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getProperties() {
public PropertyDefinition getProperties() {
return properties;
}
public void setProperties(String properties) {
public void setProperties(PropertyDefinition properties) {
this.properties = properties;
}
public UUID getProfile() {
return profile;
}
public void setProfile(UUID profile) {
this.profile = profile;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public DescriptionStatus getStatus() {
return status;
}
@ -149,28 +122,12 @@ public class Description {
this.description = description;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
public UUID getCreatedBy() {
return createdBy;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public UUID getCreator() {
return creator;
}
public void setCreator(UUID creator) {
this.creator = creator;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
public void setCreatedBy(UUID createdBy) {
this.createdBy = createdBy;
}
public Instant getUpdatedAt() {
@ -213,4 +170,35 @@ public class Description {
this.descriptionReferences = descriptionReferences;
}
public DescriptionTemplate getDescriptionTemplate() {
return descriptionTemplate;
}
public void setDescriptionTemplate(DescriptionTemplate descriptionTemplate) {
this.descriptionTemplate = descriptionTemplate;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public UUID getDmpDescriptionTemplate() {
return dmpDescriptionTemplate;
}
public void setDmpDescriptionTemplate(UUID dmpDescriptionTemplate) {
this.dmpDescriptionTemplate = dmpDescriptionTemplate;
}
public List<DescriptionTag> getDescriptionTags() {
return descriptionTags;
}
public void setDescriptionTags(List<DescriptionTag> descriptionTags) {
this.descriptionTags = descriptionTags;
}
}

View File

@ -11,10 +11,6 @@ public class DescriptionReference {
public static final String _id = "id";
private String data;
public static final String _data = "data";
private Description description;
public static final String _description = "description";
@ -43,14 +39,6 @@ public class DescriptionReference {
this.id = id;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Description getDescription() {
return description;
}

View File

@ -0,0 +1,82 @@
package eu.eudat.model;
import eu.eudat.commons.enums.IsActive;
import java.time.Instant;
import java.util.UUID;
public class DescriptionTag {
private UUID id;
public static final String _id = "id";
private Description description;
public static final String _description = "description";
private Tag tag;
public static final String _tag = "tag";
private Instant createdAt;
public static final String _createdAt = "createdAt";
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
private IsActive isActive;
public static final String _isActive = "isActive";
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public Description getDescription() {
return description;
}
public void setDescription(Description description) {
this.description = description;
}
public Tag getTag() {
return tag;
}
public void setTag(Tag tag) {
this.tag = tag;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
}

View File

@ -0,0 +1,95 @@
package eu.eudat.model;
import eu.eudat.commons.enums.DescriptionStatus;
import eu.eudat.commons.enums.IsActive;
import java.time.Instant;
import java.util.List;
import java.util.UUID;
public class Tag {
private UUID id;
public static final String _id = "id";
private String label;
public static final String _label = "label";
private UUID createdBy;
public static final String _createdBy = "createdBy";
private Instant createdAt;
public static final String _createdAt = "createdAt";
private Instant updatedAt;
public static final String _updatedAt = "updatedAt";
private IsActive isActive;
public static final String _isActive = "isActive";
private String hash;
public static final String _hash = "hash";
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 UUID getCreatedBy() {
return createdBy;
}
public void setCreatedBy(UUID createdBy) {
this.createdBy = createdBy;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
public String getHash() {
return hash;
}
public void setHash(String hash) {
this.hash = hash;
}
}

View File

@ -70,24 +70,18 @@ public class DescriptionBuilder extends BaseBuilder<Description, DescriptionEnti
m.setId(d.getId());
if (fields.hasField(this.asIndexer(Description._label)))
m.setLabel(d.getLabel());
if (fields.hasField(this.asIndexer(Description._uri)))
m.setUri(d.getUri());
if (fields.hasField(this.asIndexer(Description._properties)))
m.setProperties(d.getProperties());
if (fields.hasField(this.asIndexer(Description._profile)))
m.setProfile(d.getProfile());
if (fields.hasField(this.asIndexer(Description._reference)))
m.setReference(d.getReference());
// if (fields.hasField(this.asIndexer(Description._properties)))
// m.setProperties(d.getProperties());
// if (fields.hasField(this.asIndexer(Description._profile)))
// m.setProfile(d.getDescriptionTemplate());
if (fields.hasField(this.asIndexer(Description._status)))
m.setStatus(d.getStatus());
if (fields.hasField(this.asIndexer(Description._description)))
m.setDescription(d.getDescription());
if (fields.hasField(this.asIndexer(Description._creator)))
m.setCreator(d.getCreator());
if (fields.hasField(this.asIndexer(Description._dmpSectionIndex)))
m.setDmpSectionIndex(d.getDmpSectionIndex());
if (fields.hasField(this.asIndexer(Description._createdAt)))
m.setCreatedAt(d.getCreatedAt());
// if (fields.hasField(this.asIndexer(Description._creator)))
// m.setCreatedBy(d.getDmpDescriptionTemplate());
// if (fields.hasField(this.asIndexer(Description._createdAt)))
// m.setCreatedAt(d.getCreatedAt());
if (fields.hasField(this.asIndexer(Description._updatedAt)))
m.setUpdatedAt(d.getUpdatedAt());
if (fields.hasField(this.asIndexer(Description._isActive)))

View File

@ -67,8 +67,6 @@ public class DescriptionReferenceBuilder extends BaseBuilder<DescriptionReferenc
DescriptionReference m = new DescriptionReference();
if (fields.hasField(this.asIndexer(DescriptionReference._id)))
m.setId(d.getId());
if (fields.hasField(this.asIndexer(DescriptionReference._data)))
m.setData(d.getData());
if (fields.hasField(this.asIndexer(DescriptionReference._createdAt)))
m.setCreatedAt(d.getCreatedAt());
if (fields.hasField(this.asIndexer(DescriptionReference._updatedAt)))

View File

@ -0,0 +1,29 @@
package eu.eudat.model.descriptionproperties;
public class Field {
public final static String _id = "id";
private String id;
public final static String _value = "value";
private String value;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,10 @@
package eu.eudat.model.descriptionproperties;
import java.util.List;
public class PropertyDefinition {
public final static String _fields = "fields";
private List<Field> fields;
}

View File

@ -72,7 +72,7 @@ public class DmpEntityDepositMapper {
model.setLabel(entity.getLabel());
model.setDescription(entity.getDescription());
model.setProperties(entity.getProperties());
DescriptionTemplateEntity descriptionTemplateEntity = getDescriptionTemplate(entity.getProfile());
DescriptionTemplateEntity descriptionTemplateEntity = getDescriptionTemplate(entity.getDescriptionTemplate());
model.setProfileDefinition(descriptionTemplateEntity.getDefinition());
model.setFields(fromDefinitionAndProperties(descriptionTemplateEntity.getDefinition(), entity.getProperties()));
return model;

View File

@ -15,20 +15,14 @@ public class DescriptionPersist {
private UUID dmp;
private String uri;
private String properties;
private UUID profile;
private String reference;
private DescriptionStatus status;
private String description;
private Integer dmpSectionIndex;
private IsActive isActive;
public UUID getId() {
@ -55,14 +49,6 @@ public class DescriptionPersist {
this.dmp = dmp;
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getProperties() {
return properties;
}
@ -79,14 +65,6 @@ public class DescriptionPersist {
this.profile = profile;
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public DescriptionStatus getStatus() {
return status;
}
@ -103,14 +81,6 @@ public class DescriptionPersist {
this.description = description;
}
public Integer getDmpSectionIndex() {
return dmpSectionIndex;
}
public void setDmpSectionIndex(Integer dmpSectionIndex) {
this.dmpSectionIndex = dmpSectionIndex;
}
public IsActive getIsActive() {
return isActive;
}

View File

@ -201,22 +201,16 @@ public class DescriptionQuery extends QueryBase<DescriptionEntity> {
return DescriptionEntity._dmp;
else if (item.match(Description._dmp))
return DescriptionEntity._dmp;
else if (item.match(Description._uri))
return DescriptionEntity._uri;
else if (item.match(Description._properties))
else if (item.prefix(Description._properties))
return DescriptionEntity._properties;
else if (item.match(Description._profile))
return DescriptionEntity._profile;
else if (item.match(Description._reference))
return DescriptionEntity._reference;
else if (item.prefix(Description._descriptionTemplate))
return DescriptionEntity._descriptionTemplate;
else if (item.match(Description._status))
return DescriptionEntity._status;
else if (item.match(Description._description))
return DescriptionEntity._description;
else if (item.match(Description._dmpSectionIndex))
return DescriptionEntity._dmpSectionIndex;
else if (item.match(Description._creator))
return DescriptionEntity._creator;
else if (item.match(Description._createdBy))
return DescriptionEntity._createdBy;
else if (item.match(Description._createdAt))
return DescriptionEntity._createdAt;
else if (item.match(Description._updatedAt))
@ -225,6 +219,8 @@ public class DescriptionQuery extends QueryBase<DescriptionEntity> {
return DescriptionEntity._isActive;
else if (item.match(Description._finalizedAt))
return DescriptionEntity._finalizedAt;
else if (item.match(Description._dmpDescriptionTemplate))
return DescriptionEntity._dmpDescriptionTemplate;
else
return null;
}
@ -235,18 +231,16 @@ public class DescriptionQuery extends QueryBase<DescriptionEntity> {
item.setId(QueryBase.convertSafe(tuple, columns, DescriptionEntity._id, UUID.class));
item.setLabel(QueryBase.convertSafe(tuple, columns, DescriptionEntity._label, String.class));
item.setDmp(QueryBase.convertSafe(tuple, columns, DescriptionEntity._dmp, UUID.class));
item.setUri(QueryBase.convertSafe(tuple, columns, DescriptionEntity._uri, String.class));
item.setProperties(QueryBase.convertSafe(tuple, columns, DescriptionEntity._properties, String.class));
item.setProfile(QueryBase.convertSafe(tuple, columns, DescriptionEntity._profile, UUID.class));
item.setReference(QueryBase.convertSafe(tuple, columns, DescriptionEntity._reference, String.class));
item.setDescriptionTemplate(QueryBase.convertSafe(tuple, columns, DescriptionEntity._descriptionTemplate, UUID.class));
item.setStatus(QueryBase.convertSafe(tuple, columns, DescriptionEntity._status, DescriptionStatus.class));
item.setDescription(QueryBase.convertSafe(tuple, columns, DescriptionEntity._description, String.class));
item.setDmpSectionIndex(QueryBase.convertSafe(tuple, columns, DescriptionEntity._dmpSectionIndex, Integer.class));
item.setCreator(QueryBase.convertSafe(tuple, columns, DescriptionEntity._creator, UUID.class));
item.setDmpDescriptionTemplate(QueryBase.convertSafe(tuple, columns, DescriptionEntity._createdBy, UUID.class));
item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DescriptionEntity._createdAt, Instant.class));
item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, DescriptionEntity._updatedAt, Instant.class));
item.setIsActive(QueryBase.convertSafe(tuple, columns, DescriptionEntity._isActive, IsActive.class));
item.setFinalizedAt(QueryBase.convertSafe(tuple, columns, DescriptionEntity._finalizedAt, Instant.class));
item.setDmpDescriptionTemplate(QueryBase.convertSafe(tuple, columns, DescriptionEntity._dmpDescriptionTemplate, UUID.class));
return item;
}

View File

@ -184,8 +184,6 @@ public class DescriptionReferenceQuery extends QueryBase<DescriptionReferenceEnt
protected String fieldNameOf(FieldResolver item) {
if (item.match(DescriptionReference._id))
return DescriptionReferenceEntity._id;
if (item.match(DescriptionReference._data))
return DescriptionReferenceEntity._data;
if (item.match(DescriptionReference._description))
return DescriptionReferenceEntity._descriptionId;
else if (item.prefix(DescriptionReference._description))
@ -208,7 +206,6 @@ public class DescriptionReferenceQuery extends QueryBase<DescriptionReferenceEnt
protected DescriptionReferenceEntity convert(Tuple tuple, Set<String> columns) {
DescriptionReferenceEntity item = new DescriptionReferenceEntity();
item.setId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._id, UUID.class));
item.setData(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._data, String.class));
item.setDescriptionId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._descriptionId, UUID.class));
item.setReferenceId(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._referenceId, UUID.class));
item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DescriptionReferenceEntity._createdAt, Instant.class));

View File

@ -27,6 +27,7 @@ public class DescriptionTemplateQuery extends QueryBase<DescriptionTemplateEntit
private String like;
private Collection<UUID> ids;
private Collection<UUID> groupIds;
private Collection<IsActive> isActives;

View File

@ -6,6 +6,7 @@ import eu.eudat.query.DescriptionTemplateQuery;
import gr.cite.tools.data.query.Lookup;
import gr.cite.tools.data.query.QueryFactory;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
@ -14,6 +15,7 @@ public class DescriptionTemplateLookup extends Lookup {
private String like;
private List<IsActive> isActive;
private List<UUID> groupIds;
private List<DescriptionTemplateStatus> statuses;
@ -71,12 +73,22 @@ public class DescriptionTemplateLookup extends Lookup {
this.typeIds = typeIds;
}
public List<UUID> getGroupIds() {
return groupIds;
}
public void setGroupIds(List<UUID> groupIds) {
this.groupIds = groupIds;
}
public DescriptionTemplateQuery enrich(QueryFactory queryFactory) {
DescriptionTemplateQuery query = queryFactory.query(DescriptionTemplateQuery.class);
if (this.like != null)
query.like(this.like);
if (this.isActive != null)
query.isActive(this.isActive);
if (this.groupIds != null)
query.groupIds(this.groupIds);
if (this.statuses != null)
query.statuses(this.statuses);
if (this.ids != null)

View File

@ -108,13 +108,10 @@ public class DescriptionServiceImpl implements DescriptionService {
data.setLabel(model.getLabel());
data.setDmp(model.getDmp());
data.setUri(model.getUri());
data.setProperties(model.getProperties());
data.setProfile(model.getProfile());
data.setReference(model.getReference());
data.setDescriptionTemplate(model.getProfile());
data.setStatus(model.getStatus());
data.setDescription(model.getDescription());
data.setDmpSectionIndex(model.getDmpSectionIndex());
data.setUpdatedAt(Instant.now());
if (isUpdate)
this.entityManager.merge(data);

View File

@ -5,7 +5,7 @@ import eu.eudat.authorization.AuthorizationFlags;
import eu.eudat.authorization.Permission;
import eu.eudat.commons.JsonHandlingService;
import eu.eudat.commons.XmlHandlingService;
import eu.eudat.commons.config.filepath.FilePathsProperties;
import eu.eudat.configurations.filepath.FilePathsProperties;
import eu.eudat.commons.enums.DescriptionTemplateStatus;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.enums.IsActive;

View File

@ -20,10 +20,7 @@ import jakarta.persistence.criteria.Join;
import jakarta.persistence.criteria.JoinType;
import javax.management.InvalidApplicationException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@Component("datasetDao")
@ -34,7 +31,7 @@ public class DatasetDaoImpl extends DatabaseAccess<DescriptionEntity> implements
@Override
public QueryableList<DescriptionEntity> getWithCriteria(DatasetCriteria criteria) {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(new HashSet<>(Arrays.asList("datasetListingModel")), 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"), DescriptionStatus.Finalized));
@ -91,7 +88,7 @@ public class DatasetDaoImpl extends DatabaseAccess<DescriptionEntity> implements
}
public QueryableList<DescriptionEntity> filterFromElastic(DatasetCriteria criteria, List<UUID> ids) {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(new HashSet<>(Arrays.asList("datasetListingModel")), DescriptionEntity.class);
query.where(((builder, root) -> root.get("id").in(ids)));
if (!criteria.getAllVersions())
@ -113,13 +110,13 @@ public class DatasetDaoImpl extends DatabaseAccess<DescriptionEntity> implements
@Override
public DescriptionEntity find(UUID id, String hint) throws InvalidApplicationException {
return getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class).withHint(hint)
return getDatabaseService().getQueryable(new HashSet<>(Arrays.asList("datasetListingModel")), 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 DescriptionEntity isPublicDataset(UUID id) throws InvalidApplicationException {
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(DescriptionEntity.getHints(), DescriptionEntity.class);
QueryableList<DescriptionEntity> query = getDatabaseService().getQueryable(new HashSet<>(Arrays.asList("datasetListingModel")), DescriptionEntity.class);
query.where(((builder, root) -> builder.equal(root.get("id"), id)));
return query.withHint("datasetListingModel").getSingle();

View File

@ -494,7 +494,7 @@ public class DataManagementPlanManager {
}
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)
if (dataManagementPlan.getProfiles().stream().filter(associatedProfile -> descriptionEntity.getDescriptionTemplate().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()))
@ -1122,7 +1122,7 @@ public class DataManagementPlanManager {
datasetElastic.setId(dataset1.getId().toString());
datasetElastic.setLabel(dataset1.getLabel());
datasetElastic.setDescription(dataset1.getDescription());
datasetElastic.setTemplate(dataset1.getProfile());
datasetElastic.setTemplate(dataset1.getDescriptionTemplate());
datasetElastic.setStatus(dataset1.getStatus().getValue());
datasetElastic.setDmp(dataset1.getDmp());
datasetElastic.setGroup(dmp.getGroupId());
@ -1549,7 +1549,7 @@ public class DataManagementPlanManager {
.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))
//.filter(item -> item.getDmpSectionIndex().equals(section.getOrdinal() - 1)) //TODO
.sorted(Comparator.comparing(DescriptionEntity::getCreatedAt))
.forEach(datasetEntity -> {
Map<String, Object> properties = new HashMap<>();
@ -1600,7 +1600,7 @@ public class DataManagementPlanManager {
//runDatasetTemplate1.setBold(true);
//runDatasetTemplate1.setFontSize(12);
XWPFRun runDatasetTemplate = datasetTemplateParagraph.createRun();
runDatasetTemplate.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getProfile()).first().getLabel());
runDatasetTemplate.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getDescriptionTemplate()).first().getLabel());
runDatasetTemplate.setColor("116a78");
//runDatasetTemplate.setBold(true);
//runDatasetTemplate.setFontSize(12);
@ -1646,7 +1646,7 @@ public class DataManagementPlanManager {
runDatasetDescription1.setText("Description: ");
runDatasetDescription1.setColor("000000");
XWPFRun runDatasetDescription = datasetDescParagraph.createRun();
runDatasetDescription.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getProfile()).first().getLabel());
runDatasetDescription.setText(this.queryFactory.query(DescriptionTemplateQuery.class).ids(datasetEntity.getDescriptionTemplate()).first().getLabel());
runDatasetDescription.setColor("116a78");
//wordBuilder.addParagraphContent(datasetEntity.getDescription(), document, ParagraphStyle.HTML, BigInteger.ZERO, 0);
@ -1921,17 +1921,18 @@ public class DataManagementPlanManager {
datasetElement.appendChild(datasetDescriptionElement);
datasetDescriptionElement.setTextContent(descriptionEntity.getDescription());
Element datasetDmpSectionIndex = xmlDoc.createElement("dmpSectionIndex");
datasetElement.appendChild(datasetDmpSectionIndex);
datasetDmpSectionIndex.setTextContent(String.valueOf(descriptionEntity.getDmpSectionIndex()));
//TODO
// Element datasetDmpSectionIndex = xmlDoc.createElement("dmpSectionIndex");
// datasetElement.appendChild(datasetDmpSectionIndex);
// datasetDmpSectionIndex.setTextContent(String.valueOf(descriptionEntity.getDmpSectionIndex()));
Element datsetProfileElement = xmlDoc.createElement("profile-id");
datasetElement.appendChild(datsetProfileElement);
datsetProfileElement.setTextContent(descriptionEntity.getProfile().toString());
datsetProfileElement.setTextContent(descriptionEntity.getDescriptionTemplate().toString());
Element datsetProfileLabelElement = xmlDoc.createElement("profile-label");
datasetElement.appendChild(datsetProfileLabelElement);
datsetProfileLabelElement.setTextContent(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntity.getProfile()).first().getLabel());
datsetProfileLabelElement.setTextContent(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntity.getDescriptionTemplate()).first().getLabel());
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
Map<String, Object> properties = new HashMap<>();
@ -2231,11 +2232,12 @@ public class DataManagementPlanManager {
for (DatasetImportModels das: dataManagementPlans.get(0).getDatasetImportModels()) {
DescriptionEntity descriptionEntity = new DescriptionEntity();
descriptionEntity.setLabel(das.getName());
descriptionEntity.setDmpSectionIndex(das.getDmpSectionIndex());
//TODO
// descriptionEntity.setDmpSectionIndex(das.getDmpSectionIndex());
try {
descriptionEntity.setProfile(das.getProfile());
descriptionEntity.setDescriptionTemplate(das.getProfile());
} catch (Exception ignored) {
descriptionEntity.setProfile(associatedProfiles.get(0).getDescriptionTemplateId());
descriptionEntity.setDescriptionTemplate(associatedProfiles.get(0).getDescriptionTemplateId());
}
descriptionEntity.setProperties(objectMapper.writeValueAsString(das.getFieldImportModels()));
descriptionEntity.setStatus(DescriptionStatus.Saved);

View File

@ -309,7 +309,7 @@ public class DatasetManager {
// Creates the Criteria to get all version of DescriptionTemplate in question.
DatasetProfileCriteria profileCriteria = new DatasetProfileCriteria();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getGroupId();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getDescriptionTemplate()).first().getGroupId();
List<UUID> uuidList = new LinkedList<>();
uuidList.add(profileId);
profileCriteria.setGroupIds(uuidList);
@ -340,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(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getVersion());
boolean latestVersion = profile.getVersion().toString().equals(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getDescriptionTemplate()).first().getVersion());
dataset.setIsProfileLatestVersion(latestVersion);
eu.eudat.elastic.entities.Dataset datasetElastic;
@ -400,7 +400,7 @@ public class DatasetManager {
}
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());
eu.eudat.models.data.user.composite.DatasetProfile datasetprofile = userManager.generateDatasetProfileModel(this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getDescriptionTemplate()).first());
datasetprofile.setStatus(dataset.getStatus().getValue());
if (descriptionEntityEntity.getProperties() != null) {
JSONObject jObject = new JSONObject(descriptionEntityEntity.getProperties());
@ -598,7 +598,7 @@ public class DatasetManager {
PagedDatasetProfile pagedDatasetProfile = getPagedProfile(dataset, descriptionEntityEntity);
visibilityRuleService.setProperties(properties);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
File file = xmlBuilder.build(pagedDatasetProfile, descriptionEntityEntity.getProfile(), visibilityRuleService, environment);
File file = xmlBuilder.build(pagedDatasetProfile, descriptionEntityEntity.getDescriptionTemplate(), visibilityRuleService, environment);
FileEnvelope fileEnvelope = new FileEnvelope();
fileEnvelope.setFile(file);
String label = descriptionEntityEntity.getLabel().replaceAll("[^a-zA-Z0-9+ ]", "");
@ -639,7 +639,7 @@ public class DatasetManager {
}
}
UserInfo userInfo = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(this.userScope.getUserId()).build();
descriptionEntity.setCreator(userInfo.getId());
descriptionEntity.setDmpDescriptionTemplate(userInfo.getId());
createDataRepositoriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getDataRepositoryDao(), descriptionEntity);
createExternalDatasetsIfTheyDontExist(descriptionEntity);
@ -652,7 +652,7 @@ public class DatasetManager {
datasetWizardModel.setDmp(new DataManagementPlan().fromDataModelNoDatasets(dmp1));
}
descriptionEntity1.setProfile(datasetWizardModel.getProfile().getId());
descriptionEntity1.setDescriptionTemplate(datasetWizardModel.getProfile().getId());
// datasetWizardModel.setDatasetProfileDefinition(getPagedProfile(datasetWizardModel, dataset1));
UUID dmpId = descriptionEntity1.getDmp();
DMP dmp1 = databaseRepository.getDmpDao().find(descriptionEntity1.getDmp());
@ -737,7 +737,7 @@ public class DatasetManager {
public String checkDatasetValidation(DescriptionEntity descriptionEntity) throws Exception {
List<String> datasetProfileValidators = new LinkedList<>();
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(descriptionEntity.getProfile());
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(descriptionEntity.getDescriptionTemplate());
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document xmlDocument = builder.parse(new ByteArrayInputStream(profile.getDefinition().getBytes()));
@ -759,7 +759,7 @@ public class DatasetManager {
VisibilityRuleService visibilityRuleService = new VisibilityRuleServiceImpl();
visibilityRuleService.setProperties(obj.toMap());
descriptionEntity.setProfile(profile.getId());
descriptionEntity.setDescriptionTemplate(profile.getId());
PagedDatasetProfile pagedDatasetProfile = this.getPagedProfile(new DatasetWizardModel(), descriptionEntity);
visibilityRuleService.buildVisibilityContext(pagedDatasetProfile.getRules());
@ -1036,10 +1036,10 @@ public class DatasetManager {
entity.setUpdatedAt(Instant.now());
DescriptionTemplateEntity profile = new DescriptionTemplateEntity();
profile.setId(UUID.fromString(datasetProfileId));
entity.setProfile(profile.getId());
entity.setDescriptionTemplate(profile.getId());
UserInfo userInfo = apiContext.getOperationsContext().getBuilderFactory().getBuilder(UserInfoBuilder.class).id(this.userScope.getUserId()).build();
entity.setCreator(userInfo.getId());
entity.setDmpDescriptionTemplate(userInfo.getId());
updateTagsXmlImportDataset(apiContext.getOperationsContext().getElasticRepository().getDatasetRepository(), entity);
createRegistriesIfTheyDontExist(apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao(), entity);
@ -1064,7 +1064,7 @@ public class DatasetManager {
// Creates the Criteria to get all version of DescriptionTemplate in question.
DatasetProfileCriteria profileCriteria = new DatasetProfileCriteria();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getProfile()).first().getGroupId();
UUID profileId = this.queryFactory.query(DescriptionTemplateQuery.class).ids(descriptionEntityEntity.getDescriptionTemplate()).first().getGroupId();
List<UUID> uuidList = new LinkedList<>();
uuidList.add(profileId);
profileCriteria.setGroupIds(uuidList);
@ -1152,7 +1152,7 @@ public class DatasetManager {
}
public void getTagsFromProfile(DatasetWizardModel wizardModel, DescriptionEntity descriptionEntity) throws IOException, InvalidApplicationException {
descriptionEntity.setProfile(descriptionEntity.getProfile());
descriptionEntity.setDescriptionTemplate(descriptionEntity.getDescriptionTemplate());
wizardModel.setDatasetProfileDefinition(this.getPagedProfile(wizardModel, descriptionEntity));
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(wizardModel.getDatasetProfileDefinition());

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()).stream().distinct().count();
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(datasetCriteria).select(root -> root.getDescriptionTemplate()).stream().distinct().count();
}
}

View File

@ -6,7 +6,7 @@ import eu.eudat.data.old.UserInfo;
import eu.eudat.commons.enums.old.notification.ActiveStatus;
import eu.eudat.commons.enums.old.notification.NotifyState;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.services.utilities.MailService;
import eu.eudat.service.mail.MailService;
import eu.eudat.service.mail.SimpleMail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1,17 +1,12 @@
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;
import eu.eudat.elastic.entities.Dataset;
import eu.eudat.elastic.entities.Tag;
import eu.eudat.logic.managers.DatasetManager;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.utilities.helpers.StreamDistinctBy;
import java.util.*;
import java.util.stream.Collectors;
public class DatasetMapper {
@ -24,7 +19,7 @@ public class DatasetMapper {
}
public Dataset toElastic(DescriptionEntity descriptionEntity, List<Tag> tags) throws Exception {
if (descriptionEntity.getProfile() == null) {
if (descriptionEntity.getDescriptionTemplate() == null) {
return null;
}
//TODO

View File

@ -53,7 +53,7 @@ public class PrefillingMapper {
DatasetWizardModel datasetWizardModel = new DatasetWizardModel();
datasetWizardModel.setProfile(new DatasetProfileOverviewModel().fromDataModel(profile));
DescriptionEntity descriptionEntity = new DescriptionEntity();
descriptionEntity.setProfile(profile.getId());
descriptionEntity.setDescriptionTemplate(profile.getId());
Map<String, Object> properties = new HashMap<>();
JsonNode parentNode = mapper.readTree(mapper.writeValueAsString(datasetManager.getPagedProfile(datasetWizardModel, descriptionEntity)));
for (DefaultPrefillingMapping prefillingMapping: prefillingGet.getMappings()) {

View File

@ -2,9 +2,8 @@ package eu.eudat.logic.proxy.config.configloaders;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.eudat.commons.config.filepath.FilePathsProperties;
import eu.eudat.configurations.filepath.FilePathsProperties;
import eu.eudat.logic.proxy.config.ExternalUrls;
import eu.eudat.service.descriptiontemplate.Semantic;
import eu.eudat.models.data.pid.PidLinks;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.slf4j.Logger;

View File

@ -3,6 +3,7 @@ package eu.eudat.logic.services.utilities;
import eu.eudat.data.dao.entities.EmailConfirmationDao;
import eu.eudat.data.old.EmailConfirmation;
import eu.eudat.data.old.UserInfo;
import eu.eudat.service.mail.MailService;
import javax.management.InvalidApplicationException;
import java.util.UUID;

View File

@ -7,6 +7,7 @@ import eu.eudat.commons.scope.user.UserScope;
import eu.eudat.data.dao.entities.EmailConfirmationDao;
import eu.eudat.data.old.EmailConfirmation;
import eu.eudat.data.old.UserInfo;
import eu.eudat.service.mail.MailService;
import eu.eudat.service.mail.SimpleMail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -8,6 +8,7 @@ import eu.eudat.data.old.Invitation;
import eu.eudat.data.old.UserDMP;
import eu.eudat.data.old.UserInfo;
import eu.eudat.service.mail.MailService;
import jakarta.mail.MessagingException;
import java.util.List;
import java.util.concurrent.CompletableFuture;

View File

@ -8,6 +8,7 @@ import eu.eudat.data.old.Invitation;
import eu.eudat.data.old.UserDMP;
import eu.eudat.data.old.UserInfo;
import eu.eudat.models.data.invitation.Properties;
import eu.eudat.service.mail.MailService;
import eu.eudat.service.mail.SimpleMail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1,14 +0,0 @@
package eu.eudat.logic.services.utilities;
import eu.eudat.service.mail.SimpleMail;
import jakarta.mail.MessagingException;
public interface MailService {
void sendSimpleMail(SimpleMail mail) throws MessagingException;
String getMailTemplateContent(String resourceTemplate);
String getMailTemplateSubject();
}

View File

@ -1,139 +0,0 @@
package eu.eudat.logic.services.utilities;
import eu.eudat.service.mail.SimpleMail;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import jakarta.mail.BodyPart;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeBodyPart;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMultipart;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Service("mailService")
public class MailServiceImpl implements MailService {
private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);
private Environment env;
private JavaMailSender emailSender;
private ApplicationContext applicationContext;
@Autowired
public MailServiceImpl(Environment env, JavaMailSender emailSender, ApplicationContext applicationContext) {
this.env = env;
this.emailSender = emailSender;
this.applicationContext = applicationContext;
}
@Override
public void sendSimpleMail(SimpleMail mail) throws MessagingException {
List<String> imageSources = parseImages(mail.getContent());
List<String> cids = new ArrayList<>();
if (!imageSources.isEmpty()) {
for (int i = 0; i < imageSources.size(); i++) {
cids.add(UUID.randomUUID().toString());
}
mail.setContent(replaceImageSources(mail.getContent(), cids));
}
MimeMultipart content = new MimeMultipart("related");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(mail.getContent(), "text/html; charset=UTF-8");
content.addBodyPart(messageBodyPart);
if (!imageSources.isEmpty()) {
for (int i =0; i < imageSources.size(); i++) {
MimeBodyPart imagePart = new MimeBodyPart();
try {
imagePart.attachFile(applicationContext.getResource(imageSources.get(i)).getFile());
imagePart.setContentID("<" + cids.get(i) + ">");
imagePart.setDisposition(MimeBodyPart.INLINE);
content.addBodyPart(imagePart);
} catch (IOException | MessagingException e) {
logger.error(e.getMessage(), e);
}
}
}
MimeMessage message = this.emailSender.createMimeMessage();
message.setSubject(mail.getSubject());
message.setContent(content);
message.addRecipients(Message.RecipientType.TO, mail.getTo());
message.setFrom(env.getProperty("mail.from"));
this.emailSender.send(message);
}
public Environment getEnv() {
return env;
}
@Override
public String getMailTemplateContent(String resourceTemplate) {
Resource resource = applicationContext.getResource(resourceTemplate);
try {
InputStream inputStream = resource.getInputStream();
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, "UTF-8");
inputStream.close();
return writer.toString();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return "";
}
@Override
public String getMailTemplateSubject() {
return env.getProperty("mail.subject");
}
private List<String> parseImages(String content) {
List<String> imagePaths = new ArrayList<>();
int lastIndex = 0;
while (lastIndex != -1) {
lastIndex = content.indexOf("img src=\"", lastIndex);
if (lastIndex != -1) {
String imagePath = content.substring(lastIndex + 9, content.indexOf("\"", lastIndex + 9));
if (!imagePath.contains("data:image/png;base64")) {
imagePaths.add(imagePath);
}
lastIndex++;
}
}
return imagePaths;
}
private String replaceImageSources(String content, List<String> cids) {
int lastIndex = 0;
int cidIndex = 0;
while (lastIndex != -1) {
lastIndex = content.indexOf("img src=\"", lastIndex);
if (lastIndex != -1) {
content = content.replace(content.substring(lastIndex + 9, content.indexOf("\"", lastIndex + 9)), "cid:" + cids.get(cidIndex));
lastIndex ++;
cidIndex ++;
}
}
return content;
}
}

View File

@ -1,6 +1,7 @@
package eu.eudat.logic.services.utilities;
import eu.eudat.logic.services.forms.VisibilityRuleService;
import eu.eudat.service.mail.MailService;
/**
* Created by ikalyvas on 3/1/2018.

View File

@ -2,6 +2,7 @@ package eu.eudat.logic.services.utilities;
import eu.eudat.logic.services.forms.VisibilityRuleService;
import eu.eudat.logic.services.forms.VisibilityRuleServiceImpl;
import eu.eudat.service.mail.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@ -11,7 +11,6 @@ import eu.eudat.logic.managers.DatasetManager;
import eu.eudat.logic.services.ApiContext;
import eu.eudat.logic.utilities.helpers.StreamDistinctBy;
import eu.eudat.logic.utilities.json.JsonSearcher;
import eu.eudat.models.data.datasetprofile.DatasetProfileOverviewModel;
import eu.eudat.models.data.datasetwizard.DatasetWizardModel;
import eu.eudat.models.rda.*;
import org.json.JSONObject;
@ -52,7 +51,7 @@ public class DatasetRDAMapper {
}
rda.setTitle(descriptionEntity.getLabel());
rda.setDescription(descriptionEntity.getDescription());
rda.setAdditionalProperty("template", descriptionEntity.getProfile());
rda.setAdditionalProperty("template", descriptionEntity.getDescriptionTemplate());
try {
JSONObject jObject = new JSONObject(descriptionEntity.getProperties());
Map<String, Object> templateIdsToValues = jObject.toMap();
@ -289,10 +288,10 @@ public class DatasetRDAMapper {
entity.setDescription(rda.getDescription());
try {
DescriptionTemplateEntity profile = apiContext.getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(rda.getAdditionalProperties().get("template").toString()));
entity.setProfile(profile.getId());
entity.setDescriptionTemplate(profile.getId());
}catch(Exception e) {
logger.warn(e.getMessage(), e);
entity.setProfile(defaultProfile.getId());
entity.setDescriptionTemplate(defaultProfile.getId());
}
try {
Map<String, Object> properties = new HashMap<>();