various fixes

This commit is contained in:
Diamantis Tziotzios 2024-01-19 18:28:53 +02:00
parent d60ecc4f1c
commit ef02fa806e
11 changed files with 96 additions and 24 deletions

View File

@ -1,5 +1,6 @@
package eu.eudat.model; package eu.eudat.model;
import eu.eudat.commons.enums.IsActive;
import eu.eudat.model.dmpreference.DmpReferenceData; import eu.eudat.model.dmpreference.DmpReferenceData;
import java.time.Instant; import java.time.Instant;
@ -16,6 +17,9 @@ public class DmpReference {
private Reference reference; private Reference reference;
public static final String _reference = "reference"; public static final String _reference = "reference";
private IsActive isActive;
public static final String _isActive = "isActive";
private Instant createdAt; private Instant createdAt;
public static final String _createdAt = "createdAt"; public static final String _createdAt = "createdAt";
@ -53,6 +57,14 @@ public class DmpReference {
this.reference = reference; this.reference = reference;
} }
public IsActive getIsActive() {
return isActive;
}
public void setIsActive(IsActive isActive) {
this.isActive = isActive;
}
public Instant getCreatedAt() { return createdAt;} public Instant getCreatedAt() { return createdAt;}
public void setCreatedAt(Instant createdAt) {this.createdAt = createdAt;} public void setCreatedAt(Instant createdAt) {this.createdAt = createdAt;}

View File

