elastic fixes
This commit is contained in:
parent
33196e28cd
commit
a8c1736e83
|
@ -1,10 +1,13 @@
|
||||||
package org.opencdmp.elastic.data;
|
package org.opencdmp.elastic.data;
|
||||||
|
|
||||||
|
import gr.cite.tools.elastic.ElasticConstants;
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
import org.opencdmp.commons.enums.DmpVersionStatus;
|
import org.opencdmp.commons.enums.DmpVersionStatus;
|
||||||
import org.opencdmp.elastic.data.nested.*;
|
import org.opencdmp.elastic.data.nested.NestedCollaboratorElasticEntity;
|
||||||
import gr.cite.tools.elastic.ElasticConstants;
|
import org.opencdmp.elastic.data.nested.NestedDescriptionElasticEntity;
|
||||||
|
import org.opencdmp.elastic.data.nested.NestedDoiElasticEntity;
|
||||||
|
import org.opencdmp.elastic.data.nested.NestedReferenceElasticEntity;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.*;
|
import org.springframework.data.elasticsearch.annotations.*;
|
||||||
|
|
||||||
|
@ -23,9 +26,7 @@ public class DmpElasticEntity {
|
||||||
private UUID tenantId;
|
private UUID tenantId;
|
||||||
public final static String _tenantId = "tenantId";
|
public final static String _tenantId = "tenantId";
|
||||||
|
|
||||||
@MultiField(mainField = @Field(value = DmpElasticEntity._label, type = FieldType.Text), otherFields = {
|
@MultiField(mainField = @Field(value = DmpElasticEntity._label, type = FieldType.Text), otherFields = @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword))
|
||||||
@InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
|
|
||||||
})
|
|
||||||
private String label;
|
private String label;
|
||||||
public final static String _label = "label";
|
public final static String _label = "label";
|
||||||
|
|
||||||
|
@ -81,7 +82,7 @@ public class DmpElasticEntity {
|
||||||
public final static String _dois = "dois";
|
public final static String _dois = "dois";
|
||||||
|
|
||||||
public UUID getId() {
|
public UUID getId() {
|
||||||
return id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(UUID id) {
|
public void setId(UUID id) {
|
||||||
|
@ -89,7 +90,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getTenantId() {
|
public UUID getTenantId() {
|
||||||
return tenantId;
|
return this.tenantId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTenantId(UUID tenantId) {
|
public void setTenantId(UUID tenantId) {
|
||||||
|
@ -97,7 +98,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLabel() {
|
public String getLabel() {
|
||||||
return label;
|
return this.label;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLabel(String label) {
|
public void setLabel(String label) {
|
||||||
|
@ -105,7 +106,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return description;
|
return this.description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDescription(String description) {
|
public void setDescription(String description) {
|
||||||
|
@ -113,7 +114,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Short getVersion() {
|
public Short getVersion() {
|
||||||
return version;
|
return this.version;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersion(Short version) {
|
public void setVersion(Short version) {
|
||||||
|
@ -121,7 +122,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpStatus getStatus() {
|
public DmpStatus getStatus() {
|
||||||
return status;
|
return this.status;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(DmpStatus status) {
|
public void setStatus(DmpStatus status) {
|
||||||
|
@ -129,7 +130,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpAccessType getAccessType() {
|
public DmpAccessType getAccessType() {
|
||||||
return accessType;
|
return this.accessType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAccessType(DmpAccessType accessType) {
|
public void setAccessType(DmpAccessType accessType) {
|
||||||
|
@ -137,7 +138,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLanguage() {
|
public String getLanguage() {
|
||||||
return language;
|
return this.language;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLanguage(String language) {
|
public void setLanguage(String language) {
|
||||||
|
@ -145,7 +146,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getBlueprintId() {
|
public UUID getBlueprintId() {
|
||||||
return blueprintId;
|
return this.blueprintId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlueprintId(UUID blueprintId) {
|
public void setBlueprintId(UUID blueprintId) {
|
||||||
|
@ -153,7 +154,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getGroupId() {
|
public UUID getGroupId() {
|
||||||
return groupId;
|
return this.groupId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGroupId(UUID groupId) {
|
public void setGroupId(UUID groupId) {
|
||||||
|
@ -161,7 +162,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Date getFinalizedAt() {
|
public Date getFinalizedAt() {
|
||||||
return finalizedAt;
|
return this.finalizedAt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFinalizedAt(Date finalizedAt) {
|
public void setFinalizedAt(Date finalizedAt) {
|
||||||
|
@ -169,7 +170,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<NestedReferenceElasticEntity> getReferences() {
|
public List<NestedReferenceElasticEntity> getReferences() {
|
||||||
return references;
|
return this.references;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setReferences(List<NestedReferenceElasticEntity> references) {
|
public void setReferences(List<NestedReferenceElasticEntity> references) {
|
||||||
|
@ -177,7 +178,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<NestedCollaboratorElasticEntity> getCollaborators() {
|
public List<NestedCollaboratorElasticEntity> getCollaborators() {
|
||||||
return collaborators;
|
return this.collaborators;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCollaborators(List<NestedCollaboratorElasticEntity> collaborators) {
|
public void setCollaborators(List<NestedCollaboratorElasticEntity> collaborators) {
|
||||||
|
@ -185,7 +186,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<NestedDescriptionElasticEntity> getDescriptions() {
|
public List<NestedDescriptionElasticEntity> getDescriptions() {
|
||||||
return descriptions;
|
return this.descriptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDescriptions(List<NestedDescriptionElasticEntity> descriptions) {
|
public void setDescriptions(List<NestedDescriptionElasticEntity> descriptions) {
|
||||||
|
@ -193,7 +194,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<NestedDoiElasticEntity> getDois() {
|
public List<NestedDoiElasticEntity> getDois() {
|
||||||
return dois;
|
return this.dois;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDois(List<NestedDoiElasticEntity> dois) {
|
public void setDois(List<NestedDoiElasticEntity> dois) {
|
||||||
|
@ -201,7 +202,7 @@ public class DmpElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpVersionStatus getVersionStatus() {
|
public DmpVersionStatus getVersionStatus() {
|
||||||
return versionStatus;
|
return this.versionStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersionStatus(DmpVersionStatus versionStatus) {
|
public void setVersionStatus(DmpVersionStatus versionStatus) {
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
package org.opencdmp.elastic.data.nested;
|
package org.opencdmp.elastic.data.nested;
|
||||||
|
|
||||||
import org.opencdmp.commons.enums.DmpUserRole;
|
|
||||||
import gr.cite.tools.elastic.ElasticConstants;
|
import gr.cite.tools.elastic.ElasticConstants;
|
||||||
|
import org.opencdmp.commons.enums.DmpUserRole;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.*;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.FieldType;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.InnerField;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.MultiField;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@ -13,9 +16,11 @@ public class NestedCollaboratorElasticEntity {
|
||||||
private UUID id;
|
private UUID id;
|
||||||
public final static String _id = "id";
|
public final static String _id = "id";
|
||||||
|
|
||||||
@MultiField(mainField = @Field(value = NestedCollaboratorElasticEntity._name, type = FieldType.Text), otherFields = {
|
@Field(value = NestedCollaboratorElasticEntity._userId, type = FieldType.Keyword)
|
||||||
@InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword)
|
private UUID userId;
|
||||||
})
|
public final static String _userId = "userId";
|
||||||
|
|
||||||
|
@MultiField(mainField = @Field(value = NestedCollaboratorElasticEntity._name, type = FieldType.Text), otherFields = @InnerField(suffix = ElasticConstants.SubFields.keyword, type = FieldType.Keyword))
|
||||||
private String name;
|
private String name;
|
||||||
public final static String _name = "name";
|
public final static String _name = "name";
|
||||||
|
|
||||||
|
@ -24,7 +29,7 @@ public class NestedCollaboratorElasticEntity {
|
||||||
public final static String _role = "role";
|
public final static String _role = "role";
|
||||||
|
|
||||||
public UUID getId() {
|
public UUID getId() {
|
||||||
return id;
|
return this.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(UUID id) {
|
public void setId(UUID id) {
|
||||||
|
@ -32,7 +37,7 @@ public class NestedCollaboratorElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
|
@ -40,10 +45,18 @@ public class NestedCollaboratorElasticEntity {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpUserRole getRole() {
|
public DmpUserRole getRole() {
|
||||||
return role;
|
return this.role;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRole(DmpUserRole role) {
|
public void setRole(DmpUserRole role) {
|
||||||
this.role = role;
|
this.role = role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UUID getUserId() {
|
||||||
|
return this.userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(UUID userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
package org.opencdmp.elastic.elasticbuilder.nested;
|
package org.opencdmp.elastic.elasticbuilder.nested;
|
||||||
|
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import gr.cite.tools.exception.MyApplicationException;
|
||||||
|
import gr.cite.tools.fieldset.BaseFieldSet;
|
||||||
|
import gr.cite.tools.logging.LoggerService;
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
import org.opencdmp.convention.ConventionService;
|
import org.opencdmp.convention.ConventionService;
|
||||||
import org.opencdmp.data.DescriptionEntity;
|
|
||||||
import org.opencdmp.data.DmpUserEntity;
|
import org.opencdmp.data.DmpUserEntity;
|
||||||
import org.opencdmp.data.UserEntity;
|
import org.opencdmp.data.UserEntity;
|
||||||
import org.opencdmp.elastic.data.nested.NestedCollaboratorElasticEntity;
|
import org.opencdmp.elastic.data.nested.NestedCollaboratorElasticEntity;
|
||||||
import org.opencdmp.elastic.elasticbuilder.BaseElasticBuilder;
|
import org.opencdmp.elastic.elasticbuilder.BaseElasticBuilder;
|
||||||
import org.opencdmp.model.User;
|
import org.opencdmp.model.User;
|
||||||
import org.opencdmp.query.DescriptionTemplateQuery;
|
|
||||||
import org.opencdmp.query.UserQuery;
|
import org.opencdmp.query.UserQuery;
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
import gr.cite.tools.exception.MyApplicationException;
|
|
||||||
import gr.cite.tools.fieldset.BaseFieldSet;
|
|
||||||
import gr.cite.tools.logging.LoggerService;
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
|
@ -24,7 +22,7 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class NestedCollaboratorElasticBuilder extends BaseElasticBuilder<NestedCollaboratorElasticEntity, DmpUserEntity> {
|
public class NestedCollaboratorElasticBuilder extends BaseElasticBuilder<NestedCollaboratorElasticEntity, DmpUserEntity> {
|
||||||
|
|
||||||
private final QueryFactory queryFactory;
|
private final QueryFactory queryFactory;
|
||||||
|
@ -46,6 +44,7 @@ public class NestedCollaboratorElasticBuilder extends BaseElasticBuilder<NestedC
|
||||||
for (DmpUserEntity d : data) {
|
for (DmpUserEntity d : data) {
|
||||||
NestedCollaboratorElasticEntity m = new NestedCollaboratorElasticEntity();
|
NestedCollaboratorElasticEntity m = new NestedCollaboratorElasticEntity();
|
||||||
m.setId(d.getId());
|
m.setId(d.getId());
|
||||||
|
m.setUserId(d.getUserId());
|
||||||
m.setRole(d.getRole());
|
m.setRole(d.getRole());
|
||||||
m.setName(userNameMap.getOrDefault(d.getUserId(), d.getUserId().toString()));
|
m.setName(userNameMap.getOrDefault(d.getUserId(), d.getUserId().toString()));
|
||||||
models.add(m);
|
models.add(m);
|
||||||
|
|
|
@ -1,6 +1,18 @@
|
||||||
package org.opencdmp.elastic.query;
|
package org.opencdmp.elastic.query;
|
||||||
|
|
||||||
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
||||||
import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
||||||
|
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||||
|
import gr.cite.tools.data.query.FieldResolver;
|
||||||
|
import gr.cite.tools.data.query.OrderingFieldResolver;
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import gr.cite.tools.elastic.ElasticConstants;
|
||||||
|
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
||||||
|
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticField;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticFields;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticNestedQuery;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticQuery;
|
||||||
import org.opencdmp.authorization.AuthorizationFlags;
|
import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
import org.opencdmp.authorization.Permission;
|
import org.opencdmp.authorization.Permission;
|
||||||
import org.opencdmp.commons.enums.DescriptionStatus;
|
import org.opencdmp.commons.enums.DescriptionStatus;
|
||||||
|
@ -8,20 +20,11 @@ import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
import org.opencdmp.commons.scope.tenant.TenantScope;
|
import org.opencdmp.commons.scope.tenant.TenantScope;
|
||||||
import org.opencdmp.commons.scope.user.UserScope;
|
import org.opencdmp.commons.scope.user.UserScope;
|
||||||
import org.opencdmp.service.elastic.AppElasticProperties;
|
|
||||||
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
||||||
import org.opencdmp.elastic.data.DmpElasticEntity;
|
import org.opencdmp.elastic.data.DmpElasticEntity;
|
||||||
import org.opencdmp.elastic.data.nested.NestedDmpElasticEntity;
|
import org.opencdmp.elastic.data.nested.NestedDmpElasticEntity;
|
||||||
|
import org.opencdmp.service.elastic.AppElasticProperties;
|
||||||
import org.opencdmp.service.elastic.ElasticService;
|
import org.opencdmp.service.elastic.ElasticService;
|
||||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
|
||||||
import gr.cite.tools.data.query.FieldResolver;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
|
||||||
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
|
||||||
import gr.cite.tools.elastic.query.ElasticField;
|
|
||||||
import gr.cite.tools.elastic.query.ElasticFields;
|
|
||||||
import gr.cite.tools.elastic.query.ElasticNestedQuery;
|
|
||||||
import gr.cite.tools.elastic.query.ElasticQuery;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
|
@ -137,7 +140,7 @@ public class DescriptionElasticQuery extends ElasticQuery<DescriptionElasticEnti
|
||||||
private final UserScope userScope;
|
private final UserScope userScope;
|
||||||
private final TenantScope tenantScope;
|
private final TenantScope tenantScope;
|
||||||
private final AuthorizationService authService;
|
private final AuthorizationService authService;
|
||||||
@Autowired()
|
@Autowired
|
||||||
public DescriptionElasticQuery(ElasticsearchTemplate elasticsearchTemplate, ElasticProperties elasticProperties, QueryFactory queryFactory, AppElasticProperties appElasticProperties, ElasticService elasticService, UserScope userScope, TenantScope tenantScope, AuthorizationService authService) {
|
public DescriptionElasticQuery(ElasticsearchTemplate elasticsearchTemplate, ElasticProperties elasticProperties, QueryFactory queryFactory, AppElasticProperties appElasticProperties, ElasticService elasticService, UserScope userScope, TenantScope tenantScope, AuthorizationService authService) {
|
||||||
super(elasticsearchTemplate, elasticProperties);
|
super(elasticsearchTemplate, elasticProperties);
|
||||||
this.queryFactory = queryFactory;
|
this.queryFactory = queryFactory;
|
||||||
|
@ -199,7 +202,7 @@ public class DescriptionElasticQuery extends ElasticQuery<DescriptionElasticEnti
|
||||||
}
|
}
|
||||||
if (userId != null) {
|
if (userId != null) {
|
||||||
NestedCollaboratorElasticQuery query = this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._collaborators);
|
NestedCollaboratorElasticQuery query = this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._collaborators);
|
||||||
query.ids(userId);
|
query.userIds(userId);
|
||||||
predicates.add(this.nestedQuery(query).build()._toQuery());
|
predicates.add(this.nestedQuery(query).build()._toQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,39 +216,39 @@ public class DescriptionElasticQuery extends ElasticQuery<DescriptionElasticEnti
|
||||||
@Override
|
@Override
|
||||||
protected Query applyFilters() {
|
protected Query applyFilters() {
|
||||||
List<Query> predicates = new ArrayList<>();
|
List<Query> predicates = new ArrayList<>();
|
||||||
if (like != null && !like.isBlank()) {
|
if (this.like != null && !this.like.isBlank()) {
|
||||||
if (!like.startsWith("*")) like = "*" + like;
|
if (!this.like.startsWith("*")) this.like = "*" + this.like;
|
||||||
if (!like.endsWith("*")) like = like + "*";
|
if (!this.like.endsWith("*")) this.like = this.like + "*";
|
||||||
ElasticFields elasticFields = this.elasticFieldsOf();
|
ElasticFields elasticFields = this.elasticFieldsOf();
|
||||||
elasticFields.add("*", null, true);
|
elasticFields.add("*", null, true);
|
||||||
|
|
||||||
predicates.add(this.or(
|
predicates.add(this.or(
|
||||||
this.like(elasticFields, List.of(like))._toQuery(),
|
this.like(elasticFields, List.of(this.like))._toQuery(),
|
||||||
QueryBuilders.nested().path(DescriptionElasticEntity._tags).query(
|
QueryBuilders.nested().path(DescriptionElasticEntity._tags).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DescriptionElasticEntity._references).query(
|
QueryBuilders.nested().path(DescriptionElasticEntity._references).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._references).query(
|
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._references).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._collaborators).query(
|
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._collaborators).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._dois).query(
|
QueryBuilders.nested().path(DescriptionElasticEntity._dmp + "." + NestedDmpElasticEntity._dois).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery()
|
).build()._toQuery()
|
||||||
)._toQuery());
|
)._toQuery());
|
||||||
}
|
}
|
||||||
if (ids != null) {
|
if (this.ids != null) {
|
||||||
predicates.add(this.containsUUID(this.elasticFieldOf(DescriptionElasticEntity._id), ids)._toQuery());
|
predicates.add(this.containsUUID(this.elasticFieldOf(DescriptionElasticEntity._id), this.ids)._toQuery());
|
||||||
}
|
}
|
||||||
if (excludedIds != null) {
|
if (this.excludedIds != null) {
|
||||||
predicates.add(this.not(this.containsUUID(this.elasticFieldOf(DescriptionElasticEntity._id), excludedIds)._toQuery())._toQuery());
|
predicates.add(this.not(this.containsUUID(this.elasticFieldOf(DescriptionElasticEntity._id), this.excludedIds)._toQuery())._toQuery());
|
||||||
}
|
}
|
||||||
if (statuses != null) {
|
if (this.statuses != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(DescriptionElasticEntity._status), statuses.stream().map(DescriptionStatus::getValue).toList().toArray(new Short[statuses.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(DescriptionElasticEntity._status), this.statuses.stream().map(DescriptionStatus::getValue).toList().toArray(new Short[this.statuses.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
if (this.finalizedAfter != null) {
|
if (this.finalizedAfter != null) {
|
||||||
predicates.add(this.dateGreaterThanQuery(this.elasticFieldOf(DescriptionElasticEntity._finalizedAt), this.finalizedAfter)._toQuery());
|
predicates.add(this.dateGreaterThanQuery(this.elasticFieldOf(DescriptionElasticEntity._finalizedAt), this.finalizedAfter)._toQuery());
|
||||||
|
@ -259,8 +262,8 @@ public class DescriptionElasticQuery extends ElasticQuery<DescriptionElasticEnti
|
||||||
if (this.createdBefore != null) {
|
if (this.createdBefore != null) {
|
||||||
predicates.add(this.dateLessThanQuery(this.elasticFieldOf(DescriptionElasticEntity._createdAt), this.createdBefore)._toQuery());
|
predicates.add(this.dateLessThanQuery(this.elasticFieldOf(DescriptionElasticEntity._createdAt), this.createdBefore)._toQuery());
|
||||||
}
|
}
|
||||||
if (dmpSubQuery != null) {
|
if (this.dmpSubQuery != null) {
|
||||||
predicates.add(dmpSubQuery.innerPath(DescriptionElasticEntity._dmp).applyFilters());
|
predicates.add(this.dmpSubQuery.innerPath(DescriptionElasticEntity._dmp).applyFilters());
|
||||||
}
|
}
|
||||||
if (!predicates.isEmpty()) {
|
if (!predicates.isEmpty()) {
|
||||||
return this.and(predicates);
|
return this.and(predicates);
|
||||||
|
@ -288,7 +291,7 @@ public class DescriptionElasticQuery extends ElasticQuery<DescriptionElasticEnti
|
||||||
@Override
|
@Override
|
||||||
protected ElasticField fieldNameOf(FieldResolver item) {
|
protected ElasticField fieldNameOf(FieldResolver item) {
|
||||||
if (item.match(DescriptionElasticEntity._id)) return this.elasticFieldOf(DescriptionElasticEntity._id);
|
if (item.match(DescriptionElasticEntity._id)) return this.elasticFieldOf(DescriptionElasticEntity._id);
|
||||||
else if (item.match(DescriptionElasticEntity._label)) return this.elasticFieldOf(DescriptionElasticEntity._label);
|
else if (item.match(DescriptionElasticEntity._label)) return item instanceof OrderingFieldResolver ? this.elasticFieldOf(DescriptionElasticEntity._label).subfield(ElasticConstants.SubFields.keyword) : this.elasticFieldOf(DescriptionElasticEntity._label);
|
||||||
else if (item.match(DescriptionElasticEntity._description)) return this.elasticFieldOf(DescriptionElasticEntity._description);
|
else if (item.match(DescriptionElasticEntity._description)) return this.elasticFieldOf(DescriptionElasticEntity._description);
|
||||||
else if (item.match(DescriptionElasticEntity._status)) return this.elasticFieldOf(DescriptionElasticEntity._status);
|
else if (item.match(DescriptionElasticEntity._status)) return this.elasticFieldOf(DescriptionElasticEntity._status);
|
||||||
else if (item.match(DescriptionElasticEntity._finalizedAt)) return this.elasticFieldOf(DescriptionElasticEntity._finalizedAt);
|
else if (item.match(DescriptionElasticEntity._finalizedAt)) return this.elasticFieldOf(DescriptionElasticEntity._finalizedAt);
|
||||||
|
|
|
@ -1,6 +1,18 @@
|
||||||
package org.opencdmp.elastic.query;
|
package org.opencdmp.elastic.query;
|
||||||
|
|
||||||
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
||||||
import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
|
||||||
|
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||||
|
import gr.cite.tools.data.query.FieldResolver;
|
||||||
|
import gr.cite.tools.data.query.OrderingFieldResolver;
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import gr.cite.tools.elastic.ElasticConstants;
|
||||||
|
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
||||||
|
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticField;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticFields;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticNestedQuery;
|
||||||
|
import gr.cite.tools.elastic.query.ElasticQuery;
|
||||||
import org.opencdmp.authorization.AuthorizationFlags;
|
import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
import org.opencdmp.authorization.Permission;
|
import org.opencdmp.authorization.Permission;
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
|
@ -9,16 +21,10 @@ import org.opencdmp.commons.enums.DmpVersionStatus;
|
||||||
import org.opencdmp.commons.scope.tenant.TenantScope;
|
import org.opencdmp.commons.scope.tenant.TenantScope;
|
||||||
import org.opencdmp.commons.scope.user.UserScope;
|
import org.opencdmp.commons.scope.user.UserScope;
|
||||||
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
||||||
import org.opencdmp.service.elastic.AppElasticProperties;
|
|
||||||
import org.opencdmp.elastic.data.DmpElasticEntity;
|
import org.opencdmp.elastic.data.DmpElasticEntity;
|
||||||
import org.opencdmp.elastic.data.nested.NestedDescriptionElasticEntity;
|
import org.opencdmp.elastic.data.nested.NestedDescriptionElasticEntity;
|
||||||
|
import org.opencdmp.service.elastic.AppElasticProperties;
|
||||||
import org.opencdmp.service.elastic.ElasticService;
|
import org.opencdmp.service.elastic.ElasticService;
|
||||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
|
||||||
import gr.cite.tools.data.query.FieldResolver;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
|
||||||
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
|
||||||
import gr.cite.tools.elastic.query.*;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
|
@ -167,7 +173,7 @@ public class DmpElasticQuery extends ElasticQuery<DmpElasticEntity, UUID> {
|
||||||
private final UserScope userScope;
|
private final UserScope userScope;
|
||||||
private final TenantScope tenantScope;
|
private final TenantScope tenantScope;
|
||||||
private final AuthorizationService authService;
|
private final AuthorizationService authService;
|
||||||
@Autowired()
|
@Autowired
|
||||||
public DmpElasticQuery(ElasticsearchTemplate elasticsearchTemplate, ElasticProperties elasticProperties, QueryFactory queryFactory, AppElasticProperties appElasticProperties, ElasticService elasticService, UserScope userScope, TenantScope tenantScope, AuthorizationService authService) {
|
public DmpElasticQuery(ElasticsearchTemplate elasticsearchTemplate, ElasticProperties elasticProperties, QueryFactory queryFactory, AppElasticProperties appElasticProperties, ElasticService elasticService, UserScope userScope, TenantScope tenantScope, AuthorizationService authService) {
|
||||||
super(elasticsearchTemplate, elasticProperties);
|
super(elasticsearchTemplate, elasticProperties);
|
||||||
this.queryFactory = queryFactory;
|
this.queryFactory = queryFactory;
|
||||||
|
@ -227,7 +233,7 @@ public class DmpElasticQuery extends ElasticQuery<DmpElasticEntity, UUID> {
|
||||||
}
|
}
|
||||||
if (userId != null) {
|
if (userId != null) {
|
||||||
NestedCollaboratorElasticQuery query = this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DmpElasticEntity._collaborators);
|
NestedCollaboratorElasticQuery query = this.queryFactory.query(NestedCollaboratorElasticQuery.class).nestedPath(DmpElasticEntity._collaborators);
|
||||||
query.ids(userId);
|
query.userIds(userId);
|
||||||
predicates.add(this.nestedQuery(query).build()._toQuery());
|
predicates.add(this.nestedQuery(query).build()._toQuery());
|
||||||
}
|
}
|
||||||
if (!predicates.isEmpty()) {
|
if (!predicates.isEmpty()) {
|
||||||
|
@ -241,53 +247,54 @@ public class DmpElasticQuery extends ElasticQuery<DmpElasticEntity, UUID> {
|
||||||
protected Query applyFilters() {
|
protected Query applyFilters() {
|
||||||
List<Query> predicates = new ArrayList<>();
|
List<Query> predicates = new ArrayList<>();
|
||||||
|
|
||||||
if (like != null && !like.isBlank()) {
|
if (this.like != null && !this.like.isBlank()) {
|
||||||
|
|
||||||
if (!like.startsWith("*")) like = "*" + like;
|
if (!this.like.startsWith("*")) this.like = "*" + this.like;
|
||||||
if (!like.endsWith("*")) like = like + "*";
|
if (!this.like.endsWith("*")) this.like = this.like + "*";
|
||||||
ElasticFields elasticFields = this.elasticFieldsOf();
|
ElasticFields elasticFields = this.elasticFieldsOf();
|
||||||
elasticFields.add("*", null, true);
|
elasticFields.add("*", null, true);
|
||||||
|
|
||||||
predicates.add(this.or(
|
predicates.add(this.or(
|
||||||
this.like(elasticFields, List.of(like))._toQuery(),
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
|
,
|
||||||
QueryBuilders.nested().path(DmpElasticEntity._collaborators).query(
|
QueryBuilders.nested().path(DmpElasticEntity._collaborators).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DmpElasticEntity._references).query(
|
QueryBuilders.nested().path(DmpElasticEntity._references).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DmpElasticEntity._descriptions + "." + NestedDescriptionElasticEntity._references).query(
|
QueryBuilders.nested().path(DmpElasticEntity._descriptions + "." + NestedDescriptionElasticEntity._references).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DmpElasticEntity._descriptions + "." + NestedDescriptionElasticEntity._tags).query(
|
QueryBuilders.nested().path(DmpElasticEntity._descriptions + "." + NestedDescriptionElasticEntity._tags).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery(),
|
).build()._toQuery(),
|
||||||
QueryBuilders.nested().path(DmpElasticEntity._descriptions).query(
|
QueryBuilders.nested().path(DmpElasticEntity._descriptions).query(
|
||||||
this.like(elasticFields, List.of(like))._toQuery()
|
this.like(elasticFields, List.of(this.like))._toQuery()
|
||||||
).build()._toQuery()
|
).build()._toQuery()
|
||||||
|
|
||||||
)._toQuery());
|
)._toQuery());
|
||||||
}
|
}
|
||||||
if (ids != null) {
|
if (this.ids != null) {
|
||||||
predicates.add(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._id), ids)._toQuery());
|
predicates.add(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._id), this.ids)._toQuery());
|
||||||
}
|
}
|
||||||
if (groupIds != null) {
|
if (this.groupIds != null) {
|
||||||
predicates.add(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._groupId), groupIds)._toQuery());
|
predicates.add(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._groupId), this.groupIds)._toQuery());
|
||||||
}
|
}
|
||||||
if (versions != null) {
|
if (this.versions != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._version), versions.toArray(new Integer[versions.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._version), this.versions.toArray(new Integer[this.versions.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
if (excludedIds != null) {
|
if (this.excludedIds != null) {
|
||||||
predicates.add(this.not(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._id), excludedIds)._toQuery())._toQuery());
|
predicates.add(this.not(this.containsUUID(this.elasticFieldOf(DmpElasticEntity._id), this.excludedIds)._toQuery())._toQuery());
|
||||||
}
|
}
|
||||||
if (statuses != null) {
|
if (this.statuses != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._status), statuses.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[statuses.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._status), this.statuses.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[this.statuses.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
if (versionStatuses != null) {
|
if (this.versionStatuses != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._versionStatus), versionStatuses.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[versionStatuses.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._versionStatus), this.versionStatuses.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[this.versionStatuses.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
if (accessTypes != null) {
|
if (this.accessTypes != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._accessType), accessTypes.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[accessTypes.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(DmpElasticEntity._accessType), this.accessTypes.stream().map(x-> x.getValue()).collect(Collectors.toList()).toArray(new Short[this.accessTypes.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!predicates.isEmpty()) {
|
if (!predicates.isEmpty()) {
|
||||||
|
@ -318,7 +325,7 @@ public class DmpElasticQuery extends ElasticQuery<DmpElasticEntity, UUID> {
|
||||||
@Override
|
@Override
|
||||||
protected ElasticField fieldNameOf(FieldResolver item) {
|
protected ElasticField fieldNameOf(FieldResolver item) {
|
||||||
if (item.match(DmpElasticEntity._id)) return this.elasticFieldOf(DmpElasticEntity._id);
|
if (item.match(DmpElasticEntity._id)) return this.elasticFieldOf(DmpElasticEntity._id);
|
||||||
else if (item.match(DmpElasticEntity._label)) return this.elasticFieldOf(DmpElasticEntity._label);
|
else if (item.match(DmpElasticEntity._label)) return item instanceof OrderingFieldResolver ? this.elasticFieldOf(DmpElasticEntity._label).subfield(ElasticConstants.SubFields.keyword) : this.elasticFieldOf(DmpElasticEntity._label);
|
||||||
else if (item.match(DmpElasticEntity._description)) return this.elasticFieldOf(DmpElasticEntity._description);
|
else if (item.match(DmpElasticEntity._description)) return this.elasticFieldOf(DmpElasticEntity._description);
|
||||||
else if (item.match(DmpElasticEntity._status)) return this.elasticFieldOf(DmpElasticEntity._status);
|
else if (item.match(DmpElasticEntity._status)) return this.elasticFieldOf(DmpElasticEntity._status);
|
||||||
else if (item.match(DmpElasticEntity._version)) return this.elasticFieldOf(DmpElasticEntity._version);
|
else if (item.match(DmpElasticEntity._version)) return this.elasticFieldOf(DmpElasticEntity._version);
|
||||||
|
|
|
@ -1,28 +1,25 @@
|
||||||
package org.opencdmp.elastic.query;
|
package org.opencdmp.elastic.query;
|
||||||
|
|
||||||
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
|
||||||
import org.opencdmp.commons.enums.DescriptionStatus;
|
|
||||||
import org.opencdmp.commons.enums.DmpUserRole;
|
|
||||||
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
|
||||||
import org.opencdmp.elastic.data.DmpElasticEntity;
|
|
||||||
import org.opencdmp.elastic.data.nested.NestedCollaboratorElasticEntity;
|
|
||||||
import gr.cite.tools.data.query.FieldResolver;
|
import gr.cite.tools.data.query.FieldResolver;
|
||||||
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
import gr.cite.tools.elastic.configuration.ElasticProperties;
|
||||||
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
import gr.cite.tools.elastic.mapper.FieldBasedMapper;
|
||||||
import gr.cite.tools.elastic.query.ElasticField;
|
import gr.cite.tools.elastic.query.ElasticField;
|
||||||
import gr.cite.tools.elastic.query.ElasticNestedQuery;
|
import gr.cite.tools.elastic.query.ElasticNestedQuery;
|
||||||
|
import org.opencdmp.commons.enums.DmpUserRole;
|
||||||
|
import org.opencdmp.elastic.data.nested.NestedCollaboratorElasticEntity;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCollaboratorElasticQuery, NestedCollaboratorElasticEntity, UUID> {
|
public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCollaboratorElasticQuery, NestedCollaboratorElasticEntity, UUID> {
|
||||||
private Collection<UUID> ids;
|
private Collection<UUID> ids;
|
||||||
|
private Collection<UUID> userIds;
|
||||||
|
|
||||||
|
|
||||||
private Collection<DmpUserRole> userRoles;
|
private Collection<DmpUserRole> userRoles;
|
||||||
|
@ -42,6 +39,21 @@ public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCol
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NestedCollaboratorElasticQuery userIds(UUID value) {
|
||||||
|
this.userIds = List.of(value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NestedCollaboratorElasticQuery userIds(UUID... value) {
|
||||||
|
this.userIds = Arrays.asList(value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NestedCollaboratorElasticQuery userIds(Collection<UUID> values) {
|
||||||
|
this.userIds = values;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public NestedCollaboratorElasticQuery userRoles(DmpUserRole value) {
|
public NestedCollaboratorElasticQuery userRoles(DmpUserRole value) {
|
||||||
this.userRoles = List.of(value);
|
this.userRoles = List.of(value);
|
||||||
return this;
|
return this;
|
||||||
|
@ -79,7 +91,7 @@ public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCol
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Boolean isFalseQuery() {
|
protected Boolean isFalseQuery() {
|
||||||
return this.isEmpty(this.ids) || this.isEmpty(this.userRoles);
|
return this.isEmpty(this.ids) || this.isEmpty(this.userIds) ||this.isEmpty(this.userRoles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -90,12 +102,15 @@ public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCol
|
||||||
@Override
|
@Override
|
||||||
protected Query applyFilters() {
|
protected Query applyFilters() {
|
||||||
List<Query> predicates = new ArrayList<>();
|
List<Query> predicates = new ArrayList<>();
|
||||||
if (ids != null) {
|
if (this.ids != null) {
|
||||||
predicates.add(this.containsUUID(this.elasticFieldOf(NestedCollaboratorElasticEntity._id), ids)._toQuery());
|
predicates.add(this.containsUUID(this.elasticFieldOf(NestedCollaboratorElasticEntity._id), this.ids)._toQuery());
|
||||||
|
}
|
||||||
|
if (this.userIds != null) {
|
||||||
|
predicates.add(this.containsUUID(this.elasticFieldOf(NestedCollaboratorElasticEntity._userId), this.userIds)._toQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userRoles != null) {
|
if (this.userRoles != null) {
|
||||||
predicates.add(this.contains(this.elasticFieldOf(NestedCollaboratorElasticEntity._role), userRoles.stream().map(DmpUserRole::getValue).toList().toArray(new Short[userRoles.size()]))._toQuery());
|
predicates.add(this.contains(this.elasticFieldOf(NestedCollaboratorElasticEntity._role), this.userRoles.stream().map(DmpUserRole::getValue).toList().toArray(new Short[this.userRoles.size()]))._toQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!predicates.isEmpty()) {
|
if (!predicates.isEmpty()) {
|
||||||
|
@ -109,6 +124,7 @@ public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCol
|
||||||
public NestedCollaboratorElasticEntity convert(Map<String, Object> rawData, Set<String> columns) {
|
public NestedCollaboratorElasticEntity convert(Map<String, Object> rawData, Set<String> columns) {
|
||||||
NestedCollaboratorElasticEntity mocDoc = new NestedCollaboratorElasticEntity();
|
NestedCollaboratorElasticEntity mocDoc = new NestedCollaboratorElasticEntity();
|
||||||
if (columns.contains(NestedCollaboratorElasticEntity._id)) mocDoc.setId(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._id), UUID.class));
|
if (columns.contains(NestedCollaboratorElasticEntity._id)) mocDoc.setId(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._id), UUID.class));
|
||||||
|
if (columns.contains(NestedCollaboratorElasticEntity._userId)) mocDoc.setUserId(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._userId), UUID.class));
|
||||||
if (columns.contains(NestedCollaboratorElasticEntity._name)) mocDoc.setName(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._name), String.class));
|
if (columns.contains(NestedCollaboratorElasticEntity._name)) mocDoc.setName(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._name), String.class));
|
||||||
if (columns.contains(NestedCollaboratorElasticEntity._role)) mocDoc.setRole(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._role), DmpUserRole.class));
|
if (columns.contains(NestedCollaboratorElasticEntity._role)) mocDoc.setRole(FieldBasedMapper.shallowSafeConversion(rawData.get(NestedCollaboratorElasticEntity._role), DmpUserRole.class));
|
||||||
return mocDoc;
|
return mocDoc;
|
||||||
|
@ -117,6 +133,7 @@ public class NestedCollaboratorElasticQuery extends ElasticNestedQuery<NestedCol
|
||||||
@Override
|
@Override
|
||||||
protected ElasticField fieldNameOf(FieldResolver item) {
|
protected ElasticField fieldNameOf(FieldResolver item) {
|
||||||
if (item.match(NestedCollaboratorElasticEntity._id)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._id).disableInfer(true);
|
if (item.match(NestedCollaboratorElasticEntity._id)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._id).disableInfer(true);
|
||||||
|
else if (item.match(NestedCollaboratorElasticEntity._userId)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._userId).disableInfer(true);
|
||||||
else if (item.match(NestedCollaboratorElasticEntity._name)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._name).disableInfer(true);
|
else if (item.match(NestedCollaboratorElasticEntity._name)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._name).disableInfer(true);
|
||||||
else if (item.match(NestedCollaboratorElasticEntity._role)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._role).disableInfer(true);
|
else if (item.match(NestedCollaboratorElasticEntity._role)) return this.elasticFieldOf(NestedCollaboratorElasticEntity._role).disableInfer(true);
|
||||||
else return null;
|
else return null;
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package org.opencdmp.model.builder.commonmodels;
|
package org.opencdmp.model.builder.commonmodels;
|
||||||
|
|
||||||
|
import gr.cite.tools.data.builder.BuilderFactory;
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import gr.cite.tools.exception.MyApplicationException;
|
||||||
|
import gr.cite.tools.logging.LoggerService;
|
||||||
import org.opencdmp.authorization.AuthorizationFlags;
|
import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
import org.opencdmp.commonmodels.enums.DmpUserRole;
|
import org.opencdmp.commonmodels.enums.DmpUserRole;
|
||||||
import org.opencdmp.commonmodels.models.DmpUserModel;
|
import org.opencdmp.commonmodels.models.DmpUserModel;
|
||||||
|
@ -9,10 +13,6 @@ import org.opencdmp.convention.ConventionService;
|
||||||
import org.opencdmp.data.DmpUserEntity;
|
import org.opencdmp.data.DmpUserEntity;
|
||||||
import org.opencdmp.data.UserEntity;
|
import org.opencdmp.data.UserEntity;
|
||||||
import org.opencdmp.query.UserQuery;
|
import org.opencdmp.query.UserQuery;
|
||||||
import gr.cite.tools.data.builder.BuilderFactory;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
import gr.cite.tools.exception.MyApplicationException;
|
|
||||||
import gr.cite.tools.logging.LoggerService;
|
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
|
@ -23,7 +23,7 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class DmpUserCommonModelBuilder extends BaseCommonModelBuilder<DmpUserModel, DmpUserEntity> {
|
public class DmpUserCommonModelBuilder extends BaseCommonModelBuilder<DmpUserModel, DmpUserEntity> {
|
||||||
|
|
||||||
private final BuilderFactory builderFactory;
|
private final BuilderFactory builderFactory;
|
||||||
|
@ -61,6 +61,8 @@ public class DmpUserCommonModelBuilder extends BaseCommonModelBuilder<DmpUserMod
|
||||||
switch (d.getRole()){
|
switch (d.getRole()){
|
||||||
case User -> m.setRole(DmpUserRole.User);
|
case User -> m.setRole(DmpUserRole.User);
|
||||||
case Owner -> m.setRole(DmpUserRole.Owner);
|
case Owner -> m.setRole(DmpUserRole.Owner);
|
||||||
|
case DescriptionContributor -> m.setRole(DmpUserRole.DescriptionContributor);
|
||||||
|
case Reviewer -> m.setRole(DmpUserRole.Reviewer);
|
||||||
default -> throw new MyApplicationException("unrecognized type " + d.getRole().getValue());
|
default -> throw new MyApplicationException("unrecognized type " + d.getRole().getValue());
|
||||||
}
|
}
|
||||||
if (userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId()));
|
if (userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId()));
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
package org.opencdmp.query;
|
package org.opencdmp.query;
|
||||||
|
|
||||||
import org.opencdmp.authorization.AuthorizationFlags;
|
|
||||||
import org.opencdmp.authorization.Permission;
|
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
|
||||||
import org.opencdmp.commons.scope.user.UserScope;
|
|
||||||
import org.opencdmp.data.*;
|
|
||||||
import org.opencdmp.model.Language;
|
|
||||||
import org.opencdmp.model.User;
|
|
||||||
import org.opencdmp.model.PublicUser;
|
|
||||||
import org.opencdmp.query.utils.BuildSubQueryInput;
|
|
||||||
import org.opencdmp.query.utils.QueryUtilsService;
|
|
||||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||||
import gr.cite.tools.data.query.FieldResolver;
|
import gr.cite.tools.data.query.FieldResolver;
|
||||||
import gr.cite.tools.data.query.QueryBase;
|
import gr.cite.tools.data.query.QueryBase;
|
||||||
|
@ -19,16 +9,27 @@ import jakarta.persistence.Tuple;
|
||||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||||
import jakarta.persistence.criteria.Predicate;
|
import jakarta.persistence.criteria.Predicate;
|
||||||
import jakarta.persistence.criteria.Subquery;
|
import jakarta.persistence.criteria.Subquery;
|
||||||
|
import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
|
import org.opencdmp.authorization.Permission;
|
||||||
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.commons.scope.user.UserScope;
|
||||||
|
import org.opencdmp.data.DmpUserEntity;
|
||||||
|
import org.opencdmp.data.UserContactInfoEntity;
|
||||||
|
import org.opencdmp.data.UserEntity;
|
||||||
|
import org.opencdmp.data.UserRoleEntity;
|
||||||
|
import org.opencdmp.model.PublicUser;
|
||||||
|
import org.opencdmp.model.User;
|
||||||
|
import org.opencdmp.query.utils.BuildSubQueryInput;
|
||||||
|
import org.opencdmp.query.utils.QueryUtilsService;
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public class UserQuery extends QueryBase<UserEntity> {
|
public class UserQuery extends QueryBase<UserEntity> {
|
||||||
private String like;
|
private String like;
|
||||||
private Boolean dmpAssociated;
|
private Boolean dmpAssociated;
|
||||||
|
@ -159,12 +160,12 @@ public class UserQuery extends QueryBase<UserEntity> {
|
||||||
UUID finalUserId = userId;
|
UUID finalUserId = userId;
|
||||||
predicates.add(queryContext.CriteriaBuilder.or(
|
predicates.add(queryContext.CriteriaBuilder.or(
|
||||||
userId != null ? queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id)).value(userId) : queryContext.CriteriaBuilder.or(), //Creates a false query
|
userId != null ? queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id)).value(userId) : queryContext.CriteriaBuilder.or(), //Creates a false query
|
||||||
queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id)).value(queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class)
|
queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id)).value(this.queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class)
|
||||||
.query(queryContext.Query)
|
.query(queryContext.Query)
|
||||||
.criteriaBuilder(queryContext.CriteriaBuilder)
|
.criteriaBuilder(queryContext.CriteriaBuilder)
|
||||||
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._userId))
|
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._userId))
|
||||||
.filterFunc((subQueryRoot, cb) ->
|
.filterFunc((subQueryRoot, cb) ->
|
||||||
cb.in(subQueryRoot.get(DmpUserEntity._dmpId)).value(queryUtilsService.buildDmpAuthZSubQuery(queryContext.Query, queryContext.CriteriaBuilder, finalUserId, usePublic))
|
cb.in(subQueryRoot.get(DmpUserEntity._dmpId)).value(this.queryUtilsService.buildDmpAuthZSubQuery(queryContext.Query, queryContext.CriteriaBuilder, finalUserId, usePublic))
|
||||||
)
|
)
|
||||||
)))
|
)))
|
||||||
));
|
));
|
||||||
|
@ -181,7 +182,7 @@ public class UserQuery extends QueryBase<UserEntity> {
|
||||||
protected <X, Y> Predicate applyFilters(QueryContext<X, Y> queryContext) {
|
protected <X, Y> Predicate applyFilters(QueryContext<X, Y> queryContext) {
|
||||||
List<Predicate> predicates = new ArrayList<>();
|
List<Predicate> predicates = new ArrayList<>();
|
||||||
if (this.like != null && !this.like.isEmpty()) {
|
if (this.like != null && !this.like.isEmpty()) {
|
||||||
predicates.add(queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(UserEntity._name), this.like));
|
predicates.add(this.queryUtilsService.ilike(queryContext.CriteriaBuilder, queryContext.Root.get(UserEntity._name), this.like));
|
||||||
}
|
}
|
||||||
if (this.ids != null) {
|
if (this.ids != null) {
|
||||||
CriteriaBuilder.In<UUID> inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id));
|
CriteriaBuilder.In<UUID> inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(UserEntity._id));
|
||||||
|
@ -202,7 +203,7 @@ public class UserQuery extends QueryBase<UserEntity> {
|
||||||
predicates.add(inClause);
|
predicates.add(inClause);
|
||||||
}
|
}
|
||||||
if (this.emails != null) {
|
if (this.emails != null) {
|
||||||
Subquery<UUID> userContactInfoSubquery = queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
Subquery<UUID> userContactInfoSubquery = this.queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
||||||
new BuildSubQueryInput.Builder<>(UserContactInfoQuery.class, UUID.class, queryContext)
|
new BuildSubQueryInput.Builder<>(UserContactInfoQuery.class, UUID.class, queryContext)
|
||||||
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(UserContactInfoEntity._id))
|
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(UserContactInfoEntity._id))
|
||||||
.filterFunc((subQueryRoot, cb) -> {
|
.filterFunc((subQueryRoot, cb) -> {
|
||||||
|
@ -224,7 +225,7 @@ public class UserQuery extends QueryBase<UserEntity> {
|
||||||
if (this.userScope.isSet()) userId = this.userScope.getUserIdSafe();
|
if (this.userScope.isSet()) userId = this.userScope.getUserIdSafe();
|
||||||
else throw new MyNotFoundException("Only user scoped allowed");
|
else throw new MyNotFoundException("Only user scoped allowed");
|
||||||
|
|
||||||
Subquery<UUID> dmpUserDmpQuery = queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
Subquery<UUID> dmpUserDmpQuery = this.queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
||||||
new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class, queryContext)
|
new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class, queryContext)
|
||||||
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._dmpId))
|
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._dmpId))
|
||||||
.filterFunc((subQueryRoot, cb) -> cb.and(
|
.filterFunc((subQueryRoot, cb) -> cb.and(
|
||||||
|
@ -233,7 +234,7 @@ public class UserQuery extends QueryBase<UserEntity> {
|
||||||
))
|
))
|
||||||
));
|
));
|
||||||
|
|
||||||
Subquery<UUID> dmpUserUserQuery = queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
Subquery<UUID> dmpUserUserQuery = this.queryUtilsService.buildSubQuery(new BuildSubQueryInput<>(
|
||||||
new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class, queryContext)
|
new BuildSubQueryInput.Builder<>(DmpUserEntity.class, UUID.class, queryContext)
|
||||||
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._userId))
|
.keyPathFunc((subQueryRoot) -> subQueryRoot.get(DmpUserEntity._userId))
|
||||||
.filterFunc((subQueryRoot, cb) -> cb.and(
|
.filterFunc((subQueryRoot, cb) -> cb.and(
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
package org.opencdmp.query.lookup;
|
package org.opencdmp.query.lookup;
|
||||||
|
|
||||||
|
import gr.cite.tools.data.query.Lookup;
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.opencdmp.commons.enums.DescriptionStatus;
|
import org.opencdmp.commons.enums.DescriptionStatus;
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
import org.opencdmp.elastic.query.DescriptionElasticQuery;
|
import org.opencdmp.elastic.query.DescriptionElasticQuery;
|
||||||
import org.opencdmp.elastic.query.InnerObjectDmpElasticQuery;
|
|
||||||
import org.opencdmp.query.DescriptionQuery;
|
import org.opencdmp.query.DescriptionQuery;
|
||||||
import gr.cite.tools.data.query.Lookup;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -31,7 +31,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
private List<DescriptionStatus> statuses;
|
private List<DescriptionStatus> statuses;
|
||||||
|
|
||||||
public String getLike() {
|
public String getLike() {
|
||||||
return like;
|
return this.like;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLike(String like) {
|
public void setLike(String like) {
|
||||||
|
@ -39,7 +39,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getIds() {
|
public List<UUID> getIds() {
|
||||||
return ids;
|
return this.ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIds(List<UUID> ids) {
|
public void setIds(List<UUID> ids) {
|
||||||
|
@ -47,7 +47,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getExcludedIds() {
|
public List<UUID> getExcludedIds() {
|
||||||
return excludedIds;
|
return this.excludedIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExcludedIds(List<UUID> excludedIds) {
|
public void setExcludedIds(List<UUID> excludedIds) {
|
||||||
|
@ -55,7 +55,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IsActive> getIsActive() {
|
public List<IsActive> getIsActive() {
|
||||||
return isActive;
|
return this.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIsActive(List<IsActive> isActive) {
|
public void setIsActive(List<IsActive> isActive) {
|
||||||
|
@ -63,7 +63,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DescriptionStatus> getStatuses() {
|
public List<DescriptionStatus> getStatuses() {
|
||||||
return statuses;
|
return this.statuses;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatuses(List<DescriptionStatus> statuses) {
|
public void setStatuses(List<DescriptionStatus> statuses) {
|
||||||
|
@ -71,7 +71,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpLookup getDmpSubQuery() {
|
public DmpLookup getDmpSubQuery() {
|
||||||
return dmpSubQuery;
|
return this.dmpSubQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDmpSubQuery(DmpLookup dmpSubQuery) {
|
public void setDmpSubQuery(DmpLookup dmpSubQuery) {
|
||||||
|
@ -79,7 +79,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Instant getCreatedAfter() {
|
public Instant getCreatedAfter() {
|
||||||
return createdAfter;
|
return this.createdAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCreatedAfter(Instant createdAfter) {
|
public void setCreatedAfter(Instant createdAfter) {
|
||||||
|
@ -87,7 +87,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Instant getCreatedBefore() {
|
public Instant getCreatedBefore() {
|
||||||
return createdBefore;
|
return this.createdBefore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCreatedBefore(Instant createdBefore) {
|
public void setCreatedBefore(Instant createdBefore) {
|
||||||
|
@ -95,7 +95,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Instant getFinalizedAfter() {
|
public Instant getFinalizedAfter() {
|
||||||
return finalizedAfter;
|
return this.finalizedAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFinalizedAfter(Instant finalizedAfter) {
|
public void setFinalizedAfter(Instant finalizedAfter) {
|
||||||
|
@ -103,7 +103,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Instant getFinalizedBefore() {
|
public Instant getFinalizedBefore() {
|
||||||
return finalizedBefore;
|
return this.finalizedBefore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFinalizedBefore(Instant finalizedBefore) {
|
public void setFinalizedBefore(Instant finalizedBefore) {
|
||||||
|
@ -130,8 +130,7 @@ public class DescriptionLookup extends Lookup {
|
||||||
|
|
||||||
public DescriptionElasticQuery enrichElastic(QueryFactory queryFactory) {
|
public DescriptionElasticQuery enrichElastic(QueryFactory queryFactory) {
|
||||||
DescriptionElasticQuery query = queryFactory.query(DescriptionElasticQuery.class);
|
DescriptionElasticQuery query = queryFactory.query(DescriptionElasticQuery.class);
|
||||||
InnerObjectDmpElasticQuery dmpElasticQuery = null;
|
if (this.like != null) query.like(StringUtils.strip(this.like, "%"));
|
||||||
if (this.like != null) query.like(this.like);
|
|
||||||
if (this.ids != null) query.ids(this.ids);
|
if (this.ids != null) query.ids(this.ids);
|
||||||
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
||||||
if (this.statuses != null) query.statuses(this.statuses);
|
if (this.statuses != null) query.statuses(this.statuses);
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
package org.opencdmp.query.lookup;
|
package org.opencdmp.query.lookup;
|
||||||
|
|
||||||
|
import gr.cite.tools.data.query.Lookup;
|
||||||
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
import org.opencdmp.commons.enums.DmpVersionStatus;
|
import org.opencdmp.commons.enums.DmpVersionStatus;
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
import org.opencdmp.elastic.query.DmpElasticQuery;
|
import org.opencdmp.elastic.query.DmpElasticQuery;
|
||||||
import org.opencdmp.elastic.query.InnerObjectDmpElasticQuery;
|
import org.opencdmp.elastic.query.InnerObjectDmpElasticQuery;
|
||||||
import org.opencdmp.query.DmpDescriptionTemplateQuery;
|
|
||||||
import org.opencdmp.query.DmpQuery;
|
import org.opencdmp.query.DmpQuery;
|
||||||
import gr.cite.tools.data.query.Lookup;
|
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -35,7 +35,7 @@ public class DmpLookup extends Lookup {
|
||||||
private DmpUserLookup dmpUserSubQuery;
|
private DmpUserLookup dmpUserSubQuery;
|
||||||
|
|
||||||
public String getLike() {
|
public String getLike() {
|
||||||
return like;
|
return this.like;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLike(String like) {
|
public void setLike(String like) {
|
||||||
|
@ -43,7 +43,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getIds() {
|
public List<UUID> getIds() {
|
||||||
return ids;
|
return this.ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIds(List<UUID> ids) {
|
public void setIds(List<UUID> ids) {
|
||||||
|
@ -51,7 +51,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getExcludedIds() {
|
public List<UUID> getExcludedIds() {
|
||||||
return excludedIds;
|
return this.excludedIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setExcludedIds(List<UUID> excludedIds) {
|
public void setExcludedIds(List<UUID> excludedIds) {
|
||||||
|
@ -59,7 +59,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IsActive> getIsActive() {
|
public List<IsActive> getIsActive() {
|
||||||
return isActive;
|
return this.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIsActive(List<IsActive> isActive) {
|
public void setIsActive(List<IsActive> isActive) {
|
||||||
|
@ -67,7 +67,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DmpStatus> getStatuses() {
|
public List<DmpStatus> getStatuses() {
|
||||||
return statuses;
|
return this.statuses;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatuses(List<DmpStatus> statuses) {
|
public void setStatuses(List<DmpStatus> statuses) {
|
||||||
|
@ -75,7 +75,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Integer> getVersions() {
|
public List<Integer> getVersions() {
|
||||||
return versions;
|
return this.versions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersions(List<Integer> versions) {
|
public void setVersions(List<Integer> versions) {
|
||||||
|
@ -83,7 +83,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DmpAccessType> getAccessTypes() {
|
public List<DmpAccessType> getAccessTypes() {
|
||||||
return accessTypes;
|
return this.accessTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAccessTypes(List<DmpAccessType> accessTypes) {
|
public void setAccessTypes(List<DmpAccessType> accessTypes) {
|
||||||
|
@ -91,7 +91,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DmpVersionStatus> getVersionStatuses() {
|
public List<DmpVersionStatus> getVersionStatuses() {
|
||||||
return versionStatuses;
|
return this.versionStatuses;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersionStatuses(List<DmpVersionStatus> versionStatuses) {
|
public void setVersionStatuses(List<DmpVersionStatus> versionStatuses) {
|
||||||
|
@ -99,7 +99,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpDescriptionTemplateLookup getDmpDescriptionTemplateSubQuery() {
|
public DmpDescriptionTemplateLookup getDmpDescriptionTemplateSubQuery() {
|
||||||
return dmpDescriptionTemplateSubQuery;
|
return this.dmpDescriptionTemplateSubQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDmpDescriptionTemplateSubQuery(DmpDescriptionTemplateLookup dmpDescriptionTemplateSubQuery) {
|
public void setDmpDescriptionTemplateSubQuery(DmpDescriptionTemplateLookup dmpDescriptionTemplateSubQuery) {
|
||||||
|
@ -107,7 +107,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getGroupIds() {
|
public List<UUID> getGroupIds() {
|
||||||
return groupIds;
|
return this.groupIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGroupIds(List<UUID> groupIds) {
|
public void setGroupIds(List<UUID> groupIds) {
|
||||||
|
@ -115,7 +115,7 @@ public class DmpLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public DmpUserLookup getDmpUserSubQuery() {
|
public DmpUserLookup getDmpUserSubQuery() {
|
||||||
return dmpUserSubQuery;
|
return this.dmpUserSubQuery;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDmpUserSubQuery(DmpUserLookup dmpUserSubQuery) {
|
public void setDmpUserSubQuery(DmpUserLookup dmpUserSubQuery) {
|
||||||
|
@ -143,7 +143,7 @@ public class DmpLookup extends Lookup {
|
||||||
|
|
||||||
public DmpElasticQuery enrichElastic(QueryFactory queryFactory) {
|
public DmpElasticQuery enrichElastic(QueryFactory queryFactory) {
|
||||||
DmpElasticQuery query = queryFactory.query(DmpElasticQuery.class);
|
DmpElasticQuery query = queryFactory.query(DmpElasticQuery.class);
|
||||||
if (this.like != null) query.like(this.like);
|
if (this.like != null) query.like(StringUtils.strip(this.like, "%"));
|
||||||
if (this.ids != null) query.ids(this.ids);
|
if (this.ids != null) query.ids(this.ids);
|
||||||
if (this.groupIds != null) query.groupIds(this.groupIds);
|
if (this.groupIds != null) query.groupIds(this.groupIds);
|
||||||
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
||||||
|
@ -161,7 +161,7 @@ public class DmpLookup extends Lookup {
|
||||||
|
|
||||||
public InnerObjectDmpElasticQuery enrichElasticInner(QueryFactory queryFactory) {
|
public InnerObjectDmpElasticQuery enrichElasticInner(QueryFactory queryFactory) {
|
||||||
InnerObjectDmpElasticQuery query = queryFactory.query(InnerObjectDmpElasticQuery.class);
|
InnerObjectDmpElasticQuery query = queryFactory.query(InnerObjectDmpElasticQuery.class);
|
||||||
if (this.like != null) query.like(this.like);
|
if (this.like != null) query.like(StringUtils.strip(this.like, "%"));
|
||||||
if (this.ids != null) query.ids(this.ids);
|
if (this.ids != null) query.ids(this.ids);
|
||||||
if (this.groupIds != null) query.groupIds(this.groupIds);
|
if (this.groupIds != null) query.groupIds(this.groupIds);
|
||||||
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
package org.opencdmp.query.lookup;
|
package org.opencdmp.query.lookup;
|
||||||
|
|
||||||
import org.opencdmp.commons.enums.*;
|
|
||||||
import org.opencdmp.elastic.query.DmpElasticQuery;
|
|
||||||
import org.opencdmp.elastic.query.InnerObjectDmpElasticQuery;
|
|
||||||
import org.opencdmp.elastic.query.NestedCollaboratorElasticQuery;
|
|
||||||
import org.opencdmp.query.DmpUserQuery;
|
|
||||||
import gr.cite.tools.data.query.Lookup;
|
import gr.cite.tools.data.query.Lookup;
|
||||||
import gr.cite.tools.data.query.QueryFactory;
|
import gr.cite.tools.data.query.QueryFactory;
|
||||||
|
import org.opencdmp.commons.enums.DmpUserRole;
|
||||||
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.elastic.query.NestedCollaboratorElasticQuery;
|
||||||
|
import org.opencdmp.query.DmpUserQuery;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -24,7 +23,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
private List<DmpUserRole> userRoles;
|
private List<DmpUserRole> userRoles;
|
||||||
|
|
||||||
public List<UUID> getIds() {
|
public List<UUID> getIds() {
|
||||||
return ids;
|
return this.ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIds(List<UUID> ids) {
|
public void setIds(List<UUID> ids) {
|
||||||
|
@ -32,7 +31,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getDmpIds() {
|
public List<UUID> getDmpIds() {
|
||||||
return dmpIds;
|
return this.dmpIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDmpIds(List<UUID> dmpIds) {
|
public void setDmpIds(List<UUID> dmpIds) {
|
||||||
|
@ -40,7 +39,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getUserIds() {
|
public List<UUID> getUserIds() {
|
||||||
return userIds;
|
return this.userIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserIds(List<UUID> userIds) {
|
public void setUserIds(List<UUID> userIds) {
|
||||||
|
@ -48,7 +47,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getSectionIds() {
|
public List<UUID> getSectionIds() {
|
||||||
return sectionIds;
|
return this.sectionIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSectionIds(List<UUID> sectionIds) {
|
public void setSectionIds(List<UUID> sectionIds) {
|
||||||
|
@ -56,7 +55,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IsActive> getIsActive() {
|
public List<IsActive> getIsActive() {
|
||||||
return isActive;
|
return this.isActive;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIsActive(List<IsActive> isActive) {
|
public void setIsActive(List<IsActive> isActive) {
|
||||||
|
@ -64,7 +63,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DmpUserRole> getUserRoles() {
|
public List<DmpUserRole> getUserRoles() {
|
||||||
return userRoles;
|
return this.userRoles;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUserRoles(List<DmpUserRole> userRoles) {
|
public void setUserRoles(List<DmpUserRole> userRoles) {
|
||||||
|
@ -88,6 +87,7 @@ public class DmpUserLookup extends Lookup {
|
||||||
public NestedCollaboratorElasticQuery enrichElastic(QueryFactory queryFactory) {
|
public NestedCollaboratorElasticQuery enrichElastic(QueryFactory queryFactory) {
|
||||||
NestedCollaboratorElasticQuery query = queryFactory.query(NestedCollaboratorElasticQuery.class);
|
NestedCollaboratorElasticQuery query = queryFactory.query(NestedCollaboratorElasticQuery.class);
|
||||||
if (this.ids != null) query.ids(this.ids);
|
if (this.ids != null) query.ids(this.ids);
|
||||||
|
if (this.userIds != null) query.userIds(this.userIds);
|
||||||
if (this.userRoles != null) query.userRoles(this.userRoles);
|
if (this.userRoles != null) query.userRoles(this.userRoles);
|
||||||
|
|
||||||
this.enrichCommon(query);
|
this.enrichCommon(query);
|
||||||
|
|
|
@ -4,22 +4,6 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient;
|
||||||
import co.elastic.clients.elasticsearch._types.mapping.Property;
|
import co.elastic.clients.elasticsearch._types.mapping.Property;
|
||||||
import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
|
import co.elastic.clients.elasticsearch._types.mapping.TypeMapping;
|
||||||
import co.elastic.clients.elasticsearch.indices.*;
|
import co.elastic.clients.elasticsearch.indices.*;
|
||||||
import org.opencdmp.authorization.Permission;
|
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
|
||||||
import org.opencdmp.data.DescriptionEntity;
|
|
||||||
import org.opencdmp.data.DmpEntity;
|
|
||||||
import org.opencdmp.data.TenantEntityManager;
|
|
||||||
import org.opencdmp.data.tenant.TenantScopedBaseEntity;
|
|
||||||
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
|
||||||
import org.opencdmp.elastic.data.DmpElasticEntity;
|
|
||||||
import org.opencdmp.elastic.data.nested.*;
|
|
||||||
import org.opencdmp.elastic.elasticbuilder.DescriptionElasticBuilder;
|
|
||||||
import org.opencdmp.elastic.elasticbuilder.DmpElasticBuilder;
|
|
||||||
import org.opencdmp.model.Description;
|
|
||||||
import org.opencdmp.model.Dmp;
|
|
||||||
import org.opencdmp.query.DescriptionQuery;
|
|
||||||
import org.opencdmp.query.DmpQuery;
|
|
||||||
import org.opencdmp.service.dmpblueprint.DmpBlueprintServiceImpl;
|
|
||||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||||
import gr.cite.tools.data.builder.BuilderFactory;
|
import gr.cite.tools.data.builder.BuilderFactory;
|
||||||
import gr.cite.tools.data.query.Ordering;
|
import gr.cite.tools.data.query.Ordering;
|
||||||
|
@ -30,20 +14,34 @@ import gr.cite.tools.exception.MyNotFoundException;
|
||||||
import gr.cite.tools.fieldset.BaseFieldSet;
|
import gr.cite.tools.fieldset.BaseFieldSet;
|
||||||
import gr.cite.tools.logging.LoggerService;
|
import gr.cite.tools.logging.LoggerService;
|
||||||
import gr.cite.tools.logging.MapLogEntry;
|
import gr.cite.tools.logging.MapLogEntry;
|
||||||
import org.hibernate.Session;
|
import org.opencdmp.authorization.Permission;
|
||||||
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.data.DescriptionEntity;
|
||||||
|
import org.opencdmp.data.DmpEntity;
|
||||||
|
import org.opencdmp.data.TenantEntityManager;
|
||||||
|
import org.opencdmp.elastic.data.DescriptionElasticEntity;
|
||||||
|
import org.opencdmp.elastic.data.DmpElasticEntity;
|
||||||
|
import org.opencdmp.elastic.data.nested.*;
|
||||||
|
import org.opencdmp.elastic.elasticbuilder.DescriptionElasticBuilder;
|
||||||
|
import org.opencdmp.elastic.elasticbuilder.DmpElasticBuilder;
|
||||||
|
import org.opencdmp.model.Description;
|
||||||
|
import org.opencdmp.model.Dmp;
|
||||||
|
import org.opencdmp.query.DescriptionQuery;
|
||||||
|
import org.opencdmp.query.DmpQuery;
|
||||||
|
import org.opencdmp.service.dmpblueprint.DmpBlueprintServiceImpl;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.MessageSource;
|
import org.springframework.context.MessageSource;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
import org.springframework.context.i18n.LocaleContextHolder;
|
||||||
import org.springframework.data.elasticsearch.annotations.FieldType;
|
import org.springframework.data.elasticsearch.annotations.FieldType;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.management.InvalidApplicationException;
|
import javax.management.InvalidApplicationException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ElasticServiceImpl implements ElasticService {
|
public class ElasticServiceImpl implements ElasticService {
|
||||||
|
@ -70,20 +68,20 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean enabled() {
|
public boolean enabled() {
|
||||||
return appElasticProperties.isEnabled();
|
return this.appElasticProperties.isEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean existsDmpIndex() throws IOException {
|
public boolean existsDmpIndex() throws IOException {
|
||||||
if (!this.enabled()) return false;
|
if (!this.enabled()) return false;
|
||||||
return restHighLevelClient.indices().exists(new ExistsRequest.Builder().index(this.appElasticProperties.getDmpIndexName()).includeDefaults(true).build()).value();
|
return this.restHighLevelClient.indices().exists(new ExistsRequest.Builder().index(this.appElasticProperties.getDmpIndexName()).includeDefaults(true).build()).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean existsDescriptionIndex() throws IOException {
|
public boolean existsDescriptionIndex() throws IOException {
|
||||||
if (!this.enabled()) return false;
|
if (!this.enabled()) return false;
|
||||||
return restHighLevelClient.indices().exists(new ExistsRequest.Builder().index(this.appElasticProperties.getDescriptionIndexName()).includeDefaults(true).build()).value();
|
return this.restHighLevelClient.indices().exists(new ExistsRequest.Builder().index(this.appElasticProperties.getDescriptionIndexName()).includeDefaults(true).build()).value();
|
||||||
}
|
}
|
||||||
|
|
||||||
//region ensure index
|
//region ensure index
|
||||||
|
@ -128,7 +126,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
indexSettingsAnalysis.analyzer("icu_analyzer_text", ab -> ab.custom(x-> x.filter("icu_folding", "english_stop", "english_stemmer").tokenizer("standard")));
|
indexSettingsAnalysis.analyzer("icu_analyzer_text", ab -> ab.custom(x-> x.filter("icu_folding", "english_stop", "english_stemmer").tokenizer("standard")));
|
||||||
}
|
}
|
||||||
indexSettings.analysis(indexSettingsAnalysis.build());
|
indexSettings.analysis(indexSettingsAnalysis.build());
|
||||||
restHighLevelClient.indices().create(new CreateIndexRequest.Builder().index(indexName).mappings(typeMapping.build()).settings(indexSettings.build()).build());
|
this.restHighLevelClient.indices().create(new CreateIndexRequest.Builder().index(indexName).mappings(typeMapping.build()).settings(indexSettings.build()).build());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +134,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
Map<String, Property> propertyMap = new HashMap<>();
|
Map<String, Property> propertyMap = new HashMap<>();
|
||||||
propertyMap.put(DescriptionElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(DescriptionElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
||||||
propertyMap.put(DescriptionElasticEntity._tenantId, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(DescriptionElasticEntity._tenantId, this.createElastic(FieldType.Keyword, false));
|
||||||
propertyMap.put(DescriptionElasticEntity._label, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(DescriptionElasticEntity._label, this.createElastic(FieldType.Text, true));
|
||||||
propertyMap.put(DescriptionElasticEntity._description, this.createElastic(FieldType.Text, true));
|
propertyMap.put(DescriptionElasticEntity._description, this.createElastic(FieldType.Text, true));
|
||||||
propertyMap.put(DescriptionElasticEntity._status, this.createElastic(FieldType.Short, false));
|
propertyMap.put(DescriptionElasticEntity._status, this.createElastic(FieldType.Short, false));
|
||||||
propertyMap.put(DescriptionElasticEntity._finalizedAt, this.createElastic(FieldType.Date, false));
|
propertyMap.put(DescriptionElasticEntity._finalizedAt, this.createElastic(FieldType.Date, false));
|
||||||
|
@ -174,7 +172,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
private Map<String, Property> createNestedDescriptionTemplatePropertyMap(){
|
private Map<String, Property> createNestedDescriptionTemplatePropertyMap(){
|
||||||
Map<String, Property> propertyMap = new HashMap<>();
|
Map<String, Property> propertyMap = new HashMap<>();
|
||||||
propertyMap.put(NestedDescriptionElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(NestedDescriptionElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
||||||
propertyMap.put(NestedDescriptionElasticEntity._label, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(NestedDescriptionElasticEntity._label, this.createElastic(FieldType.Text, true));
|
||||||
propertyMap.put(NestedDescriptionElasticEntity._dmpId, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(NestedDescriptionElasticEntity._dmpId, this.createElastic(FieldType.Keyword, false));
|
||||||
propertyMap.put(NestedDescriptionElasticEntity._description, this.createElastic(FieldType.Text, true));
|
propertyMap.put(NestedDescriptionElasticEntity._description, this.createElastic(FieldType.Text, true));
|
||||||
propertyMap.put(NestedDescriptionElasticEntity._status, this.createElastic(FieldType.Short, false));
|
propertyMap.put(NestedDescriptionElasticEntity._status, this.createElastic(FieldType.Short, false));
|
||||||
|
@ -235,6 +233,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
private Map<String, Property> createNestedCollaboratorTemplatePropertyMap(){
|
private Map<String, Property> createNestedCollaboratorTemplatePropertyMap(){
|
||||||
Map<String, Property> propertyMap = new HashMap<>();
|
Map<String, Property> propertyMap = new HashMap<>();
|
||||||
propertyMap.put(NestedCollaboratorElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
propertyMap.put(NestedCollaboratorElasticEntity._id, this.createElastic(FieldType.Keyword, false));
|
||||||
|
propertyMap.put(NestedCollaboratorElasticEntity._userId, this.createElastic(FieldType.Keyword, false));
|
||||||
propertyMap.put(NestedCollaboratorElasticEntity._name, this.createElastic(FieldType.Text, true));
|
propertyMap.put(NestedCollaboratorElasticEntity._name, this.createElastic(FieldType.Text, true));
|
||||||
propertyMap.put(NestedCollaboratorElasticEntity._role, this.createElastic(FieldType.Short, false));
|
propertyMap.put(NestedCollaboratorElasticEntity._role, this.createElastic(FieldType.Short, false));
|
||||||
|
|
||||||
|
@ -308,7 +307,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
DescriptionElasticEntity descriptionElasticEntity = this.builderFactory.builder(DescriptionElasticBuilder.class).build(description);
|
DescriptionElasticEntity descriptionElasticEntity = this.builderFactory.builder(DescriptionElasticBuilder.class).build(description);
|
||||||
this.elasticsearchTemplate.save(descriptionElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
this.elasticsearchTemplate.save(descriptionElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
||||||
DmpEntity dmpEntity = this.entityManager.find(DmpEntity.class, description.getDmpId());
|
DmpEntity dmpEntity = this.entityManager.find(DmpEntity.class, description.getDmpId());
|
||||||
if (dmpEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{description.getDmpId(), Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
if (dmpEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{description.getDmpId(), Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
if (dmpEntity.getIsActive().equals(IsActive.Active)) {
|
if (dmpEntity.getIsActive().equals(IsActive.Active)) {
|
||||||
DmpElasticEntity dmpElasticEntity = this.builderFactory.builder(DmpElasticBuilder.class).build(dmpEntity);
|
DmpElasticEntity dmpElasticEntity = this.builderFactory.builder(DmpElasticBuilder.class).build(dmpEntity);
|
||||||
this.elasticsearchTemplate.save(dmpElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
this.elasticsearchTemplate.save(dmpElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
||||||
|
@ -325,7 +324,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
this.elasticsearchTemplate.delete(descriptionElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
this.elasticsearchTemplate.delete(descriptionElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
||||||
|
|
||||||
DmpEntity dmpEntity = this.entityManager.find(DmpEntity.class, description.getDmpId());
|
DmpEntity dmpEntity = this.entityManager.find(DmpEntity.class, description.getDmpId());
|
||||||
if (dmpEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{description.getDmpId(), Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
if (dmpEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{description.getDmpId(), Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
if (dmpEntity.getIsActive().equals(IsActive.Active)) {
|
if (dmpEntity.getIsActive().equals(IsActive.Active)) {
|
||||||
DmpElasticEntity dmpElasticEntity = this.builderFactory.builder(DmpElasticBuilder.class).build(dmpEntity);
|
DmpElasticEntity dmpElasticEntity = this.builderFactory.builder(DmpElasticBuilder.class).build(dmpEntity);
|
||||||
this.elasticsearchTemplate.save(dmpElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
this.elasticsearchTemplate.save(dmpElasticEntity, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
||||||
|
@ -381,7 +380,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
items = query.collect();
|
items = query.collect();
|
||||||
if (items != null && !items.isEmpty()) {
|
if (items != null && !items.isEmpty()) {
|
||||||
List<DmpElasticEntity> elasticEntities = this.builderFactory.builder(DmpElasticBuilder.class).build(items);
|
List<DmpElasticEntity> elasticEntities = this.builderFactory.builder(DmpElasticBuilder.class).build(items);
|
||||||
elasticsearchTemplate.save(elasticEntities, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
this.elasticsearchTemplate.save(elasticEntities, IndexCoordinates.of(this.appElasticProperties.getDmpIndexName()));
|
||||||
page++;
|
page++;
|
||||||
}
|
}
|
||||||
} while (items != null && !items.isEmpty());
|
} while (items != null && !items.isEmpty());
|
||||||
|
@ -413,7 +412,7 @@ public class ElasticServiceImpl implements ElasticService {
|
||||||
items = query.collect();
|
items = query.collect();
|
||||||
if (items != null && !items.isEmpty()) {
|
if (items != null && !items.isEmpty()) {
|
||||||
List<DescriptionElasticEntity> elasticEntities = this.builderFactory.builder(DescriptionElasticBuilder.class).build(items);
|
List<DescriptionElasticEntity> elasticEntities = this.builderFactory.builder(DescriptionElasticBuilder.class).build(items);
|
||||||
elasticsearchTemplate.save(elasticEntities, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
this.elasticsearchTemplate.save(elasticEntities, IndexCoordinates.of(this.appElasticProperties.getDescriptionIndexName()));
|
||||||
page++;
|
page++;
|
||||||
}
|
}
|
||||||
} while (items != null && !items.isEmpty());
|
} while (items != null && !items.isEmpty());
|
||||||
|
|
|
@ -1,30 +1,5 @@
|
||||||
package org.opencdmp.controllers;
|
package org.opencdmp.controllers;
|
||||||
|
|
||||||
import org.opencdmp.audit.AuditableAction;
|
|
||||||
import org.opencdmp.authorization.AuthorizationFlags;
|
|
||||||
import org.opencdmp.commons.enums.DmpAccessType;
|
|
||||||
import org.opencdmp.commons.enums.DmpStatus;
|
|
||||||
import org.opencdmp.commons.enums.IsActive;
|
|
||||||
import org.opencdmp.convention.ConventionService;
|
|
||||||
import org.opencdmp.data.StorageFileEntity;
|
|
||||||
import org.opencdmp.model.*;
|
|
||||||
import org.opencdmp.model.builder.PublicDescriptionBuilder;
|
|
||||||
import org.opencdmp.model.persist.DescriptionFieldFilePersist;
|
|
||||||
import org.opencdmp.model.persist.DescriptionSectionPermissionResolver;
|
|
||||||
import org.opencdmp.service.storage.StorageFileService;
|
|
||||||
import gr.cite.tools.validation.ValidationFilterAnnotation;
|
|
||||||
import org.opencdmp.model.builder.DescriptionBuilder;
|
|
||||||
import org.opencdmp.model.censorship.DescriptionCensor;
|
|
||||||
import org.opencdmp.model.censorship.PublicDescriptionCensor;
|
|
||||||
import org.opencdmp.model.persist.DescriptionPersist;
|
|
||||||
import org.opencdmp.model.persist.DescriptionStatusPersist;
|
|
||||||
import org.opencdmp.model.persist.UpdateDescriptionTemplatePersist;
|
|
||||||
import org.opencdmp.model.result.QueryResult;
|
|
||||||
import org.opencdmp.query.DescriptionQuery;
|
|
||||||
import org.opencdmp.query.DmpQuery;
|
|
||||||
import org.opencdmp.query.lookup.DescriptionLookup;
|
|
||||||
import org.opencdmp.service.description.DescriptionService;
|
|
||||||
import org.opencdmp.service.elastic.ElasticQueryHelperService;
|
|
||||||
import gr.cite.tools.auditing.AuditService;
|
import gr.cite.tools.auditing.AuditService;
|
||||||
import gr.cite.tools.data.builder.BuilderFactory;
|
import gr.cite.tools.data.builder.BuilderFactory;
|
||||||
import gr.cite.tools.data.censor.CensorFactory;
|
import gr.cite.tools.data.censor.CensorFactory;
|
||||||
|
@ -35,7 +10,28 @@ import gr.cite.tools.exception.MyNotFoundException;
|
||||||
import gr.cite.tools.fieldset.FieldSet;
|
import gr.cite.tools.fieldset.FieldSet;
|
||||||
import gr.cite.tools.logging.LoggerService;
|
import gr.cite.tools.logging.LoggerService;
|
||||||
import gr.cite.tools.logging.MapLogEntry;
|
import gr.cite.tools.logging.MapLogEntry;
|
||||||
|
import gr.cite.tools.validation.ValidationFilterAnnotation;
|
||||||
import jakarta.xml.bind.JAXBException;
|
import jakarta.xml.bind.JAXBException;
|
||||||
|
import org.opencdmp.audit.AuditableAction;
|
||||||
|
import org.opencdmp.authorization.AuthorizationFlags;
|
||||||
|
import org.opencdmp.commons.enums.DmpAccessType;
|
||||||
|
import org.opencdmp.commons.enums.DmpStatus;
|
||||||
|
import org.opencdmp.commons.enums.IsActive;
|
||||||
|
import org.opencdmp.convention.ConventionService;
|
||||||
|
import org.opencdmp.data.StorageFileEntity;
|
||||||
|
import org.opencdmp.model.*;
|
||||||
|
import org.opencdmp.model.builder.DescriptionBuilder;
|
||||||
|
import org.opencdmp.model.builder.PublicDescriptionBuilder;
|
||||||
|
import org.opencdmp.model.censorship.DescriptionCensor;
|
||||||
|
import org.opencdmp.model.censorship.PublicDescriptionCensor;
|
||||||
|
import org.opencdmp.model.persist.*;
|
||||||
|
import org.opencdmp.model.result.QueryResult;
|
||||||
|
import org.opencdmp.query.DescriptionQuery;
|
||||||
|
import org.opencdmp.query.DmpQuery;
|
||||||
|
import org.opencdmp.query.lookup.DescriptionLookup;
|
||||||
|
import org.opencdmp.service.description.DescriptionService;
|
||||||
|
import org.opencdmp.service.elastic.ElasticQueryHelperService;
|
||||||
|
import org.opencdmp.service.storage.StorageFileService;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.context.MessageSource;
|
import org.springframework.context.MessageSource;
|
||||||
import org.springframework.context.i18n.LocaleContextHolder;
|
import org.springframework.context.i18n.LocaleContextHolder;
|
||||||
|
@ -153,7 +149,7 @@ public class DescriptionController {
|
||||||
|
|
||||||
this.censorFactory.censor(DescriptionCensor.class).censor(fieldSet, null);
|
this.censorFactory.censor(DescriptionCensor.class).censor(fieldSet, null);
|
||||||
|
|
||||||
DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(id);
|
DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).isActive(IsActive.Active).ids(id);
|
||||||
Description model = this.builderFactory.builder(DescriptionBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(fieldSet, query.firstAs(fieldSet));
|
Description model = this.builderFactory.builder(DescriptionBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(fieldSet, query.firstAs(fieldSet));
|
||||||
if (model == null)
|
if (model == null)
|
||||||
throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{id, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{id, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
|
@ -292,7 +288,7 @@ public class DescriptionController {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(method = RequestMethod.GET, value = {"/xml/export/{id}"}, produces = "application/xml")
|
@RequestMapping(method = RequestMethod.GET, value = "/xml/export/{id}", produces = "application/xml")
|
||||||
public @ResponseBody ResponseEntity<byte[]> getXml(@PathVariable UUID id) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException {
|
public @ResponseBody ResponseEntity<byte[]> getXml(@PathVariable UUID id) throws JAXBException, ParserConfigurationException, IOException, InstantiationException, IllegalAccessException, SAXException, InvalidApplicationException {
|
||||||
logger.debug(new MapLogEntry("export" + DmpBlueprint.class.getSimpleName()).And("id", id));
|
logger.debug(new MapLogEntry("export" + DmpBlueprint.class.getSimpleName()).And("id", id));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue