argos/backend/core/src/main/java/org/opencdmp/query/lookup/DmpLookup.java

183 lines
6.1 KiB
Java

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.DmpStatus;
import org.opencdmp.commons.enums.DmpVersionStatus;
import org.opencdmp.commons.enums.IsActive;
import org.opencdmp.elastic.query.DmpElasticQuery;
import org.opencdmp.elastic.query.InnerObjectDmpElasticQuery;
import org.opencdmp.query.DmpQuery;
import java.util.List;
import java.util.UUID;
public class DmpLookup extends Lookup {
private String like;
private List<UUID> ids;
private List<UUID> excludedIds;
private List<UUID> groupIds;
private List<IsActive> isActive;
private List<DmpVersionStatus> versionStatuses;
private List<DmpStatus> statuses;
private List<DmpAccessType> accessTypes;
private List<Integer> versions;
private DmpDescriptionTemplateLookup dmpDescriptionTemplateSubQuery;
private DmpUserLookup dmpUserSubQuery;
public String getLike() {
return this.like;
}
public void setLike(String like) {
this.like = like;
}
public List<UUID> getIds() {
return this.ids;
}
public void setIds(List<UUID> ids) {
this.ids = ids;
}
public List<UUID> getExcludedIds() {
return this.excludedIds;
}
public void setExcludedIds(List<UUID> excludedIds) {
this.excludedIds = excludedIds;
}
public List<IsActive> getIsActive() {
return this.isActive;
}
public void setIsActive(List<IsActive> isActive) {
this.isActive = isActive;
}
public List<DmpStatus> getStatuses() {
return this.statuses;
}
public void setStatuses(List<DmpStatus> statuses) {
this.statuses = statuses;
}
public List<Integer> getVersions() {
return this.versions;
}
public void setVersions(List<Integer> versions) {
this.versions = versions;
}
public List<DmpAccessType> getAccessTypes() {
return this.accessTypes;
}
public void setAccessTypes(List<DmpAccessType> accessTypes) {
this.accessTypes = accessTypes;
}
public List<DmpVersionStatus> getVersionStatuses() {
return this.versionStatuses;
}
public void setVersionStatuses(List<DmpVersionStatus> versionStatuses) {
this.versionStatuses = versionStatuses;
}
public DmpDescriptionTemplateLookup getDmpDescriptionTemplateSubQuery() {
return this.dmpDescriptionTemplateSubQuery;
}
public void setDmpDescriptionTemplateSubQuery(DmpDescriptionTemplateLookup dmpDescriptionTemplateSubQuery) {
this.dmpDescriptionTemplateSubQuery = dmpDescriptionTemplateSubQuery;
}
public List<UUID> getGroupIds() {
return this.groupIds;
}
public void setGroupIds(List<UUID> groupIds) {
this.groupIds = groupIds;
}
public DmpUserLookup getDmpUserSubQuery() {
return this.dmpUserSubQuery;
}
public void setDmpUserSubQuery(DmpUserLookup dmpUserSubQuery) {
this.dmpUserSubQuery = dmpUserSubQuery;
}
public DmpQuery enrich(QueryFactory queryFactory) {
DmpQuery query = queryFactory.query(DmpQuery.class);
if (this.like != null) query.like(this.like);
if (this.ids != null) query.ids(this.ids);
if (this.groupIds != null) query.groupIds(this.groupIds);
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
if (this.accessTypes != null) query.accessTypes(this.accessTypes);
if (this.isActive != null) query.isActive(this.isActive);
if (this.statuses != null) query.statuses(this.statuses);
if (this.versions != null) query.versions(this.versions);
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
if (this.dmpDescriptionTemplateSubQuery != null) query.dmpDescriptionTemplateSubQuery(this.dmpDescriptionTemplateSubQuery.enrich(queryFactory));
if (this.dmpUserSubQuery != null) query.dmpUserSubQuery(this.dmpUserSubQuery.enrich(queryFactory));
this.enrichCommon(query);
return query;
}
public DmpElasticQuery enrichElastic(QueryFactory queryFactory) {
DmpElasticQuery query = queryFactory.query(DmpElasticQuery.class);
if (this.like != null) query.like(StringUtils.strip(this.like, "%"));
if (this.ids != null) query.ids(this.ids);
if (this.groupIds != null) query.groupIds(this.groupIds);
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
if (this.accessTypes != null) query.accessTypes(this.accessTypes);
if (this.statuses != null) query.statuses(this.statuses);
if (this.versions != null) query.versions(this.versions);
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
if (this.dmpDescriptionTemplateSubQuery != null) throw new UnsupportedOperationException("");
if (this.dmpUserSubQuery != null) throw new UnsupportedOperationException("");
this.enrichCommon(query);
return query;
}
public InnerObjectDmpElasticQuery enrichElasticInner(QueryFactory queryFactory) {
InnerObjectDmpElasticQuery query = queryFactory.query(InnerObjectDmpElasticQuery.class);
if (this.like != null) query.like(StringUtils.strip(this.like, "%"));
if (this.ids != null) query.ids(this.ids);
if (this.groupIds != null) query.groupIds(this.groupIds);
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
if (this.accessTypes != null) query.accessTypes(this.accessTypes);
if (this.statuses != null) query.statuses(this.statuses);
if (this.versions != null) query.versions(this.versions);
if (this.versionStatuses != null) query.versionStatuses(this.versionStatuses);
if (this.dmpDescriptionTemplateSubQuery != null) throw new UnsupportedOperationException("");
if (this.dmpUserSubQuery != null) throw new UnsupportedOperationException("");
return query;
}
public boolean useElastic() {
return this.like != null && !this.like.isBlank();
}
}