@ -74,6 +74,7 @@ public class DmpReferenceBuilder extends BaseBuilder<DmpReference, DmpReferenceE
for (DmpReferenceEntity d : data) { for (DmpReferenceEntity d : data) {
DmpReference m = new DmpReference(); DmpReference m = new DmpReference();
if (fields.hasField(this.asIndexer(DmpReference._id))) m.setId(d.getId()); if (fields.hasField(this.asIndexer(DmpReference._id))) m.setId(d.getId());
if (fields.hasField(this.asIndexer(DmpReference._isActive))) m.setIsActive(d.getIsActive());
if (fields.hasField(this.asIndexer(DmpReference._createdAt))) m.setCreatedAt(d.getCreatedAt()); if (fields.hasField(this.asIndexer(DmpReference._createdAt))) m.setCreatedAt(d.getCreatedAt());
if (fields.hasField(this.asIndexer(DmpReference._updatedAt))) m.setUpdatedAt(d.getUpdatedAt()); if (fields.hasField(this.asIndexer(DmpReference._updatedAt))) m.setUpdatedAt(d.getUpdatedAt());
if (fields.hasField(this.asIndexer(DmpReference._hash))) m.setHash(this.hashValue(d.getUpdatedAt())); if (fields.hasField(this.asIndexer(DmpReference._hash))) m.setHash(this.hashValue(d.getUpdatedAt()));

View File

@ -211,6 +211,7 @@ public class DmpReferenceQuery extends QueryBase<DmpReferenceEntity> {
item.setDmpId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._dmpId, UUID.class)); item.setDmpId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._dmpId, UUID.class));
item.setReferenceId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._referenceId, UUID.class)); item.setReferenceId(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._referenceId, UUID.class));
item.setData(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._data, String.class)); item.setData(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._data, String.class));
item.setIsActive(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._isActive, IsActive.class));
item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._createdAt, Instant.class)); item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._createdAt, Instant.class));
item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._updatedAt, Instant.class)); item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, DmpReferenceEntity._updatedAt, Instant.class));
return item; return item;
@ -224,6 +225,7 @@ public class DmpReferenceQuery extends QueryBase<DmpReferenceEntity> {
else if (item.match(DmpReference._dmp) || item.match(PublicDmpReference._dmp)) return DmpReferenceEntity._dmpId; else if (item.match(DmpReference._dmp) || item.match(PublicDmpReference._dmp)) return DmpReferenceEntity._dmpId;
else if (item.match(DmpReference._reference) || item.match(PublicDmpReference._reference)) return DmpReferenceEntity._referenceId; else if (item.match(DmpReference._reference) || item.match(PublicDmpReference._reference)) return DmpReferenceEntity._referenceId;
else if (item.prefix(DmpReference._data)) return DmpReferenceEntity._data; else if (item.prefix(DmpReference._data)) return DmpReferenceEntity._data;
else if (item.match(DmpReference._isActive)) return DmpReferenceEntity._isActive;
else if (item.match(DmpReference._createdAt)) return DmpReferenceEntity._createdAt; else if (item.match(DmpReference._createdAt)) return DmpReferenceEntity._createdAt;
else if (item.match(DmpReference._updatedAt)) return DmpReferenceEntity._updatedAt; else if (item.match(DmpReference._updatedAt)) return DmpReferenceEntity._updatedAt;
else if (item.match(DmpReference._hash)) return DmpReferenceEntity._updatedAt; else if (item.match(DmpReference._hash)) return DmpReferenceEntity._updatedAt;

View File

@ -5,16 +5,40 @@ import gr.cite.tools.data.query.Lookup;
import gr.cite.tools.data.query.QueryFactory; import gr.cite.tools.data.query.QueryFactory;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.UUID; import java.util.UUID;
public class DmpReferenceLookup extends Lookup { public class DmpReferenceLookup extends Lookup {
private Collection<UUID> ids; private List<UUID> ids;
private Collection<UUID> dmpIds; private List<UUID> dmpIds;
private Collection<UUID> referenceIds; private List<UUID> referenceIds;
public List<UUID> getIds() {
return ids;
}
public void setIds(List<UUID> ids) {
this.ids = ids;
}
public List<UUID> getDmpIds() {
return dmpIds;
}
public void setDmpIds(List<UUID> dmpIds) {
this.dmpIds = dmpIds;
}
public List<UUID> getReferenceIds() {
return referenceIds;
}
public void setReferenceIds(List<UUID> referenceIds) {
this.referenceIds = referenceIds;
}
public DmpReferenceQuery enrich(QueryFactory queryFactory) { public DmpReferenceQuery enrich(QueryFactory queryFactory) {
DmpReferenceQuery query = queryFactory.query(DmpReferenceQuery.class); DmpReferenceQuery query = queryFactory.query(DmpReferenceQuery.class);

View File

@ -569,7 +569,7 @@ public class DmpServiceImpl implements DmpService {
data.getContacts().add(this.buildDmpContactEntity(contactPersist)); data.getContacts().add(this.buildDmpContactEntity(contactPersist));
} }
} }
if (persist.getDmpBlueprintValues() == null && !persist.getDmpBlueprintValues().isEmpty()){ if (persist.getDmpBlueprintValues() != null && !persist.getDmpBlueprintValues().isEmpty()){
data.setDmpBlueprintValues(new ArrayList<>()); data.setDmpBlueprintValues(new ArrayList<>());
for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) { for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) {
if (!this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue())) data.getDmpBlueprintValues().add(this.buildDmpBlueprintValueEntity(fieldValuePersist)); if (!this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue())) data.getDmpBlueprintValues().add(this.buildDmpBlueprintValueEntity(fieldValuePersist));
@ -604,7 +604,7 @@ public class DmpServiceImpl implements DmpService {
private @NotNull List<DmpReferencePersist> buildDmpReferencePersists(DmpPropertiesPersist persist){ private @NotNull List<DmpReferencePersist> buildDmpReferencePersists(DmpPropertiesPersist persist){
List<DmpReferencePersist> dmpReferencePersists = new ArrayList<>(); List<DmpReferencePersist> dmpReferencePersists = new ArrayList<>();
if (persist.getDmpBlueprintValues() == null && !persist.getDmpBlueprintValues().isEmpty()){ if (persist.getDmpBlueprintValues() != null && !persist.getDmpBlueprintValues().isEmpty()){
for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) { for (DmpBlueprintValuePersist fieldValuePersist: persist.getDmpBlueprintValues().values()) {
if (this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue()) && !this.conventionService.isListNullOrEmpty( fieldValuePersist.getReferences())) { if (this.conventionService.isNullOrEmpty(fieldValuePersist.getFieldValue()) && !this.conventionService.isListNullOrEmpty( fieldValuePersist.getReferences())) {
for (ReferencePersist referencePersist : fieldValuePersist.getReferences()) { for (ReferencePersist referencePersist : fieldValuePersist.getReferences()) {
@ -636,7 +636,7 @@ public class DmpServiceImpl implements DmpService {
Map<UUID, DmpReferenceDataEntity> dmpReferenceDataEntityMap = new HashMap<>(); Map<UUID, DmpReferenceDataEntity> dmpReferenceDataEntityMap = new HashMap<>();
for (DmpReferenceEntity dmpReferenceEntity : dmpReferences){ for (DmpReferenceEntity dmpReferenceEntity : dmpReferences){
dmpReferenceDataEntityMap.put(dmpReferenceEntity.getDmpId(), this.jsonHandlingService.fromJsonSafe(DmpReferenceDataEntity.class, dmpReferenceEntity.getData())); dmpReferenceDataEntityMap.put(dmpReferenceEntity.getId(), this.jsonHandlingService.fromJsonSafe(DmpReferenceDataEntity.class, dmpReferenceEntity.getData()));
} }
List<UUID> updatedCreatedIds = new ArrayList<>(); List<UUID> updatedCreatedIds = new ArrayList<>();
@ -708,6 +708,7 @@ public class DmpServiceImpl implements DmpService {
data.setId(UUID.randomUUID()); data.setId(UUID.randomUUID());
data.setIsActive(IsActive.Active); data.setIsActive(IsActive.Active);
data.setCreatedAt(Instant.now()); data.setCreatedAt(Instant.now());
data.setUpdatedAt(Instant.now());
data.setDmpId(id); data.setDmpId(id);
data.setSectionId(model.getSectionId()); data.setSectionId(model.getSectionId());
data.setDescriptionTemplateGroupId(model.getDescriptionTemplateGroupId()); data.setDescriptionTemplateGroupId(model.getDescriptionTemplateGroupId());

View File

@ -9,7 +9,7 @@ storage:
- type: Transformer - type: Transformer
basePath: ${TRANSFORMER_BASE_PATH} basePath: ${TRANSFORMER_BASE_PATH}
static-files: static-files:
externalUrls: externalUrls/ExternalUrls.xml externalUrls: dmp-backend/web/src/main/resources/externalUrls/ExternalUrls.xml
semantics: Semantics.json semantics: Semantics.json
h2020Template: documents/h2020.docx h2020Template: documents/h2020.docx
h2020DescriptionTemplate: documents/h2020_dataset.docx h2020DescriptionTemplate: documents/h2020_dataset.docx

View File

@ -81,7 +81,7 @@ export interface DmpPersist extends BaseEntityPersist {
} }
export interface DmpPropertiesPersist { export interface DmpPropertiesPersist {
dmpBlueprintValues: DmpBlueprintValuePersist[]; dmpBlueprintValues: Map<Guid, DmpBlueprintValuePersist>;
contacts: DmpContactPersist[]; contacts: DmpContactPersist[];
} }

View File

@ -103,7 +103,7 @@ export class ReferenceService {
lookup.project = { lookup.project = {
fields: [ fields: [
nameof<Reference>(x => x.id), nameof<Reference>(x => x.id),
nameof<Reference>(x => x.label) nameof<Reference>(x => x.label),
] ]
}; };
if (types && types.length > 0) { lookup.types = types; } if (types && types.length > 0) { lookup.types = types; }
@ -120,7 +120,7 @@ export class ReferenceService {
return { return {
initialItems: (data?: any) => this.search(this.buildAutocompleteSearchLookup(type)).pipe(map(x => x)), initialItems: (data?: any) => this.search(this.buildAutocompleteSearchLookup(type)).pipe(map(x => x)),
filterFn: (searchQuery: string, data?: any) => this.search(this.buildAutocompleteSearchLookup(type, searchQuery)).pipe(map(x => x)), filterFn: (searchQuery: string, data?: any) => this.search(this.buildAutocompleteSearchLookup(type, searchQuery)).pipe(map(x => x)),
getSelectedItem: (selectedItem: any) => this.search(this.buildAutocompleteSearchLookup(type)).pipe(map(x => x[0])), getSelectedItem: (selectedItem: any) => this.query(this.buildAutocompleteSearchSelectedItemsLookup([type], null, null, null, [selectedItem])).pipe(map(x => x.items[0])),
displayFn: (item: Reference) => item.label, displayFn: (item: Reference) => item.label,
titleFn: (item: Reference) => item.label, titleFn: (item: Reference) => item.label,
valueAssign: (item: Reference) => item.id, valueAssign: (item: Reference) => item.id,
@ -131,7 +131,7 @@ export class ReferenceService {
return { return {
initialItems: (excludedItems: any[], data?: any) => this.search(this.buildAutocompleteSearchLookup(type, null)).pipe(map(x => x)), initialItems: (excludedItems: any[], data?: any) => this.search(this.buildAutocompleteSearchLookup(type, null)).pipe(map(x => x)),
filterFn: (searchQuery: string, excludedItems: any[]) => this.search(this.buildAutocompleteSearchLookup(type, searchQuery)).pipe(map(x => x)), filterFn: (searchQuery: string, excludedItems: any[]) => this.search(this.buildAutocompleteSearchLookup(type, searchQuery)).pipe(map(x => x)),
getSelectedItems: (selectedItems: any[]) => this.search(this.buildAutocompleteSearchLookup(type, null)).pipe(map(x => x)), getSelectedItems: (selectedItems: any[]) => this.query(this.buildAutocompleteSearchSelectedItemsLookup([type], null, null, null, selectedItems?.map(x => x.id))).pipe(map(x => x.items)),
displayFn: (item: Reference) => item.label, displayFn: (item: Reference) => item.label,
titleFn: (item: Reference) => item.label, titleFn: (item: Reference) => item.label,
valueAssign: (item: Reference) => item, valueAssign: (item: Reference) => item,
@ -162,6 +162,34 @@ export class ReferenceService {
return lookup; return lookup;
} }
private buildAutocompleteSearchSelectedItemsLookup(types?: ReferenceType[], sourceTypes?: ReferenceSourceType[], like?: string, excludedIds?: Guid[], ids?: Guid[]): ReferenceLookup {
const lookup: ReferenceLookup = new ReferenceLookup();
lookup.page = { size: 100, offset: 0 };
if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; }
if (ids && ids.length > 0) { lookup.ids = ids; }
lookup.isActive = [IsActive.Active];
lookup.project = {
fields: [
nameof<Reference>(x => x.id),
nameof<Reference>(x => x.label),
nameof<Reference>(x => x.type),
nameof<Reference>(x => x.description),
[nameof<Reference>(x => x.definition), nameof<Definition>(x => x.fields), nameof<Field>(x => x.code)].join('.'),
[nameof<Reference>(x => x.definition), nameof<Definition>(x => x.fields), nameof<Field>(x => x.dataType)].join('.'),
[nameof<Reference>(x => x.definition), nameof<Definition>(x => x.fields), nameof<Field>(x => x.value)].join('.'),
nameof<Reference>(x => x.reference),
nameof<Reference>(x => x.abbreviation),
nameof<Reference>(x => x.source),
nameof<Reference>(x => x.sourceType),
]
};
if (types && types.length > 0) { lookup.types = types; }
if (sourceTypes && sourceTypes.length > 0) { lookup.sourceTypes = sourceTypes; }
lookup.order = { items: [nameof<Reference>(x => x.label)] };
if (like) { lookup.like = this.filterService.transformLike(like); }
return lookup;
}
// //
// //

View File

@ -212,15 +212,17 @@ export class DmpEditorComponent extends BaseEditor<DmpEditorModel, Dmp> implemen
//Transform to persist //Transform to persist
//Transform descriptionTemplates //Transform descriptionTemplates
formData.descriptionTemplates = []; formData.descriptionTemplates = [];
for (const fieldId in (this.formGroup.get('descriptionTemplates') as UntypedFormGroup).controls) { for (const sectionId in (this.formGroup.get('descriptionTemplates') as UntypedFormGroup).controls) {
formData.descriptionTemplates.push(this.formGroup.get('descriptionTemplates').get(fieldId).value); formData.descriptionTemplates.push(
...(this.formGroup.get('descriptionTemplates').get(sectionId).value as Guid[]).map(x => { return { sectionId: Guid.parse(sectionId), descriptionTemplateGroupId: x } })
);
} }
//Transform properties //Transform properties
formData.properties.dmpBlueprintValues = []; // formData.properties.dmpBlueprintValues = [];
for (const fieldId in (this.formGroup.get('properties').get('dmpBlueprintValues') as UntypedFormGroup).controls) { // for (const fieldId in (this.formGroup.get('properties').get('dmpBlueprintValues') as UntypedFormGroup).controls) {
formData.properties.dmpBlueprintValues.push(this.formGroup.get('properties').get('dmpBlueprintValues').get(fieldId).value); // formData.properties.dmpBlueprintValues.push(this.formGroup.get('properties').get('dmpBlueprintValues').get(fieldId).value);
} // }
this.dmpService.persist(formData) this.dmpService.persist(formData)

View File

@ -1,6 +1,7 @@
import { FormControl, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; import { FormControl, UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms";
import { DmpAccessType } from "@app/core/common/enum/dmp-access-type"; import { DmpAccessType } from "@app/core/common/enum/dmp-access-type";
import { DmpStatus } from "@app/core/common/enum/dmp-status"; import { DmpStatus } from "@app/core/common/enum/dmp-status";
import { IsActive } from "@app/core/common/enum/is-active.enum";
import { DmpBlueprint } from "@app/core/model/dmp-blueprint/dmp-blueprint"; import { DmpBlueprint } from "@app/core/model/dmp-blueprint/dmp-blueprint";
import { Dmp, DmpBlueprintValue, DmpBlueprintValuePersist, DmpContact, DmpContactPersist, DmpDescriptionTemplate, DmpDescriptionTemplatePersist, DmpPersist, DmpProperties, DmpPropertiesPersist, DmpReferenceDataPersist, DmpReferencePersist } from "@app/core/model/dmp/dmp"; import { Dmp, DmpBlueprintValue, DmpBlueprintValuePersist, DmpContact, DmpContactPersist, DmpDescriptionTemplate, DmpDescriptionTemplatePersist, DmpPersist, DmpProperties, DmpPropertiesPersist, DmpReferenceDataPersist, DmpReferencePersist } from "@app/core/model/dmp/dmp";
import { DmpReference } from "@app/core/model/dmp/dmp-reference"; import { DmpReference } from "@app/core/model/dmp/dmp-reference";
@ -32,7 +33,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
super.fromModel(item); super.fromModel(item);
this.label = item.label; this.label = item.label;
this.status = item.status; this.status = item.status;
this.properties = new DmpPropertiesEditorModel().fromModel(item.properties, item.dmpReferences, item.blueprint); this.properties = new DmpPropertiesEditorModel().fromModel(item.properties, item.dmpReferences.filter(x => x.isActive === IsActive.Active), item.blueprint);
this.description = item.description; this.description = item.description;
this.language = item.language; this.language = item.language;
this.blueprint = item.blueprint?.id; this.blueprint = item.blueprint?.id;
@ -122,7 +123,7 @@ export class DmpEditorModel extends BaseEditorModel implements DmpPersist {
} }
export class DmpPropertiesEditorModel implements DmpPropertiesPersist { export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
dmpBlueprintValues: DmpBlueprintValueEditorModel[] = []; dmpBlueprintValues: Map<Guid, DmpBlueprintValueEditorModel> = new Map<Guid, DmpBlueprintValueEditorModel>;
contacts: DmpContactEditorModel[] = []; contacts: DmpContactEditorModel[] = [];
protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder();
@ -133,9 +134,10 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
fromModel(item: DmpProperties, dmpReferences: DmpReference[], dmpBlueprint: DmpBlueprint): DmpPropertiesEditorModel { fromModel(item: DmpProperties, dmpReferences: DmpReference[], dmpBlueprint: DmpBlueprint): DmpPropertiesEditorModel {
dmpBlueprint.definition.sections.forEach(section => { dmpBlueprint.definition.sections.forEach(section => {
section.fields.forEach(field => { section.fields.forEach(field => {
this.dmpBlueprintValues.push(new DmpBlueprintValueEditorModel().fromModel( this.dmpBlueprintValues.set(field.id, new DmpBlueprintValueEditorModel().fromModel(
{ {
fieldId: field.id, fieldId: field.id,
fieldValue: item?.dmpBlueprintValues?.find(x => x.fieldId == field.id)?.fieldValue, fieldValue: item?.dmpBlueprintValues?.find(x => x.fieldId == field.id)?.fieldValue,
@ -151,7 +153,7 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
context?: ValidationContext, context?: ValidationContext,
disabled?: boolean, disabled?: boolean,
rootPath?: string rootPath?: string
}): UntypedFormGroup { }, dmpReferences?: DmpReference[], dmpBlueprint?: DmpBlueprint): UntypedFormGroup {
let { context = null, disabled = false, rootPath } = params ?? {} let { context = null, disabled = false, rootPath } = params ?? {}
if (context == null) { if (context == null) {
context = DmpPropertiesEditorModel.createValidationContext({ context = DmpPropertiesEditorModel.createValidationContext({
@ -175,9 +177,8 @@ export class DmpPropertiesEditorModel implements DmpPropertiesPersist {
const dmpBlueprintValuesFormGroup = this.formBuilder.group({}); const dmpBlueprintValuesFormGroup = this.formBuilder.group({});
(this.dmpBlueprintValues ?? []).filter(x => x?.fieldId).map( this.dmpBlueprintValues.forEach((value, key) => dmpBlueprintValuesFormGroup.addControl(key.toString(), value.buildForm({
(item, index) => dmpBlueprintValuesFormGroup.addControl(item.fieldId.toString(), item.buildForm({ rootPath: `dmpBlueprintValues[${key}].`
rootPath: `dmpBlueprintValues[${index}].`
})), context.getValidation('dmpBlueprintValues') })), context.getValidation('dmpBlueprintValues')
) )
formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup); formGroup.addControl('dmpBlueprintValues', dmpBlueprintValuesFormGroup);

View File

@ -57,6 +57,7 @@ export class DmpEditorResolver extends BaseEditorResolver {
// [nameof<Dmp>(x => x.dmpUsers), nameof<DmpUser>(x => x.user.name)].join('.'), // [nameof<Dmp>(x => x.dmpUsers), nameof<DmpUser>(x => x.user.name)].join('.'),
// [nameof<Dmp>(x => x.dmpUsers), nameof<DmpUser>(x => x.role)].join('.'), // [nameof<Dmp>(x => x.dmpUsers), nameof<DmpUser>(x => x.role)].join('.'),
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.id)].join('.'), [nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.id)].join('.'),
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.isActive)].join('.'),
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.data), nameof<DmpReferenceData>(x => x.blueprintFieldId)].join('.'), [nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.data), nameof<DmpReferenceData>(x => x.blueprintFieldId)].join('.'),
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.reference), nameof<Reference>(x => x.id)].join('.'), [nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.reference), nameof<Reference>(x => x.id)].join('.'),
[nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.reference), nameof<Reference>(x => x.label)].join('.'), [nameof<Dmp>(x => x.dmpReferences), nameof<DmpReference>(x => x.reference), nameof<Reference>(x => x.label)].join('.'),