reference-type-refactor
This commit is contained in:
parent
e5946f90cd
commit
4f1b05ab20
|
@ -23,6 +23,7 @@ public final class Permission {
|
|||
public static String PublicBrowseUser = "PublicBrowseUser";
|
||||
public static String PublicBrowseDashboardStatistics = "PublicBrowseDashboardStatistics";
|
||||
public static String PublicSendContactSupport = "PublicSendContactSupport";
|
||||
public static String PublicBrowseReferenceType = "PublicBrowseReferenceType";
|
||||
//Elastic
|
||||
public static String ManageElastic = "ManageElastic";
|
||||
|
||||
|
|
|
@ -7,11 +7,13 @@ import java.util.Map;
|
|||
|
||||
public enum DmpBlueprintFieldCategory implements DatabaseEnum<Short> {
|
||||
System((short) 0),
|
||||
Extra((short) 1);
|
||||
Extra((short) 1),
|
||||
Reference((short) 1);
|
||||
|
||||
public static class Names {
|
||||
public static final String System = "system";
|
||||
public static final String Extra = "extra";
|
||||
public static final String Reference = "reference";
|
||||
}
|
||||
|
||||
private final Short value;
|
||||
|
|
|
@ -7,17 +7,11 @@ import java.util.Map;
|
|||
|
||||
public enum DmpBlueprintSystemFieldType implements DatabaseEnum<Short> {
|
||||
|
||||
Text((short)0), //TODO: Rename to "Title"
|
||||
HtmlText((short)1), //TODO: Rename to "Description"
|
||||
Researchers((short)2), //TODO: replace by reference type
|
||||
Organizations((short)3), //TODO: replace by reference type
|
||||
Language((short)4),
|
||||
Contact((short)5),
|
||||
Funder((short)6), //TODO: replace by reference type
|
||||
Grant((short)7), //TODO: replace by reference type
|
||||
Project((short)8), //TODO: replace by reference type
|
||||
License((short)9), //TODO: replace by reference type
|
||||
AccessRights((short)10);
|
||||
Title((short)0),
|
||||
Description((short)1),
|
||||
Language((short)2),
|
||||
Contact((short)3),
|
||||
AccessRights((short)4);
|
||||
private final Short value;
|
||||
|
||||
DmpBlueprintSystemFieldType(Short value) {
|
||||
|
|
|
@ -6,42 +6,29 @@ import eu.eudat.data.converters.enums.DatabaseEnum;
|
|||
import java.util.Map;
|
||||
|
||||
public enum FieldType implements DatabaseEnum<String> {
|
||||
EXTERNAL_SELECT(Names.ExternalSelect), //TODO: remove
|
||||
SELECT(Names.Select),
|
||||
BOOLEAN_DECISION(Names.BooleanDecision),
|
||||
RADIO_BOX(Names.RadioBox),
|
||||
INTERNAL_DMP_ENTRIES_RESEARCHERS(Names.InternalDmpResearchers), //TODO: remove
|
||||
INTERNAL_DMP_ENTRIES_DMPS(Names.InternalDmpDmps), //TODO: rename InternalEntitiesDmps
|
||||
INTERNAL_DMP_ENTRIES_DATASETS(Names.InternalDmpDescriptions),
|
||||
INTERNAL_DMP_ENTRIES_DATASETS(Names.InternalDmpDescriptions),//TODO: rename InternalEntitiesDescriptions
|
||||
CHECK_BOX(Names.CheckBox),
|
||||
FREE_TEXT(Names.FreeText),
|
||||
TEXT_AREA(Names.TextArea),
|
||||
RICH_TEXT_AREA(Names.RichTextarea),
|
||||
UPLOAD(Names.Upload),
|
||||
DATE_PICKER(Names.DatePicker),
|
||||
EXTERNAL_DATASETS(Names.ExternalDatasets), //TODO: replace with reference type
|
||||
DATA_REPOSITORIES(Names.DataRepositories), //TODO: replace with reference type
|
||||
JOURNAL_REPOSITORIES(Names.JournalRepositories), //TODO: replace with reference type
|
||||
PUB_REPOSITORIES(Names.PubRepositories), //TODO: replace with reference type
|
||||
LICENSES(Names.Licenses), //TODO: replace with reference type
|
||||
TAXONOMIES(Names.Taxonomies), //TODO: replace with reference type
|
||||
PUBLICATIONS(Names.Publications), //TODO: replace with reference type
|
||||
REGISTRIES(Names.Registries), //TODO: replace with reference type
|
||||
SERVICES(Names.Services), //TODO: replace with reference type
|
||||
TAGS(Names.Tags),
|
||||
RESEARCHERS(Names.Researchers), //TODO: replace with reference type
|
||||
ORGANIZATIONS(Names.Organizations), //TODO: replace with reference type
|
||||
EXTERNAL_DATASETS(Names.ExternalDatasets),
|
||||
REFERENCE_TYPES(Names.ReferenceTypes),
|
||||
DATASET_IDENTIFIER(Names.DatasetIdentifier),
|
||||
CURRENCY(Names.Currency),
|
||||
VALIDATION(Names.Validation);
|
||||
private final String value;
|
||||
|
||||
public static class Names {
|
||||
public static final String ExternalSelect = "externalSelect";
|
||||
public static final String Select = "select";
|
||||
public static final String BooleanDecision = "booleanDecision";
|
||||
public static final String RadioBox = "radiobox";
|
||||
public static final String InternalDmpResearchers = "internalDmpResearchers";
|
||||
public static final String InternalDmpDmps = "internalDmpDmps";
|
||||
public static final String InternalDmpDescriptions = "internalDmpDatasets";
|
||||
public static final String CheckBox = "checkBox";
|
||||
|
@ -50,21 +37,12 @@ public enum FieldType implements DatabaseEnum<String> {
|
|||
public static final String RichTextarea = "richTextarea";
|
||||
public static final String Upload = "upload";
|
||||
public static final String DatePicker = "datePicker";
|
||||
public static final String ExternalDatasets = "externalDatasets";
|
||||
public static final String DataRepositories = "dataRepositories";
|
||||
public static final String JournalRepositories = "journalRepositories";
|
||||
public static final String PubRepositories = "pubRepositories";
|
||||
public static final String Licenses = "licenses";
|
||||
public static final String Taxonomies = "taxonomies";
|
||||
public static final String Publications = "publications";
|
||||
public static final String Registries = "registries";
|
||||
public static final String Services = "services";
|
||||
public static final String Tags = "tags";
|
||||
public static final String Researchers = "researchers";
|
||||
public static final String Organizations = "organizations";
|
||||
public static final String DatasetIdentifier = "datasetIdentifier";
|
||||
public static final String Currency = "currency";
|
||||
public static final String Validation = "validation";
|
||||
public static final String ReferenceTypes = "referenceTypes";
|
||||
public static final String ExternalDatasets = "externalDatasets";
|
||||
}
|
||||
|
||||
FieldType(String value) {
|
||||
|
@ -82,15 +60,9 @@ public enum FieldType implements DatabaseEnum<String> {
|
|||
return map.get(i);
|
||||
}
|
||||
|
||||
public static boolean isNotImplemented(FieldType fieldType){
|
||||
return fieldType.equals(FieldType.EXTERNAL_SELECT);
|
||||
}
|
||||
|
||||
public static boolean isReferenceType(FieldType fieldType){
|
||||
return fieldType.equals(FieldType.ORGANIZATIONS) || fieldType.equals(FieldType.RESEARCHERS) || fieldType.equals(FieldType.SERVICES) ||
|
||||
fieldType.equals(FieldType.REGISTRIES) || fieldType.equals(FieldType.PUBLICATIONS) || fieldType.equals(FieldType.TAXONOMIES)||
|
||||
fieldType.equals(FieldType.LICENSES) || fieldType.equals(FieldType.DATA_REPOSITORIES) || fieldType.equals(FieldType.PUB_REPOSITORIES)||
|
||||
fieldType.equals(FieldType.JOURNAL_REPOSITORIES) || fieldType.equals(FieldType.EXTERNAL_DATASETS);
|
||||
return fieldType.equals(FieldType.REFERENCE_TYPES);
|
||||
}
|
||||
|
||||
public static boolean isTextType(FieldType fieldType){
|
||||
|
@ -100,7 +72,7 @@ public enum FieldType implements DatabaseEnum<String> {
|
|||
}
|
||||
|
||||
public static boolean isTextListType(FieldType fieldType){
|
||||
return fieldType.equals(FieldType.SELECT) || fieldType.equals(FieldType.TAGS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) ||
|
||||
return fieldType.equals(FieldType.SELECT) || fieldType.equals(FieldType.TAGS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) ||
|
||||
fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DATASETS);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
package eu.eudat.commons.enums;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonValue;
|
||||
import eu.eudat.data.converters.enums.DatabaseEnum;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public enum ReferenceType implements DatabaseEnum<Short> {
|
||||
Taxonomies((short) 0),
|
||||
Licenses((short) 1),
|
||||
Publications((short) 2),
|
||||
Journals((short) 3),
|
||||
PubRepositories((short) 4),
|
||||
DataRepositories((short) 5),
|
||||
Registries((short) 6),
|
||||
Services((short) 7),
|
||||
Project((short) 8),
|
||||
Funder((short) 9),
|
||||
Datasets((short) 10),
|
||||
Organizations((short) 11),
|
||||
Grants((short) 12),
|
||||
Researcher((short) 13);
|
||||
private final Short value;
|
||||
|
||||
ReferenceType(Short value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@JsonValue
|
||||
public Short getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
private static final Map<Short, ReferenceType> map = EnumUtils.getEnumValueMap(ReferenceType.class);
|
||||
|
||||
public static ReferenceType of(Short i) {
|
||||
return map.get(i);
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@ public class FieldEntity {
|
|||
@XmlElement(name = UploadDataEntity.XmlElementName, type = UploadDataEntity.class),
|
||||
@XmlElement(name = RadioBoxDataEntity.XmlElementName, type = RadioBoxDataEntity.class),
|
||||
@XmlElement(name = SelectDataEntity.XmlElementName, type = SelectDataEntity.class),
|
||||
@XmlElement(name = ExternalSelectDataEntity.XmlElementName, type = ExternalSelectDataEntity.class),
|
||||
@XmlElement(name = ReferenceTypeDataEntity.XmlElementName, type = ReferenceTypeDataEntity.class)
|
||||
})
|
||||
private BaseFieldDataEntity data;
|
||||
@XmlElementWrapper(name = "validations")
|
||||
|
|
|
@ -1,171 +0,0 @@
|
|||
package eu.eudat.commons.types.descriptiontemplate.fielddata;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ExternalSelectDataEntity extends LabelAndMultiplicityDataEntity {
|
||||
public static final String XmlElementName = "externalSelectData";
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectAuthDataEntity {
|
||||
@XmlAttribute(name="url")
|
||||
private String url;
|
||||
@XmlAttribute(name="method")
|
||||
private String method;
|
||||
@XmlAttribute(name="body")
|
||||
private String body;
|
||||
@XmlAttribute(name="path")
|
||||
private String path;
|
||||
@XmlAttribute(name="type")
|
||||
private String type;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
public String getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
public void setBody(String body) {
|
||||
this.body = body;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectSourceBindingEntity {
|
||||
@XmlAttribute(name="label")
|
||||
private String label;
|
||||
@XmlAttribute(name="value")
|
||||
private String value;
|
||||
@XmlAttribute(name="source")
|
||||
private String source;
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectSourceEntity {
|
||||
@XmlAttribute(name="url")
|
||||
private String url;
|
||||
@XmlAttribute(name="method")
|
||||
private String method;
|
||||
@XmlAttribute(name="optionsRoot")
|
||||
private String optionsRoot;
|
||||
@XmlElement(name="sourceBinding")
|
||||
private ExternalSelectSourceBindingEntity sourceBinding;
|
||||
@XmlAttribute(name="hasAuth")
|
||||
private Boolean hasAuth;
|
||||
@XmlElement(name="auth")
|
||||
private ExternalSelectAuthDataEntity auth;
|
||||
|
||||
public String getOptionsRoot() {
|
||||
return optionsRoot;
|
||||
}
|
||||
public void setOptionsRoot(String optionsRoot) {
|
||||
this.optionsRoot = optionsRoot;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public Boolean getHasAuth() {
|
||||
return hasAuth;
|
||||
}
|
||||
|
||||
public void setHasAuth(Boolean hasAuth) {
|
||||
this.hasAuth = hasAuth;
|
||||
}
|
||||
|
||||
public ExternalSelectAuthDataEntity getAuth() {
|
||||
return auth;
|
||||
}
|
||||
|
||||
public void setAuth(ExternalSelectAuthDataEntity auth) {
|
||||
this.auth = auth;
|
||||
}
|
||||
|
||||
public ExternalSelectSourceBindingEntity getSourceBinding() {
|
||||
return sourceBinding;
|
||||
}
|
||||
public void setSourceBinding(ExternalSelectSourceBindingEntity sourceBinding) {
|
||||
this.sourceBinding = sourceBinding;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
}
|
||||
|
||||
@XmlElementWrapper(name = "sources")
|
||||
@XmlElement(name = "source")
|
||||
private List<ExternalSelectSourceEntity> sources;
|
||||
|
||||
public List<ExternalSelectSourceEntity> getSources() {
|
||||
return sources;
|
||||
}
|
||||
|
||||
public void setSources(List<ExternalSelectSourceEntity> externalSelectSourceEntityList) {
|
||||
this.sources = externalSelectSourceEntityList;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package eu.eudat.commons.types.descriptiontemplate.fielddata;
|
||||
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ReferenceTypeDataEntity extends BaseFieldDataEntity {
|
||||
public static final String XmlElementName = "referenceTypeData";
|
||||
|
||||
@XmlAttribute(name = "multipleSelect")
|
||||
private Boolean multipleSelect;
|
||||
|
||||
@XmlAttribute(name = "referenceTypeId")
|
||||
private UUID referenceTypeId;
|
||||
public Boolean getMultipleSelect() {
|
||||
return multipleSelect;
|
||||
}
|
||||
|
||||
public void setMultipleSelect(Boolean multipleSelect) {
|
||||
this.multipleSelect = multipleSelect;
|
||||
}
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
}
|
|
@ -40,7 +40,7 @@ public class FieldImportExport {
|
|||
@XmlElement(name = UploadDataImportExport.XmlElementName, type = UploadDataImportExport.class),
|
||||
@XmlElement(name = RadioBoxDataImportExport.XmlElementName, type = RadioBoxDataImportExport.class),
|
||||
@XmlElement(name = SelectDataImportExport.XmlElementName, type = SelectDataImportExport.class),
|
||||
@XmlElement(name = ExternalSelectImportExport.XmlElementName, type = ExternalSelectImportExport.class),
|
||||
@XmlElement(name = ReferenceTypeDataImportExport.XmlElementName, type = ReferenceTypeDataImportExport.class),
|
||||
})
|
||||
private BaseFieldDataImportExport data;
|
||||
|
||||
|
|
|
@ -1,174 +0,0 @@
|
|||
package eu.eudat.commons.types.descriptiontemplate.importexport.fielddata;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ExternalSelectImportExport extends LabelAndMultiplicityDataImportExport {
|
||||
public static final String XmlElementName = "externalSelectData";
|
||||
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectAuthImportExport {
|
||||
@XmlAttribute(name="url")
|
||||
private String url;
|
||||
@XmlAttribute(name="method")
|
||||
private String method;
|
||||
@XmlAttribute(name="body")
|
||||
private String body;
|
||||
@XmlAttribute(name="path")
|
||||
private String path;
|
||||
@XmlAttribute(name="type")
|
||||
private String type;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
public String getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
public void setBody(String body) {
|
||||
this.body = body;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectSourceBindingImportExport {
|
||||
@XmlAttribute(name="label")
|
||||
private String label;
|
||||
@XmlAttribute(name="value")
|
||||
private String value;
|
||||
@XmlAttribute(name="source")
|
||||
private String source;
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ExternalSelectSourceImportExport {
|
||||
@XmlAttribute(name="url")
|
||||
private String url;
|
||||
@XmlAttribute(name="method")
|
||||
private String method;
|
||||
@XmlAttribute(name="optionsRoot")
|
||||
private String optionsRoot;
|
||||
@XmlElement(name="sourceBinding")
|
||||
private ExternalSelectSourceBindingImportExport sourceBinding;
|
||||
@XmlAttribute(name="hasAuth")
|
||||
private Boolean hasAuth;
|
||||
@XmlElement(name="auth")
|
||||
private ExternalSelectAuthImportExport auth;
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
public String getOptionsRoot() {
|
||||
return optionsRoot;
|
||||
}
|
||||
|
||||
public void setOptionsRoot(String optionsRoot) {
|
||||
this.optionsRoot = optionsRoot;
|
||||
}
|
||||
|
||||
public ExternalSelectSourceBindingImportExport getSourceBinding() {
|
||||
return sourceBinding;
|
||||
}
|
||||
|
||||
public void setSourceBinding(ExternalSelectSourceBindingImportExport sourceBinding) {
|
||||
this.sourceBinding = sourceBinding;
|
||||
}
|
||||
|
||||
public Boolean getHasAuth() {
|
||||
return hasAuth;
|
||||
}
|
||||
|
||||
public void setHasAuth(Boolean hasAuth) {
|
||||
this.hasAuth = hasAuth;
|
||||
}
|
||||
|
||||
public ExternalSelectAuthImportExport getAuth() {
|
||||
return auth;
|
||||
}
|
||||
|
||||
public void setAuth(ExternalSelectAuthImportExport auth) {
|
||||
this.auth = auth;
|
||||
}
|
||||
}
|
||||
@XmlElementWrapper(name = "sources")
|
||||
@XmlElement(name = "source")
|
||||
private List<ExternalSelectSourceImportExport> sources;
|
||||
|
||||
public List<ExternalSelectSourceImportExport> getSources() {
|
||||
return sources;
|
||||
}
|
||||
|
||||
public void setSources(List<ExternalSelectSourceImportExport> sources) {
|
||||
this.sources = sources;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -20,3 +20,4 @@ public class LabelAndMultiplicityDataImportExport extends BaseFieldDataImportExp
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package eu.eudat.commons.types.descriptiontemplate.importexport.fielddata;
|
||||
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ReferenceTypeDataImportExport extends BaseFieldDataImportExport {
|
||||
public static final String XmlElementName = "labelAndMultiplicityData";
|
||||
|
||||
@XmlAttribute(name = "multipleSelect")
|
||||
private Boolean multipleSelect;
|
||||
|
||||
@XmlAttribute(name = "referenceTypeId")
|
||||
private UUID referenceTypeId;
|
||||
|
||||
public Boolean getMultipleSelect() {
|
||||
return multipleSelect;
|
||||
}
|
||||
|
||||
public void setMultipleSelect(Boolean multipleSelect) {
|
||||
this.multipleSelect = multipleSelect;
|
||||
}
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
}
|
|
@ -2,7 +2,9 @@ package eu.eudat.commons.types.dmpblueprint;
|
|||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlRootElement(name = "root")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
|
@ -17,4 +19,18 @@ public class DefinitionEntity {
|
|||
public void setSections(List<SectionEntity> sections) {
|
||||
this.sections = sections;
|
||||
}
|
||||
|
||||
public List<FieldEntity> getAllField(){
|
||||
List<FieldEntity> fieldEntities = new ArrayList<>();
|
||||
if (this.getSections() != null){
|
||||
for (SectionEntity sectionEntity: this.getSections()) {
|
||||
fieldEntities.addAll(sectionEntity.getAllField());
|
||||
}
|
||||
}
|
||||
return fieldEntities;
|
||||
}
|
||||
|
||||
public List<FieldEntity> getFieldById(UUID id) {
|
||||
return this.getAllField().stream().filter(x-> id.equals(x.getId())).toList();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package eu.eudat.commons.types.dmpblueprint;
|
||||
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ReferenceFieldEntity extends FieldEntity {
|
||||
|
||||
@XmlAttribute(name="referenceTypeId")
|
||||
private UUID referenceTypeId;
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
}
|
|
@ -3,6 +3,7 @@ package eu.eudat.commons.types.dmpblueprint;
|
|||
import eu.eudat.commons.enums.DmpBlueprintFieldCategory;
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -25,6 +26,7 @@ public class SectionEntity {
|
|||
@XmlElements({
|
||||
@XmlElement(name = DmpBlueprintFieldCategory.Names.Extra, type = ExtraFieldEntity.class),
|
||||
@XmlElement(name = DmpBlueprintFieldCategory.Names.System, type = SystemFieldEntity.class),
|
||||
@XmlElement(name = DmpBlueprintFieldCategory.Names.Reference, type = ReferenceFieldEntity.class),
|
||||
})
|
||||
private List<FieldEntity> fields;
|
||||
|
||||
|
@ -84,4 +86,8 @@ public class SectionEntity {
|
|||
this.descriptionTemplates = descriptionTemplates;
|
||||
}
|
||||
|
||||
public List<FieldEntity> getAllField(){
|
||||
return this.getFields() != null ? this.getFields() : new ArrayList<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@ import jakarta.xml.bind.annotation.XmlAccessType;
|
|||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class SystemFieldEntity extends FieldEntity {
|
||||
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
package eu.eudat.commons.types.dmpblueprint.importexport;
|
||||
|
||||
import jakarta.xml.bind.annotation.XmlAccessType;
|
||||
import jakarta.xml.bind.annotation.XmlAccessorType;
|
||||
import jakarta.xml.bind.annotation.XmlAttribute;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class ReferenceFieldImportExport {
|
||||
|
||||
@XmlAttribute(name = "id")
|
||||
private UUID id;
|
||||
@XmlAttribute(name = "referenceTypeId")
|
||||
private UUID referenceTypeId;
|
||||
@XmlAttribute(name = "label")
|
||||
private String label;
|
||||
@XmlAttribute(name = "placeholder")
|
||||
private String placeholder;
|
||||
@XmlAttribute(name = "description")
|
||||
private String description;
|
||||
@XmlAttribute(name = "ordinal")
|
||||
private int ordinal;
|
||||
@XmlAttribute(name = "required")
|
||||
private boolean required;
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getPlaceholder() {
|
||||
return placeholder;
|
||||
}
|
||||
|
||||
public void setPlaceholder(String placeholder) {
|
||||
this.placeholder = placeholder;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public int getOrdinal() {
|
||||
return ordinal;
|
||||
}
|
||||
|
||||
public void setOrdinal(int ordinal) {
|
||||
this.ordinal = ordinal;
|
||||
}
|
||||
|
||||
public boolean isRequired() {
|
||||
return required;
|
||||
}
|
||||
|
||||
public void setRequired(boolean required) {
|
||||
this.required = required;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -22,6 +22,9 @@ public class SectionImportExport {
|
|||
@XmlElementWrapper(name = "extraFields")
|
||||
@XmlElement(name = "extraField")
|
||||
private List<ExtraFieldImportExport> extraFields;
|
||||
@XmlElementWrapper(name = "referenceFields")
|
||||
@XmlElement(name = "referenceField")
|
||||
private List<ReferenceFieldImportExport> referenceFields;
|
||||
@XmlAttribute(name = "hasTemplates")
|
||||
private boolean hasTemplates;
|
||||
@XmlElementWrapper(name = "descriptionTemplates")
|
||||
|
@ -76,6 +79,14 @@ public class SectionImportExport {
|
|||
this.extraFields = extraFields;
|
||||
}
|
||||
|
||||
public List<ReferenceFieldImportExport> getReferenceFields() {
|
||||
return referenceFields;
|
||||
}
|
||||
|
||||
public void setReferenceFields(List<ReferenceFieldImportExport> referenceFields) {
|
||||
this.referenceFields = referenceFields;
|
||||
}
|
||||
|
||||
public boolean isHasTemplates() {
|
||||
return hasTemplates;
|
||||
}
|
||||
|
|
|
@ -2,10 +2,8 @@ package eu.eudat.data;
|
|||
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.data.converters.enums.IsActiveConverter;
|
||||
import eu.eudat.data.converters.enums.ReferenceSourceTypeConverter;
|
||||
import eu.eudat.data.converters.enums.ReferenceTypeConverter;
|
||||
import eu.eudat.data.tenant.TenantScopedBaseEntity;
|
||||
import jakarta.persistence.*;
|
||||
|
||||
|
@ -30,10 +28,9 @@ public class ReferenceEntity extends TenantScopedBaseEntity {
|
|||
public static final int _labelLength = 500;
|
||||
|
||||
@Column(name = "type", nullable = false)
|
||||
@Convert(converter = ReferenceTypeConverter.class)
|
||||
private ReferenceType type;
|
||||
private UUID typeId;
|
||||
|
||||
public static final String _type = "type";
|
||||
public static final String _typeId = "typeId";
|
||||
|
||||
@Column(name = "description")
|
||||
private String description;
|
||||
|
@ -109,12 +106,12 @@ public class ReferenceEntity extends TenantScopedBaseEntity {
|
|||
this.label = label;
|
||||
}
|
||||
|
||||
public ReferenceType getType() {
|
||||
return type;
|
||||
public UUID getTypeId() {
|
||||
return typeId;
|
||||
}
|
||||
|
||||
public void setType(ReferenceType type) {
|
||||
this.type = type;
|
||||
public void setTypeId(UUID typeId) {
|
||||
this.typeId = typeId;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
package eu.eudat.data.converters;
|
||||
|
||||
import jakarta.persistence.AttributeConverter;
|
||||
import jakarta.persistence.Converter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
* Created by ikalyvas on 9/25/2018.
|
||||
*/
|
||||
@Converter
|
||||
public class DateToUTCConverter implements AttributeConverter<Date, Date> {
|
||||
private static final Logger logger = LoggerFactory.getLogger(DateToUTCConverter.class);
|
||||
|
||||
@Override
|
||||
public Date convertToDatabaseColumn(Date attribute) {
|
||||
if(attribute == null) return null;
|
||||
DateFormat formatterIST = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
formatterIST.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||
try {
|
||||
String date = formatterIST.format(attribute);
|
||||
return formatterIST.parse(date);
|
||||
} catch (ParseException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date convertToEntityAttribute(Date dbData) {
|
||||
if(dbData == null) return null;
|
||||
DateFormat formatterIST = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
formatterIST.setTimeZone(TimeZone.getTimeZone("UTC"));
|
||||
try {
|
||||
String date = formatterIST.format(dbData);
|
||||
return formatterIST.parse(date);
|
||||
} catch (ParseException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
package eu.eudat.data.converters.enums;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import jakarta.persistence.Converter;
|
||||
|
||||
@Converter
|
||||
public class ReferenceTypeConverter extends DatabaseEnumConverter<ReferenceType, Short> {
|
||||
public ReferenceType of(Short i) {
|
||||
return ReferenceType.of(i);
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
package eu.eudat.data.old.helpers;
|
||||
|
||||
import jakarta.persistence.Tuple;
|
||||
import java.util.List;
|
||||
|
||||
public class EntityBinder {
|
||||
public static <T> T fromTuple(List<Tuple> tuple, String path) {
|
||||
try {
|
||||
return (T) tuple.get(0).get(path);
|
||||
}catch (IllegalArgumentException illegalArgument){
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
public class DashboardReferenceTypeStatistics {
|
||||
|
||||
private long count;
|
||||
|
||||
public static final String _count = "count";
|
||||
|
||||
private PublicReferenceType referenceType;
|
||||
|
||||
public static final String _referenceType = "referenceType";
|
||||
public long getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void setCount(long count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
public PublicReferenceType getReferenceType() {
|
||||
return referenceType;
|
||||
}
|
||||
|
||||
public void setReferenceType(PublicReferenceType referenceType) {
|
||||
this.referenceType = referenceType;
|
||||
}
|
||||
}
|
|
@ -1,5 +1,8 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DashboardStatistics {
|
||||
|
||||
private long dmpCount;
|
||||
|
@ -8,15 +11,7 @@ public class DashboardStatistics {
|
|||
|
||||
private long descriptionCount;
|
||||
|
||||
public static final String _descriptionCount = "descriptionCount";
|
||||
|
||||
private long organizationCount;
|
||||
|
||||
public static final String _organizationCount = "organizationCount";
|
||||
|
||||
private long grantCount;
|
||||
|
||||
public static final String _grantCount = "grantCount";
|
||||
private List<DashboardReferenceTypeStatistics> referenceTypeStatistics;
|
||||
|
||||
public long getDmpCount() {
|
||||
return dmpCount;
|
||||
|
@ -34,19 +29,11 @@ public class DashboardStatistics {
|
|||
this.descriptionCount = descriptionCount;
|
||||
}
|
||||
|
||||
public long getOrganizationCount() {
|
||||
return organizationCount;
|
||||
public List<DashboardReferenceTypeStatistics> getReferenceTypeStatistics() {
|
||||
return referenceTypeStatistics;
|
||||
}
|
||||
|
||||
public void setOrganizationCount(long organizationCount) {
|
||||
this.organizationCount = organizationCount;
|
||||
}
|
||||
|
||||
public long getGrantCount() {
|
||||
return grantCount;
|
||||
}
|
||||
|
||||
public void setGrantCount(long grantCount) {
|
||||
this.grantCount = grantCount;
|
||||
public void setReferenceTypeStatistics(List<DashboardReferenceTypeStatistics> referenceTypeStatistics) {
|
||||
this.referenceTypeStatistics = referenceTypeStatistics;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.referencedefinition.Definition;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PublicReference {
|
||||
|
@ -17,7 +10,7 @@ public class PublicReference {
|
|||
private String label;
|
||||
public static final String _label = "label";
|
||||
|
||||
private ReferenceType type;
|
||||
private PublicReferenceType type;
|
||||
public static final String _type = "type";
|
||||
|
||||
private String description;
|
||||
|
@ -42,11 +35,11 @@ public class PublicReference {
|
|||
this.label = label;
|
||||
}
|
||||
|
||||
public ReferenceType getType() {
|
||||
public PublicReferenceType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(ReferenceType type) {
|
||||
public void setType(PublicReferenceType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
|
@ -66,3 +59,5 @@ public class PublicReference {
|
|||
this.reference = reference;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class PublicReferenceType {
|
||||
|
||||
private UUID id;
|
||||
public static final String _id = "id";
|
||||
|
||||
|
||||
private String name;
|
||||
public static final String _name = "name";
|
||||
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(UUID id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.model.referencedefinition.Definition;
|
||||
|
|
|
@ -1,10 +1,20 @@
|
|||
package eu.eudat.model.builder;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.DmpReferenceEntity;
|
||||
import eu.eudat.data.ReferenceEntity;
|
||||
import eu.eudat.model.PublicDmp;
|
||||
import eu.eudat.model.PublicDmpUser;
|
||||
import eu.eudat.model.PublicReference;
|
||||
import eu.eudat.model.PublicReferenceType;
|
||||
import eu.eudat.query.DmpQuery;
|
||||
import eu.eudat.query.ReferenceTypeQuery;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.BaseFieldSet;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
|
@ -15,17 +25,22 @@ import org.springframework.context.annotation.Scope;
|
|||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class PublicReferenceBuilder extends BaseBuilder<PublicReference, ReferenceEntity>{
|
||||
private final BuilderFactory builderFactory;
|
||||
|
||||
private final QueryFactory queryFactory;
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public PublicReferenceBuilder(
|
||||
ConventionService conventionService) {
|
||||
ConventionService conventionService, BuilderFactory builderFactory, QueryFactory queryFactory) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(PublicReferenceBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
this.queryFactory = queryFactory;
|
||||
}
|
||||
|
||||
public PublicReferenceBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
|
@ -40,6 +55,10 @@ public class PublicReferenceBuilder extends BaseBuilder<PublicReference, Referen
|
|||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
|
||||
FieldSet typeFields = fields.extractPrefixed(this.asPrefix(PublicReference._type));
|
||||
Map<UUID, PublicReferenceType> typeItemsMap = this.collectReferenceTypes(typeFields, data);
|
||||
|
||||
List<PublicReference> models = new ArrayList<>();
|
||||
for (ReferenceEntity d : data) {
|
||||
PublicReference m = new PublicReference();
|
||||
|
@ -47,10 +66,39 @@ public class PublicReferenceBuilder extends BaseBuilder<PublicReference, Referen
|
|||
if (fields.hasField(this.asIndexer(PublicReference._label))) m.setLabel(d.getLabel());
|
||||
if (fields.hasField(this.asIndexer(PublicReference._reference))) m.setReference(d.getReference());
|
||||
if (fields.hasField(this.asIndexer(PublicReference._description))) m.setDescription(d.getDescription());
|
||||
if (fields.hasField(this.asIndexer(PublicReference._type))) m.setType(d.getType());
|
||||
if (!typeFields.isEmpty() && typeItemsMap != null && typeItemsMap.containsKey(d.getTypeId())) m.setType(typeItemsMap.get(d.getTypeId()));
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Map<UUID, PublicReferenceType> collectReferenceTypes(FieldSet fields, List<ReferenceEntity> data) throws MyApplicationException {
|
||||
if (fields.isEmpty() || data.isEmpty())
|
||||
return null;
|
||||
this.logger.debug("checking related - {}", PublicReferenceType.class.getSimpleName());
|
||||
|
||||
Map<UUID, PublicReferenceType> itemMap;
|
||||
if (!fields.hasOtherField(this.asIndexer(PublicReferenceType._id))) {
|
||||
itemMap = this.asEmpty(
|
||||
data.stream().map(ReferenceEntity::getTypeId).distinct().collect(Collectors.toList()),
|
||||
x -> {
|
||||
PublicReferenceType item = new PublicReferenceType();
|
||||
item.setId(x);
|
||||
return item;
|
||||
},
|
||||
PublicReferenceType::getId);
|
||||
} else {
|
||||
FieldSet clone = new BaseFieldSet(fields.getFields()).ensure(PublicReferenceType._id);
|
||||
ReferenceTypeQuery q = this.queryFactory.query(ReferenceTypeQuery.class).authorize(this.authorize).isActive(IsActive.Active).ids(data.stream().map(ReferenceEntity::getTypeId).distinct().collect(Collectors.toList()));
|
||||
itemMap = this.builderFactory.builder(PublicReferenceTypeBuilder.class).authorize(this.authorize).asForeignKey(q, clone, PublicReferenceType::getId);
|
||||
}
|
||||
if (!fields.hasField(PublicReferenceType._id)) {
|
||||
itemMap.values().stream().filter(Objects::nonNull).peek(x -> x.setId(null)).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
return itemMap;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
package eu.eudat.model.builder;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.ReferenceTypeEntity;
|
||||
import eu.eudat.model.PublicReferenceType;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class PublicReferenceTypeBuilder extends BaseBuilder<PublicReferenceType, ReferenceTypeEntity>{
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public PublicReferenceTypeBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(PublicReferenceTypeBuilder.class)));
|
||||
}
|
||||
|
||||
public PublicReferenceTypeBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PublicReferenceType> build(FieldSet fields, List<ReferenceTypeEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
List<PublicReferenceType> models = new ArrayList<>();
|
||||
for (ReferenceTypeEntity d : data) {
|
||||
PublicReferenceType m = new PublicReferenceType();
|
||||
if (fields.hasField(this.asIndexer(PublicReferenceType._id))) m.setId(d.getId());
|
||||
if (fields.hasField(this.asIndexer(PublicReferenceType._name))) m.setName(d.getName());
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
|
@ -8,9 +8,11 @@ import eu.eudat.data.DescriptionEntity;
|
|||
import eu.eudat.data.ReferenceEntity;
|
||||
import eu.eudat.model.DmpReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.ReferenceType;
|
||||
import eu.eudat.model.User;
|
||||
import eu.eudat.model.builder.referencedefinition.DefinitionBuilder;
|
||||
import eu.eudat.query.DmpReferenceQuery;
|
||||
import eu.eudat.query.ReferenceTypeQuery;
|
||||
import eu.eudat.query.UserQuery;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
@ -68,6 +70,9 @@ public class ReferenceBuilder extends BaseBuilder<Reference, ReferenceEntity>{
|
|||
FieldSet userFields = fields.extractPrefixed(this.asPrefix(Reference._createdBy));
|
||||
Map<UUID, User> userItemsMap = this.collectUsers(userFields, data);
|
||||
|
||||
FieldSet typeFields = fields.extractPrefixed(this.asPrefix(Reference._type));
|
||||
Map<UUID, ReferenceType> typeItemsMap = this.collectReferenceTypes(typeFields, data);
|
||||
|
||||
List<Reference> models = new ArrayList<>();
|
||||
for (ReferenceEntity d : data) {
|
||||
Reference m = new Reference();
|
||||
|
@ -86,7 +91,7 @@ public class ReferenceBuilder extends BaseBuilder<Reference, ReferenceEntity>{
|
|||
if (fields.hasField(this.asIndexer(Reference._description))) m.setDescription(d.getDescription());
|
||||
if (fields.hasField(this.asIndexer(Reference._source))) m.setSource(d.getSource());
|
||||
if (fields.hasField(this.asIndexer(Reference._sourceType))) m.setSourceType(d.getSourceType());
|
||||
if (fields.hasField(this.asIndexer(Reference._type))) m.setType(d.getType());
|
||||
if (!typeFields.isEmpty() && typeItemsMap != null && typeItemsMap.containsKey(d.getTypeId())) m.setType(typeItemsMap.get(d.getTypeId()));
|
||||
if (dmpReferenceMap != null && !dmpReferenceMap.isEmpty() && dmpReferenceMap.containsKey(d.getId())) m.setDmpReferences(dmpReferenceMap.get(d.getId()));
|
||||
if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getCreatedById())) m.setCreatedBy(userItemsMap.get(d.getCreatedById()));
|
||||
models.add(m);
|
||||
|
@ -95,6 +100,36 @@ public class ReferenceBuilder extends BaseBuilder<Reference, ReferenceEntity>{
|
|||
return models;
|
||||
}
|
||||
|
||||
private Map<UUID, ReferenceType> collectReferenceTypes(FieldSet fields, List<ReferenceEntity> data) throws MyApplicationException {
|
||||
if (fields.isEmpty() || data.isEmpty())
|
||||
return null;
|
||||
this.logger.debug("checking related - {}", ReferenceType.class.getSimpleName());
|
||||
|
||||
Map<UUID, ReferenceType> itemMap;
|
||||
if (!fields.hasOtherField(this.asIndexer(ReferenceType._id))) {
|
||||
itemMap = this.asEmpty(
|
||||
data.stream().map(ReferenceEntity::getTypeId).distinct().collect(Collectors.toList()),
|
||||
x -> {
|
||||
ReferenceType item = new ReferenceType();
|
||||
item.setId(x);
|
||||
return item;
|
||||
},
|
||||
ReferenceType::getId);
|
||||
} else {
|
||||
FieldSet clone = new BaseFieldSet(fields.getFields()).ensure(ReferenceType._id);
|
||||
ReferenceTypeQuery q = this.queryFactory.query(ReferenceTypeQuery.class).authorize(this.authorize).ids(data.stream().map(ReferenceEntity::getTypeId).distinct().collect(Collectors.toList()));
|
||||
itemMap = this.builderFactory.builder(ReferenceTypeBuilder.class).authorize(this.authorize).asForeignKey(q, clone, ReferenceType::getId);
|
||||
}
|
||||
if (!fields.hasField(ReferenceType._id)) {
|
||||
itemMap.forEach((id, item) -> {
|
||||
if (item != null)
|
||||
item.setId(null);
|
||||
});
|
||||
}
|
||||
|
||||
return itemMap;
|
||||
}
|
||||
|
||||
private Map<UUID, User> collectUsers(FieldSet fields, List<ReferenceEntity> data) throws MyApplicationException {
|
||||
if (fields.isEmpty() || data.isEmpty())
|
||||
return null;
|
||||
|
|
|
@ -80,11 +80,9 @@ public class DescriptionFieldDepositBuilder extends BaseDepositBuilder<Descripti
|
|||
}
|
||||
|
||||
switch (field.getData().getFieldType()) {
|
||||
case EXTERNAL_SELECT -> m.setFieldType(FieldType.AUTO_COMPLETE);
|
||||
case SELECT -> m.setFieldType(FieldType.WORD_LIST);
|
||||
case BOOLEAN_DECISION -> m.setFieldType(FieldType.BOOLEAN_DECISION);
|
||||
case RADIO_BOX -> m.setFieldType(FieldType.RADIO_BOX);
|
||||
case INTERNAL_DMP_ENTRIES_RESEARCHERS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS);
|
||||
case INTERNAL_DMP_ENTRIES_DMPS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_DMPS);
|
||||
case INTERNAL_DMP_ENTRIES_DATASETS -> m.setFieldType(FieldType.INTERNAL_DMP_ENTRIES_DATASETS);
|
||||
case CHECK_BOX -> m.setFieldType(FieldType.CHECK_BOX);
|
||||
|
@ -94,20 +92,11 @@ public class DescriptionFieldDepositBuilder extends BaseDepositBuilder<Descripti
|
|||
case UPLOAD -> m.setFieldType(FieldType.UPLOAD);
|
||||
case DATE_PICKER -> m.setFieldType(FieldType.DATE_PICKER);
|
||||
case EXTERNAL_DATASETS -> m.setFieldType(FieldType.EXTERNAL_DATASETS);
|
||||
case DATA_REPOSITORIES -> m.setFieldType(FieldType.DATA_REPOSITORIES);
|
||||
case JOURNAL_REPOSITORIES -> m.setFieldType(FieldType.JOURNAL_REPOSITORIES);
|
||||
case PUB_REPOSITORIES -> m.setFieldType(FieldType.PUB_REPOSITORIES);
|
||||
case LICENSES -> m.setFieldType(FieldType.LICENSES);
|
||||
case PUBLICATIONS -> m.setFieldType(FieldType.PUBLICATIONS);
|
||||
case REGISTRIES -> m.setFieldType(FieldType.REGISTRIES);
|
||||
case SERVICES -> m.setFieldType(FieldType.SERVICES);
|
||||
// case REFERENCE_TYPES -> m.setFieldType(FieldType.REFERENCE_TYPES); //TODO new reference logic
|
||||
case TAGS -> m.setFieldType(FieldType.TAGS);
|
||||
case RESEARCHERS -> m.setFieldType(FieldType.RESEARCHERS);
|
||||
case ORGANIZATIONS -> m.setFieldType(FieldType.ORGANIZATIONS);
|
||||
case DATASET_IDENTIFIER -> m.setFieldType(FieldType.DATASET_IDENTIFIER);
|
||||
case CURRENCY -> m.setFieldType(FieldType.CURRENCY);
|
||||
case VALIDATION -> m.setFieldType(FieldType.VALIDATION);
|
||||
case TAXONOMIES -> m.setFieldType(FieldType.TAXONOMIES);
|
||||
default -> throw new MyApplicationException("unrecognized type " + field.getData().getFieldType());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import eu.eudat.commons.types.reference.DefinitionEntity;
|
|||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.ReferenceEntity;
|
||||
import eu.eudat.depositinterface.enums.ReferenceSourceType;
|
||||
import eu.eudat.depositinterface.enums.ReferenceType;
|
||||
import eu.eudat.depositinterface.models.ReferenceDepositModel;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
|
@ -67,23 +66,7 @@ public class ReferenceDepositBuilder extends BaseDepositBuilder<ReferenceDeposit
|
|||
case External -> m.setSourceType(ReferenceSourceType.External);
|
||||
default -> throw new MyApplicationException("unrecognized type " + d.getSourceType().getValue());
|
||||
}
|
||||
switch (d.getType()){
|
||||
case Taxonomies -> m.setType(ReferenceType.Taxonomies);
|
||||
case Licenses -> m.setType(ReferenceType.Licenses);
|
||||
case Publications -> m.setType(ReferenceType.Publications);
|
||||
case Journals -> m.setType(ReferenceType.Journals);
|
||||
case PubRepositories -> m.setType(ReferenceType.PubRepositories);
|
||||
case DataRepositories -> m.setType(ReferenceType.DataRepositories);
|
||||
case Registries -> m.setType(ReferenceType.Registries);
|
||||
case Services -> m.setType(ReferenceType.Services);
|
||||
case Project -> m.setType(ReferenceType.Project);
|
||||
case Funder -> m.setType(ReferenceType.Funder);
|
||||
case Datasets -> m.setType(ReferenceType.Datasets);
|
||||
case Organizations -> m.setType(ReferenceType.Organizations);
|
||||
case Grants -> m.setType(ReferenceType.Grants);
|
||||
case Researcher -> m.setType(ReferenceType.Researcher);
|
||||
default -> throw new MyApplicationException("unrecognized type " + d.getType().getValue());
|
||||
}
|
||||
// m.setType(d.getTypeId()); //TODO new reference logic
|
||||
models.add(new DepositBuilderItemResponse<>(m, d));
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
|
|
|
@ -1,163 +0,0 @@
|
|||
package eu.eudat.model.builder.descriptiontemplatedefinition.fielddata;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ExternalSelectDataEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.descriptiontemplatedefinition.fielddata.ExternalSelectData;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class ExternalSelectDataBuilder extends BaseFieldDataBuilder<ExternalSelectData, ExternalSelectDataEntity> {
|
||||
private final BuilderFactory builderFactory;
|
||||
@Autowired
|
||||
public ExternalSelectDataBuilder(ConventionService conventionService, BuilderFactory builderFactory) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ExternalSelectDataBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExternalSelectData getInstance() {
|
||||
return new ExternalSelectData();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildChild(FieldSet fields, ExternalSelectDataEntity d, ExternalSelectData m) {
|
||||
FieldSet sourcesFields = fields.extractPrefixed(this.asPrefix(ExternalSelectData._sources));
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData._multipleSelect))) m.setMultipleSelect(d.getMultipleSelect());
|
||||
if (!sourcesFields.isEmpty() && d.getSources() != null) m.setSources(this.builderFactory.builder(ExternalSelectSourceBuilder.class).authorize(this.authorize).build(sourcesFields, d.getSources()));
|
||||
|
||||
}
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public static class ExternalSelectSourceBindingBuilder extends BaseBuilder<ExternalSelectData.ExternalSelectSourceBinding, ExternalSelectDataEntity.ExternalSelectSourceBindingEntity> {
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public ExternalSelectSourceBindingBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(SelectDataBuilder.SelectOptionBuilder.class)));
|
||||
}
|
||||
|
||||
public ExternalSelectSourceBindingBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExternalSelectData.ExternalSelectSourceBinding> build(FieldSet fields, List<ExternalSelectDataEntity.ExternalSelectSourceBindingEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
List<ExternalSelectData.ExternalSelectSourceBinding> models = new ArrayList<>();
|
||||
for (ExternalSelectDataEntity.ExternalSelectSourceBindingEntity d : data) {
|
||||
ExternalSelectData.ExternalSelectSourceBinding m = new ExternalSelectData.ExternalSelectSourceBinding();
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSourceBinding._label))) m.setLabel(d.getLabel());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSourceBinding._value))) m.setValue(d.getValue());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSourceBinding._source))) m.setSource(d.getSource());
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public static class ExternalSelectSourceBuilder extends BaseBuilder<ExternalSelectData.ExternalSelectSource, ExternalSelectDataEntity.ExternalSelectSourceEntity> {
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
private final BuilderFactory builderFactory;
|
||||
|
||||
@Autowired
|
||||
public ExternalSelectSourceBuilder(
|
||||
ConventionService conventionService, BuilderFactory builderFactory) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ExternalSelectSourceBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
}
|
||||
|
||||
public ExternalSelectSourceBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExternalSelectData.ExternalSelectSource> build(FieldSet fields, List<ExternalSelectDataEntity.ExternalSelectSourceEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
FieldSet sourceBindingFields = fields.extractPrefixed(this.asPrefix(ExternalSelectData.ExternalSelectSource._sourceBinding));
|
||||
FieldSet authFields = fields.extractPrefixed(this.asPrefix(ExternalSelectData.ExternalSelectSource._auth));
|
||||
List<ExternalSelectData.ExternalSelectSource> models = new ArrayList<>();
|
||||
for (ExternalSelectDataEntity.ExternalSelectSourceEntity d : data) {
|
||||
ExternalSelectData.ExternalSelectSource m = new ExternalSelectData.ExternalSelectSource();
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSource._url))) m.setUrl(d.getUrl());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSource._optionsRoot))) m.setOptionsRoot(d.getOptionsRoot());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSource._hasAuth))) m.setHasAuth(d.getHasAuth());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectSource._method))) m.setMethod(d.getMethod());
|
||||
if (!sourceBindingFields.isEmpty() && d.getSourceBinding() != null) m.setSourceBinding(this.builderFactory.builder(ExternalSelectSourceBindingBuilder.class).authorize(this.authorize).build(sourceBindingFields, d.getSourceBinding()));
|
||||
if (!authFields.isEmpty() && d.getAuth() != null) m.setAuth(this.builderFactory.builder(ExternalSelectAuthDataBuilder.class).authorize(this.authorize).build(authFields, d.getAuth()));
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public static class ExternalSelectAuthDataBuilder extends BaseBuilder<ExternalSelectData.ExternalSelectAuthData, ExternalSelectDataEntity.ExternalSelectAuthDataEntity> {
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public ExternalSelectAuthDataBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ExternalSelectAuthDataBuilder.class)));
|
||||
}
|
||||
|
||||
public ExternalSelectAuthDataBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExternalSelectData.ExternalSelectAuthData> build(FieldSet fields, List<ExternalSelectDataEntity.ExternalSelectAuthDataEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
List<ExternalSelectData.ExternalSelectAuthData> models = new ArrayList<>();
|
||||
for (ExternalSelectDataEntity.ExternalSelectAuthDataEntity d : data) {
|
||||
ExternalSelectData.ExternalSelectAuthData m = new ExternalSelectData.ExternalSelectAuthData();
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectAuthData._url))) m.setUrl(d.getUrl());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectAuthData._method))) m.setMethod(d.getMethod());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectAuthData._body))) m.setBody(d.getBody());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectAuthData._path))) m.setPath(d.getPath());
|
||||
if (fields.hasField(this.asIndexer(ExternalSelectData.ExternalSelectAuthData._type))) m.setType(d.getType());
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package eu.eudat.model.builder.descriptiontemplatedefinition.fielddata;
|
||||
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ReferenceTypeDataEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.descriptiontemplatedefinition.fielddata.ReferenceTypeData;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class ReferenceTypeDataBuilder extends BaseFieldDataBuilder<ReferenceTypeData, ReferenceTypeDataEntity> {
|
||||
|
||||
@Autowired
|
||||
public ReferenceTypeDataBuilder(ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceTypeDataBuilder.class)));
|
||||
}
|
||||
|
||||
protected ReferenceTypeData getInstance() {
|
||||
return new ReferenceTypeData();
|
||||
}
|
||||
@Override
|
||||
protected void buildChild(FieldSet fields, ReferenceTypeDataEntity d, ReferenceTypeData m) {
|
||||
if (fields.hasField(this.asIndexer(ReferenceTypeData._multipleSelect))) m.setMultipleSelect(d.getMultipleSelect());
|
||||
if (fields.hasField(this.asIndexer(ReferenceTypeData._referenceTypeId))) m.setReferenceTypeId(d.getReferenceTypeId());
|
||||
}
|
||||
}
|
|
@ -1,19 +1,14 @@
|
|||
package eu.eudat.model.builder.dmpblueprintdefinition;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.dmpblueprint.DescriptionTemplateEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.ExtraFieldEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.FieldEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.dmpblueprintdefinition.DescriptionTemplate;
|
||||
import eu.eudat.model.dmpblueprintdefinition.ExtraField;
|
||||
import eu.eudat.model.dmpblueprintdefinition.Field;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package eu.eudat.model.builder.dmpblueprintdefinition;
|
||||
|
||||
import eu.eudat.commons.types.dmpblueprint.ReferenceFieldEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.dmpblueprintdefinition.ReferenceField;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class ReferenceFieldBuilder extends FieldBuilder<ReferenceField, ReferenceFieldEntity> {
|
||||
|
||||
@Autowired
|
||||
public ReferenceFieldBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceFieldBuilder.class)));
|
||||
}
|
||||
|
||||
protected ReferenceField getInstance() {
|
||||
return new ReferenceField();
|
||||
}
|
||||
|
||||
protected ReferenceField buildChild(FieldSet fields, ReferenceFieldEntity data, ReferenceField model) {
|
||||
if (fields.hasField(this.asIndexer(ReferenceField._referenceTypeId))) model.setReferenceTypeId(data.getReferenceTypeId());
|
||||
return model;
|
||||
}
|
||||
}
|
|
@ -2,10 +2,7 @@ package eu.eudat.model.builder.dmpblueprintdefinition;
|
|||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.enums.DmpBlueprintFieldCategory;
|
||||
import eu.eudat.commons.types.dmpblueprint.ExtraFieldEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.FieldEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.SectionEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.SystemFieldEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.*;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.dmpblueprintdefinition.Section;
|
||||
|
@ -63,11 +60,13 @@ public class SectionBuilder extends BaseBuilder<Section, SectionEntity> {
|
|||
if (fields.hasField(this.asIndexer(Section._hasTemplates))) m.setHasTemplates(d.getHasTemplates());
|
||||
if (!descriptionTemplatesFields.isEmpty() && d.getDescriptionTemplates() != null) m.setDescriptionTemplates(this.builderFactory.builder(DescriptionTemplateBuilder.class).authorize(this.authorize).build(descriptionTemplatesFields, d.getDescriptionTemplates()));
|
||||
if (!fieldsFields.isEmpty() && d.getFields() != null) {
|
||||
List<SystemFieldEntity> systemFieldEntities = d.getFields().stream().filter(x-> DmpBlueprintFieldCategory.System.equals(x.getCategory())).map(x-> (SystemFieldEntity)x).toList();
|
||||
List<ExtraFieldEntity> extraFieldEntities = d.getFields().stream().filter(x-> DmpBlueprintFieldCategory.Extra.equals(x.getCategory())).map(x-> (ExtraFieldEntity)x).toList();
|
||||
m.setFields(new ArrayList<>());
|
||||
List<SystemFieldEntity> systemFieldEntities = d.getFields().stream().filter(x-> DmpBlueprintFieldCategory.System.equals(x.getCategory())).map(x-> (SystemFieldEntity)x).toList();
|
||||
m.getFields().addAll(this.builderFactory.builder(SystemFieldBuilder.class).authorize(this.authorize).build(fieldsFields, systemFieldEntities));
|
||||
List<ExtraFieldEntity> extraFieldEntities = d.getFields().stream().filter(x-> DmpBlueprintFieldCategory.Extra.equals(x.getCategory())).map(x-> (ExtraFieldEntity)x).toList();
|
||||
m.getFields().addAll(this.builderFactory.builder(ExtraFieldBuilder.class).authorize(this.authorize).build(fieldsFields, extraFieldEntities));
|
||||
List<ReferenceFieldEntity> referenceFieldEntities = d.getFields().stream().filter(x-> DmpBlueprintFieldCategory.Reference.equals(x.getCategory())).map(x-> (ReferenceFieldEntity)x).toList();
|
||||
m.getFields().addAll(this.builderFactory.builder(ReferenceFieldBuilder.class).authorize(this.authorize).build(fieldsFields, referenceFieldEntities));
|
||||
}
|
||||
models.add(m);
|
||||
}
|
||||
|
|
|
@ -161,14 +161,14 @@ public class DescriptionTemplateDefinitionFileTransformerBuilder extends BaseFil
|
|||
|
||||
public BaseFieldDataFileTransformerModel convertData (BaseFieldDataEntity data) {
|
||||
BaseFieldDataFileTransformerModel m;
|
||||
switch (data) {
|
||||
case ExternalSelectDataEntity d -> {
|
||||
m = new ExternalSelectDataFileTransformerModel();
|
||||
m.setLabel(d.getLabel());
|
||||
m.setFieldType(FieldType.of(d.getFieldType().getValue()));
|
||||
((ExternalSelectDataFileTransformerModel)m).setMultipleSelect(d.getMultipleSelect());
|
||||
((ExternalSelectDataFileTransformerModel) m).setSources(convertAutoCompleteSingleData(d.getSources()));
|
||||
}
|
||||
switch (data) { //TODO new reference logic
|
||||
// case ExternalSelectDataEntity d -> {
|
||||
// m = new ExternalSelectDataFileTransformerModel();
|
||||
// m.setLabel(d.getLabel());
|
||||
// m.setFieldType(FieldType.of(d.getFieldType().getValue()));
|
||||
// ((ExternalSelectDataFileTransformerModel)m).setMultipleSelect(d.getMultipleSelect());
|
||||
// ((ExternalSelectDataFileTransformerModel) m).setSources(convertAutoCompleteSingleData(d.getSources()));
|
||||
// }
|
||||
case ExternalDatasetDataEntity d -> {
|
||||
m = new ExternalDatasetDataFileTransformerModel();
|
||||
m.setLabel(d.getLabel());
|
||||
|
@ -221,42 +221,6 @@ public class DescriptionTemplateDefinitionFileTransformerBuilder extends BaseFil
|
|||
return result;
|
||||
}
|
||||
|
||||
private List<ExternalSelectDataFileTransformerModel.ExternalSelectSourceFileTransformerModel> convertAutoCompleteSingleData(List<ExternalSelectDataEntity.ExternalSelectSourceEntity> data) {
|
||||
List<ExternalSelectDataFileTransformerModel.ExternalSelectSourceFileTransformerModel> result = new ArrayList<>();
|
||||
for (ExternalSelectDataEntity.ExternalSelectSourceEntity d : data) {
|
||||
ExternalSelectDataFileTransformerModel.ExternalSelectSourceFileTransformerModel m = new ExternalSelectDataFileTransformerModel.ExternalSelectSourceFileTransformerModel();
|
||||
m.setUrl(d.getUrl());
|
||||
m.setMethod(d.getMethod());
|
||||
m.setHasAuth(d.getHasAuth());
|
||||
m.setOptionsRoot(d.getOptionsRoot());
|
||||
if (d.getAuth() != null) {
|
||||
m.setAuth(convertAuthData(d.getAuth()));
|
||||
}
|
||||
m.setSourceBinding(convertComboBoxOption(d.getSourceBinding()));
|
||||
result.add(m);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private ExternalSelectDataFileTransformerModel.ExternalSelectSourceBindingFileTransformerModel convertComboBoxOption(ExternalSelectDataEntity.ExternalSelectSourceBindingEntity data) {
|
||||
ExternalSelectDataFileTransformerModel.ExternalSelectSourceBindingFileTransformerModel m = new ExternalSelectDataFileTransformerModel.ExternalSelectSourceBindingFileTransformerModel();
|
||||
// m.setUri(data.getUri());
|
||||
m.setSource(data.getSource());
|
||||
m.setLabel(data.getLabel());
|
||||
m.setValue(data.getValue());
|
||||
return m;
|
||||
}
|
||||
|
||||
private ExternalSelectDataFileTransformerModel.ExternalSelectAuthDataFileTransformerModel convertAuthData(ExternalSelectDataEntity.ExternalSelectAuthDataEntity data) {
|
||||
ExternalSelectDataFileTransformerModel.ExternalSelectAuthDataFileTransformerModel m = new ExternalSelectDataFileTransformerModel.ExternalSelectAuthDataFileTransformerModel();
|
||||
m.setMethod(data.getMethod());
|
||||
m.setUrl(data.getUrl());
|
||||
m.setType(data.getType());
|
||||
m.setBody(data.getBody());
|
||||
m.setPath(data.getPath());
|
||||
return m;
|
||||
}
|
||||
|
||||
private SelectDataFileTransformerModel.OptionFileTransformerModel convertComboBoxOption(SelectDataEntity.OptionEntity data) {
|
||||
SelectDataFileTransformerModel.OptionFileTransformerModel m = new SelectDataFileTransformerModel.OptionFileTransformerModel();
|
||||
m.setLabel(data.getLabel());
|
||||
|
|
|
@ -21,6 +21,7 @@ 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.apache.commons.lang3.NotImplementedException;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
|
@ -110,6 +111,8 @@ public class DmpBlueprintFileTransformerBuilder extends BaseFileTransformerBuild
|
|||
FieldFileTransformerModel m = switch (fieldEntity.getCategory()) {
|
||||
case System -> new SystemFieldFileTransformerModel();
|
||||
case Extra -> new ExtraFieldFileTransformerModelFileTransformerModel();
|
||||
case Reference -> throw new NotImplementedException("ReferenceFieldFileTransformerModel");
|
||||
default -> throw new MyApplicationException("unrecognized type " + fieldEntity.getCategory());
|
||||
};
|
||||
m.setId(fieldEntity.getId());
|
||||
m.setLabel(fieldEntity.getLabel());
|
||||
|
@ -120,7 +123,8 @@ public class DmpBlueprintFileTransformerBuilder extends BaseFileTransformerBuild
|
|||
switch (m) {
|
||||
case SystemFieldFileTransformerModel sm -> sm.setSystemFieldType(DmpBlueprintSystemFieldType.of(((SystemFieldEntity)fieldEntity).getType().getValue()));
|
||||
case ExtraFieldFileTransformerModelFileTransformerModel sm -> sm.setDataType(DmpBlueprintExtraFieldDataType.of(((ExtraFieldEntity)fieldEntity).getType().getValue()));
|
||||
default -> {}
|
||||
// case ReferenceFieldFileTransformerModelFileTransformerModel sm -> sm.setReferenceTypeId(((ReferenceFieldEntity)fieldEntity).getReferenceTypeId());
|
||||
default -> throw new MyApplicationException("unrecognized type " + fieldEntity.getCategory());
|
||||
}
|
||||
result.add(m);
|
||||
});
|
||||
|
|
|
@ -69,23 +69,9 @@ public class ReferenceFileTransformerBuilder extends BaseFileTransformerBuilder<
|
|||
case External -> m.setSourceType(ReferenceSourceType.External);
|
||||
default -> throw new MyApplicationException("unrecognized type " + d.getSourceType().getValue());
|
||||
}
|
||||
switch (d.getType()){
|
||||
case Taxonomies -> m.setType(ReferenceType.Taxonomies);
|
||||
case Licenses -> m.setType(ReferenceType.Licenses);
|
||||
case Publications -> m.setType(ReferenceType.Publications);
|
||||
case Journals -> m.setType(ReferenceType.Journals);
|
||||
case PubRepositories -> m.setType(ReferenceType.PubRepositories);
|
||||
case DataRepositories -> m.setType(ReferenceType.DataRepositories);
|
||||
case Registries -> m.setType(ReferenceType.Registries);
|
||||
case Services -> m.setType(ReferenceType.Services);
|
||||
case Project -> m.setType(ReferenceType.Project);
|
||||
case Funder -> m.setType(ReferenceType.Funder);
|
||||
case Datasets -> m.setType(ReferenceType.Datasets);
|
||||
case Organizations -> m.setType(ReferenceType.Organizations);
|
||||
case Grants -> m.setType(ReferenceType.Grants);
|
||||
case Researcher -> m.setType(ReferenceType.Researcher);
|
||||
default -> throw new MyApplicationException("unrecognized type " + d.getType().getValue());
|
||||
}
|
||||
|
||||
//m.setType(d.getTypeId()); //TODO new reference logic
|
||||
|
||||
models.add(new FileTransformerBuilderItemResponse<>(m, d));
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
|
|
|
@ -1,58 +1,58 @@
|
|||
package eu.eudat.model.builder.referencesearch;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.configurations.referencetype.ReferenceTypeProperties;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.referencedefinition.Definition;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class DefinitionSearchBuilder extends BaseBuilder<Definition, Map<String, String>> {
|
||||
|
||||
private final BuilderFactory builderFactory;
|
||||
private final ReferenceTypeProperties properties;
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public DefinitionSearchBuilder(
|
||||
ConventionService conventionService, BuilderFactory builderFactory, ReferenceTypeProperties properties) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(DefinitionSearchBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
public DefinitionSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Definition> build(FieldSet fields, List<Map<String, String>> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (data == null)
|
||||
return new ArrayList<>();
|
||||
|
||||
List<Definition> models = new ArrayList<>();
|
||||
//for (Map<String, String> d : data) {
|
||||
Definition m = new Definition();
|
||||
m.setFields(this.builderFactory.builder(FieldSearchBuilder.class).authorize(this.authorize).build(null, data));
|
||||
models.add(m);
|
||||
//}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
||||
//package eu.eudat.model.builder.referencesearch;
|
||||
//
|
||||
//import eu.eudat.authorization.AuthorizationFlags;
|
||||
//import eu.eudat.configurations.referencetype.ReferenceTypeProperties;
|
||||
//import eu.eudat.convention.ConventionService;
|
||||
//import eu.eudat.model.builder.BaseBuilder;
|
||||
//import eu.eudat.model.referencedefinition.Definition;
|
||||
//import gr.cite.tools.data.builder.BuilderFactory;
|
||||
//import gr.cite.tools.exception.MyApplicationException;
|
||||
//import gr.cite.tools.fieldset.FieldSet;
|
||||
//import gr.cite.tools.logging.DataLogEntry;
|
||||
//import gr.cite.tools.logging.LoggerService;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
//import org.springframework.context.annotation.Scope;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import java.util.*;
|
||||
//
|
||||
//@Component
|
||||
//@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
//public class DefinitionSearchBuilder extends BaseBuilder<Definition, Map<String, String>> {
|
||||
//
|
||||
// private final BuilderFactory builderFactory;
|
||||
// private final ReferenceTypeProperties properties;
|
||||
// private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
//
|
||||
// @Autowired
|
||||
// public DefinitionSearchBuilder(
|
||||
// ConventionService conventionService, BuilderFactory builderFactory, ReferenceTypeProperties properties) {
|
||||
// super(conventionService, new LoggerService(LoggerFactory.getLogger(DefinitionSearchBuilder.class)));
|
||||
// this.builderFactory = builderFactory;
|
||||
// this.properties = properties;
|
||||
// }
|
||||
//
|
||||
// public DefinitionSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
// this.authorize = values;
|
||||
// return this;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<Definition> build(FieldSet fields, List<Map<String, String>> data) throws MyApplicationException {
|
||||
// this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
// this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
// if (data == null)
|
||||
// return new ArrayList<>();
|
||||
//
|
||||
// List<Definition> models = new ArrayList<>();
|
||||
// //for (Map<String, String> d : data) {
|
||||
// Definition m = new Definition();
|
||||
// m.setFields(this.builderFactory.builder(FieldSearchBuilder.class).authorize(this.authorize).build(null, data));
|
||||
// models.add(m);
|
||||
// //}
|
||||
// this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
// return models;
|
||||
// }
|
||||
//}
|
||||
|
|
|
@ -1,89 +1,88 @@
|
|||
package eu.eudat.model.builder.referencesearch;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.enums.ReferenceFieldDataType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.configurations.referencetype.ReferenceTypeField;
|
||||
import eu.eudat.configurations.referencetype.ReferenceTypeProperties;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class FieldSearchBuilder extends BaseBuilder<Field, Map<String, String>> {
|
||||
|
||||
private final ReferenceTypeProperties properties;
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public FieldSearchBuilder(
|
||||
ConventionService conventionService, ReferenceTypeProperties properties) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(FieldSearchBuilder.class)));
|
||||
this.properties = properties;
|
||||
}
|
||||
|
||||
public FieldSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Field> build(FieldSet fields, List< Map<String, String>> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (data == null)
|
||||
return new ArrayList<>();
|
||||
|
||||
List<Field> models = new ArrayList<>();
|
||||
for (Map<String, String> d : data) {
|
||||
|
||||
ReferenceType referenceType = ReferenceType.valueOf(d.getOrDefault("referenceType", null));
|
||||
List<ReferenceTypeField> typeFields = this.getPropertiesFields(referenceType);
|
||||
if (typeFields.isEmpty()){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
for (ReferenceTypeField typeField: typeFields){
|
||||
Field m = new Field();
|
||||
m.setCode(typeField.getCode());
|
||||
m.setDataType(ReferenceFieldDataType.valueOf(typeField.getDataType()));
|
||||
m.setValue(d.getOrDefault(typeField.getCode(), null));
|
||||
models.add(m);
|
||||
}
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
|
||||
private List<ReferenceTypeField> getPropertiesFields(ReferenceType referenceType){
|
||||
switch (referenceType) {
|
||||
case Taxonomies: return properties.getTaxonomy().get("fields");
|
||||
case Licenses: return properties.getLicence().get("fields");
|
||||
case Publications: return properties.getPublication().get("fields");
|
||||
case Journals: return properties.getJournal().get("fields");
|
||||
case PubRepositories: return properties.getPubRepository().get("fields");
|
||||
case DataRepositories: return properties.getDataRepository().get("fields");
|
||||
case Registries: return properties.getRegistry().get("fields");
|
||||
case Services: return properties.getService().get("fields");
|
||||
case Organizations: return properties.getOrganisation().get("fields");
|
||||
case Datasets: return properties.getDataset().get("fields");
|
||||
case Funder: return properties.getFunder().get("fields");
|
||||
case Grants: return properties.getGrant().get("fields");
|
||||
case Project: return properties.getProject().get("fields");
|
||||
case Researcher: return properties.getResearcher().get("fields");
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
//package eu.eudat.model.builder.referencesearch;
|
||||
//
|
||||
//import eu.eudat.authorization.AuthorizationFlags;
|
||||
//import eu.eudat.commons.enums.ReferenceFieldDataType;
|
||||
//import eu.eudat.configurations.referencetype.ReferenceTypeField;
|
||||
//import eu.eudat.configurations.referencetype.ReferenceTypeProperties;
|
||||
//import eu.eudat.convention.ConventionService;
|
||||
//import eu.eudat.model.builder.BaseBuilder;
|
||||
//import eu.eudat.model.referencedefinition.Field;
|
||||
//import gr.cite.tools.exception.MyApplicationException;
|
||||
//import gr.cite.tools.fieldset.FieldSet;
|
||||
//import gr.cite.tools.logging.DataLogEntry;
|
||||
//import gr.cite.tools.logging.LoggerService;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
//import org.springframework.context.annotation.Scope;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import java.util.*;
|
||||
//
|
||||
//@Component
|
||||
//@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
//public class FieldSearchBuilder extends BaseBuilder<Field, Map<String, String>> {
|
||||
//
|
||||
// private final ReferenceTypeProperties properties;
|
||||
// private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
//
|
||||
// @Autowired
|
||||
// public FieldSearchBuilder(
|
||||
// ConventionService conventionService, ReferenceTypeProperties properties) {
|
||||
// super(conventionService, new LoggerService(LoggerFactory.getLogger(FieldSearchBuilder.class)));
|
||||
// this.properties = properties;
|
||||
// }
|
||||
//
|
||||
// public FieldSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
// this.authorize = values;
|
||||
// return this;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<Field> build(FieldSet fields, List< Map<String, String>> data) throws MyApplicationException {
|
||||
// this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
// this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
// if (data == null)
|
||||
// return new ArrayList<>();
|
||||
//
|
||||
// List<Field> models = new ArrayList<>();
|
||||
// for (Map<String, String> d : data) {
|
||||
//
|
||||
// ReferenceType referenceType = ReferenceType.valueOf(d.getOrDefault("referenceType", null));
|
||||
// List<ReferenceTypeField> typeFields = this.getPropertiesFields(referenceType);
|
||||
// if (typeFields.isEmpty()){
|
||||
// return new ArrayList<>();
|
||||
// }
|
||||
//
|
||||
// for (ReferenceTypeField typeField: typeFields){
|
||||
// Field m = new Field();
|
||||
// m.setCode(typeField.getCode());
|
||||
// m.setDataType(ReferenceFieldDataType.valueOf(typeField.getDataType()));
|
||||
// m.setValue(d.getOrDefault(typeField.getCode(), null));
|
||||
// models.add(m);
|
||||
// }
|
||||
// }
|
||||
// this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
// return models;
|
||||
// }
|
||||
//
|
||||
// private List<ReferenceTypeField> getPropertiesFields(ReferenceType referenceType){
|
||||
// switch (referenceType) {
|
||||
// case Taxonomies: return properties.getTaxonomy().get("fields");
|
||||
// case Licenses: return properties.getLicence().get("fields");
|
||||
// case Publications: return properties.getPublication().get("fields");
|
||||
// case Journals: return properties.getJournal().get("fields");
|
||||
// case PubRepositories: return properties.getPubRepository().get("fields");
|
||||
// case DataRepositories: return properties.getDataRepository().get("fields");
|
||||
// case Registries: return properties.getRegistry().get("fields");
|
||||
// case Services: return properties.getService().get("fields");
|
||||
// case Organizations: return properties.getOrganisation().get("fields");
|
||||
// case Datasets: return properties.getDataset().get("fields");
|
||||
// case Funder: return properties.getFunder().get("fields");
|
||||
// case Grants: return properties.getGrant().get("fields");
|
||||
// case Project: return properties.getProject().get("fields");
|
||||
// case Researcher: return properties.getResearcher().get("fields");
|
||||
// default: return null;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
|
|
@ -1,103 +1,96 @@
|
|||
package eu.eudat.model.builder.referencesearch;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.XmlHandlingService;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.referencedefinition.Definition;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class ReferenceSearchBuilder extends BaseBuilder<Reference, Map<String, String>> {
|
||||
|
||||
private final BuilderFactory builderFactory;
|
||||
private final QueryFactory queryFactory;
|
||||
private final XmlHandlingService xmlHandlingService;
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public ReferenceSearchBuilder(
|
||||
ConventionService conventionService,
|
||||
BuilderFactory builderFactory, QueryFactory queryFactory, XmlHandlingService xmlHandlingService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceSearchBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
this.queryFactory = queryFactory;
|
||||
this.xmlHandlingService = xmlHandlingService;
|
||||
}
|
||||
|
||||
public ReferenceSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Reference> build(FieldSet fields, List<Map<String, String>> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (data == null)
|
||||
return new ArrayList<>();
|
||||
|
||||
List<Reference> models = new ArrayList<>();
|
||||
for (Map<String, String> d : data) {
|
||||
Reference m = new Reference();
|
||||
if (d.containsKey("id")) m.setId(UUID.fromString(d.getOrDefault("id", null)));
|
||||
m.setLabel(d.getOrDefault("name", null));
|
||||
m.setSourceType(ReferenceSourceType.External);
|
||||
String type = d.getOrDefault("referenceType", null);
|
||||
if (type != null) m.setType(ReferenceType.valueOf(type));
|
||||
|
||||
Definition definition = this.builderFactory.builder(DefinitionSearchBuilder.class).authorize(this.authorize).build(null, d);
|
||||
m.setDefinition(definition);
|
||||
|
||||
switch (m.getType()){
|
||||
case Researcher:
|
||||
case Organizations:
|
||||
case Funder:
|
||||
case Grants:
|
||||
case DataRepositories:
|
||||
case PubRepositories:
|
||||
case Journals:
|
||||
case Datasets:
|
||||
case Registries:
|
||||
case Services:{
|
||||
for (Field field : definition.getFields()) {
|
||||
if (field.getCode().equals("pid") && field.getValue() != null) {
|
||||
if (d.containsKey("key")) {
|
||||
m.setReference(d.get("key") + ":" + field.getValue());
|
||||
}
|
||||
}
|
||||
if (field.getCode().equals("tag") && field.getValue() != null){
|
||||
m.setSource(field.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.setDescription(d.getOrDefault("description", null));
|
||||
m.setAbbreviation(d.getOrDefault("abbreviation", null));
|
||||
|
||||
models.add(m);
|
||||
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
|
||||
}
|
||||
//package eu.eudat.model.builder.referencesearch;
|
||||
//
|
||||
//import eu.eudat.authorization.AuthorizationFlags;
|
||||
//import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
//import eu.eudat.convention.ConventionService;
|
||||
//import eu.eudat.model.Reference;
|
||||
//import eu.eudat.model.builder.BaseBuilder;
|
||||
//import eu.eudat.model.referencedefinition.Definition;
|
||||
//import eu.eudat.model.referencedefinition.Field;
|
||||
//import gr.cite.tools.data.builder.BuilderFactory;
|
||||
//import gr.cite.tools.exception.MyApplicationException;
|
||||
//import gr.cite.tools.fieldset.FieldSet;
|
||||
//import gr.cite.tools.logging.DataLogEntry;
|
||||
//import gr.cite.tools.logging.LoggerService;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
//import org.springframework.context.annotation.Scope;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import java.util.*;
|
||||
//
|
||||
//@Component
|
||||
//@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
//public class ReferenceSearchBuilder extends BaseBuilder<Reference, Map<String, String>> {
|
||||
//
|
||||
// private final BuilderFactory builderFactory;
|
||||
// private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
//
|
||||
// @Autowired
|
||||
// public ReferenceSearchBuilder(
|
||||
// ConventionService conventionService,
|
||||
// BuilderFactory builderFactory) {
|
||||
// super(conventionService, new LoggerService(LoggerFactory.getLogger(ReferenceSearchBuilder.class)));
|
||||
// this.builderFactory = builderFactory;
|
||||
// }
|
||||
//
|
||||
// public ReferenceSearchBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
// this.authorize = values;
|
||||
// return this;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<Reference> build(FieldSet fields, List<Map<String, String>> data) throws MyApplicationException {
|
||||
// this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
// this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
// if (data == null)
|
||||
// return new ArrayList<>();
|
||||
//
|
||||
// List<Reference> models = new ArrayList<>();
|
||||
// for (Map<String, String> d : data) {
|
||||
// Reference m = new Reference();
|
||||
// if (d.containsKey("id")) m.setId(UUID.fromString(d.getOrDefault("id", null)));
|
||||
// m.setLabel(d.getOrDefault("name", null));
|
||||
// m.setSourceType(ReferenceSourceType.External);
|
||||
// String type = d.getOrDefault("referenceType", null);
|
||||
// if (type != null) m.setType(ReferenceType.valueOf(type));
|
||||
//
|
||||
// Definition definition = this.builderFactory.builder(DefinitionSearchBuilder.class).authorize(this.authorize).build(null, d);
|
||||
// m.setDefinition(definition);
|
||||
//
|
||||
// switch (m.getType()){
|
||||
// case Researcher:
|
||||
// case Organizations:
|
||||
// case Funder:
|
||||
// case Grants:
|
||||
// case DataRepositories:
|
||||
// case PubRepositories:
|
||||
// case Journals:
|
||||
// case Datasets:
|
||||
// case Registries:
|
||||
// case Services:{
|
||||
// for (Field field : definition.getFields()) {
|
||||
// if (field.getCode().equals("pid") && field.getValue() != null) {
|
||||
// if (d.containsKey("key")) {
|
||||
// m.setReference(d.get("key") + ":" + field.getValue());
|
||||
// }
|
||||
// }
|
||||
// if (field.getCode().equals("tag") && field.getValue() != null){
|
||||
// m.setSource(field.getValue());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// m.setDescription(d.getOrDefault("description", null));
|
||||
// m.setAbbreviation(d.getOrDefault("abbreviation", null));
|
||||
//
|
||||
// models.add(m);
|
||||
//
|
||||
// }
|
||||
// this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
// return models;
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
|
|
@ -2,6 +2,8 @@ package eu.eudat.model.censorship;
|
|||
|
||||
import eu.eudat.authorization.Permission;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.PublicDmpUser;
|
||||
import eu.eudat.model.PublicReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.censorship.referencedefinition.DefinitionCensor;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
|
@ -39,6 +41,8 @@ public class PublicReferenceCensor extends BaseCensor {
|
|||
return;
|
||||
|
||||
this.authService.authorizeForce(Permission.PublicBrowseReference);
|
||||
FieldSet typeFields = fields.extractPrefixed(this.asIndexerPrefix(PublicReference._type));
|
||||
this.censorFactory.censor(PublicReferenceCensor.class).censor(typeFields);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package eu.eudat.model.censorship;
|
||||
|
||||
import eu.eudat.authorization.Permission;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.PublicDmpUser;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
import gr.cite.tools.data.censor.CensorFactory;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class PublicReferenceTypeCensor extends BaseCensor {
|
||||
|
||||
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(PublicReferenceTypeCensor.class));
|
||||
|
||||
protected final AuthorizationService authService;
|
||||
protected final CensorFactory censorFactory;
|
||||
|
||||
public PublicReferenceTypeCensor(ConventionService conventionService,
|
||||
AuthorizationService authService,
|
||||
CensorFactory censorFactory) {
|
||||
super(conventionService);
|
||||
this.authService = authService;
|
||||
this.censorFactory = censorFactory;
|
||||
}
|
||||
|
||||
public void censor(FieldSet fields) {
|
||||
logger.debug(new DataLogEntry("censoring fields", fields));
|
||||
if (fields == null || fields.isEmpty())
|
||||
return;
|
||||
|
||||
this.authService.authorizeForce(Permission.PublicBrowseReferenceType);
|
||||
}
|
||||
|
||||
}
|
|
@ -45,6 +45,8 @@ public class ReferenceCensor extends BaseCensor {
|
|||
this.censorFactory.censor(DmpReferenceCensor.class).censor(dmpReferencesFields, userId);
|
||||
FieldSet createdByFields = fields.extractPrefixed(this.asIndexerPrefix(Reference._createdBy));
|
||||
this.censorFactory.censor(UserCensor.class).censor(createdByFields, userId);
|
||||
FieldSet typeFields = fields.extractPrefixed(this.asIndexerPrefix(Reference._type));
|
||||
this.censorFactory.censor(ReferenceTypeCensor.class).censor(typeFields, userId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,164 +0,0 @@
|
|||
package eu.eudat.model.descriptiontemplatedefinition.fielddata;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ExternalSelectData extends LabelAndMultiplicityData {
|
||||
private List<ExternalSelectSource> sources;
|
||||
|
||||
public final static String _sources = "sources";
|
||||
|
||||
public List<ExternalSelectSource> getSources() {
|
||||
return sources;
|
||||
}
|
||||
|
||||
public void setSources(List<ExternalSelectSource> sources) {
|
||||
this.sources = sources;
|
||||
}
|
||||
|
||||
public static class ExternalSelectSource {
|
||||
private String url;
|
||||
public final static String _url = "url";
|
||||
|
||||
private String method;
|
||||
public final static String _method = "method";
|
||||
private String optionsRoot;
|
||||
public final static String _optionsRoot = "optionsRoot";
|
||||
private ExternalSelectSourceBinding sourceBinding;
|
||||
public final static String _sourceBinding = "sourceBinding";
|
||||
private Boolean hasAuth;
|
||||
public final static String _hasAuth = "hasAuth";
|
||||
private ExternalSelectAuthData auth;
|
||||
public final static String _auth = "auth";
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
public String getOptionsRoot() {
|
||||
return optionsRoot;
|
||||
}
|
||||
|
||||
public void setOptionsRoot(String optionsRoot) {
|
||||
this.optionsRoot = optionsRoot;
|
||||
}
|
||||
|
||||
public ExternalSelectSourceBinding getSourceBinding() {
|
||||
return sourceBinding;
|
||||
}
|
||||
|
||||
public void setSourceBinding(ExternalSelectSourceBinding sourceBinding) {
|
||||
this.sourceBinding = sourceBinding;
|
||||
}
|
||||
|
||||
public Boolean getHasAuth() {
|
||||
return hasAuth;
|
||||
}
|
||||
|
||||
public void setHasAuth(Boolean hasAuth) {
|
||||
this.hasAuth = hasAuth;
|
||||
}
|
||||
|
||||
public ExternalSelectAuthData getAuth() {
|
||||
return auth;
|
||||
}
|
||||
|
||||
public void setAuth(ExternalSelectAuthData auth) {
|
||||
this.auth = auth;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExternalSelectSourceBinding {
|
||||
private String label;
|
||||
public final static String _label = "label";
|
||||
private String value;
|
||||
public final static String _value = "value";
|
||||
private String source;
|
||||
public final static String _source = "source";
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getSource() {
|
||||
return source;
|
||||
}
|
||||
public void setSource(String source) {
|
||||
this.source = source;
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExternalSelectAuthData {
|
||||
private String url;
|
||||
public final static String _url = "url";
|
||||
private String method;
|
||||
public final static String _method = "method";
|
||||
private String body;
|
||||
public final static String _body = "body";
|
||||
private String path;
|
||||
public final static String _path = "path";
|
||||
private String type;
|
||||
public final static String _type = "type";
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public String getMethod() {
|
||||
return method;
|
||||
}
|
||||
|
||||
public void setMethod(String method) {
|
||||
this.method = method;
|
||||
}
|
||||
|
||||
public String getBody() {
|
||||
return body;
|
||||
}
|
||||
|
||||
public void setBody(String body) {
|
||||
this.body = body;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public void setPath(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package eu.eudat.model.descriptiontemplatedefinition.fielddata;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReferenceTypeData extends BaseFieldData {
|
||||
private Boolean multipleSelect;
|
||||
public final static String _multipleSelect = "multipleSelect";
|
||||
|
||||
private UUID referenceTypeId;
|
||||
public final static String _referenceTypeId = "referenceTypeId";
|
||||
public Boolean getMultipleSelect() {
|
||||
return multipleSelect;
|
||||
}
|
||||
public void setMultipleSelect(Boolean multipleSelect) {
|
||||
this.multipleSelect = multipleSelect;
|
||||
}
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package eu.eudat.model.dmpblueprintdefinition;
|
|||
|
||||
import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType;
|
||||
|
||||
|
||||
public class ExtraField extends Field {
|
||||
|
||||
public final static String _dataType = "dataType";
|
||||
|
@ -15,3 +16,4 @@ public class ExtraField extends Field {
|
|||
this.dataType = dataType;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
package eu.eudat.model.dmpblueprintdefinition;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReferenceField extends Field {
|
||||
|
||||
public final static String _referenceTypeId = "referenceTypeId";
|
||||
private UUID referenceTypeId;
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@ import eu.eudat.model.publicapi.datasetprofile.DatasetProfilePublicModel;
|
|||
import eu.eudat.model.publicapi.grant.GrantPublicOverviewModel;
|
||||
import eu.eudat.model.publicapi.listingmodels.DatasetPublicListingModel;
|
||||
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Date;
|
||||
|
@ -13,7 +14,7 @@ import java.util.List;
|
|||
@Component
|
||||
public class DescriptionToPublicApiDatasetListingMapper {
|
||||
|
||||
public DatasetPublicListingModel toPublicListingModel(Description description) {
|
||||
public DatasetPublicListingModel toPublicListingModel(Description description, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
DatasetPublicListingModel model = new DatasetPublicListingModel();
|
||||
model.setId(description.getId().toString());
|
||||
model.setLabel(description.getLabel());
|
||||
|
@ -24,7 +25,7 @@ public class DescriptionToPublicApiDatasetListingMapper {
|
|||
model.setDmpId(description.getDmp().getId().toString());
|
||||
model.setUsers(List.of(UserInfoPublicModel.fromDescriptionCreator(description.getCreatedBy())));
|
||||
model.setProfile(DatasetProfilePublicModel.fromDataModel(description.getDescriptionTemplate()));
|
||||
model.setGrant(GrantPublicOverviewModel.fromDescriptionReference(description.getDescriptionReferences()));
|
||||
model.setGrant(GrantPublicOverviewModel.fromDescriptionReference(description.getDescriptionReferences(), config));
|
||||
|
||||
model.setCreatedAt(Date.from(description.getCreatedAt()));
|
||||
model.setModifiedAt(Date.from(description.getUpdatedAt()));
|
||||
|
|
|
@ -8,6 +8,7 @@ import eu.eudat.model.publicapi.datasetwizard.RegistryPublicModel;
|
|||
import eu.eudat.model.publicapi.datasetwizard.ServicePublicModel;
|
||||
import eu.eudat.model.publicapi.listingmodels.DataManagementPlanPublicListingModel;
|
||||
import eu.eudat.model.publicapi.overviewmodels.DatasetPublicModel;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Date;
|
||||
|
@ -22,7 +23,7 @@ public class DescriptionToPublicApiDatasetMapper {
|
|||
this.descriptionTemplateToPublicApiDatasetProfileMapper = descriptionTemplateToPublicApiDatasetProfileMapper;
|
||||
}
|
||||
|
||||
public DatasetPublicModel toPublicModel(Description description, DataManagementPlanPublicListingModel dmp) {
|
||||
public DatasetPublicModel toPublicModel(Description description, DataManagementPlanPublicListingModel dmp, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
DatasetPublicModel model = new DatasetPublicModel();
|
||||
model.setId(description.getId());
|
||||
model.setLabel(description.getLabel());
|
||||
|
@ -36,10 +37,10 @@ public class DescriptionToPublicApiDatasetMapper {
|
|||
|
||||
model.setProfile(DatasetProfilePublicModel.fromDataModel(description.getDescriptionTemplate()));
|
||||
if (description.getDescriptionReferences() != null) {
|
||||
model.setRegistries(description.getDescriptionReferences().stream().map(RegistryPublicModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
model.setServices(description.getDescriptionReferences().stream().map(ServicePublicModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
model.setDataRepositories(description.getDescriptionReferences().stream().map(DataRepositoryPublicModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
model.setExternalDatasets(description.getDescriptionReferences().stream().map(ExternalDatasetPublicListingModel::fromDescriptionReference).filter(Objects::nonNull).toList());
|
||||
model.setRegistries(description.getDescriptionReferences().stream().map(x-> RegistryPublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
|
||||
model.setServices(description.getDescriptionReferences().stream().map(x-> ServicePublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
|
||||
model.setDataRepositories(description.getDescriptionReferences().stream().map(x-> DataRepositoryPublicModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
|
||||
model.setExternalDatasets(description.getDescriptionReferences().stream().map(x-> ExternalDatasetPublicListingModel.fromDescriptionReference(x, config)).filter(Objects::nonNull).toList());
|
||||
}
|
||||
|
||||
model.setCreatedAt(Date.from(description.getCreatedAt()));
|
||||
|
|
|
@ -4,6 +4,7 @@ import eu.eudat.model.Dmp;
|
|||
import eu.eudat.model.publicapi.listingmodels.DataManagementPlanPublicListingModel;
|
||||
import eu.eudat.model.publicapi.researcher.ResearcherPublicModel;
|
||||
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Date;
|
||||
|
@ -12,7 +13,7 @@ import java.util.Objects;
|
|||
@Component
|
||||
public class DmpToPublicApiDmpListingMapper {
|
||||
|
||||
public DataManagementPlanPublicListingModel toPublicListingModel(Dmp dmp) {
|
||||
public DataManagementPlanPublicListingModel toPublicListingModel(Dmp dmp, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
DataManagementPlanPublicListingModel model = new DataManagementPlanPublicListingModel();
|
||||
model.setId(dmp.getId().toString());
|
||||
model.setLabel(dmp.getLabel());
|
||||
|
@ -20,7 +21,7 @@ public class DmpToPublicApiDmpListingMapper {
|
|||
model.setGroupId(dmp.getGroupId());
|
||||
|
||||
model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList());
|
||||
model.setResearchers(dmp.getDmpReferences().stream().map(ResearcherPublicModel::fromDmpReference).filter(Objects::nonNull).toList());
|
||||
model.setResearchers(dmp.getDmpReferences().stream().map(x-> ResearcherPublicModel.fromDmpReference(x, config)).filter(Objects::nonNull).toList());
|
||||
|
||||
model.setCreatedAt(Date.from(dmp.getCreatedAt()));
|
||||
model.setModifiedAt(Date.from(dmp.getUpdatedAt()));
|
||||
|
|
|
@ -11,6 +11,7 @@ import eu.eudat.model.publicapi.organisation.OrganizationPublicModel;
|
|||
import eu.eudat.model.publicapi.overviewmodels.DataManagementPlanPublicModel;
|
||||
import eu.eudat.model.publicapi.researcher.ResearcherPublicModel;
|
||||
import eu.eudat.model.publicapi.user.UserInfoPublicModel;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Date;
|
||||
|
@ -26,7 +27,7 @@ public class DmpToPublicApiDmpMapper {
|
|||
this.descriptionToPublicApiDatasetMapper = descriptionToPublicApiDatasetMapper;
|
||||
}
|
||||
|
||||
public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List<EntityDoiEntity> doiEntities, List<DmpDescriptionTemplate> descriptionTemplates) {
|
||||
public DataManagementPlanPublicModel toPublicModel(Dmp dmp, List<EntityDoiEntity> doiEntities, List<DmpDescriptionTemplate> descriptionTemplates, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
DataManagementPlanPublicModel model = new DataManagementPlanPublicModel();
|
||||
model.setId(dmp.getId().toString());
|
||||
model.setLabel(dmp.getLabel());
|
||||
|
@ -38,13 +39,13 @@ public class DmpToPublicApiDmpMapper {
|
|||
if (dmp.getDescriptions() != null) {
|
||||
DataManagementPlanPublicListingModel publicListingModel = new DataManagementPlanPublicListingModel();
|
||||
publicListingModel.setId(model.getId());
|
||||
model.setDatasets(dmp.getDescriptions().stream().map(x -> descriptionToPublicApiDatasetMapper.toPublicModel(x, publicListingModel)).toList());
|
||||
model.setDatasets(dmp.getDescriptions().stream().map(x -> descriptionToPublicApiDatasetMapper.toPublicModel(x, publicListingModel, config)).toList());
|
||||
}
|
||||
|
||||
model.setUsers(dmp.getDmpUsers().stream().map(UserInfoPublicModel::fromDmpUser).toList());
|
||||
model.setResearchers(dmp.getDmpReferences().stream().map(ResearcherPublicModel::fromDmpReference).filter(Objects::nonNull).toList());
|
||||
model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences()));
|
||||
model.setOrganisations(dmp.getDmpReferences().stream().map(OrganizationPublicModel::fromDmpReference).filter(Objects::nonNull).toList());
|
||||
model.setResearchers(dmp.getDmpReferences().stream().map(x-> ResearcherPublicModel.fromDmpReference(x, config)).filter(Objects::nonNull).toList());
|
||||
model.setGrant(GrantPublicOverviewModel.fromDmpReferences(dmp.getDmpReferences(), config));
|
||||
model.setOrganisations(dmp.getDmpReferences().stream().map(x-> OrganizationPublicModel.fromDmpReference(x, config)).filter(Objects::nonNull).toList());
|
||||
model.setDois(doiEntities.stream().map(DoiPublicModel::fromDataModel).toList());
|
||||
model.setAssociatedProfiles(descriptionTemplates.stream().map(x -> AssociatedProfilePublicModel.fromDmpDescriptionTemplate(x, dmp.getBlueprint())).toList());
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package eu.eudat.model.persist;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.validation.BaseValidator;
|
||||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import gr.cite.tools.validation.specification.Specification;
|
||||
|
@ -27,9 +26,9 @@ public class ReferencePersist {
|
|||
|
||||
public static final String _label = "label";
|
||||
|
||||
private ReferenceType type;
|
||||
private UUID typeId;
|
||||
|
||||
public static final String _type = "type";
|
||||
public static final String _typeId = "typeId";
|
||||
|
||||
private String description;
|
||||
|
||||
|
@ -73,12 +72,12 @@ public class ReferencePersist {
|
|||
this.label = label;
|
||||
}
|
||||
|
||||
public ReferenceType getType() {
|
||||
return type;
|
||||
public UUID getTypeId() {
|
||||
return typeId;
|
||||
}
|
||||
|
||||
public void setType(ReferenceType type) {
|
||||
this.type = type;
|
||||
public void setTypeId(UUID typeId) {
|
||||
this.typeId = typeId;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
|
@ -177,8 +176,8 @@ public class ReferencePersist {
|
|||
.must(() -> this.lessEqualLength(item.getLabel(), ReferenceEntity._labelLength))
|
||||
.failOn(ReferencePersist._label).failWith(messageSource.getMessage("Validation_MaxLength", new Object[]{ReferencePersist._label}, LocaleContextHolder.getLocale())),
|
||||
this.spec()
|
||||
.must(() -> !this.isNull(item.getType()))
|
||||
.failOn(ReferencePersist._type).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._type}, LocaleContextHolder.getLocale())),
|
||||
.must(() -> this.isValidGuid(item.getTypeId()))
|
||||
.failOn(ReferencePersist._typeId).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._typeId}, LocaleContextHolder.getLocale())),
|
||||
this.spec()
|
||||
.must(() -> !this.isEmpty(item.getReference()))
|
||||
.failOn(ReferencePersist._reference).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._reference}, LocaleContextHolder.getLocale())),
|
||||
|
@ -200,7 +199,6 @@ public class ReferencePersist {
|
|||
this.spec()
|
||||
.must(() -> !this.isNull(item.getSourceType()))
|
||||
.failOn(ReferencePersist._sourceType).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferencePersist._sourceType}, LocaleContextHolder.getLocale())),
|
||||
|
||||
this.refSpec()
|
||||
.iff(() -> !this.isNull(item.getDefinition()))
|
||||
.on(ReferencePersist._definition)
|
||||
|
|
|
@ -97,10 +97,6 @@ public class FieldPersist {
|
|||
protected List<Specification> specifications(FieldPersist item) {
|
||||
FieldType fieldType = this.fieldEntity != null && this.fieldEntity.getData() != null ? this.fieldEntity.getData().getFieldType() : FieldType.FREE_TEXT;
|
||||
return Arrays.asList(
|
||||
this.spec()
|
||||
.iff(()-> FieldType.isNotImplemented(fieldType))
|
||||
.must(() -> false)
|
||||
.failOn(FieldPersist._textValue).failWith("Field Not implemented yet!!"),
|
||||
this.spec()
|
||||
.iff(()-> FieldType.isTextType(fieldType))
|
||||
.must(() -> !this.isEmpty(item.getTextValue()))
|
||||
|
@ -130,7 +126,7 @@ public class FieldPersist {
|
|||
.must(() -> this.isUUID(item.getTextValue()))
|
||||
.failOn(FieldPersist._textValue).failWith(messageSource.getMessage("Validation_UnexpectedValue", new Object[]{FieldPersist._textValue}, LocaleContextHolder.getLocale())),
|
||||
this.spec()
|
||||
.iff(()-> !this.isNull(item.getTextListValue()) && (fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DATASETS)))
|
||||
.iff(()-> !this.isNull(item.getTextListValue()) && (fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DMPS) || fieldType.equals(FieldType.INTERNAL_DMP_ENTRIES_DATASETS)))
|
||||
.must(() -> item.getTextListValue().stream().allMatch(this::isUUID))
|
||||
.failOn(FieldPersist._textListValue).failWith(messageSource.getMessage("Validation_UnexpectedValue", new Object[]{FieldPersist._textListValue}, LocaleContextHolder.getLocale())),
|
||||
this.navSpec()
|
||||
|
|
|
@ -21,7 +21,6 @@ import java.util.List;
|
|||
visible = true,
|
||||
defaultImpl = LabelDataPersist.class)
|
||||
@JsonSubTypes({
|
||||
@JsonSubTypes.Type(value = ExternalSelectDataPersist.class, name = FieldType.Names.ExternalSelect),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.BooleanDecision),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.InternalDmpDescriptions),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.InternalDmpDmps),
|
||||
|
@ -29,26 +28,16 @@ import java.util.List;
|
|||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.DatePicker),
|
||||
@JsonSubTypes.Type(value = ExternalDatasetDataPersist.class, name = FieldType.Names.ExternalDatasets),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.FreeText),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Licenses),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Organizations),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Publications),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.ReferenceTypes),
|
||||
@JsonSubTypes.Type(value = RadioBoxDataPersist.class, name = FieldType.Names.RadioBox),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Registries),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.InternalDmpResearchers),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Researchers),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.RichTextarea),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Services),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.Tags),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.Taxonomies),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.TextArea),
|
||||
@JsonSubTypes.Type(value = UploadDataPersist.class, name = FieldType.Names.Upload),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.Validation),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.DatasetIdentifier),
|
||||
@JsonSubTypes.Type(value = LabelDataPersist.class, name = FieldType.Names.Currency),
|
||||
@JsonSubTypes.Type(value = SelectDataPersist.class, name = FieldType.Names.Select),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.DataRepositories),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.JournalRepositories),
|
||||
@JsonSubTypes.Type(value = LabelAndMultiplicityDataPersist.class, name = FieldType.Names.PubRepositories),
|
||||
@JsonSubTypes.Type(value = SelectDataPersist.class, name = FieldType.Names.Select)
|
||||
})
|
||||
public abstract class BaseFieldDataPersist {
|
||||
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
package eu.eudat.model.persist.descriptiontemplatedefinition.fielddata;
|
||||
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import gr.cite.tools.validation.specification.Specification;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReferenceTypeDataPersist extends BaseFieldDataPersist {
|
||||
|
||||
private Boolean multipleSelect;
|
||||
|
||||
public static final String _multipleSelect = "multipleSelect";
|
||||
|
||||
private UUID referenceTypeId;
|
||||
public final static String _referenceTypeId = "referenceTypeId";
|
||||
|
||||
public Boolean getMultipleSelect() {
|
||||
return multipleSelect;
|
||||
}
|
||||
|
||||
public void setMultipleSelect(Boolean multipleSelect) {
|
||||
this.multipleSelect = multipleSelect;
|
||||
}
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
|
||||
@Component(ReferenceTypeDataPersist.ReferenceTypeDataPersistValidator.ValidatorName)
|
||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public static class ReferenceTypeDataPersistValidator extends BaseFieldDataPersistValidator<ReferenceTypeDataPersist> {
|
||||
|
||||
public static final String ValidatorName = "DescriptionTemplate.ReferenceTypeDataPersistValidator";
|
||||
|
||||
protected ReferenceTypeDataPersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) {
|
||||
super(conventionService, errors, messageSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<ReferenceTypeDataPersist> modelClass() {
|
||||
return ReferenceTypeDataPersist.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Specification> specifications(ReferenceTypeDataPersist item) {
|
||||
List<Specification> specifications = getBaseSpecifications(item);
|
||||
specifications.addAll(Arrays.asList(
|
||||
this.spec()
|
||||
.must(() -> this.isValidGuid(item.getReferenceTypeId()))
|
||||
.failOn(ReferenceTypeDataPersist._referenceTypeId).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferenceTypeDataPersist._referenceTypeId}, LocaleContextHolder.getLocale())),
|
||||
this.spec()
|
||||
.must(() -> !this.isNull(item.getMultipleSelect()))
|
||||
.failOn(ReferenceTypeDataPersist._multipleSelect).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferenceTypeDataPersist._multipleSelect}, LocaleContextHolder.getLocale()))
|
||||
));
|
||||
return specifications;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package eu.eudat.model.persist.dmpblueprintdefinition;
|
||||
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import gr.cite.tools.validation.specification.Specification;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReferenceFieldPersist extends FieldPersist {
|
||||
|
||||
private UUID referenceTypeId;
|
||||
|
||||
public static final String _referenceTypeId = "referenceTypeId";
|
||||
|
||||
public UUID getReferenceTypeId() {
|
||||
return referenceTypeId;
|
||||
}
|
||||
|
||||
public void setReferenceTypeId(UUID referenceTypeId) {
|
||||
this.referenceTypeId = referenceTypeId;
|
||||
}
|
||||
|
||||
@Component(ReferenceFieldPersistPersistValidator.ValidatorName)
|
||||
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public static class ReferenceFieldPersistPersistValidator extends BaseFieldPersistValidator<ReferenceFieldPersist> {
|
||||
|
||||
public static final String ValidatorName = "DmpBlueprint.ReferenceFieldPersistPersistValidator";
|
||||
|
||||
protected ReferenceFieldPersistPersistValidator(ConventionService conventionService, ErrorThesaurusProperties errors, MessageSource messageSource) {
|
||||
super(conventionService, errors, messageSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<ReferenceFieldPersist> modelClass() {
|
||||
return ReferenceFieldPersist.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<Specification> specifications(ReferenceFieldPersist item) {
|
||||
List<Specification> specifications = getBaseSpecifications(item);
|
||||
specifications.add(
|
||||
this.spec()
|
||||
.must(() -> !this.isNull(item.getReferenceTypeId()))
|
||||
.failOn(ReferenceFieldPersist._referenceTypeId).failWith(messageSource.getMessage("Validation_Required", new Object[]{ReferenceFieldPersist._referenceTypeId}, LocaleContextHolder.getLocale()))
|
||||
);
|
||||
return specifications;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -2,6 +2,7 @@ package eu.eudat.model.persist.dmpblueprintdefinition;
|
|||
|
||||
import eu.eudat.commons.enums.DmpBlueprintFieldCategory;
|
||||
import eu.eudat.commons.validation.BaseValidator;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import gr.cite.tools.validation.specification.Specification;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
|
@ -145,7 +146,20 @@ public class SectionPersist {
|
|||
.iff(() -> !this.isListNullOrEmpty(item.getFields()))
|
||||
.on(SectionPersist._fields)
|
||||
.over(item.getFields())
|
||||
.using((itm) -> ((FieldPersist) itm).getCategory() == DmpBlueprintFieldCategory.Extra ? this.validatorFactory.validator(ExtraFieldPersist.ExtraFieldPersistValidator.class) : this.validatorFactory.validator(SystemFieldPersist.SystemFieldPersistValidator.class)),
|
||||
.using((itm) -> {
|
||||
switch (((FieldPersist) itm).getCategory()){
|
||||
case Extra -> {
|
||||
return this.validatorFactory.validator(ExtraFieldPersist.ExtraFieldPersistValidator.class);
|
||||
}
|
||||
case System -> {
|
||||
return this.validatorFactory.validator(SystemFieldPersist.SystemFieldPersistValidator.class);
|
||||
}
|
||||
case Reference -> {
|
||||
return this.validatorFactory.validator(ReferenceFieldPersist.ReferenceFieldPersistPersistValidator.class);
|
||||
}
|
||||
default -> throw new MyApplicationException("unrecognized type " + ((FieldPersist) itm).getCategory());
|
||||
}
|
||||
}),
|
||||
this.navSpec()
|
||||
.iff(() -> !this.isListNullOrEmpty(item.getDescriptionTemplates()))
|
||||
.on(SectionPersist._descriptionTemplates)
|
||||
|
|
|
@ -11,6 +11,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
|
|||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class SystemFieldPersist extends FieldPersist {
|
||||
|
||||
|
@ -54,3 +55,4 @@ public class SystemFieldPersist extends FieldPersist {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package eu.eudat.model.publicapi.datasetwizard;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DescriptionReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DataRepositoryPublicModel {
|
||||
private String id;
|
||||
|
@ -90,8 +90,8 @@ public class DataRepositoryPublicModel {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static DataRepositoryPublicModel fromDescriptionReference(DescriptionReference descriptionReference) {
|
||||
if (descriptionReference.getReference().getType() != ReferenceType.DataRepositories)
|
||||
public static DataRepositoryPublicModel fromDescriptionReference(DescriptionReference descriptionReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(descriptionReference.getReference().getType().getId(), config.getDataRepositoryTypeId()))
|
||||
return null;
|
||||
DataRepositoryPublicModel model = new DataRepositoryPublicModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package eu.eudat.model.publicapi.datasetwizard;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DescriptionReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ExternalDatasetPublicListingModel {
|
||||
|
@ -106,8 +107,8 @@ public class ExternalDatasetPublicListingModel {
|
|||
this.source = source;
|
||||
}
|
||||
|
||||
public static ExternalDatasetPublicListingModel fromDescriptionReference(DescriptionReference descriptionReference) {
|
||||
if (descriptionReference.getReference().getType() != ReferenceType.Datasets)
|
||||
public static ExternalDatasetPublicListingModel fromDescriptionReference(DescriptionReference descriptionReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(descriptionReference.getReference().getType().getId(), config.getDatasetTypeId()))
|
||||
return null;
|
||||
ExternalDatasetPublicListingModel model = new ExternalDatasetPublicListingModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package eu.eudat.model.publicapi.datasetwizard;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DescriptionReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class RegistryPublicModel {
|
||||
|
@ -74,8 +74,8 @@ public class RegistryPublicModel {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static RegistryPublicModel fromDescriptionReference(DescriptionReference descriptionReference) {
|
||||
if (descriptionReference.getReference().getType() != ReferenceType.Registries)
|
||||
public static RegistryPublicModel fromDescriptionReference(DescriptionReference descriptionReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(descriptionReference.getReference().getType().getId(), config.getRegistryTypeId()))
|
||||
return null;
|
||||
RegistryPublicModel model = new RegistryPublicModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package eu.eudat.model.publicapi.datasetwizard;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DescriptionReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ServicePublicModel {
|
||||
|
@ -74,8 +75,8 @@ public class ServicePublicModel {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static ServicePublicModel fromDescriptionReference(DescriptionReference descriptionReference) {
|
||||
if (descriptionReference.getReference().getType() != ReferenceType.Services)
|
||||
public static ServicePublicModel fromDescriptionReference(DescriptionReference descriptionReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(descriptionReference.getReference().getType().getId(), config.getServiceTypeId()))
|
||||
return null;
|
||||
ServicePublicModel model = new ServicePublicModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package eu.eudat.model.publicapi.grant;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DescriptionReference;
|
||||
import eu.eudat.model.DmpReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.publicapi.funder.FunderPublicOverviewModel;
|
||||
import eu.eudat.model.referencedefinition.Field;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class GrantPublicOverviewModel {
|
||||
|
@ -78,17 +79,17 @@ public class GrantPublicOverviewModel {
|
|||
this.funder = funder;
|
||||
}
|
||||
|
||||
public static GrantPublicOverviewModel fromDmpReferences(List<DmpReference> references) {
|
||||
public static GrantPublicOverviewModel fromDmpReferences(List<DmpReference> references, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
FunderPublicOverviewModel funder = null;
|
||||
for (DmpReference dmpReference : references) {
|
||||
if (dmpReference.getReference().getType() == ReferenceType.Funder) {
|
||||
if (!Objects.equals(dmpReference.getReference().getType().getId(), config.getFunderTypeId())) {
|
||||
funder = new FunderPublicOverviewModel();
|
||||
Reference reference = dmpReference.getReference();
|
||||
funder.setId(reference.getId());
|
||||
funder.setLabel(reference.getLabel());
|
||||
continue;
|
||||
}
|
||||
if (dmpReference.getReference().getType() != ReferenceType.Grants)
|
||||
if (!Objects.equals(dmpReference.getReference().getType().getId(), config.getGrantTypeId()))
|
||||
continue;
|
||||
GrantPublicOverviewModel model = new GrantPublicOverviewModel();
|
||||
Reference reference = dmpReference.getReference();
|
||||
|
@ -110,17 +111,17 @@ public class GrantPublicOverviewModel {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static GrantPublicOverviewModel fromDescriptionReference(List<DescriptionReference> references) {
|
||||
public static GrantPublicOverviewModel fromDescriptionReference(List<DescriptionReference> references, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
FunderPublicOverviewModel funder = null;
|
||||
for (DescriptionReference descriptionReference : references) {
|
||||
if (descriptionReference.getReference().getType() == ReferenceType.Funder) {
|
||||
if (Objects.equals(descriptionReference.getReference().getType().getId(), config.getFunderTypeId())) {
|
||||
funder = new FunderPublicOverviewModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
funder.setId(reference.getId());
|
||||
funder.setLabel(reference.getLabel());
|
||||
continue;
|
||||
}
|
||||
if (descriptionReference.getReference().getType() != ReferenceType.Grants)
|
||||
if (Objects.equals(descriptionReference.getReference().getType().getId(), config.getGrantTypeId()))
|
||||
continue;
|
||||
GrantPublicOverviewModel model = new GrantPublicOverviewModel();
|
||||
Reference reference = descriptionReference.getReference();
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package eu.eudat.model.publicapi.organisation;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DmpReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class OrganizationPublicModel {
|
||||
private String label;
|
||||
|
@ -46,8 +48,8 @@ public class OrganizationPublicModel {
|
|||
this.key = key;
|
||||
}
|
||||
|
||||
public static OrganizationPublicModel fromDmpReference(DmpReference dmpReference) {
|
||||
if (dmpReference.getReference().getType() != ReferenceType.Organizations)
|
||||
public static OrganizationPublicModel fromDmpReference(DmpReference dmpReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(dmpReference.getReference().getType().getId(), config.getOrganizationTypeId()))
|
||||
return null;
|
||||
OrganizationPublicModel model = new OrganizationPublicModel();
|
||||
Reference reference = dmpReference.getReference();
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package eu.eudat.model.publicapi.researcher;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.model.DmpReference;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ResearcherPublicModel {
|
||||
private static final Logger logger = LoggerFactory.getLogger(ResearcherPublicModel.class);
|
||||
|
@ -51,8 +53,8 @@ public class ResearcherPublicModel {
|
|||
this.key = key;
|
||||
}
|
||||
|
||||
public static ResearcherPublicModel fromDmpReference(DmpReference dmpReference) {
|
||||
if (dmpReference.getReference().getType() != ReferenceType.Researcher)
|
||||
public static ResearcherPublicModel fromDmpReference(DmpReference dmpReference, PublicApiProperties.ReferenceTypeMapConfig config) {
|
||||
if (!Objects.equals(dmpReference.getReference().getType().getId(), config.getRegistryTypeId()))
|
||||
return null;
|
||||
ResearcherPublicModel model = new ResearcherPublicModel();
|
||||
Reference reference = dmpReference.getReference();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package eu.eudat.query;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.data.DmpReferenceEntity;
|
||||
|
@ -33,17 +32,15 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
|
||||
private Collection<ReferenceSourceType> referenceSourceTypes;
|
||||
|
||||
private Collection<ReferenceType> referenceTypes;
|
||||
private Collection<UUID> typeIds;
|
||||
|
||||
private Collection<String> references;
|
||||
private Collection<String> sources;
|
||||
|
||||
private Collection<UUID> excludedIds;
|
||||
|
||||
|
||||
private DmpReferenceQuery dmpReferenceQuery;
|
||||
|
||||
private Collection<UUID> referenceTypeIds;
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
|
@ -82,18 +79,18 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery types(ReferenceType value) {
|
||||
this.referenceTypes = List.of(value);
|
||||
public ReferenceQuery typeIds(UUID value) {
|
||||
this.typeIds = List.of(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery types(ReferenceType... value) {
|
||||
this.referenceTypes = Arrays.asList(value);
|
||||
public ReferenceQuery typeIds(UUID... value) {
|
||||
this.typeIds = Arrays.asList(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery types(Collection<ReferenceType> values) {
|
||||
this.referenceTypes = values;
|
||||
public ReferenceQuery typeIds(Collection<UUID> values) {
|
||||
this.typeIds = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@ -157,21 +154,6 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery referenceTypeIds(UUID value) {
|
||||
this.referenceTypeIds = List.of(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery referenceTypeIds(UUID... value) {
|
||||
this.referenceTypeIds = Arrays.asList(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery referenceTypeIds(Collection<UUID> values) {
|
||||
this.referenceTypeIds = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ReferenceQuery dmpReferenceSubQuery(DmpReferenceQuery value) {
|
||||
this.dmpReferenceQuery = value;
|
||||
return this;
|
||||
|
@ -193,7 +175,7 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
|
||||
@Override
|
||||
protected Boolean isFalseQuery() {
|
||||
return this.isEmpty(this.ids) || this.isEmpty(this.isActives) || this.isEmpty(this.sources) ||this.isEmpty(this.excludedIds) || this.isEmpty(this.referenceTypes) || this.isEmpty(this.referenceSourceTypes)|| this.isFalseQuery(this.dmpReferenceQuery);
|
||||
return this.isEmpty(this.ids) || this.isEmpty(this.isActives) || this.isEmpty(this.sources) ||this.isEmpty(this.excludedIds) || this.isEmpty(this.typeIds) || this.isEmpty(this.referenceSourceTypes)|| this.isFalseQuery(this.dmpReferenceQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -223,9 +205,9 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
inClause.value(item);
|
||||
predicates.add(inClause);
|
||||
}
|
||||
if (this.referenceTypes != null) {
|
||||
CriteriaBuilder.In<ReferenceType> inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(ReferenceEntity._type));
|
||||
for (ReferenceType item : this.referenceTypes)
|
||||
if (this.typeIds != null) {
|
||||
CriteriaBuilder.In<UUID> inClause = queryContext.CriteriaBuilder.in(queryContext.Root.get(ReferenceEntity._typeId));
|
||||
for (UUID item : this.typeIds)
|
||||
inClause.value(item);
|
||||
predicates.add(inClause);
|
||||
}
|
||||
|
@ -273,7 +255,7 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
item.setReference(QueryBase.convertSafe(tuple, columns, ReferenceEntity._reference, String.class));
|
||||
item.setSource(QueryBase.convertSafe(tuple, columns, ReferenceEntity._source, String.class));
|
||||
item.setSourceType(QueryBase.convertSafe(tuple, columns, ReferenceEntity._sourceType, ReferenceSourceType.class));
|
||||
item.setType(QueryBase.convertSafe(tuple, columns, ReferenceEntity._type, ReferenceType.class));
|
||||
item.setTypeId(QueryBase.convertSafe(tuple, columns, ReferenceEntity._typeId, UUID.class));
|
||||
item.setCreatedById(QueryBase.convertSafe(tuple, columns, ReferenceEntity._createdById, UUID.class));
|
||||
return item;
|
||||
}
|
||||
|
@ -292,7 +274,8 @@ public class ReferenceQuery extends QueryBase<ReferenceEntity> {
|
|||
else if (item.match(Reference._reference) || item.match(PublicReference._reference)) return ReferenceEntity._reference;
|
||||
else if (item.match(Reference._source)) return ReferenceEntity._source;
|
||||
else if (item.match(Reference._sourceType)) return ReferenceEntity._sourceType;
|
||||
else if (item.match(Reference._type) || item.match(PublicReference._type)) return ReferenceEntity._type;
|
||||
else if (item.match(Reference._type) || item.match(PublicReference._type)) return ReferenceEntity._typeId;
|
||||
else if (item.prefix(Reference._type) || item.prefix(PublicReference._type)) return ReferenceEntity._typeId;
|
||||
else if (item.prefix(Reference._createdBy)) return ReferenceEntity._createdById;
|
||||
else return null;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class ReferenceDefinitionSearchLookup extends Lookup {
|
|||
|
||||
public ReferenceQuery enrich(QueryFactory queryFactory) {
|
||||
ReferenceQuery query = queryFactory.query(ReferenceQuery.class);
|
||||
if (this.referenceTypeId != null) query.referenceTypeIds(this.referenceTypeId);
|
||||
if (this.referenceTypeId != null) query.typeIds(this.referenceTypeId);
|
||||
|
||||
this.enrichCommon(query);
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package eu.eudat.query.lookup;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.query.ReferenceQuery;
|
||||
|
@ -19,7 +18,7 @@ public class ReferenceLookup extends Lookup {
|
|||
|
||||
private Collection<ReferenceSourceType> sourceTypes;
|
||||
|
||||
private Collection<ReferenceType> types;
|
||||
private Collection<UUID> typeIds;
|
||||
|
||||
private List<UUID> ids;
|
||||
|
||||
|
@ -65,19 +64,19 @@ public class ReferenceLookup extends Lookup {
|
|||
this.sourceTypes = sourceTypes;
|
||||
}
|
||||
|
||||
public Collection<ReferenceType> getTypes() {
|
||||
return types;
|
||||
public Collection<UUID> getTypeIds() {
|
||||
return typeIds;
|
||||
}
|
||||
|
||||
public void setTypes(Collection<ReferenceType> types) {
|
||||
this.types = types;
|
||||
public void setTypeIds(Collection<UUID> typeIds) {
|
||||
this.typeIds = typeIds;
|
||||
}
|
||||
|
||||
public ReferenceQuery enrich(QueryFactory queryFactory) {
|
||||
ReferenceQuery query = queryFactory.query(ReferenceQuery.class);
|
||||
if (this.like != null) query.like(this.like);
|
||||
if (this.isActive != null) query.isActive(this.isActive);
|
||||
if (this.types != null) query.types(this.types);
|
||||
if (this.typeIds != null) query.typeIds(this.typeIds);
|
||||
if (this.sourceTypes != null) query.sourceTypes(this.sourceTypes);
|
||||
if (this.ids != null) query.ids(this.ids);
|
||||
if (this.excludedIds != null) query.excludedIds(this.excludedIds);
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package eu.eudat.query.lookup;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.query.ReferenceQuery;
|
||||
import gr.cite.tools.data.query.Lookup;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ReferenceSearchLookup extends Lookup {
|
||||
|
||||
private String like;
|
||||
|
||||
private ReferenceType type;
|
||||
private UUID typeId;
|
||||
|
||||
private String key;
|
||||
|
||||
|
@ -21,12 +22,12 @@ public class ReferenceSearchLookup extends Lookup {
|
|||
this.like = like;
|
||||
}
|
||||
|
||||
public ReferenceType getType() {
|
||||
return type;
|
||||
public UUID getTypeId() {
|
||||
return typeId;
|
||||
}
|
||||
|
||||
public void setType(ReferenceType type) {
|
||||
this.type = type;
|
||||
public void setTypeId(UUID typeId) {
|
||||
this.typeId = typeId;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
|
@ -39,7 +40,7 @@ public class ReferenceSearchLookup extends Lookup {
|
|||
|
||||
public ReferenceQuery enrich(QueryFactory queryFactory) {
|
||||
ReferenceQuery query = queryFactory.query(ReferenceQuery.class);
|
||||
if (this.type != null) query.types(this.type);
|
||||
if (this.typeId != null) query.typeIds(this.typeId);
|
||||
|
||||
this.enrichCommon(query);
|
||||
|
||||
|
|
|
@ -1,14 +1,10 @@
|
|||
package eu.eudat.query.lookup;
|
||||
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.commons.enums.ReferenceSourceType;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.query.ReferenceQuery;
|
||||
import eu.eudat.query.ReferenceTypeQuery;
|
||||
import gr.cite.tools.data.query.Lookup;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
|
|
|
@ -6,13 +6,13 @@ import eu.eudat.authorization.Permission;
|
|||
import eu.eudat.commons.JsonHandlingService;
|
||||
import eu.eudat.commons.XmlHandlingService;
|
||||
import eu.eudat.commons.enums.*;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.scope.user.UserScope;
|
||||
import eu.eudat.commons.types.dashborad.RecentActivityItemEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import eu.eudat.event.EventBroker;
|
||||
import eu.eudat.model.*;
|
||||
import eu.eudat.model.builder.PublicReferenceTypeBuilder;
|
||||
import eu.eudat.model.builder.RecentActivityItemBuilder;
|
||||
import eu.eudat.model.result.QueryResult;
|
||||
import eu.eudat.query.*;
|
||||
|
@ -43,59 +43,28 @@ public class DashboardServiceImpl implements DashboardService {
|
|||
|
||||
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(DashboardServiceImpl.class));
|
||||
|
||||
private final EntityManager entityManager;
|
||||
|
||||
private final AuthorizationService authorizationService;
|
||||
|
||||
private final DeleterFactory deleterFactory;
|
||||
|
||||
private final BuilderFactory builderFactory;
|
||||
|
||||
private final ConventionService conventionService;
|
||||
|
||||
private final ErrorThesaurusProperties errors;
|
||||
|
||||
private final MessageSource messageSource;
|
||||
|
||||
private final EventBroker eventBroker;
|
||||
|
||||
private final AuthorizationService authorizationService;
|
||||
private final BuilderFactory builderFactory;
|
||||
private final QueryFactory queryFactory;
|
||||
|
||||
private final JsonHandlingService jsonHandlingService;
|
||||
|
||||
private final UserScope userScope;
|
||||
private final XmlHandlingService xmlHandlingService;
|
||||
|
||||
private final DashboardServiceProperties config;
|
||||
private final ElasticQueryHelperService elasticQueryHelperService;
|
||||
|
||||
private final DashboardStatisticsCacheService dashboardStatisticsCacheService;
|
||||
@Autowired
|
||||
public DashboardServiceImpl(
|
||||
EntityManager entityManager,
|
||||
AuthorizationService authorizationService,
|
||||
DeleterFactory deleterFactory,
|
||||
BuilderFactory builderFactory,
|
||||
ConventionService conventionService,
|
||||
ErrorThesaurusProperties errors,
|
||||
MessageSource messageSource,
|
||||
EventBroker eventBroker,
|
||||
QueryFactory queryFactory,
|
||||
JsonHandlingService jsonHandlingService,
|
||||
UserScope userScope,
|
||||
XmlHandlingService xmlHandlingService, ElasticQueryHelperService elasticQueryHelperService, DashboardStatisticsCacheService dashboardStatisticsCacheService) {
|
||||
this.entityManager = entityManager;
|
||||
this.authorizationService = authorizationService;
|
||||
this.deleterFactory = deleterFactory;
|
||||
ConventionService conventionService, AuthorizationService authorizationService,
|
||||
BuilderFactory builderFactory,
|
||||
QueryFactory queryFactory,
|
||||
UserScope userScope,
|
||||
DashboardServiceProperties config, ElasticQueryHelperService elasticQueryHelperService, DashboardStatisticsCacheService dashboardStatisticsCacheService) {
|
||||
this.conventionService = conventionService;
|
||||
this.authorizationService = authorizationService;
|
||||
this.builderFactory = builderFactory;
|
||||
this.conventionService = conventionService;
|
||||
this.errors = errors;
|
||||
this.messageSource = messageSource;
|
||||
this.eventBroker = eventBroker;
|
||||
this.queryFactory = queryFactory;
|
||||
this.jsonHandlingService = jsonHandlingService;
|
||||
this.userScope = userScope;
|
||||
this.xmlHandlingService = xmlHandlingService;
|
||||
this.elasticQueryHelperService = elasticQueryHelperService;
|
||||
this.config = config;
|
||||
this.elasticQueryHelperService = elasticQueryHelperService;
|
||||
this.dashboardStatisticsCacheService = dashboardStatisticsCacheService;
|
||||
}
|
||||
|
||||
|
@ -146,12 +115,19 @@ public class DashboardServiceImpl implements DashboardService {
|
|||
DashboardStatistics statistics = new DashboardStatistics();
|
||||
statistics.setDmpCount(dmpQuery.authorize(EnumSet.of(Public)).count());
|
||||
statistics.setDescriptionCount(this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).dmpSubQuery(dmpQuery).statuses(DescriptionStatus.Finalized).authorize(EnumSet.of(Public)).count());
|
||||
statistics.setOrganizationCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).types(ReferenceType.Organizations).authorize(EnumSet.of(Public))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
statistics.setGrantCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).types(ReferenceType.Grants).authorize(EnumSet.of(Public))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
|
||||
statistics.setReferenceTypeStatistics(new ArrayList<>());
|
||||
if (!this.conventionService.isListNullOrEmpty(this.config.getReferenceTypeCounters())){
|
||||
for (UUID typeId : this.config.getReferenceTypeCounters()){
|
||||
DashboardReferenceTypeStatistics referenceTypeStatistics = new DashboardReferenceTypeStatistics();
|
||||
referenceTypeStatistics.setCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).typeIds(typeId).authorize(EnumSet.of(Public))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
referenceTypeStatistics.setReferenceType(this.builderFactory.builder(PublicReferenceTypeBuilder.class).build(new BaseFieldSet().ensure(PublicReferenceType._name), this.queryFactory.query(ReferenceTypeQuery.class).ids(typeId).first()));
|
||||
statistics.getReferenceTypeStatistics().add(referenceTypeStatistics);
|
||||
}
|
||||
}
|
||||
|
||||
cacheValue = new DashboardStatisticsCacheService.DashboardStatisticsCacheValue();
|
||||
cacheValue.setPublic(true);
|
||||
cacheValue.setDashboardStatistics(statistics);
|
||||
|
@ -175,13 +151,18 @@ public class DashboardServiceImpl implements DashboardService {
|
|||
DashboardStatistics statistics = new DashboardStatistics();
|
||||
statistics.setDmpCount(dmpQuery.authorize(EnumSet.of(AuthorizationFlags.DmpAssociated)).count());
|
||||
statistics.setDescriptionCount(this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).dmpSubQuery(dmpQuery).statuses(DescriptionStatus.Finalized).authorize(EnumSet.of(AuthorizationFlags.DmpAssociated)).count());
|
||||
statistics.setOrganizationCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).types(ReferenceType.Organizations).authorize(EnumSet.of(Owner))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
statistics.setGrantCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).types(ReferenceType.Grants).authorize(EnumSet.of(Owner))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
|
||||
statistics.setReferenceTypeStatistics(new ArrayList<>());
|
||||
if (!this.conventionService.isListNullOrEmpty(this.config.getReferenceTypeCounters())){
|
||||
for (UUID typeId : this.config.getReferenceTypeCounters()){
|
||||
DashboardReferenceTypeStatistics referenceTypeStatistics = new DashboardReferenceTypeStatistics();
|
||||
referenceTypeStatistics.setCount(this.queryFactory.query(ReferenceQuery.class).isActive(IsActive.Active).typeIds(typeId).authorize(EnumSet.of(Owner))
|
||||
.dmpReferenceSubQuery(this.queryFactory.query(DmpReferenceQuery.class).isActives(IsActive.Active)
|
||||
.dmpSubQuery(dmpQuery)).count());
|
||||
referenceTypeStatistics.setReferenceType(this.builderFactory.builder(PublicReferenceTypeBuilder.class).build(new BaseFieldSet().ensure(PublicReferenceType._name), this.queryFactory.query(ReferenceTypeQuery.class).ids(typeId).first()));
|
||||
statistics.getReferenceTypeStatistics().add(referenceTypeStatistics);
|
||||
}
|
||||
}
|
||||
cacheValue = new DashboardStatisticsCacheService.DashboardStatisticsCacheValue(this.userScope.getUserId());
|
||||
cacheValue.setPublic(false);
|
||||
cacheValue.setDashboardStatistics(statistics);
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
package eu.eudat.service.dashborad;
|
||||
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@ConfigurationProperties(prefix = "dashboard")
|
||||
public class DashboardServiceProperties {
|
||||
private List<UUID> referenceTypeCounters;
|
||||
|
||||
public List<UUID> getReferenceTypeCounters() {
|
||||
return referenceTypeCounters;
|
||||
}
|
||||
|
||||
public void setReferenceTypeCounters(List<UUID> referenceTypeCounters) {
|
||||
this.referenceTypeCounters = referenceTypeCounters;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package eu.eudat.service.dashborad;
|
||||
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(DashboardServiceProperties.class)
|
||||
public class PublicApiConfiguration {
|
||||
|
||||
}
|
|
@ -5,12 +5,12 @@ import eu.eudat.authorization.Permission;
|
|||
import eu.eudat.commons.JsonHandlingService;
|
||||
import eu.eudat.commons.XmlHandlingService;
|
||||
import eu.eudat.commons.enums.*;
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.enums.notification.NotificationContactType;
|
||||
import eu.eudat.commons.scope.user.UserScope;
|
||||
import eu.eudat.commons.types.description.*;
|
||||
import eu.eudat.commons.types.descriptionreference.DescriptionReferenceDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.FieldSetEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ReferenceTypeDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.UploadDataEntity;
|
||||
import eu.eudat.commons.types.notification.*;
|
||||
import eu.eudat.commons.types.reference.DefinitionEntity;
|
||||
|
@ -184,7 +184,7 @@ public class DescriptionServiceImpl implements DescriptionService {
|
|||
this.entityManager.flush();
|
||||
|
||||
eu.eudat.commons.types.descriptiontemplate.DefinitionEntity definition = this.xmlHandlingService.fromXmlSafe(eu.eudat.commons.types.descriptiontemplate.DefinitionEntity.class, descriptionTemplateEntity.getDefinition());
|
||||
Map<String, List<UUID>> fieldToReferenceMap = this.patchAndSaveReferences(this.buildDescriptionReferencePersists(model.getProperties()), data.getId());
|
||||
Map<String, List<UUID>> fieldToReferenceMap = this.patchAndSaveReferences(this.buildDescriptionReferencePersists(model.getProperties()), data.getId(), definition);
|
||||
|
||||
this.entityManager.flush();
|
||||
|
||||
|
@ -424,12 +424,6 @@ public class DescriptionServiceImpl implements DescriptionService {
|
|||
for (UUID id : ids){
|
||||
if (!existingIds.contains(id)) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Description.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
}
|
||||
} if (FieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS.equals(fieldType) && !this.conventionService.isListNullOrEmpty(persist.getTextListValue())){
|
||||
List<UUID> ids = persist.getTextListValue().stream().map(UUID::fromString).toList();
|
||||
Set<UUID> existingIds = this.queryFactory.query(ReferenceQuery.class).ids(ids).types(ReferenceType.Researcher).isActive(IsActive.Active).collectAs(new BaseFieldSet().ensure(Reference._id)).stream().map(ReferenceEntity::getId).collect(Collectors.toSet());
|
||||
for (UUID id : ids){
|
||||
if (!existingIds.contains(id)) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{id, Reference.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
}
|
||||
}
|
||||
data.setTextListValue(persist.getTextListValue());
|
||||
}
|
||||
|
@ -483,7 +477,7 @@ public class DescriptionServiceImpl implements DescriptionService {
|
|||
}
|
||||
}
|
||||
|
||||
private Map<String, List<UUID>> patchAndSaveReferences(List<DescriptionReferencePersist> models, UUID descriptionId) throws InvalidApplicationException {
|
||||
private Map<String, List<UUID>> patchAndSaveReferences(List<DescriptionReferencePersist> models, UUID descriptionId, eu.eudat.commons.types.descriptiontemplate.DefinitionEntity definition) throws InvalidApplicationException {
|
||||
if (models == null) models = new ArrayList<>();
|
||||
|
||||
Map<String, List<UUID>> fieldToReferenceMap = new HashMap<>();
|
||||
|
@ -512,13 +506,16 @@ public class DescriptionServiceImpl implements DescriptionService {
|
|||
referenceEntity = this.entityManager.find(ReferenceEntity.class, referencePersist.getId());
|
||||
if (referenceEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{referencePersist.getId(), Reference.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
} else {
|
||||
referenceEntity = this.queryFactory.query(ReferenceQuery.class).sourceTypes(referencePersist.getSourceType()).sources(referencePersist.getSource()).isActive(IsActive.Active).references(referencePersist.getReference()).first();
|
||||
ReferenceTypeDataEntity fieldEntity = definition.getFieldById(model.getData().getFieldId()).stream().filter(x-> x.getData() != null && x.getData().getFieldType().equals(FieldType.REFERENCE_TYPES)).map(x-> (ReferenceTypeDataEntity)x.getData()).findFirst().orElse(null);
|
||||
if (fieldEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getData().getFieldId(), ReferenceTypeDataEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
referenceEntity = this.queryFactory.query(ReferenceQuery.class).sourceTypes(referencePersist.getSourceType()).typeIds(fieldEntity.getReferenceTypeId()).sources(referencePersist.getSource()).isActive(IsActive.Active).references(referencePersist.getReference()).first();
|
||||
if (referenceEntity == null){
|
||||
referenceEntity = new ReferenceEntity();
|
||||
referenceEntity.setId(UUID.randomUUID());
|
||||
referenceEntity.setIsActive(IsActive.Active);
|
||||
referenceEntity.setCreatedAt(Instant.now());
|
||||
referenceEntity.setType(referencePersist.getType());
|
||||
referenceEntity.setTypeId(fieldEntity.getReferenceTypeId());
|
||||
|
||||
referenceEntity.setDefinition(this.xmlHandlingService.toXmlSafe(this.buildDefinitionEntity(referencePersist.getDefinition())));
|
||||
referenceEntity.setUpdatedAt(Instant.now());
|
||||
|
|
|
@ -12,6 +12,7 @@ import eu.eudat.commons.types.actionconfirmation.DmpInvitationEntity;
|
|||
import eu.eudat.commons.types.dmp.DmpBlueprintValueEntity;
|
||||
import eu.eudat.commons.types.dmp.DmpContactEntity;
|
||||
import eu.eudat.commons.types.dmp.DmpPropertiesEntity;
|
||||
import eu.eudat.commons.types.dmpblueprint.ReferenceFieldEntity;
|
||||
import eu.eudat.commons.types.dmpreference.DmpReferenceDataEntity;
|
||||
import eu.eudat.commons.types.notification.*;
|
||||
import eu.eudat.commons.types.reference.DefinitionEntity;
|
||||
|
@ -24,10 +25,7 @@ import eu.eudat.event.DmpTouchedEvent;
|
|||
import eu.eudat.event.EventBroker;
|
||||
import eu.eudat.integrationevent.outbox.notification.NotifyIntegrationEvent;
|
||||
import eu.eudat.integrationevent.outbox.notification.NotifyIntegrationEventHandler;
|
||||
import eu.eudat.model.Dmp;
|
||||
import eu.eudat.model.DmpUser;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.UserContactInfo;
|
||||
import eu.eudat.model.*;
|
||||
import eu.eudat.model.builder.DmpBuilder;
|
||||
import eu.eudat.model.builder.DmpUserBuilder;
|
||||
import eu.eudat.model.deleter.*;
|
||||
|
@ -169,7 +167,12 @@ public class DmpServiceImpl implements DmpService {
|
|||
|
||||
DmpEntity data = this.patchAndSave(model);
|
||||
|
||||
this.patchAndSaveReferences(this.buildDmpReferencePersists(model.getProperties()), data.getId());
|
||||
DmpBlueprintEntity blueprintEntity = this.entityManager.find(DmpBlueprintEntity.class, data.getBlueprintId());
|
||||
if (blueprintEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{data.getBlueprintId(), DmpBlueprint.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
eu.eudat.commons.types.dmpblueprint.DefinitionEntity definition = this.xmlHandlingService.fromXmlSafe(eu.eudat.commons.types.dmpblueprint.DefinitionEntity.class, blueprintEntity.getDefinition());
|
||||
if (definition == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{data.getBlueprintId(), eu.eudat.commons.types.dmpblueprint.DefinitionEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
this.patchAndSaveReferences(this.buildDmpReferencePersists(model.getProperties()), data.getId(), definition);
|
||||
|
||||
this.patchAndSaveTemplates(data.getId(), model.getDescriptionTemplates());
|
||||
|
||||
|
@ -620,7 +623,7 @@ public class DmpServiceImpl implements DmpService {
|
|||
return dmpReferencePersists;
|
||||
}
|
||||
|
||||
private void patchAndSaveReferences(List<DmpReferencePersist> models, UUID dmpId) throws InvalidApplicationException {
|
||||
private void patchAndSaveReferences(List<DmpReferencePersist> models, UUID dmpId, eu.eudat.commons.types.dmpblueprint.DefinitionEntity blueprintDefinition) throws InvalidApplicationException {
|
||||
if (models == null) models = new ArrayList<>();
|
||||
|
||||
List<DmpReferenceEntity> dmpReferences = this.queryFactory.query(DmpReferenceQuery.class).dmpIds(dmpId).collect();
|
||||
|
@ -647,13 +650,16 @@ public class DmpServiceImpl implements DmpService {
|
|||
referenceEntity = this.entityManager.find(ReferenceEntity.class, referencePersist.getId());
|
||||
if (referenceEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{referencePersist.getId(), Reference.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
} else {
|
||||
referenceEntity = this.queryFactory.query(ReferenceQuery.class).sourceTypes(referencePersist.getSourceType()).sources(referencePersist.getSource()).isActive(IsActive.Active).references(referencePersist.getReference()).first();
|
||||
ReferenceFieldEntity fieldEntity = blueprintDefinition.getFieldById(model.getData().getBlueprintFieldId()).stream().filter(x-> x.getCategory().equals(DmpBlueprintFieldCategory.Reference)).map(x-> (ReferenceFieldEntity)x).findFirst().orElse(null);
|
||||
if (fieldEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{model.getData().getBlueprintFieldId(), ReferenceFieldEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
referenceEntity = this.queryFactory.query(ReferenceQuery.class).sourceTypes(referencePersist.getSourceType()).typeIds(fieldEntity.getReferenceTypeId()).sources(referencePersist.getSource()).isActive(IsActive.Active).references(referencePersist.getReference()).first();
|
||||
if (referenceEntity == null){
|
||||
referenceEntity = new ReferenceEntity();
|
||||
referenceEntity.setId(UUID.randomUUID());
|
||||
referenceEntity.setIsActive(IsActive.Active);
|
||||
referenceEntity.setCreatedAt(Instant.now());
|
||||
referenceEntity.setType(referencePersist.getType());
|
||||
referenceEntity.setTypeId(fieldEntity.getReferenceTypeId());
|
||||
|
||||
referenceEntity.setDefinition(this.xmlHandlingService.toXmlSafe(this.buildDefinitionEntity(referencePersist.getDefinition())));
|
||||
referenceEntity.setUpdatedAt(Instant.now());
|
||||
|
|
|
@ -19,7 +19,6 @@ import eu.eudat.model.dmpblueprintdefinition.Section;
|
|||
import eu.eudat.model.persist.DmpBlueprintPersist;
|
||||
import eu.eudat.model.persist.NewVersionDmpBlueprintPersist;
|
||||
import eu.eudat.model.persist.dmpblueprintdefinition.*;
|
||||
import eu.eudat.query.DescriptionTemplateQuery;
|
||||
import eu.eudat.query.DmpBlueprintQuery;
|
||||
import eu.eudat.service.responseutils.ResponseUtilsService;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
|
@ -37,7 +36,6 @@ import gr.cite.tools.logging.MapLogEntry;
|
|||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.xml.bind.JAXBException;
|
||||
import org.apache.bcel.generic.DADD;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -252,15 +250,26 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
if (persist == null)
|
||||
return new ExtraFieldEntity();
|
||||
FieldEntity data;
|
||||
if (DmpBlueprintFieldCategory.Extra.equals(persist.getCategory())) {
|
||||
ExtraFieldEntity dataTyped = new ExtraFieldEntity();
|
||||
dataTyped.setType(((ExtraFieldPersist) persist).getDataType());
|
||||
data = dataTyped;
|
||||
} else {
|
||||
SystemFieldEntity dataTyped = new SystemFieldEntity();
|
||||
dataTyped.setType(((SystemFieldPersist) persist).getSystemFieldType());
|
||||
data = dataTyped;
|
||||
|
||||
switch (persist.getCategory()){
|
||||
case Extra -> {
|
||||
ExtraFieldEntity dataTyped = new ExtraFieldEntity();
|
||||
dataTyped.setType(((ExtraFieldPersist) persist).getDataType());
|
||||
data = dataTyped;
|
||||
}
|
||||
case System -> {
|
||||
SystemFieldEntity dataTyped = new SystemFieldEntity();
|
||||
dataTyped.setType(((SystemFieldPersist) persist).getSystemFieldType());
|
||||
data = dataTyped;
|
||||
}
|
||||
case Reference -> {
|
||||
ReferenceFieldEntity dataTyped = new ReferenceFieldEntity();
|
||||
dataTyped.setReferenceTypeId(((ReferenceFieldPersist) persist).getReferenceTypeId());
|
||||
data = dataTyped;
|
||||
}
|
||||
default -> throw new InternalError("unknown type: " + persist.getCategory());
|
||||
}
|
||||
|
||||
data.setId(persist.getId());
|
||||
data.setCategory(persist.getCategory());
|
||||
data.setLabel(persist.getLabel());
|
||||
|
@ -472,6 +481,7 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
}
|
||||
}
|
||||
xml.setSystemFields(dmpBlueprintSystemFieldModels);
|
||||
|
||||
List<ExtraFieldImportExport> dmpBlueprintExtraFieldModels = new LinkedList<>();
|
||||
if (!this.conventionService.isListNullOrEmpty(entity.getFields())) {
|
||||
for (ExtraFieldEntity systemField : entity.getFields().stream().filter(x -> x.getCategory() == DmpBlueprintFieldCategory.Extra).map(x -> (ExtraFieldEntity) x).toList()) {
|
||||
|
@ -480,6 +490,14 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
}
|
||||
xml.setExtraFields(dmpBlueprintExtraFieldModels);
|
||||
|
||||
List<ReferenceFieldImportExport> dmpBlueprintReferenceFieldModels = new LinkedList<>();
|
||||
if (!this.conventionService.isListNullOrEmpty(entity.getFields())) {
|
||||
for (ReferenceFieldEntity referenceFieldEntity : entity.getFields().stream().filter(x -> x.getCategory() == DmpBlueprintFieldCategory.Reference).map(x -> (ReferenceFieldEntity) x).toList()) {
|
||||
dmpBlueprintReferenceFieldModels.add(this.referenceFieldXmlToExport(referenceFieldEntity));
|
||||
}
|
||||
}
|
||||
xml.setReferenceFields(dmpBlueprintReferenceFieldModels);
|
||||
|
||||
List<DescriptionTemplateImportExport> dmpBlueprintDescriptionTemplates = new LinkedList<>();
|
||||
if (!this.conventionService.isListNullOrEmpty(entity.getDescriptionTemplates())) {
|
||||
for (DescriptionTemplateEntity descriptionTemplate : entity.getDescriptionTemplates()) {
|
||||
|
@ -511,6 +529,18 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
return xml;
|
||||
}
|
||||
|
||||
private ReferenceFieldImportExport referenceFieldXmlToExport(ReferenceFieldEntity entity) {
|
||||
ReferenceFieldImportExport xml = new ReferenceFieldImportExport();
|
||||
xml.setId(entity.getId());
|
||||
xml.setReferenceTypeId(entity.getReferenceTypeId());
|
||||
xml.setLabel(entity.getLabel());
|
||||
xml.setPlaceholder(entity.getPlaceholder());
|
||||
xml.setDescription(entity.getDescription());
|
||||
xml.setOrdinal(entity.getOrdinal());
|
||||
xml.setRequired(entity.isRequired());
|
||||
return xml;
|
||||
}
|
||||
|
||||
private SystemFieldImportExport systemFieldXmlToExport(SystemFieldEntity entity) {
|
||||
SystemFieldImportExport xml = new SystemFieldImportExport();
|
||||
xml.setId(entity.getId());
|
||||
|
@ -572,6 +602,11 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
dmpBlueprintFieldModels.add(this.xmlSystemFieldToPersist(systemField));
|
||||
}
|
||||
}
|
||||
if (!this.conventionService.isListNullOrEmpty(importXml.getReferenceFields())) {
|
||||
for (ReferenceFieldImportExport referenceField : importXml.getReferenceFields()) {
|
||||
dmpBlueprintFieldModels.add(this.xmlReferenceFieldToPersist(referenceField));
|
||||
}
|
||||
}
|
||||
if (!this.conventionService.isListNullOrEmpty(importXml.getExtraFields())) {
|
||||
for (ExtraFieldImportExport extraField : importXml.getExtraFields()) {
|
||||
dmpBlueprintFieldModels.add(this.xmlExtraFieldToPersist(extraField));
|
||||
|
@ -623,6 +658,19 @@ public class DmpBlueprintServiceImpl implements DmpBlueprintService {
|
|||
return persist;
|
||||
}
|
||||
|
||||
private FieldPersist xmlReferenceFieldToPersist(ReferenceFieldImportExport importXml) {
|
||||
ReferenceFieldPersist persist = new ReferenceFieldPersist();
|
||||
persist.setId(importXml.getId());
|
||||
persist.setCategory(DmpBlueprintFieldCategory.Reference);
|
||||
persist.setReferenceTypeId(importXml.getReferenceTypeId());
|
||||
persist.setLabel(importXml.getLabel());
|
||||
persist.setPlaceholder(importXml.getPlaceholder());
|
||||
persist.setDescription(importXml.getDescription());
|
||||
persist.setOrdinal(importXml.getOrdinal());
|
||||
persist.setRequired(importXml.isRequired());
|
||||
return persist;
|
||||
}
|
||||
|
||||
//endregion
|
||||
}
|
||||
|
||||
|
|
|
@ -1,236 +0,0 @@
|
|||
package eu.eudat.service.fielddatahelper;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ExternalSelectDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.importexport.fielddata.*;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.descriptiontemplatedefinition.fielddata.ExternalSelectDataBuilder;
|
||||
import eu.eudat.model.descriptiontemplatedefinition.fielddata.ExternalSelectData;
|
||||
import eu.eudat.model.persist.descriptiontemplatedefinition.fielddata.*;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.validation.Validator;
|
||||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ExternalSelectFieldDataHelperService extends BaseFieldDataHelperService<ExternalSelectData, ExternalSelectDataPersist, ExternalSelectDataEntity, ExternalSelectImportExport> {
|
||||
private final ConventionService conventionService;
|
||||
private final BuilderFactory builderFactory;
|
||||
private final ValidatorFactory validatorFactory;
|
||||
|
||||
public ExternalSelectFieldDataHelperService(ConventionService conventionService, BuilderFactory builderFactory, ValidatorFactory validatorFactory) {
|
||||
this.conventionService = conventionService;
|
||||
this.builderFactory = builderFactory;
|
||||
this.validatorFactory = validatorFactory;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ExternalSelectDataEntity newDataInstanceInternal() {
|
||||
return new ExternalSelectDataEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalSelectData newModelInstanceInternal() {
|
||||
return new ExternalSelectData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExternalSelectDataPersist newPersistModelInstanceInternal() {
|
||||
return new ExternalSelectDataPersist();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExternalSelectImportExport newImportExportInstanceInternal() {
|
||||
return new ExternalSelectImportExport();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getDataClass() {
|
||||
return ExternalSelectDataEntity.class;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getModelClass() {
|
||||
return ExternalSelectData.class;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getPersistModelClass() {
|
||||
return ExternalSelectDataPersist.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getImportExportClass() {
|
||||
return ExternalSelectImportExport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validator getPersistModelValidator() {
|
||||
return this.validatorFactory.validator(ExternalSelectDataPersist.AutoCompleteDataPersistValidator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExternalSelectData> buildInternal(FieldSet fieldSet, List<ExternalSelectDataEntity> data, EnumSet<AuthorizationFlags> authorizationFlags){
|
||||
return this.builderFactory.builder(ExternalSelectDataBuilder.class).authorize(authorizationFlags).build(fieldSet, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExternalSelectDataEntity applyPersistInternal(ExternalSelectDataPersist persist, ExternalSelectDataEntity data) {
|
||||
data.setMultipleSelect(persist.getMultipleSelect());
|
||||
if (!this.conventionService.isListNullOrEmpty(persist.getSources())){
|
||||
data.setSources(new ArrayList<>());
|
||||
for (ExternalSelectDataPersist.ExternalSelectSourcePersist sourcePersist: persist.getSources()) {
|
||||
data.getSources().add(this.buildAutoCompleteSingleData(sourcePersist));
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataEntity.ExternalSelectSourceEntity buildAutoCompleteSingleData(ExternalSelectDataPersist.ExternalSelectSourcePersist persist){
|
||||
ExternalSelectDataEntity.ExternalSelectSourceEntity data = new ExternalSelectDataEntity.ExternalSelectSourceEntity();
|
||||
if (persist == null) return data;
|
||||
|
||||
data.setUrl(persist.getUrl());
|
||||
data.setOptionsRoot(persist.getOptionsRoot());
|
||||
data.setHasAuth(persist.getHasAuth());
|
||||
if(persist.getSourceBinding() != null) data.setSourceBinding(this.buildOption(persist.getSourceBinding()));
|
||||
if(persist.getAuth() != null) data.setAuth(this.buildAuthAutoCompleteData(persist.getAuth()));
|
||||
data.setMethod(persist.getMethod());
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataEntity.ExternalSelectSourceBindingEntity buildOption(ExternalSelectDataPersist.ExternalSelectSourceBindingPersist persist){
|
||||
ExternalSelectDataEntity.ExternalSelectSourceBindingEntity data = new ExternalSelectDataEntity.ExternalSelectSourceBindingEntity();
|
||||
if (persist == null) return data;
|
||||
|
||||
data.setLabel(persist.getLabel());
|
||||
data.setValue(persist.getValue());
|
||||
data.setSource(persist.getSource());
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataEntity.ExternalSelectAuthDataEntity buildAuthAutoCompleteData(ExternalSelectDataPersist.ExternalSelectAuthDataPersist persist){
|
||||
ExternalSelectDataEntity.ExternalSelectAuthDataEntity data = new ExternalSelectDataEntity.ExternalSelectAuthDataEntity();
|
||||
if (persist == null) return data;
|
||||
|
||||
data.setBody(persist.getBody());
|
||||
data.setUrl(persist.getUrl());
|
||||
data.setMethod(persist.getMethod());
|
||||
data.setPath(persist.getPath());
|
||||
data.setType(persist.getType());
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExternalSelectDataPersist importExportMapDataToPersistInternal(ExternalSelectImportExport data, ExternalSelectDataPersist persist) {
|
||||
persist.setMultipleSelect(data.getMultipleSelect());
|
||||
if (!this.conventionService.isListNullOrEmpty(data.getSources())){
|
||||
persist.setSources(new ArrayList<>());
|
||||
for (ExternalSelectImportExport.ExternalSelectSourceImportExport autoCompleteSingleData: data.getSources()) {
|
||||
persist.getSources().add(this.buildAutoCompleteSingleData(autoCompleteSingleData));
|
||||
}
|
||||
}
|
||||
return persist;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataPersist.ExternalSelectSourcePersist buildAutoCompleteSingleData(ExternalSelectImportExport.ExternalSelectSourceImportExport data){
|
||||
ExternalSelectDataPersist.ExternalSelectSourcePersist persist = new ExternalSelectDataPersist.ExternalSelectSourcePersist();
|
||||
if (data == null) return persist;
|
||||
|
||||
persist.setUrl(data.getUrl());
|
||||
persist.setOptionsRoot(data.getOptionsRoot());
|
||||
persist.setHasAuth(data.getHasAuth());
|
||||
if(data.getSourceBinding() != null) persist.setSourceBinding(this.buildOption(data.getSourceBinding()));
|
||||
if(data.getAuth() != null) persist.setAuth(this.buildAuthAutoCompleteData(data.getAuth()));
|
||||
persist.setMethod(data.getMethod());
|
||||
|
||||
return persist;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataPersist.ExternalSelectSourceBindingPersist buildOption(ExternalSelectImportExport.ExternalSelectSourceBindingImportExport data){
|
||||
ExternalSelectDataPersist.ExternalSelectSourceBindingPersist persist = new ExternalSelectDataPersist.ExternalSelectSourceBindingPersist();
|
||||
if (data == null) return persist;
|
||||
|
||||
persist.setLabel(data.getLabel());
|
||||
persist.setValue(data.getValue());
|
||||
persist.setSource(data.getSource());
|
||||
|
||||
return persist;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectDataPersist.ExternalSelectAuthDataPersist buildAuthAutoCompleteData(ExternalSelectImportExport.ExternalSelectAuthImportExport data){
|
||||
ExternalSelectDataPersist.ExternalSelectAuthDataPersist persist = new ExternalSelectDataPersist.ExternalSelectAuthDataPersist();
|
||||
if (data == null) return persist;
|
||||
|
||||
persist.setBody(data.getBody());
|
||||
persist.setUrl(data.getUrl());
|
||||
persist.setMethod(data.getMethod());
|
||||
persist.setPath(data.getPath());
|
||||
persist.setType(data.getType());
|
||||
|
||||
return persist;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ExternalSelectImportExport dataToImportExportXmlInternal(ExternalSelectDataEntity data, ExternalSelectImportExport xml) {
|
||||
xml.setMultipleSelect(data.getMultipleSelect());
|
||||
if (!this.conventionService.isListNullOrEmpty(data.getSources())){
|
||||
xml.setSources(new ArrayList<>());
|
||||
for (ExternalSelectDataEntity.ExternalSelectSourceEntity externalSelectSourceEntity : data.getSources()) {
|
||||
xml.getSources().add(this.buildAutoCompleteSingleData(externalSelectSourceEntity));
|
||||
}
|
||||
}
|
||||
return xml;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isMultiValueInternal(ExternalSelectDataEntity data) {
|
||||
return data.getMultipleSelect();
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectImportExport.ExternalSelectSourceImportExport buildAutoCompleteSingleData(ExternalSelectDataEntity.ExternalSelectSourceEntity data){
|
||||
ExternalSelectImportExport.ExternalSelectSourceImportExport xml = new ExternalSelectImportExport.ExternalSelectSourceImportExport();
|
||||
if (data == null) return xml;
|
||||
|
||||
xml.setUrl(data.getUrl());
|
||||
xml.setOptionsRoot(data.getOptionsRoot());
|
||||
xml.setHasAuth(data.getHasAuth());
|
||||
if(data.getSourceBinding() != null) xml.setSourceBinding(this.buildOption(data.getSourceBinding()));
|
||||
if(data.getAuth() != null) xml.setAuth(this.buildAuthAutoCompleteData(data.getAuth()));
|
||||
xml.setMethod(data.getMethod());
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectImportExport.ExternalSelectSourceBindingImportExport buildOption(ExternalSelectDataEntity.ExternalSelectSourceBindingEntity data){
|
||||
ExternalSelectImportExport.ExternalSelectSourceBindingImportExport xml = new ExternalSelectImportExport.ExternalSelectSourceBindingImportExport();
|
||||
if (data == null) return xml;
|
||||
|
||||
xml.setLabel(data.getLabel());
|
||||
xml.setValue(data.getValue());
|
||||
xml.setSource(data.getSource());
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
private @NotNull ExternalSelectImportExport.ExternalSelectAuthImportExport buildAuthAutoCompleteData(ExternalSelectDataEntity.ExternalSelectAuthDataEntity data){
|
||||
ExternalSelectImportExport.ExternalSelectAuthImportExport xml = new ExternalSelectImportExport.ExternalSelectAuthImportExport();
|
||||
if (data == null) return xml;
|
||||
|
||||
xml.setBody(data.getBody());
|
||||
xml.setUrl(data.getUrl());
|
||||
xml.setMethod(data.getMethod());
|
||||
xml.setPath(data.getPath());
|
||||
xml.setType(data.getType());
|
||||
|
||||
return xml;
|
||||
}
|
||||
}
|
|
@ -15,19 +15,8 @@ public class FieldDataHelperServiceProvider {
|
|||
BaseFieldDataHelperService<?, ?, ?, ? > item = null;
|
||||
|
||||
switch (type) {
|
||||
case DATA_REPOSITORIES:
|
||||
case PUB_REPOSITORIES:
|
||||
case JOURNAL_REPOSITORIES:
|
||||
case TAXONOMIES:
|
||||
case LICENSES:
|
||||
case PUBLICATIONS:
|
||||
case REGISTRIES:
|
||||
case SERVICES:
|
||||
case RESEARCHERS:
|
||||
case INTERNAL_DMP_ENTRIES_DATASETS:
|
||||
case INTERNAL_DMP_ENTRIES_DMPS:
|
||||
case INTERNAL_DMP_ENTRIES_RESEARCHERS:
|
||||
case ORGANIZATIONS: {
|
||||
case INTERNAL_DMP_ENTRIES_DMPS: {
|
||||
item = this.applicationContext.getBean(LabelAndMultiplicityFieldDataHelperService.class);
|
||||
break;
|
||||
}
|
||||
|
@ -60,8 +49,8 @@ public class FieldDataHelperServiceProvider {
|
|||
item = this.applicationContext.getBean(SelectFieldDataHelperService.class);
|
||||
break;
|
||||
}
|
||||
case EXTERNAL_SELECT: {
|
||||
item = this.applicationContext.getBean(ExternalSelectFieldDataHelperService.class);
|
||||
case REFERENCE_TYPES:{
|
||||
item = this.applicationContext.getBean(ReferenceTypeFieldDataHelperService.class);
|
||||
break;
|
||||
}
|
||||
default: throw new RuntimeException("unrecognized builder " + type.getValue());
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
package eu.eudat.service.fielddatahelper;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ReferenceTypeDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.importexport.fielddata.ReferenceTypeDataImportExport;
|
||||
import eu.eudat.model.builder.descriptiontemplatedefinition.fielddata.ReferenceTypeDataBuilder;
|
||||
import eu.eudat.model.descriptiontemplatedefinition.fielddata.ReferenceTypeData;
|
||||
import eu.eudat.model.persist.descriptiontemplatedefinition.fielddata.ReferenceTypeDataPersist;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.validation.Validator;
|
||||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ReferenceTypeFieldDataHelperService extends BaseFieldDataHelperService<ReferenceTypeData, ReferenceTypeDataPersist, ReferenceTypeDataEntity, ReferenceTypeDataImportExport> {
|
||||
|
||||
private final BuilderFactory builderFactory;
|
||||
|
||||
private final ValidatorFactory validatorFactory;
|
||||
public ReferenceTypeFieldDataHelperService(BuilderFactory builderFactory, ValidatorFactory validatorFactory) {
|
||||
this.builderFactory = builderFactory;
|
||||
this.validatorFactory = validatorFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceTypeDataEntity newDataInstanceInternal() {
|
||||
return new ReferenceTypeDataEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceTypeData newModelInstanceInternal() {
|
||||
return new ReferenceTypeData();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceTypeDataPersist newPersistModelInstanceInternal() {
|
||||
return new ReferenceTypeDataPersist();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReferenceTypeDataImportExport newImportExportInstanceInternal() {
|
||||
return new ReferenceTypeDataImportExport();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getDataClass() {
|
||||
return ReferenceTypeDataEntity.class;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getModelClass() {
|
||||
return ReferenceTypeData.class;
|
||||
}
|
||||
@Override
|
||||
public Class<?> getPersistModelClass() {
|
||||
return ReferenceTypeDataPersist.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getImportExportClass() {
|
||||
return ReferenceTypeDataImportExport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Validator getPersistModelValidator() {
|
||||
return this.validatorFactory.validator(ReferenceTypeDataPersist.ReferenceTypeDataPersistValidator.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReferenceTypeData> buildInternal(FieldSet fieldSet, List<ReferenceTypeDataEntity> data, EnumSet<AuthorizationFlags> authorizationFlags){
|
||||
return this.builderFactory.builder(ReferenceTypeDataBuilder.class).authorize(authorizationFlags).build(fieldSet, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReferenceTypeDataEntity applyPersistInternal(ReferenceTypeDataPersist persist, ReferenceTypeDataEntity data) {
|
||||
data.setMultipleSelect(persist.getMultipleSelect());
|
||||
data.setReferenceTypeId(persist.getReferenceTypeId());
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReferenceTypeDataPersist importExportMapDataToPersistInternal(ReferenceTypeDataImportExport data, ReferenceTypeDataPersist persist){
|
||||
persist.setMultipleSelect(data.getMultipleSelect());
|
||||
persist.setReferenceTypeId(data.getReferenceTypeId());
|
||||
return persist;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ReferenceTypeDataImportExport dataToImportExportXmlInternal(ReferenceTypeDataEntity data, ReferenceTypeDataImportExport xml) {
|
||||
xml.setMultipleSelect(data.getMultipleSelect());
|
||||
xml.setReferenceTypeId(data.getReferenceTypeId());
|
||||
return xml;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isMultiValueInternal(ReferenceTypeDataEntity data) {
|
||||
return data.getMultipleSelect();
|
||||
}
|
||||
}
|
|
@ -5,38 +5,23 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
|||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.JsonHandlingService;
|
||||
import eu.eudat.commons.XmlHandlingService;
|
||||
import eu.eudat.commons.enums.FieldType;
|
||||
import eu.eudat.commons.types.descriptiontemplate.FieldEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.FieldSetEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.ExternalSelectDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.LabelAndMultiplicityDataEntity;
|
||||
import eu.eudat.commons.types.descriptiontemplate.fielddata.SelectDataEntity;
|
||||
import eu.eudat.commons.types.prefilling.PrefillingEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.DescriptionTemplateEntity;
|
||||
import eu.eudat.data.ReferenceEntity;
|
||||
import eu.eudat.model.*;
|
||||
import eu.eudat.model.builder.DescriptionTemplateBuilder;
|
||||
import eu.eudat.model.builder.PrefillingBuilder;
|
||||
import eu.eudat.model.builder.ReferenceBuilder;
|
||||
import eu.eudat.model.descriptionproperties.Field;
|
||||
import eu.eudat.model.descriptionproperties.PropertyDefinition;
|
||||
import eu.eudat.model.descriptionproperties.PropertyDefinitionFieldSet;
|
||||
import eu.eudat.model.descriptionproperties.PropertyDefinitionFieldSetItem;
|
||||
import eu.eudat.model.persist.DescriptionProfilingRequest;
|
||||
import eu.eudat.model.persist.DescriptionProfilingWithDataRequest;
|
||||
import eu.eudat.query.ReferenceQuery;
|
||||
import eu.eudat.service.remotefetcher.ExternalUrlConfigProvider;
|
||||
import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
import eu.eudat.service.remotefetcher.config.AuthenticationConfiguration;
|
||||
import eu.eudat.service.remotefetcher.config.DataFieldsUrlConfiguration;
|
||||
import eu.eudat.service.remotefetcher.config.DataUrlConfiguration;
|
||||
import eu.eudat.service.remotefetcher.config.UrlConfiguration;
|
||||
import eu.eudat.service.remotefetcher.config.entities.*;
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import eu.eudat.service.remotefetcher.criteria.FetchStrategy;
|
||||
import eu.eudat.service.remotefetcher.models.ExternalAutocompleteFieldResult;
|
||||
import eu.eudat.utilities.helpers.StreamDistinctBy;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
|
@ -47,7 +32,6 @@ import gr.cite.tools.logging.MapLogEntry;
|
|||
import gr.cite.tools.validation.ValidatorFactory;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.xml.bind.JAXBException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.MessageSource;
|
||||
|
@ -62,8 +46,6 @@ import org.xml.sax.SAXException;
|
|||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
|
@ -80,7 +62,6 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
private final QueryFactory queryFactory;
|
||||
private final ConventionService conventionService;
|
||||
private final MessageSource messageSource;
|
||||
private final RemoteFetcherService remoteFetcherService;
|
||||
private final JsonHandlingService jsonHandlingService;
|
||||
private final ExternalUrlConfigProvider externalUrlConfigProvider;
|
||||
private final XmlHandlingService xmlHandlingService;
|
||||
|
@ -92,7 +73,6 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
QueryFactory queryFactory,
|
||||
ConventionService conventionService,
|
||||
MessageSource messageSource,
|
||||
RemoteFetcherService remoteFetcherService,
|
||||
JsonHandlingService jsonHandlingService,
|
||||
ExternalUrlConfigProvider externalUrlConfigProvider,
|
||||
XmlHandlingService xmlHandlingService,
|
||||
|
@ -102,7 +82,6 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
this.queryFactory = queryFactory;
|
||||
this.conventionService = conventionService;
|
||||
this.messageSource = messageSource;
|
||||
this.remoteFetcherService = remoteFetcherService;
|
||||
this.jsonHandlingService = jsonHandlingService;
|
||||
this.externalUrlConfigProvider = externalUrlConfigProvider;
|
||||
this.xmlHandlingService = xmlHandlingService;
|
||||
|
@ -118,17 +97,17 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
List<PrefillingEntity> prefillings = new ArrayList<>();
|
||||
List<Map<String, String>> map;
|
||||
Map<String, PrefillingConfig> prefillingConfigs = this.externalUrlConfigProvider.getExternalUrls().getPrefillings();
|
||||
for (PrefillingConfig prefillingConfig: prefillingConfigs.values()) {
|
||||
map = remoteFetcherService.getExternalGeneric(externalReferenceCriteria, prefillingConfig.getPrefillingSearch());
|
||||
prefillings.addAll(map.stream().map(submap -> PrefillingEntity.build(submap, this.jsonHandlingService)).toList());
|
||||
if (prefillingConfig.getPrefillingSearch().getUrlConfig().isDataInListing()) {
|
||||
List<Map<String, Object>> mapData = remoteFetcherService.getExternalGenericWithData(externalReferenceCriteria, prefillingConfig.getPrefillingSearch());
|
||||
for (int i = 0; i < mapData.size(); i++) {
|
||||
prefillings.get(i).setData(mapData.get(i));
|
||||
}
|
||||
prefillings = prefillings.stream().filter(prefilling -> prefilling.getData() != null).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
// for (PrefillingConfig prefillingConfig: prefillingConfigs.values()) {//TODO new reference logic
|
||||
// map = remoteFetcherService.getExternalGeneric(externalReferenceCriteria, prefillingConfig.getPrefillingSearch());
|
||||
// prefillings.addAll(map.stream().map(submap -> PrefillingEntity.build(submap, this.jsonHandlingService)).toList());
|
||||
// if (prefillingConfig.getPrefillingSearch().getUrlConfig().isDataInListing()) {
|
||||
// List<Map<String, Object>> mapData = remoteFetcherService.getExternalGenericWithData(externalReferenceCriteria, prefillingConfig.getPrefillingSearch());
|
||||
// for (int i = 0; i < mapData.size(); i++) {
|
||||
// prefillings.get(i).setData(mapData.get(i));
|
||||
// }
|
||||
// prefillings = prefillings.stream().filter(prefilling -> prefilling.getData() != null).collect(Collectors.toList());
|
||||
// }
|
||||
// }
|
||||
return this.builderFactory.builder(PrefillingBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(BaseFieldSet.build(lookup.getProject(), Prefilling._pid), prefillings);
|
||||
}
|
||||
|
||||
|
@ -381,49 +360,49 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
return parsedValues.isEmpty() ? null : String.join(", ", parsedValues);
|
||||
}
|
||||
|
||||
private Object parseComboBoxValues(FieldEntity fieldEntity, List<String> parsedValues) {
|
||||
List<String> normalizedValues = new ArrayList<>();
|
||||
boolean isMultiSelect;
|
||||
if(fieldEntity.getData().getFieldType().equals(FieldType.EXTERNAL_SELECT)) {
|
||||
ExternalSelectDataEntity autoCompleteData = (ExternalSelectDataEntity)fieldEntity.getData();
|
||||
isMultiSelect = autoCompleteData.getMultipleSelect();
|
||||
for (String format : parsedValues) {
|
||||
List<ExternalAutocompleteFieldResult> result = new ArrayList<>();
|
||||
try {
|
||||
result = this.getAutocomplete(autoCompleteData, format);
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
result = result.stream().filter(StreamDistinctBy.distinctByKey(ExternalAutocompleteFieldResult::getId)).collect(Collectors.toList());
|
||||
if(!result.isEmpty()){
|
||||
List<String> tempValues = new LinkedList<>();
|
||||
for (ExternalAutocompleteFieldResult f : result) {
|
||||
if (format.equals(f.getId()) || f.getLabel().toUpperCase(Locale.ROOT).contains(format.toUpperCase(Locale.ROOT)))
|
||||
tempValues.add(this.jsonHandlingService.toJsonSafe(f));
|
||||
}
|
||||
if (isMultiSelect)
|
||||
normalizedValues.addAll(tempValues);
|
||||
else if (!tempValues.isEmpty())
|
||||
normalizedValues.add(tempValues.get(0));
|
||||
}
|
||||
}
|
||||
return !normalizedValues.isEmpty() ? (isMultiSelect ? normalizedValues : normalizedValues.getFirst()) : null;
|
||||
} else {
|
||||
SelectDataEntity selectDataEntity = (SelectDataEntity)fieldEntity.getData();
|
||||
isMultiSelect = selectDataEntity.getMultipleSelect();
|
||||
if (selectDataEntity.getOptions() != null) {
|
||||
for (SelectDataEntity.OptionEntity option : selectDataEntity.getOptions()) {
|
||||
if (parsedValues.contains(option.getValue())) {
|
||||
normalizedValues.add(option.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
List<String> normalizedStringValues = normalizedValues.stream().map(Object::toString).collect(Collectors.toList());
|
||||
|
||||
return !normalizedValues.isEmpty() ? (isMultiSelect ? String.join(", ", normalizedStringValues) : normalizedValues.getFirst()) : null;
|
||||
}
|
||||
}
|
||||
// private Object parseComboBoxValues(FieldEntity fieldEntity, List<String> parsedValues) {
|
||||
// List<String> normalizedValues = new ArrayList<>();
|
||||
// boolean isMultiSelect;
|
||||
// if(fieldEntity.getData().getFieldType().equals(FieldType.EXTERNAL_SELECT)) {
|
||||
// ExternalSelectDataEntity autoCompleteData = (ExternalSelectDataEntity)fieldEntity.getData();
|
||||
// isMultiSelect = autoCompleteData.getMultipleSelect();
|
||||
// for (String format : parsedValues) {
|
||||
// List<ExternalAutocompleteFieldResult> result = new ArrayList<>();
|
||||
// try {
|
||||
// result = this.getAutocomplete(autoCompleteData, format);
|
||||
// }
|
||||
// catch (Exception e) {
|
||||
// logger.error(e.getMessage(), e);
|
||||
// }
|
||||
// result = result.stream().filter(StreamDistinctBy.distinctByKey(ExternalAutocompleteFieldResult::getId)).collect(Collectors.toList());
|
||||
// if(!result.isEmpty()){
|
||||
// List<String> tempValues = new LinkedList<>();
|
||||
// for (ExternalAutocompleteFieldResult f : result) {
|
||||
// if (format.equals(f.getId()) || f.getLabel().toUpperCase(Locale.ROOT).contains(format.toUpperCase(Locale.ROOT)))
|
||||
// tempValues.add(this.jsonHandlingService.toJsonSafe(f));
|
||||
// }
|
||||
// if (isMultiSelect)
|
||||
// normalizedValues.addAll(tempValues);
|
||||
// else if (!tempValues.isEmpty())
|
||||
// normalizedValues.add(tempValues.get(0));
|
||||
// }
|
||||
// }
|
||||
// return !normalizedValues.isEmpty() ? (isMultiSelect ? normalizedValues : normalizedValues.getFirst()) : null;
|
||||
// } else {
|
||||
// SelectDataEntity selectDataEntity = (SelectDataEntity)fieldEntity.getData();
|
||||
// isMultiSelect = selectDataEntity.getMultipleSelect();
|
||||
// if (selectDataEntity.getOptions() != null) {
|
||||
// for (SelectDataEntity.OptionEntity option : selectDataEntity.getOptions()) {
|
||||
// if (parsedValues.contains(option.getValue())) {
|
||||
// normalizedValues.add(option.getValue());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// List<String> normalizedStringValues = normalizedValues.stream().map(Object::toString).collect(Collectors.toList());
|
||||
//
|
||||
// return !normalizedValues.isEmpty() ? (isMultiSelect ? String.join(", ", normalizedStringValues) : normalizedValues.getFirst()) : null;
|
||||
// }
|
||||
// }
|
||||
|
||||
private static List<Tag> parseTags(String value) {
|
||||
if (value == null || value.isEmpty())
|
||||
|
@ -438,75 +417,75 @@ public class PrefillingServiceImpl implements PrefillingService {
|
|||
return parsedTags;
|
||||
}
|
||||
|
||||
public List<ExternalAutocompleteFieldResult> getAutocomplete(ExternalSelectDataEntity data, String like) throws URISyntaxException {
|
||||
|
||||
List<ExternalAutocompleteFieldResult> result = new LinkedList<>();
|
||||
ExternalReferenceCriteria urlCriteria = new ExternalReferenceCriteria();
|
||||
GeneralUrls genericUrls = new GeneralUrls();
|
||||
int ordinal = 1;
|
||||
List<Map<String, String>> rawResults = new ArrayList<>();
|
||||
genericUrls.setFetchMode(FetchStrategy.FIRST);
|
||||
urlCriteria.setLike(like);
|
||||
for (ExternalSelectDataEntity.ExternalSelectSourceEntity singleData : data.getSources()) {
|
||||
UrlConfiguration urlConfiguration = new UrlConfiguration();
|
||||
try {
|
||||
URI uri;
|
||||
if (singleData.getUrl().contains("?")) {
|
||||
uri = new URI(singleData.getUrl().substring(0, singleData.getUrl().lastIndexOf("?")));
|
||||
} else {
|
||||
uri = new URI(singleData.getUrl());
|
||||
}
|
||||
String source = singleData.getSourceBinding().getSource();
|
||||
source = source != null && !source.isEmpty() ? source : uri.getHost();
|
||||
// String uriString = singleData.getSourceBinding().getUrl();
|
||||
// uriString = uriString != null && !uriString.isEmpty() ? uriString : "uri";
|
||||
String uriString = "uri";
|
||||
String parsedUrl = singleData.getUrl();
|
||||
parsedUrl = parsedUrl.replace("%20", " ");
|
||||
parsedUrl = parsedUrl.replace("%22", "\"");
|
||||
while (parsedUrl.contains("&")) {
|
||||
parsedUrl = parsedUrl.replace("&", "&");
|
||||
}
|
||||
urlConfiguration.setUrl(parsedUrl);
|
||||
urlConfiguration.setOrdinal(ordinal);
|
||||
urlConfiguration.setType("External");
|
||||
urlConfiguration.setContentType(MediaType.APPLICATION_JSON_VALUE);
|
||||
urlConfiguration.setFirstpage("1");
|
||||
urlConfiguration.setRequestType(singleData.getMethod() != null ? singleData.getMethod() : "GET");
|
||||
DataUrlConfiguration dataUrlConfiguration = new DataUrlConfiguration();
|
||||
dataUrlConfiguration.setPath(singleData.getOptionsRoot());
|
||||
DataFieldsUrlConfiguration fieldsUrlConfiguration = new DataFieldsUrlConfiguration();
|
||||
fieldsUrlConfiguration.setId(singleData.getSourceBinding().getValue());
|
||||
fieldsUrlConfiguration.setName(singleData.getSourceBinding().getLabel());
|
||||
fieldsUrlConfiguration.setSource(singleData.getSourceBinding().getSource().isEmpty()? null : singleData.getSourceBinding().getSource());
|
||||
fieldsUrlConfiguration.setUri(uriString);
|
||||
dataUrlConfiguration.setFieldsUrlConfiguration(fieldsUrlConfiguration);
|
||||
urlConfiguration.setKey(source);
|
||||
urlConfiguration.setLabel(source);
|
||||
urlConfiguration.setData(dataUrlConfiguration);
|
||||
if (singleData.getHasAuth()) {
|
||||
AuthenticationConfiguration authenticationConfiguration = new AuthenticationConfiguration();
|
||||
authenticationConfiguration.setAuthUrl(singleData.getAuth().getUrl());
|
||||
authenticationConfiguration.setAuthMethod(singleData.getAuth().getMethod());
|
||||
authenticationConfiguration.setAuthTokenPath(singleData.getAuth().getPath());
|
||||
authenticationConfiguration.setAuthRequestBody(singleData.getAuth().getBody());
|
||||
authenticationConfiguration.setType(singleData.getAuth().getType());
|
||||
urlConfiguration.setAuth(authenticationConfiguration);
|
||||
}
|
||||
genericUrls.getUrls().add(urlConfiguration);
|
||||
List<Map<String, String>> singleResults = this.remoteFetcherService.getExternalGeneric(urlCriteria, genericUrls);
|
||||
if (!singleResults.isEmpty() && !singleResults.get(0).containsKey("source") && !singleData.getSourceBinding().getSource().isEmpty()) {
|
||||
singleResults.forEach(singleResult -> singleResult.put("source", singleData.getSourceBinding().getSource()));
|
||||
}
|
||||
rawResults.addAll(singleResults);
|
||||
genericUrls.getUrls().clear();
|
||||
} catch (URISyntaxException e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
rawResults.forEach(item -> result.add(new ExternalAutocompleteFieldResult(parseItem(item.get("pid")), parseItem(item.get("name")), parseItem(item.get("source")), parseItem(item.get("uri")))));
|
||||
return result;
|
||||
}
|
||||
// public List<ExternalAutocompleteFieldResult> getAutocomplete(ExternalSelectDataEntity data, String like) throws URISyntaxException {
|
||||
//
|
||||
// List<ExternalAutocompleteFieldResult> result = new LinkedList<>();
|
||||
// ExternalReferenceCriteria urlCriteria = new ExternalReferenceCriteria();
|
||||
// GeneralUrls genericUrls = new GeneralUrls();
|
||||
// int ordinal = 1;
|
||||
// List<Map<String, String>> rawResults = new ArrayList<>();
|
||||
// genericUrls.setFetchMode(FetchStrategy.FIRST);
|
||||
// urlCriteria.setLike(like);
|
||||
// for (ExternalSelectDataEntity.ExternalSelectSourceEntity singleData : data.getSources()) {
|
||||
// UrlConfiguration urlConfiguration = new UrlConfiguration();
|
||||
// try {
|
||||
// URI uri;
|
||||
// if (singleData.getUrl().contains("?")) {
|
||||
// uri = new URI(singleData.getUrl().substring(0, singleData.getUrl().lastIndexOf("?")));
|
||||
// } else {
|
||||
// uri = new URI(singleData.getUrl());
|
||||
// }
|
||||
// String source = singleData.getSourceBinding().getSource();
|
||||
// source = source != null && !source.isEmpty() ? source : uri.getHost();
|
||||
//// String uriString = singleData.getSourceBinding().getUrl();
|
||||
//// uriString = uriString != null && !uriString.isEmpty() ? uriString : "uri";
|
||||
// String uriString = "uri";
|
||||
// String parsedUrl = singleData.getUrl();
|
||||
// parsedUrl = parsedUrl.replace("%20", " ");
|
||||
// parsedUrl = parsedUrl.replace("%22", "\"");
|
||||
// while (parsedUrl.contains("&")) {
|
||||
// parsedUrl = parsedUrl.replace("&", "&");
|
||||
// }
|
||||
// urlConfiguration.setUrl(parsedUrl);
|
||||
// urlConfiguration.setOrdinal(ordinal);
|
||||
// urlConfiguration.setType("External");
|
||||
// urlConfiguration.setContentType(MediaType.APPLICATION_JSON_VALUE);
|
||||
// urlConfiguration.setFirstpage("1");
|
||||
// urlConfiguration.setRequestType(singleData.getMethod() != null ? singleData.getMethod() : "GET");
|
||||
// DataUrlConfiguration dataUrlConfiguration = new DataUrlConfiguration();
|
||||
// dataUrlConfiguration.setPath(singleData.getOptionsRoot());
|
||||
// DataFieldsUrlConfiguration fieldsUrlConfiguration = new DataFieldsUrlConfiguration();
|
||||
// fieldsUrlConfiguration.setId(singleData.getSourceBinding().getValue());
|
||||
// fieldsUrlConfiguration.setName(singleData.getSourceBinding().getLabel());
|
||||
// fieldsUrlConfiguration.setSource(singleData.getSourceBinding().getSource().isEmpty()? null : singleData.getSourceBinding().getSource());
|
||||
// fieldsUrlConfiguration.setUri(uriString);
|
||||
// dataUrlConfiguration.setFieldsUrlConfiguration(fieldsUrlConfiguration);
|
||||
// urlConfiguration.setKey(source);
|
||||
// urlConfiguration.setLabel(source);
|
||||
// urlConfiguration.setData(dataUrlConfiguration);
|
||||
// if (singleData.getHasAuth()) {
|
||||
// AuthenticationConfiguration authenticationConfiguration = new AuthenticationConfiguration();
|
||||
// authenticationConfiguration.setAuthUrl(singleData.getAuth().getUrl());
|
||||
// authenticationConfiguration.setAuthMethod(singleData.getAuth().getMethod());
|
||||
// authenticationConfiguration.setAuthTokenPath(singleData.getAuth().getPath());
|
||||
// authenticationConfiguration.setAuthRequestBody(singleData.getAuth().getBody());
|
||||
// authenticationConfiguration.setType(singleData.getAuth().getType());
|
||||
// urlConfiguration.setAuth(authenticationConfiguration);
|
||||
// }
|
||||
// genericUrls.getUrls().add(urlConfiguration);
|
||||
// List<Map<String, String>> singleResults = this.remoteFetcherService.getExternalGeneric(urlCriteria, genericUrls);
|
||||
// if (!singleResults.isEmpty() && !singleResults.get(0).containsKey("source") && !singleData.getSourceBinding().getSource().isEmpty()) {
|
||||
// singleResults.forEach(singleResult -> singleResult.put("source", singleData.getSourceBinding().getSource()));
|
||||
// }
|
||||
// rawResults.addAll(singleResults);
|
||||
// genericUrls.getUrls().clear();
|
||||
// } catch (URISyntaxException e) {
|
||||
// logger.error(e.getMessage(), e);
|
||||
// }
|
||||
// }
|
||||
// rawResults.forEach(item -> result.add(new ExternalAutocompleteFieldResult(parseItem(item.get("pid")), parseItem(item.get("name")), parseItem(item.get("source")), parseItem(item.get("uri")))));
|
||||
// return result;
|
||||
// }
|
||||
|
||||
private static String parseItem(Object item) {
|
||||
if (item instanceof String) {
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package eu.eudat.service.publicapi;
|
||||
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(PublicApiProperties.class)
|
||||
public class PublicApiConfiguration {
|
||||
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
package eu.eudat.service.publicapi;
|
||||
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@ConfigurationProperties(prefix = "public-api")
|
||||
public class PublicApiProperties {
|
||||
private ReferenceTypeMapConfig referenceTypeMap;
|
||||
public ReferenceTypeMapConfig getReferenceTypeMap() {
|
||||
return referenceTypeMap;
|
||||
}
|
||||
|
||||
public void setReferenceTypeMap(ReferenceTypeMapConfig referenceTypeMap) {
|
||||
this.referenceTypeMap = referenceTypeMap;
|
||||
}
|
||||
|
||||
public static class ReferenceTypeMapConfig{
|
||||
private UUID funderTypeId;
|
||||
private UUID grantTypeId;
|
||||
private UUID registryTypeId;
|
||||
private UUID serviceTypeId;
|
||||
private UUID dataRepositoryTypeId;
|
||||
private UUID datasetTypeId;
|
||||
private UUID researcherTypeId;
|
||||
private UUID organizationTypeId;
|
||||
public UUID getFunderTypeId() {
|
||||
return funderTypeId;
|
||||
}
|
||||
|
||||
public void setFunderTypeId(UUID funderTypeId) {
|
||||
this.funderTypeId = funderTypeId;
|
||||
}
|
||||
|
||||
public UUID getGrantTypeId() {
|
||||
return grantTypeId;
|
||||
}
|
||||
|
||||
public void setGrantTypeId(UUID grantTypeId) {
|
||||
this.grantTypeId = grantTypeId;
|
||||
}
|
||||
|
||||
public UUID getRegistryTypeId() {
|
||||
return registryTypeId;
|
||||
}
|
||||
|
||||
public void setRegistryTypeId(UUID registryTypeId) {
|
||||
this.registryTypeId = registryTypeId;
|
||||
}
|
||||
|
||||
public UUID getServiceTypeId() {
|
||||
return serviceTypeId;
|
||||
}
|
||||
|
||||
public void setServiceTypeId(UUID serviceTypeId) {
|
||||
this.serviceTypeId = serviceTypeId;
|
||||
}
|
||||
|
||||
public UUID getDataRepositoryTypeId() {
|
||||
return dataRepositoryTypeId;
|
||||
}
|
||||
|
||||
public void setDataRepositoryTypeId(UUID dataRepositoryTypeId) {
|
||||
this.dataRepositoryTypeId = dataRepositoryTypeId;
|
||||
}
|
||||
|
||||
public UUID getDatasetTypeId() {
|
||||
return datasetTypeId;
|
||||
}
|
||||
|
||||
public void setDatasetTypeId(UUID datasetTypeId) {
|
||||
this.datasetTypeId = datasetTypeId;
|
||||
}
|
||||
|
||||
public UUID getResearcherTypeId() {
|
||||
return researcherTypeId;
|
||||
}
|
||||
|
||||
public void setResearcherTypeId(UUID researcherTypeId) {
|
||||
this.researcherTypeId = researcherTypeId;
|
||||
}
|
||||
|
||||
public UUID getOrganizationTypeId() {
|
||||
return organizationTypeId;
|
||||
}
|
||||
|
||||
public void setOrganizationTypeId(UUID organizationTypeId) {
|
||||
this.organizationTypeId = organizationTypeId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -24,7 +24,5 @@ public interface ReferenceService {
|
|||
|
||||
void deleteAndSave(UUID id) throws MyForbiddenException, InvalidApplicationException;
|
||||
|
||||
List<Reference> searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException;
|
||||
|
||||
List<Reference> searchReferenceWithDefinition(ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException;
|
||||
}
|
||||
|
|
|
@ -21,7 +21,6 @@ import eu.eudat.data.ReferenceEntity;
|
|||
import eu.eudat.data.ReferenceTypeEntity;
|
||||
import eu.eudat.model.Reference;
|
||||
import eu.eudat.model.builder.ReferenceBuilder;
|
||||
import eu.eudat.model.builder.referencesearch.ReferenceSearchBuilder;
|
||||
import eu.eudat.model.deleter.ReferenceDeleter;
|
||||
import eu.eudat.model.persist.ReferencePersist;
|
||||
import eu.eudat.model.persist.referencedefinition.DefinitionPersist;
|
||||
|
@ -30,8 +29,6 @@ import eu.eudat.query.ReferenceQuery;
|
|||
import eu.eudat.query.ReferenceTypeQuery;
|
||||
import eu.eudat.query.lookup.ReferenceDefinitionSearchLookup;
|
||||
import eu.eudat.query.lookup.ReferenceSearchLookup;
|
||||
import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import eu.eudat.service.remotefetcher.criteria.FetchStrategy;
|
||||
import eu.eudat.service.remotefetcher.models.ExternalRefernceResult;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
|
@ -75,7 +72,6 @@ import java.util.stream.Collectors;
|
|||
public class ReferenceServiceImpl implements ReferenceService {
|
||||
|
||||
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(ReferenceServiceImpl.class));
|
||||
private final RemoteFetcherService remoteFetcherService;
|
||||
private final EntityManager entityManager;
|
||||
private final AuthorizationService authorizationService;
|
||||
private final DeleterFactory deleterFactory;
|
||||
|
@ -87,7 +83,7 @@ public class ReferenceServiceImpl implements ReferenceService {
|
|||
|
||||
private final WebClient client;
|
||||
|
||||
public ReferenceServiceImpl(RemoteFetcherService remoteFetcherService,
|
||||
public ReferenceServiceImpl(
|
||||
EntityManager entityManager,
|
||||
AuthorizationService authorizationService,
|
||||
DeleterFactory deleterFactory,
|
||||
|
@ -96,7 +92,6 @@ public class ReferenceServiceImpl implements ReferenceService {
|
|||
MessageSource messageSource,
|
||||
QueryFactory queryFactory,
|
||||
XmlHandlingService xmlHandlingService) {
|
||||
this.remoteFetcherService = remoteFetcherService;
|
||||
this.entityManager = entityManager;
|
||||
this.authorizationService = authorizationService;
|
||||
this.deleterFactory = deleterFactory;
|
||||
|
@ -133,7 +128,7 @@ public class ReferenceServiceImpl implements ReferenceService {
|
|||
}
|
||||
|
||||
data.setLabel(model.getLabel());
|
||||
data.setType(model.getType());
|
||||
data.setTypeId(model.getTypeId());
|
||||
data.setDescription(model.getDescription());
|
||||
data.setDefinition(this.xmlHandlingService.toXmlSafe(this.buildDefinitionEntity(model.getDefinition())));
|
||||
data.setUpdatedAt(Instant.now());
|
||||
|
@ -196,32 +191,32 @@ public class ReferenceServiceImpl implements ReferenceService {
|
|||
// return list;
|
||||
// }
|
||||
|
||||
@Override
|
||||
public List<Reference> searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException {
|
||||
int initialOffset = 0;
|
||||
if (lookup.getPage() != null && !lookup.getPage().isEmpty()){
|
||||
initialOffset = lookup.getPage().getOffset();
|
||||
lookup.getPage().setOffset(0);
|
||||
}
|
||||
|
||||
ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(lookup.getLike());
|
||||
|
||||
List<Map<String, String>> remoteRepos = remoteFetcherService.getReferences(lookup.getType(), externalReferenceCriteria, lookup.getKey());
|
||||
|
||||
List<Reference> externalModels = this.builderFactory.builder(ReferenceSearchBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), remoteRepos);
|
||||
List<Reference> models = this.fetchFromDb(lookup);
|
||||
|
||||
models.addAll(externalModels);
|
||||
|
||||
if (!this.conventionService.isNullOrEmpty(lookup.getLike())) { models = models.stream().filter(x -> x.getLabel().toLowerCase().contains(lookup.getLike().toLowerCase())).collect(Collectors.toList()); }
|
||||
models.sort(Comparator.comparing(Reference::getLabel));
|
||||
|
||||
if (lookup.getPage() != null && !lookup.getPage().isEmpty()){
|
||||
models = models.stream().skip(initialOffset).limit(lookup.getPage().getSize()).toList();
|
||||
}
|
||||
|
||||
return models;
|
||||
}
|
||||
// @Override
|
||||
// public List<Reference> searchReference(ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException {
|
||||
// int initialOffset = 0;
|
||||
// if (lookup.getPage() != null && !lookup.getPage().isEmpty()){
|
||||
// initialOffset = lookup.getPage().getOffset();
|
||||
// lookup.getPage().setOffset(0);
|
||||
// }
|
||||
//
|
||||
// ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(lookup.getLike());
|
||||
//
|
||||
// List<Map<String, String>> remoteRepos = remoteFetcherService.getReferences(lookup.getType(), externalReferenceCriteria, lookup.getKey());
|
||||
//
|
||||
// List<Reference> externalModels = this.builderFactory.builder(ReferenceSearchBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), remoteRepos);
|
||||
// List<Reference> models = this.fetchFromDb(lookup);
|
||||
//
|
||||
// models.addAll(externalModels);
|
||||
//
|
||||
// if (!this.conventionService.isNullOrEmpty(lookup.getLike())) { models = models.stream().filter(x -> x.getLabel().toLowerCase().contains(lookup.getLike().toLowerCase())).collect(Collectors.toList()); }
|
||||
// models.sort(Comparator.comparing(Reference::getLabel));
|
||||
//
|
||||
// if (lookup.getPage() != null && !lookup.getPage().isEmpty()){
|
||||
// models = models.stream().skip(initialOffset).limit(lookup.getPage().getSize()).toList();
|
||||
// }
|
||||
//
|
||||
// return models;
|
||||
// }
|
||||
|
||||
private List<Reference> fetchFromDb(ReferenceSearchLookup lookup){
|
||||
ReferenceQuery query = lookup.enrich(this.queryFactory).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).sourceTypes(ReferenceSourceType.Internal);
|
||||
|
|
|
@ -1,22 +1,21 @@
|
|||
package eu.eudat.service.remotefetcher;
|
||||
|
||||
import eu.eudat.commons.enums.ReferenceType;
|
||||
import eu.eudat.commons.exceptions.HugeResultSetException;
|
||||
import eu.eudat.service.remotefetcher.config.entities.GenericUrls;
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import gr.cite.tools.exception.MyNotFoundException;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface RemoteFetcherService {
|
||||
List<Map<String, String>> getReferences(ReferenceType referenceType, ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException;
|
||||
|
||||
GenericUrls getExternalUrls(ReferenceType referenceType);
|
||||
|
||||
Integer countEntries(ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException;
|
||||
|
||||
List<Map<String, String>> getExternalGeneric(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls);
|
||||
|
||||
List<Map<String, Object>> getExternalGenericWithData(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls);
|
||||
}
|
||||
//package eu.eudat.service.remotefetcher;
|
||||
//
|
||||
//import eu.eudat.commons.exceptions.HugeResultSetException;
|
||||
//import eu.eudat.service.remotefetcher.config.entities.GenericUrls;
|
||||
//import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
//import gr.cite.tools.exception.MyNotFoundException;
|
||||
//
|
||||
//import java.util.List;
|
||||
//import java.util.Map;
|
||||
//
|
||||
//public interface RemoteFetcherService {
|
||||
// List<Map<String, String>> getReferences(ReferenceType referenceType, ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException;
|
||||
//
|
||||
// GenericUrls getExternalUrls(ReferenceType referenceType);
|
||||
//
|
||||
// Integer countEntries(ExternalReferenceCriteria externalReferenceCriteria, String key) throws MyNotFoundException, HugeResultSetException;
|
||||
//
|
||||
// List<Map<String, String>> getExternalGeneric(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls);
|
||||
//
|
||||
// List<Map<String, Object>> getExternalGenericWithData(ExternalReferenceCriteria externalReferenceCriteria, GenericUrls genericUrls);
|
||||
//}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,152 +1,152 @@
|
|||
package eu.eudat.service.remotefetcher;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jayway.jsonpath.DocumentContext;
|
||||
import eu.eudat.service.remotefetcher.config.DataUrlConfiguration;
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import eu.eudat.service.remotefetcher.models.ExternalRefernceResult;
|
||||
import net.minidev.json.JSONArray;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class RemoteFetcherUtils {
|
||||
private final static Logger logger = LoggerFactory.getLogger(RemoteFetcherUtils.class);
|
||||
private static final ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
public static ExternalRefernceResult getFromJson(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
return new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static ExternalRefernceResult getFromJsonWithRecursiveFetching(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath, RemoteFetcherServiceImpl remoteFetcherService, String requestBody, String requestType, String auth) {
|
||||
ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
|
||||
List<Map<String, String>> multiResults = externalRefernceResult.getResults().stream().map(result -> {
|
||||
ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria();
|
||||
externalReferenceCriteria.setPath(result.get("path"));
|
||||
externalReferenceCriteria.setHost(result.get("host"));
|
||||
String replacedPath = remoteFetcherService.replaceCriteriaOnUrl(jsonDataPath.getUrlConfiguration().getUrl(), externalReferenceCriteria, jsonDataPath.getUrlConfiguration().getFirstpage(), jsonDataPath.getUrlConfiguration().getQueries());
|
||||
return remoteFetcherService.getResultsFromUrl(replacedPath, jsonDataPath.getUrlConfiguration().getData(), jsonDataPath.getUrlConfiguration().getData().getPath(), jsonDataPath.getUrlConfiguration().getContentType(), requestBody, requestType, auth);
|
||||
}).filter(Objects::nonNull).map(externalRefernceResult1 -> externalRefernceResult1.getResults().get(0)).collect(Collectors.toList());
|
||||
return new ExternalRefernceResult(multiResults, new HashMap<>(1, 1));
|
||||
}
|
||||
|
||||
public static ExternalRefernceResult getFromJsonWithFirstAndLastName(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
new HashMap<>(1, 1));
|
||||
externalRefernceResult.getResults().stream().forEach(entry -> {
|
||||
String name = entry.get(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", "")) + " " + entry.get(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", ""));
|
||||
entry.put("name", name);
|
||||
entry.remove(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", ""));
|
||||
entry.remove(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", ""));
|
||||
});
|
||||
return externalRefernceResult;
|
||||
}
|
||||
|
||||
private static List<Map<String, String>> parseData (DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
List <Map<String, Object>> rawData = jsonContext.read(jsonDataPath.getPath());
|
||||
List<Map<String, String>> parsedData = new ArrayList<>();
|
||||
rawData.forEach(stringObjectMap -> {
|
||||
parsedData.add(new LinkedHashMap<>());
|
||||
Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredFields()).forEach(field -> {
|
||||
String getterMethodName = "get" + field.getName().substring(0, 1).toUpperCase(Locale.ROOT) + field.getName().substring(1);
|
||||
Method getterMethod = Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredMethods()).filter(method -> method.getName().equals(getterMethodName)).collect(Collectors.toList()).get(0);
|
||||
try {
|
||||
String value = ((String) getterMethod.invoke(jsonDataPath.getFieldsUrlConfiguration()));
|
||||
if (value != null) {
|
||||
if (field.getName().equals("pid") || field.getName().equals("pidTypeField")) {
|
||||
String pid = null;
|
||||
Object pidObj = stringObjectMap.get(value.split("\\.")[0]);
|
||||
if(pidObj != null){
|
||||
if(pidObj instanceof Map){
|
||||
Object o = ((Map<String, Object>) pidObj).get(value.split("\\.")[1]);
|
||||
if(o instanceof String){
|
||||
pid = (String)o;
|
||||
}
|
||||
else if(o instanceof Integer){
|
||||
pid = String.valueOf(o);
|
||||
}
|
||||
}
|
||||
else if(pidObj instanceof List){
|
||||
Object o = ((List<Map<String,?>>) pidObj).get(0).get(value.split("\\.")[1]);
|
||||
if(o instanceof String){
|
||||
pid = (String)o;
|
||||
}
|
||||
else if(o instanceof Integer){
|
||||
pid = String.valueOf(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pid != null) {
|
||||
if ((field.getName().equals("pid"))){
|
||||
parsedData.get(parsedData.size() - 1).put("pid", pid);
|
||||
}
|
||||
else{
|
||||
parsedData.get(parsedData.size() - 1).put("pidTypeField", pid);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
value = value.replace("'", "");
|
||||
if (value.contains(".")) {
|
||||
String[] parts = value.split("\\.");
|
||||
Map<String, Object> tempMap = stringObjectMap;
|
||||
for (int i = 0; i < parts.length; i++) {
|
||||
if (tempMap.containsKey(parts[i])) {
|
||||
if (i + 1 < parts.length) {
|
||||
tempMap = (Map<String, Object>) tempMap.get(parts[i]);
|
||||
} else {
|
||||
parsedData.get(parsedData.size() - 1).put(field.getName().equals("types") ? "tags" : value, normalizeValue(tempMap.get(parts[i]), (field.getName().equals("types") || field.getName().equals("uri"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (stringObjectMap.containsKey(value)) {
|
||||
parsedData.get(parsedData.size() - 1).put(field.getName().equals("types") ? "tags" : value, normalizeValue(stringObjectMap.get(value), (field.getName().equals("types") || field.getName().equals("uri"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
logger.error(e.getLocalizedMessage(), e);
|
||||
}
|
||||
});
|
||||
});
|
||||
return parsedData;
|
||||
}
|
||||
|
||||
private static String normalizeValue(Object value, boolean jsonString) {
|
||||
if (value instanceof JSONArray) {
|
||||
if (jsonString) {
|
||||
return ((JSONArray)value).toJSONString();
|
||||
}
|
||||
JSONArray jarr = (JSONArray) value;
|
||||
if (jarr.get(0) instanceof String) {
|
||||
return jarr.get(0).toString();
|
||||
} else {
|
||||
for (Object o : jarr) {
|
||||
if ((o instanceof Map) && ((Map) o).containsKey("content")) {
|
||||
try {
|
||||
return ((Map<String, String>) o).get("content");
|
||||
}
|
||||
catch (ClassCastException e){
|
||||
if(((Map<?, ?>) o).get("content") instanceof Integer) {
|
||||
return String.valueOf(((Map<?, ?>) o).get("content"));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (value instanceof Map) {
|
||||
String key = ((Map<String, String>)value).containsKey("$") ? "$" : "content";
|
||||
return ((Map<String, String>)value).get(key);
|
||||
}
|
||||
return value != null ? value.toString() : null;
|
||||
}
|
||||
}
|
||||
//package eu.eudat.service.remotefetcher;
|
||||
//
|
||||
//import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
//import com.jayway.jsonpath.DocumentContext;
|
||||
//import eu.eudat.service.remotefetcher.config.DataUrlConfiguration;
|
||||
//import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
//import eu.eudat.service.remotefetcher.models.ExternalRefernceResult;
|
||||
//import net.minidev.json.JSONArray;
|
||||
//import org.slf4j.Logger;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//
|
||||
//import java.lang.reflect.InvocationTargetException;
|
||||
//import java.lang.reflect.Method;
|
||||
//import java.util.*;
|
||||
//import java.util.stream.Collectors;
|
||||
//
|
||||
//public class RemoteFetcherUtils {
|
||||
// private final static Logger logger = LoggerFactory.getLogger(RemoteFetcherUtils.class);
|
||||
// private static final ObjectMapper mapper = new ObjectMapper();
|
||||
//
|
||||
// public static ExternalRefernceResult getFromJson(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
// return new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
// new HashMap<>(1, 1));
|
||||
// }
|
||||
//
|
||||
// public static ExternalRefernceResult getFromJsonWithRecursiveFetching(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath, RemoteFetcherServiceImpl remoteFetcherService, String requestBody, String requestType, String auth) {
|
||||
// ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
// new HashMap<>(1, 1));
|
||||
//
|
||||
// List<Map<String, String>> multiResults = externalRefernceResult.getResults().stream().map(result -> {
|
||||
// ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria();
|
||||
// externalReferenceCriteria.setPath(result.get("path"));
|
||||
// externalReferenceCriteria.setHost(result.get("host"));
|
||||
// String replacedPath = remoteFetcherService.replaceCriteriaOnUrl(jsonDataPath.getUrlConfiguration().getUrl(), externalReferenceCriteria, jsonDataPath.getUrlConfiguration().getFirstpage(), jsonDataPath.getUrlConfiguration().getQueries());
|
||||
// return remoteFetcherService.getResultsFromUrl(replacedPath, jsonDataPath.getUrlConfiguration().getData(), jsonDataPath.getUrlConfiguration().getData().getPath(), jsonDataPath.getUrlConfiguration().getContentType(), requestBody, requestType, auth);
|
||||
// }).filter(Objects::nonNull).map(externalRefernceResult1 -> externalRefernceResult1.getResults().get(0)).collect(Collectors.toList());
|
||||
// return new ExternalRefernceResult(multiResults, new HashMap<>(1, 1));
|
||||
// }
|
||||
//
|
||||
// public static ExternalRefernceResult getFromJsonWithFirstAndLastName(DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
// ExternalRefernceResult externalRefernceResult = new ExternalRefernceResult(parseData(jsonContext, jsonDataPath),
|
||||
// new HashMap<>(1, 1));
|
||||
// externalRefernceResult.getResults().stream().forEach(entry -> {
|
||||
// String name = entry.get(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", "")) + " " + entry.get(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", ""));
|
||||
// entry.put("name", name);
|
||||
// entry.remove(jsonDataPath.getFieldsUrlConfiguration().getFirstName().replace("'", ""));
|
||||
// entry.remove(jsonDataPath.getFieldsUrlConfiguration().getLastName().replace("'", ""));
|
||||
// });
|
||||
// return externalRefernceResult;
|
||||
// }
|
||||
//
|
||||
// private static List<Map<String, String>> parseData (DocumentContext jsonContext, DataUrlConfiguration jsonDataPath) {
|
||||
// List <Map<String, Object>> rawData = jsonContext.read(jsonDataPath.getPath());
|
||||
// List<Map<String, String>> parsedData = new ArrayList<>();
|
||||
// rawData.forEach(stringObjectMap -> {
|
||||
// parsedData.add(new LinkedHashMap<>());
|
||||
// Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredFields()).forEach(field -> {
|
||||
// String getterMethodName = "get" + field.getName().substring(0, 1).toUpperCase(Locale.ROOT) + field.getName().substring(1);
|
||||
// Method getterMethod = Arrays.stream(jsonDataPath.getFieldsUrlConfiguration().getClass().getDeclaredMethods()).filter(method -> method.getName().equals(getterMethodName)).collect(Collectors.toList()).get(0);
|
||||
// try {
|
||||
// String value = ((String) getterMethod.invoke(jsonDataPath.getFieldsUrlConfiguration()));
|
||||
// if (value != null) {
|
||||
// if (field.getName().equals("pid") || field.getName().equals("pidTypeField")) {
|
||||
// String pid = null;
|
||||
// Object pidObj = stringObjectMap.get(value.split("\\.")[0]);
|
||||
// if(pidObj != null){
|
||||
// if(pidObj instanceof Map){
|
||||
// Object o = ((Map<String, Object>) pidObj).get(value.split("\\.")[1]);
|
||||
// if(o instanceof String){
|
||||
// pid = (String)o;
|
||||
// }
|
||||
// else if(o instanceof Integer){
|
||||
// pid = String.valueOf(o);
|
||||
// }
|
||||
// }
|
||||
// else if(pidObj instanceof List){
|
||||
// Object o = ((List<Map<String,?>>) pidObj).get(0).get(value.split("\\.")[1]);
|
||||
// if(o instanceof String){
|
||||
// pid = (String)o;
|
||||
// }
|
||||
// else if(o instanceof Integer){
|
||||
// pid = String.valueOf(o);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if(pid != null) {
|
||||
// if ((field.getName().equals("pid"))){
|
||||
// parsedData.get(parsedData.size() - 1).put("pid", pid);
|
||||
// }
|
||||
// else{
|
||||
// parsedData.get(parsedData.size() - 1).put("pidTypeField", pid);
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// value = value.replace("'", "");
|
||||
// if (value.contains(".")) {
|
||||
// String[] parts = value.split("\\.");
|
||||
// Map<String, Object> tempMap = stringObjectMap;
|
||||
// for (int i = 0; i < parts.length; i++) {
|
||||
// if (tempMap.containsKey(parts[i])) {
|
||||
// if (i + 1 < parts.length) {
|
||||
// tempMap = (Map<String, Object>) tempMap.get(parts[i]);
|
||||
// } else {
|
||||
// parsedData.get(parsedData.size() - 1).put(field.getName().equals("types") ? "tags" : value, normalizeValue(tempMap.get(parts[i]), (field.getName().equals("types") || field.getName().equals("uri"))));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// if (stringObjectMap.containsKey(value)) {
|
||||
// parsedData.get(parsedData.size() - 1).put(field.getName().equals("types") ? "tags" : value, normalizeValue(stringObjectMap.get(value), (field.getName().equals("types") || field.getName().equals("uri"))));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } catch (IllegalAccessException | InvocationTargetException e) {
|
||||
// logger.error(e.getLocalizedMessage(), e);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
// return parsedData;
|
||||
// }
|
||||
//
|
||||
// private static String normalizeValue(Object value, boolean jsonString) {
|
||||
// if (value instanceof JSONArray) {
|
||||
// if (jsonString) {
|
||||
// return ((JSONArray)value).toJSONString();
|
||||
// }
|
||||
// JSONArray jarr = (JSONArray) value;
|
||||
// if (jarr.get(0) instanceof String) {
|
||||
// return jarr.get(0).toString();
|
||||
// } else {
|
||||
// for (Object o : jarr) {
|
||||
// if ((o instanceof Map) && ((Map) o).containsKey("content")) {
|
||||
// try {
|
||||
// return ((Map<String, String>) o).get("content");
|
||||
// }
|
||||
// catch (ClassCastException e){
|
||||
// if(((Map<?, ?>) o).get("content") instanceof Integer) {
|
||||
// return String.valueOf(((Map<?, ?>) o).get("content"));
|
||||
// }
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else if (value instanceof Map) {
|
||||
// String key = ((Map<String, String>)value).containsKey("$") ? "$" : "content";
|
||||
// return ((Map<String, String>)value).get(key);
|
||||
// }
|
||||
// return value != null ? value.toString() : null;
|
||||
// }
|
||||
//}
|
||||
|
|
|
@ -20,6 +20,7 @@ import eu.eudat.query.DescriptionQuery;
|
|||
import eu.eudat.query.DmpQuery;
|
||||
import eu.eudat.query.lookup.DescriptionLookup;
|
||||
import eu.eudat.query.lookup.DmpLookup;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
@ -67,21 +68,24 @@ public class PublicDatasetsDescriptionDocumentation {
|
|||
|
||||
private final DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper;
|
||||
|
||||
private final PublicApiProperties config;
|
||||
|
||||
private final DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper;
|
||||
|
||||
@Autowired
|
||||
public PublicDatasetsDescriptionDocumentation(
|
||||
QueryFactory queryFactory,
|
||||
BuilderFactory builderFactory,
|
||||
MessageSource messageSource,
|
||||
DescriptionToPublicApiDatasetMapper descriptionToPublicApiDatasetMapper,
|
||||
DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper, DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper) {
|
||||
QueryFactory queryFactory,
|
||||
BuilderFactory builderFactory,
|
||||
MessageSource messageSource,
|
||||
DescriptionToPublicApiDatasetMapper descriptionToPublicApiDatasetMapper,
|
||||
DescriptionToPublicApiDatasetListingMapper descriptionToPublicApiDatasetListingMapper, PublicApiProperties config, DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper) {
|
||||
this.queryFactory = queryFactory;
|
||||
this.builderFactory = builderFactory;
|
||||
this.messageSource = messageSource;
|
||||
this.descriptionToPublicApiDatasetMapper = descriptionToPublicApiDatasetMapper;
|
||||
this.descriptionToPublicApiDatasetListingMapper = descriptionToPublicApiDatasetListingMapper;
|
||||
this.dmpToPublicApiDmpListingMapper = dmpToPublicApiDmpListingMapper;
|
||||
this.config = config;
|
||||
this.dmpToPublicApiDmpListingMapper = dmpToPublicApiDmpListingMapper;
|
||||
}
|
||||
|
||||
@Operation(summary = "This method is used to get a listing of public datasets.", description = PublicApiStaticHelpers.Description.getPagedNotes)
|
||||
|
@ -103,7 +107,7 @@ public class PublicDatasetsDescriptionDocumentation {
|
|||
List<DescriptionEntity> data = query.collectAs(lookup.getProject());
|
||||
List<Description> models = this.builderFactory.builder(DescriptionBuilder.class).build(lookup.getProject(), data);
|
||||
DataTableData<DatasetPublicListingModel> dataTableData = new DataTableData<>();
|
||||
dataTableData.setData(models.stream().map(this.descriptionToPublicApiDatasetListingMapper::toPublicListingModel).toList());
|
||||
dataTableData.setData(models.stream().map(x-> this.descriptionToPublicApiDatasetListingMapper.toPublicListingModel(x, this.config.getReferenceTypeMap())).toList());
|
||||
dataTableData.setTotalCount(count);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataTableData<DatasetPublicListingModel>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTableData));
|
||||
}
|
||||
|
@ -130,7 +134,7 @@ public class PublicDatasetsDescriptionDocumentation {
|
|||
DmpLookup dmpLookup = getDmpLookup();
|
||||
Dmp dmp = this.builderFactory.builder(DmpBuilder.class).build(dmpLookup.getProject(), dmpQuery.firstAs(dmpLookup.getProject()));
|
||||
|
||||
DatasetPublicModel dataset = this.descriptionToPublicApiDatasetMapper.toPublicModel(model, this.dmpToPublicApiDmpListingMapper.toPublicListingModel(dmp));
|
||||
DatasetPublicModel dataset = this.descriptionToPublicApiDatasetMapper.toPublicModel(model, this.dmpToPublicApiDmpListingMapper.toPublicListingModel(dmp, this.config.getReferenceTypeMap()), this.config.getReferenceTypeMap());
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DatasetPublicModel>().status(ApiMessageCode.NO_MESSAGE).payload(dataset));
|
||||
}
|
||||
|
||||
|
@ -148,6 +152,7 @@ public class PublicDatasetsDescriptionDocumentation {
|
|||
String.join(".", Description._createdBy, User._name),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._id),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._type),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._type, Reference._id),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._reference),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._label),
|
||||
String.join(".", Description._descriptionReferences, DescriptionReference._reference, Reference._abbreviation),
|
||||
|
|
|
@ -20,6 +20,7 @@ import eu.eudat.query.DmpDescriptionTemplateQuery;
|
|||
import eu.eudat.query.DmpQuery;
|
||||
import eu.eudat.query.EntityDoiQuery;
|
||||
import eu.eudat.query.lookup.DmpLookup;
|
||||
import eu.eudat.service.publicapi.PublicApiProperties;
|
||||
import eu.eudat.types.ApiMessageCode;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
@ -65,20 +66,22 @@ public class PublicDmpsDocumentation {
|
|||
|
||||
private final DmpToPublicApiDmpMapper dmpToPublicApiDmpMapper;
|
||||
|
||||
private final PublicApiProperties config;
|
||||
private final DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper;
|
||||
|
||||
@Autowired
|
||||
public PublicDmpsDocumentation(
|
||||
QueryFactory queryFactory,
|
||||
BuilderFactory builderFactory,
|
||||
MessageSource messageSource,
|
||||
DmpToPublicApiDmpMapper dmpToPublicApiDmpMapper,
|
||||
DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper) {
|
||||
QueryFactory queryFactory,
|
||||
BuilderFactory builderFactory,
|
||||
MessageSource messageSource,
|
||||
DmpToPublicApiDmpMapper dmpToPublicApiDmpMapper, PublicApiProperties config,
|
||||
DmpToPublicApiDmpListingMapper dmpToPublicApiDmpListingMapper) {
|
||||
this.queryFactory = queryFactory;
|
||||
this.builderFactory = builderFactory;
|
||||
this.messageSource = messageSource;
|
||||
this.dmpToPublicApiDmpMapper = dmpToPublicApiDmpMapper;
|
||||
this.dmpToPublicApiDmpListingMapper = dmpToPublicApiDmpListingMapper;
|
||||
this.config = config;
|
||||
this.dmpToPublicApiDmpListingMapper = dmpToPublicApiDmpListingMapper;
|
||||
}
|
||||
|
||||
@Operation(summary = "This method is used to get a listing of public dmps.", description = PublicApiStaticHelpers.Dmp.getPagedNotes)
|
||||
|
@ -104,7 +107,7 @@ public class PublicDmpsDocumentation {
|
|||
List<DmpEntity> data = query.collectAs(lookup.getProject());
|
||||
List<Dmp> models = this.builderFactory.builder(DmpBuilder.class).build(lookup.getProject(), data);
|
||||
DataTableData<DataManagementPlanPublicListingModel> dataTableData = new DataTableData<>();
|
||||
dataTableData.setData(models.stream().map(this.dmpToPublicApiDmpListingMapper::toPublicListingModel).toList());
|
||||
dataTableData.setData(models.stream().map(x-> this.dmpToPublicApiDmpListingMapper.toPublicListingModel(x, this.config.getReferenceTypeMap())).toList());
|
||||
dataTableData.setTotalCount(count);
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataTableData<DataManagementPlanPublicListingModel>>().status(ApiMessageCode.NO_MESSAGE).payload(dataTableData));
|
||||
}
|
||||
|
@ -125,7 +128,8 @@ public class PublicDmpsDocumentation {
|
|||
String.join(".", Dmp._dmpUsers, DmpUser._role),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._id),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._type),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._reference),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._type),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._type, ReferenceType._id),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._label),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._definition, Definition._fields, Field._code),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._definition, Definition._fields, Field._dataType),
|
||||
|
@ -173,6 +177,7 @@ public class PublicDmpsDocumentation {
|
|||
String.join(".", Dmp._dmpUsers, DmpUser._role),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._id),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._type),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._type, ReferenceType._id),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._reference),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._label),
|
||||
String.join(".", Dmp._dmpReferences, DmpReference._reference, Reference._abbreviation),
|
||||
|
@ -193,7 +198,7 @@ public class PublicDmpsDocumentation {
|
|||
BaseFieldSet templateFieldSet = new BaseFieldSet();
|
||||
DmpDescriptionTemplateQuery dmpDescriptionTemplateQuery = this.queryFactory.query(DmpDescriptionTemplateQuery.class).dmpIds(UUID.fromString(id)).isActive(IsActive.Active);
|
||||
List<DmpDescriptionTemplate> descriptionTemplates = this.builderFactory.builder(DmpDescriptionTemplateBuilder.class).build(templateFieldSet, dmpDescriptionTemplateQuery.collectAs(templateFieldSet));
|
||||
DataManagementPlanPublicModel dataManagementPlan = this.dmpToPublicApiDmpMapper.toPublicModel(model, entityDoiQuery.collect(), descriptionTemplates);
|
||||
DataManagementPlanPublicModel dataManagementPlan = this.dmpToPublicApiDmpMapper.toPublicModel(model, entityDoiQuery.collect(), descriptionTemplates, this.config.getReferenceTypeMap());
|
||||
return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem<DataManagementPlanPublicModel>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlan));
|
||||
}
|
||||
|
||||
|
|
|
@ -93,19 +93,8 @@ public class ReferenceController {
|
|||
return new QueryResult<>(models, count);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("search")
|
||||
public List<Reference> searchReference(@RequestBody ReferenceSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException {
|
||||
logger.debug("search {}", Reference.class.getSimpleName());
|
||||
|
||||
this.censorFactory.censor(ReferenceCensor.class).censor(lookup.getProject(), null);
|
||||
List<Reference> references = this.referenceService.searchReference(lookup);
|
||||
|
||||
this.auditService.track(AuditableAction.Reference_Search, "lookup", lookup);
|
||||
|
||||
return references;
|
||||
}
|
||||
|
||||
@PostMapping("search-with-db-definition")
|
||||
public List<Reference> searchReferenceWithDefinition(@RequestBody ReferenceDefinitionSearchLookup lookup) throws HugeResultSetException, MyNotFoundException, InvalidApplicationException {
|
||||
logger.debug("search with db definition {}", Reference.class.getSimpleName());
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package eu.eudat.logic.managers;
|
||||
|
||||
import eu.eudat.logic.proxy.config.configloaders.ConfigLoader;
|
||||
import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -20,12 +19,11 @@ public class DatasetProfileManager {
|
|||
private static final List<String> cache = new ArrayList<>();
|
||||
|
||||
private final ConfigLoader configLoader;
|
||||
private final RemoteFetcherService remoteFetcherService;
|
||||
// private final RemoteFetcherService remoteFetcherService;
|
||||
|
||||
@Autowired
|
||||
public DatasetProfileManager(ConfigLoader configLoader, RemoteFetcherService remoteFetcherService) {
|
||||
public DatasetProfileManager(ConfigLoader configLoader) {
|
||||
this.configLoader = configLoader;
|
||||
this.remoteFetcherService = remoteFetcherService;
|
||||
}
|
||||
private static String parseItem(Object item) {
|
||||
if (item instanceof String) {
|
||||
|
|
|
@ -7,24 +7,25 @@ import org.springframework.stereotype.Component;
|
|||
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import eu.eudat.commons.exceptions.HugeResultSetException;
|
||||
import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
//import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
|
||||
@Component
|
||||
public class ValidationManager {
|
||||
|
||||
private RemoteFetcherService remoteFetcherService;
|
||||
// private RemoteFetcherService remoteFetcherService;
|
||||
private final UserScope userScope;
|
||||
|
||||
@Autowired
|
||||
public ValidationManager(RemoteFetcherService remoteFetcherService, UserScope userScope) {
|
||||
public ValidationManager(UserScope userScope) {
|
||||
super();
|
||||
this.remoteFetcherService = remoteFetcherService;
|
||||
// this.remoteFetcherService = remoteFetcherService;
|
||||
this.userScope = userScope;
|
||||
}
|
||||
|
||||
public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException {
|
||||
ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier);
|
||||
Integer count = this.remoteFetcherService.countEntries(externalReferenceCriteria, type);
|
||||
// Integer count = this.remoteFetcherService.countEntries(externalReferenceCriteria, type);
|
||||
Integer count = 1;
|
||||
return this.userScope.isSet() && count > 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package eu.eudat.logic.services;
|
|||
import eu.eudat.commons.scope.user.UserScope;
|
||||
import eu.eudat.service.remotefetcher.criteria.ExternalReferenceCriteria;
|
||||
import eu.eudat.commons.exceptions.HugeResultSetException;
|
||||
import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
//import eu.eudat.service.remotefetcher.RemoteFetcherService;
|
||||
import gr.cite.tools.exception.MyNotFoundException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -11,19 +11,20 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
public class ExternalValidationService {
|
||||
|
||||
private RemoteFetcherService remoteFetcherService;
|
||||
// private RemoteFetcherService remoteFetcherService;
|
||||
private final UserScope userScope;
|
||||
|
||||
@Autowired
|
||||
public ExternalValidationService(RemoteFetcherService remoteFetcherService, UserScope userScope) {
|
||||
public ExternalValidationService(UserScope userScope) {
|
||||
super();
|
||||
this.remoteFetcherService = remoteFetcherService;
|
||||
// this.remoteFetcherService = remoteFetcherService;
|
||||
this.userScope = userScope;
|
||||
}
|
||||
|
||||
public Boolean validateIdentifier(String identifier, String type) throws MyNotFoundException, HugeResultSetException {
|
||||
ExternalReferenceCriteria externalReferenceCriteria = new ExternalReferenceCriteria(identifier);
|
||||
Integer count = this.remoteFetcherService.countEntries(externalReferenceCriteria, type);
|
||||
// Integer count = this.remoteFetcherService.countEntries(externalReferenceCriteria, type);
|
||||
Integer count = 1;
|
||||
return userScope.isSet() && count > 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,5 +29,7 @@ spring:
|
|||
optional:classpath:config/queue.yml[.yml], optional:classpath:config/queue-${spring.profiles.active}.yml[.yml], optional:file:../config/queue-${spring.profiles.active}.yml[.yml],
|
||||
optional:classpath:config/notification.yml[.yml], optional:classpath:config/notification-${spring.profiles.active}.yml[.yml], optional:file:../config/notification-${spring.profiles.active}.yml[.yml],
|
||||
optional:classpath:config/locale.yml[.yml], optional:classpath:config/locale-${spring.profiles.active}.yml[.yml], optional:file:../config/locale-${spring.profiles.active}.yml[.yml],
|
||||
optional:classpath:config/public-api.yml[.yml], optional:classpath:config/public-api-${spring.profiles.active}.yml[.yml], optional:file:../config/public-api-${spring.profiles.active}.yml[.yml],
|
||||
optional:classpath:config/dashboard.yml[.yml], optional:classpath:config/dashboard-${spring.profiles.active}.yml[.yml], optional:file:../config/dashboard-${spring.profiles.active}.yml[.yml],
|
||||
optional:classpath:config/transformer.yml[.yml], optional:classpath:config/transformer-${spring.profiles.active}.yml[.yml], optional:file:../config/transformer-${spring.profiles.active}.yml[.yml]
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
dashboard:
|
||||
reference-type-counters:
|
||||
- "7eeffb98-58fb-4921-82ec-e27f32f8e738"
|
||||
- "5b9c284f-f041-4995-96cc-fad7ad13289c"
|
|
@ -90,6 +90,11 @@ permissions:
|
|||
clients: [ ]
|
||||
allowAnonymous: true
|
||||
allowAuthenticated: true
|
||||
PublicBrowseReferenceType:
|
||||
roles: [ ]
|
||||
clients: [ ]
|
||||
allowAnonymous: true
|
||||
allowAuthenticated: true
|
||||
# Elastic
|
||||
ManageElastic:
|
||||
roles:
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
public-api:
|
||||
reference-type-map:
|
||||
funderTypeId: "538928bb-c7c6-452e-b66d-08e539f5f082"
|
||||
grantTypeId: "5b9c284f-f041-4995-96cc-fad7ad13289c"
|
||||
registryTypeId: "2beacaad-3223-43ad-ad99-1e5f21328e7b"
|
||||
serviceTypeId: "9ec2000d-95c7-452e-b356-755fc8e2574c"
|
||||
dataRepositoryTypeId: "d26b64ba-fda0-4b14-b3ef-9856a492d55a"
|
||||
datasetTypeId: "a3ce0fb2-d72c-48bb-b322-7401940cb802"
|
||||
researcherTypeId: "5a2112e7-ea99-4cfe-98a1-68665e26726e"
|
||||
organizationTypeId: "7eeffb98-58fb-4921-82ec-e27f32f8e738"
|
Loading…
Reference in New Issue