diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ReferenceTypeField.java b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ReferenceTypeField.java index bb0fd723e..669615123 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ReferenceTypeField.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/dmpblueprintdefinition/ReferenceTypeField.java @@ -6,7 +6,7 @@ import java.util.UUID; public class ReferenceTypeField extends Field { - public final static String _referenceType = "referenceTypeId"; + public final static String _referenceType = "referenceType"; private ReferenceType referenceType; public ReferenceType getReferenceType() { diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java index e3beeca31..0adb2d3f5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/reference/ReferenceServiceImpl.java @@ -51,6 +51,7 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.TransformerException; import java.time.Instant; import java.util.*; +import java.util.stream.Collectors; @Service public class ReferenceServiceImpl implements ReferenceService { @@ -173,7 +174,7 @@ public class ReferenceServiceImpl implements ReferenceService { ExternalDataResult remoteRepos = this.getReferenceData(data, externalReferenceCriteria, lookup.getKey()); List externalModels = new ArrayList<>(); - if (remoteRepos != null && this.conventionService.isListNullOrEmpty(remoteRepos.getResults())){ + if (remoteRepos != null && !this.conventionService.isListNullOrEmpty(remoteRepos.getResults())){ List referenceEntities = new ArrayList<>(); for (Map result : remoteRepos.getResults()){ if (result == null || result.isEmpty()) continue;; @@ -186,11 +187,11 @@ public class ReferenceServiceImpl implements ReferenceService { List models = this.fetchReferenceFromDb(lookup); for (Reference externalReference : externalModels){ - if (models.stream().noneMatch(x-> x.getReference() != null && x.getSource() != null &&x.getReference().equals(externalReference.getReference()) && x.getSource().equals(externalReference.getSource()))) models.add(externalReference); + if (models.stream().noneMatch(x-> x.getReference() != null && x.getSource() != null && x.getReference().equals(externalReference.getReference()) && x.getSource().equals(externalReference.getSource()))) models.add(externalReference); } - if (!this.conventionService.isNullOrEmpty(lookup.getLike())) { models = models.stream().filter(x -> x.getLabel().toLowerCase().contains(lookup.getLike().toLowerCase())).toList(); } - models.sort(Comparator.comparing(Reference::getLabel)); + if (!this.conventionService.isNullOrEmpty(lookup.getLike())) { models = models.stream().filter(x -> x.getLabel().toLowerCase().contains(lookup.getLike().toLowerCase())).collect(Collectors.toList()); } + models = models.stream().sorted(Comparator.comparing(Reference::getLabel, Comparator.nullsFirst(Comparator.naturalOrder()))).collect(Collectors.toList()); if (lookup.getPage() != null && !lookup.getPage().isEmpty()){ models = models.stream().skip(initialOffset).limit(lookup.getPage().getSize()).toList(); @@ -204,7 +205,7 @@ public class ReferenceServiceImpl implements ReferenceService { ReferenceEntity referenceEntity = new ReferenceEntity(); referenceEntity.setTypeId(data.getId()); referenceEntity.setIsActive(IsActive.Active); - referenceEntity.setReference(result.getOrDefault(ReferenceEntity.KnownFields.Key, null) + ":" + remoteRepos.getResults().getFirst().getOrDefault("reference_id", null)); + referenceEntity.setReference(result.getOrDefault(ReferenceEntity.KnownFields.ReferenceId, null) + ":" + remoteRepos.getResults().getFirst().getOrDefault("reference_id", null)); referenceEntity.setSource(result.getOrDefault(ReferenceEntity.KnownFields.Key, null)); referenceEntity.setAbbreviation(result.getOrDefault(ReferenceEntity.KnownFields.Abbreviation, null)); referenceEntity.setDescription(result.getOrDefault(ReferenceEntity.KnownFields.Description, null)); @@ -225,15 +226,18 @@ public class ReferenceServiceImpl implements ReferenceService { private List fetchReferenceFromDb(ReferenceSearchLookup lookup){ ReferenceQuery query = lookup.enrich(this.queryFactory).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).sourceTypes(ReferenceSourceType.Internal).typeIds(lookup.getTypeId()); - List data = query.collectAs(lookup.getProject()); - return this.builderFactory.builder(ReferenceBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), data); + //TODO: Stratis update db for references. + + //List data = query.collectAs(lookup.getProject()); + //return this.builderFactory.builder(ReferenceBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), data); + return new ArrayList<>(); } private ExternalDataResult getReferenceData(ReferenceTypeEntity referenceType, ExternalReferenceCriteria externalReferenceCriteria, String key) { ReferenceTypeDefinitionEntity referenceTypeDefinition = this.xmlHandlingService.fromXmlSafe(ReferenceTypeDefinitionEntity.class, referenceType.getDefinition()); if (referenceTypeDefinition == null || this.conventionService.isListNullOrEmpty(referenceTypeDefinition.getSources())) return new ExternalDataResult(); - - ExternalDataResult results = this.remoteFetcherService.getExternalData(referenceTypeDefinition.getSources().stream().map(x -> (SourceBaseConfiguration)x).toList(), externalReferenceCriteria, key, null); + + ExternalDataResult results = this.remoteFetcherService.getExternalData(referenceTypeDefinition.getSources().stream().map(x -> (SourceBaseConfiguration)x).collect(Collectors.toList()), externalReferenceCriteria, key, null); for (Map result: results.getResults()) { result.put("referenceType", referenceType.getName()); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/remotefetcher/RemoteFetcherServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/remotefetcher/RemoteFetcherServiceImpl.java index b3c1498b5..9be14b2c8 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/remotefetcher/RemoteFetcherServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/remotefetcher/RemoteFetcherServiceImpl.java @@ -88,7 +88,7 @@ public class RemoteFetcherServiceImpl implements RemoteFetcherService { // this.applyFunderToQuery(apiSource, externalReferenceCriteria); String auth = null; - if (apiSource.getAuth() != null) { + if (apiSource.getAuth() != null && apiSource.getAuth().getEnabled() != null && apiSource.getAuth().getEnabled()) { auth = this.buildAuthentication(apiSource.getAuth()); } results.addAll(this.queryExternalData(fetchStrategy, apiSource, externalReferenceCriteria, auth)); diff --git a/dmp-db-scema/updates/00.01.043_Add_ntf_User.sql b/dmp-db-scema/updates/00.01.043_Add_ntf_User.sql index 52c5263a5..875a7cc13 100644 --- a/dmp-db-scema/updates/00.01.043_Add_ntf_User.sql +++ b/dmp-db-scema/updates/00.01.043_Add_ntf_User.sql @@ -13,7 +13,7 @@ BEGIN "updated_at" timestamp without time zone NOT NULL DEFAULT now(), "is_active" smallint NOT NULL DEFAULT 1, CONSTRAINT "Ntf_User_pkey" PRIMARY KEY (id) -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.043', '2024-01-24 12:00:00.000000+02', now(), 'Add table ntf_User.'); diff --git a/dmp-db-scema/updates/00.01.044_Add_ntf_User_ContactInfo.sql b/dmp-db-scema/updates/00.01.044_Add_ntf_User_ContactInfo.sql index 74991f487..a8f9dd81e 100644 --- a/dmp-db-scema/updates/00.01.044_Add_ntf_User_ContactInfo.sql +++ b/dmp-db-scema/updates/00.01.044_Add_ntf_User_ContactInfo.sql @@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS public."ntf_UserContactInfo" REFERENCES public."ntf_User" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.044', '2024-01-24 12:00:00.000000+02', now(), 'Add table ntf_UserContactInfo.'); diff --git a/dmp-db-scema/updates/00.01.045_Add_ntf_User_Credential.sql b/dmp-db-scema/updates/00.01.045_Add_ntf_User_Credential.sql index 2495c3d4b..e70afe270 100644 --- a/dmp-db-scema/updates/00.01.045_Add_ntf_User_Credential.sql +++ b/dmp-db-scema/updates/00.01.045_Add_ntf_User_Credential.sql @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS public."ntf_UserCredential" REFERENCES public."ntf_User" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.045', '2024-01-24 12:00:00.000000+02', now(), 'Add table ntf_UserCredential.'); diff --git a/dmp-db-scema/updates/00.01.046_Add_ntf_TenantUser.sql b/dmp-db-scema/updates/00.01.046_Add_ntf_TenantUser.sql index 733db1998..6b75d6bc8 100644 --- a/dmp-db-scema/updates/00.01.046_Add_ntf_TenantUser.sql +++ b/dmp-db-scema/updates/00.01.046_Add_ntf_TenantUser.sql @@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS public."ntf_TenantUser" REFERENCES public."ntf_User" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.046', '2024-01-25 12:00:00.000000+02', now(), 'Add table ntf_TenantUser.'); diff --git a/dmp-db-scema/updates/00.01.051_Add_ant_User.sql b/dmp-db-scema/updates/00.01.051_Add_ant_User.sql index ed0723ff9..e02676717 100644 --- a/dmp-db-scema/updates/00.01.051_Add_ant_User.sql +++ b/dmp-db-scema/updates/00.01.051_Add_ant_User.sql @@ -13,7 +13,7 @@ BEGIN "updated_at" timestamp without time zone NOT NULL DEFAULT now(), "is_active" smallint NOT NULL DEFAULT 1, CONSTRAINT "ant_User_pkey" PRIMARY KEY (id) -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.051', '2024-02-13 12:00:00.000000+02', now(), 'Add table ant_User.'); diff --git a/dmp-db-scema/updates/00.01.052_Add_ant_User_Credential.sql b/dmp-db-scema/updates/00.01.052_Add_ant_User_Credential.sql index 1fe7df9ee..22e574867 100644 --- a/dmp-db-scema/updates/00.01.052_Add_ant_User_Credential.sql +++ b/dmp-db-scema/updates/00.01.052_Add_ant_User_Credential.sql @@ -24,7 +24,7 @@ CREATE TABLE IF NOT EXISTS public."ant_UserCredential" REFERENCES public."ant_User" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.052', '2024-02-13 12:00:00.000000+02', now(), 'Add table ant_UserCredential.'); diff --git a/dmp-db-scema/updates/00.01.053_Add_ant_TenantUser.sql b/dmp-db-scema/updates/00.01.053_Add_ant_TenantUser.sql index b32b6b4c6..d566f24f8 100644 --- a/dmp-db-scema/updates/00.01.053_Add_ant_TenantUser.sql +++ b/dmp-db-scema/updates/00.01.053_Add_ant_TenantUser.sql @@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS public."ant_TenantUser" REFERENCES public."ant_User" (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION -) +); INSERT INTO public."DBVersion" VALUES ('DMPDB', '00.01.053', '2024-02-13 12:00:00.000000+02', now(), 'Add table ant_TenantUser.'); diff --git a/dmp-frontend/src/app/core/query/reference-search.lookup.ts b/dmp-frontend/src/app/core/query/reference-search.lookup.ts index f536eb3a6..e6ec053dc 100644 --- a/dmp-frontend/src/app/core/query/reference-search.lookup.ts +++ b/dmp-frontend/src/app/core/query/reference-search.lookup.ts @@ -3,7 +3,7 @@ import { Guid } from "@common/types/guid"; export class ReferenceSearchLookup extends Lookup { like: string; - referenceTypeId: Guid; + typeId: Guid; key: string; constructor() { @@ -14,7 +14,7 @@ export class ReferenceSearchLookup extends Lookup { export class ReferenceSearchDefinitionLookup extends Lookup { like: string; - referenceTypeId: Guid; + typeId: Guid; key: string; constructor() { diff --git a/dmp-frontend/src/app/core/services/reference/reference.service.ts b/dmp-frontend/src/app/core/services/reference/reference.service.ts index fb273bc21..959f4ff9a 100644 --- a/dmp-frontend/src/app/core/services/reference/reference.service.ts +++ b/dmp-frontend/src/app/core/services/reference/reference.service.ts @@ -160,7 +160,7 @@ export class ReferenceService { nameof(x => x.sourceType), ] }; - lookup.referenceTypeId = typeId; + lookup.typeId = typeId; lookup.order = { items: [nameof(x => x.label)] }; if (like) { lookup.like = this.filterService.transformLike(like); } return lookup; diff --git a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html index a71f6ce3a..b607f1573 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html +++ b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html @@ -131,7 +131,7 @@
{{'DMP-BLUEPRINT-EDITOR.FIELDS.REFERENCE-TYPE' | translate}} - + {{field.get('referenceTypeId').getError('backendError').message}} {{'GENERAL.VALIDATION.REQUIRED' | translate}} diff --git a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts index f2591e1c7..7bd00dead 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.model.ts @@ -125,9 +125,7 @@ export class DmpBlueprintDefinitionEditorModel implements DmpBlueprintDefinition return this.formBuilder.group({ sections: this.formBuilder.array( (this.sections ?? []).map( - (item, index) => new DmpBlueprintDefinitionSectionEditorModel( - this.validationErrorModel - ).fromModel(item).buildForm({ + (item, index) => item.buildForm({ rootPath: `${rootPath}sections[${index}].`, disabled: disabled }) @@ -216,9 +214,7 @@ export class DmpBlueprintDefinitionSectionEditorModel implements DmpBlueprintDef hasTemplates: [{ value: this.hasTemplates, disabled: disabled }, context.getValidation('hasTemplates').validators], fields: this.formBuilder.array( (this.fields ?? []).map( - (item, index) => new FieldInSectionEditorModel( - this.validationErrorModel - ).fromModel(item).buildForm({ + (item, index) => item.buildForm({ rootPath: `${rootPath}fields[${index}].`, disabled: disabled }) @@ -226,9 +222,7 @@ export class DmpBlueprintDefinitionSectionEditorModel implements DmpBlueprintDef ), descriptionTemplates: this.formBuilder.array( (this.descriptionTemplates ?? []).map( - (item, index) => new DescriptionTemplatesInSectionEditorModel( - this.validationErrorModel - ).fromModel(item).buildForm({ + (item, index) => item.buildForm({ rootPath: `${rootPath}descriptionTemplates[${index}].`, disabled: disabled }) diff --git a/dmp-frontend/src/app/ui/admin/reference-type/editor/reference-type-editor.model.ts b/dmp-frontend/src/app/ui/admin/reference-type/editor/reference-type-editor.model.ts index be88c79cd..a663ee8f3 100644 --- a/dmp-frontend/src/app/ui/admin/reference-type/editor/reference-type-editor.model.ts +++ b/dmp-frontend/src/app/ui/admin/reference-type/editor/reference-type-editor.model.ts @@ -336,7 +336,7 @@ export class ReferenceTypeSourceBaseConfigurationEditorModel implements Referenc if (item.paginationPath) this.paginationPath = item.paginationPath; if (item.contentType) this.contentType = item.contentType; if (item.firstPage) this.firstPage = item.firstPage; - if (item.httpMethod) this.httpMethod = item.httpMethod; + if (item.httpMethod != null) this.httpMethod = item.httpMethod; if (item.requestBody) this.requestBody = item.requestBody; if (item.filterType) this.filterType = item.filterType; if (item.auth) this.auth = new AuthenticationConfigurationEditorModel(this.validationErrorModel).fromModel(item.auth);