From c68e2f5c23b20fb74feee6dbbbe4482804a6b641 Mon Sep 17 00:00:00 2001 From: massifben <105049157+massifben@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:26:30 +0100 Subject: [PATCH] feat(#457): Add DataTypeTemplatesService.getEnumValues and enhance findDoLinkedToDa signature Signed-off-by: massifben <105049157+massifben@users.noreply.github.com> --- .../sct/commons/DataTypeTemplatesService.java | 97 ++++++---- .../compas/sct/commons/DoTypeService.java | 53 +++--- .../sct/commons/ExtRefEditorService.java | 12 +- .../compas/sct/commons/LnService.java | 26 +-- .../commons/api/DataTypeTemplateReader.java | 3 +- .../compas/sct/commons/domain/DataObject.java | 17 +- .../sct/commons/domain/DoLinkedToDa.java | 17 +- .../commons/domain/DoLinkedToDaFilter.java | 23 +-- .../commons/DataTypeTemplatesServiceTest.java | 171 +++++++++--------- .../compas/sct/commons/DoTypeServiceTest.java | 36 ++-- .../compas/sct/commons/LnServiceTest.java | 42 ++--- .../sct/commons/domain/DoLinkedToDaTest.java | 38 ++-- .../compas/sct/commons/dto/LNodeDTOTest.java | 99 +++++++--- .../scd_dtt_do_sdo_da_bda_tests.xml | 5 +- .../ied-test-schema-conf/ied_unit_test.xml | 4 +- 15 files changed, 356 insertions(+), 287 deletions(-) diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java index b72c0b4b2..723f16209 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java @@ -12,7 +12,9 @@ import org.lfenergy.compas.sct.commons.domain.DoLinkedToDa; import org.lfenergy.compas.sct.commons.domain.DoLinkedToDaFilter; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; import java.util.function.Predicate; import java.util.stream.Stream; @@ -30,18 +32,19 @@ public class DataTypeTemplatesService implements DataTypeTemplateReader { /** * verify if DO(name=Mod)/DA(name=stVal) exists in DataTypeTemplate - * @param dtt TDataTypeTemplates where Data object and Data attribute exists + * + * @param dtt TDataTypeTemplates where Data object and Data attribute exists * @param lNodeTypeId LNode Type ID where Data object exists - * DataTypeTemplates model : - * - * - * - * - * ... - * - * - * - * + * DataTypeTemplates model : + * + * + * + * + * ... + * + * + * + * * @return true if the Data Object (Mod) and Data attribute (stVal) present, false otherwise */ public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId) { @@ -54,16 +57,14 @@ public boolean isDoModAndDaStValExist(TDataTypeTemplates dtt, String lNodeTypeId @Override public Stream getAllDoLinkedToDa(TDataTypeTemplates dtt) { - return lnodeTypeService.getLnodeTypes(dtt) + return lnodeTypeService.getLnodeTypes(dtt) .flatMap(tlNodeType -> { - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(new DataObject()); - doLinkedToDa.setDataAttribute(new DataAttribute()); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(new DataObject(), new DataAttribute()); return tlNodeType.getDO() .stream() .map(tdo -> doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType())) .map(doType -> { - doLinkedToDa.getDataObject().setDoName(tdo.getName()); + doLinkedToDa.dataObject().setDoName(tdo.getName()); return doTypeService.getAllSDOLinkedToDa(dtt, doType, doLinkedToDa).stream(); })) .filter(Optional::isPresent) @@ -78,41 +79,49 @@ public Stream getFilteredDoLinkedToDa(TDataTypeTemplates dtt, Stri .flatMap(tlNodeType -> doService.getFilteredDos(tlNodeType, tdo -> StringUtils.isBlank(doLinkedToDaFilter.doName()) || doLinkedToDaFilter.doName().equals(tdo.getName())) .flatMap(tdo -> { - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName(tdo.getName()); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(new DataAttribute()); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, new DataAttribute()); return doTypeService.findDoType(dtt, tdoType -> tdoType.getId().equals(tdo.getType())) .stream() .flatMap(tdoType -> { - doLinkedToDa.getDataObject().setCdc(tdoType.getCdc()); + doLinkedToDa.dataObject().setCdc(tdoType.getCdc()); return doTypeService.getAllSDOLinkedToDa(dtt, tdoType, doLinkedToDa).stream() .filter(doLinkedToDa1 -> StringUtils.isBlank(doLinkedToDaFilter.doName()) || (doLinkedToDa1.getDoRef().startsWith(doLinkedToDaFilter.getDoRef()) && StringUtils.isBlank(doLinkedToDaFilter.daName())) || doLinkedToDa1.getDaRef().startsWith(doLinkedToDaFilter.getDaRef())); }); - })); + })); } @Override - public Optional findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDa doLinkedToDa) { - List dataRefList = new ArrayList<>(doLinkedToDa.getDataObject().getSdoNames()); - dataRefList.addAll(doLinkedToDa.getDataAttribute().getBdaNames()); + public Optional findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter) { + List dataRefList = new ArrayList<>(doLinkedToDaFilter.sdoNames()); + dataRefList.addAll(doLinkedToDaFilter.bdaNames()); return lnodeTypeService.findLnodeType(dtt, lNodeType -> lNodeTypeId.equals(lNodeType.getId())) - .flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDa.getDataObject().getDoName())) + .flatMap(lNodeType -> doService.findDo(lNodeType, tdo -> tdo.getName().equals(doLinkedToDaFilter.doName())) // Search DoType for each DO .flatMap(tdo -> doTypeService.findDoType(dtt, doType -> doType.getId().equals(tdo.getType())) .flatMap(tdoType -> { // Search last DoType from DOType (SDO) > DOType (SDO) TDOType lastDoType = findDOTypeBySdoName(dtt, tdoType, dataRefList); + // Prepare DataObject + DataObject dataObject = new DataObject(tdo.getName(), tdoType.getCdc(), doLinkedToDaFilter.sdoNames()); // Search first DA from last DoType - return sdoOrDAService.findDA(lastDoType, tda1 -> tda1.getName().equals(doLinkedToDa.getDataAttribute().getDaName())) + return sdoOrDAService.findDA(lastDoType, tda -> tda.getName().equals(doLinkedToDaFilter.daName())) .flatMap(tda -> { + // Prepare DataAttribute + DataAttribute dataAttribute = new DataAttribute(); + dataAttribute.setDaName(tda.getName()); + dataAttribute.setFc(tda.getFc()); // Check if first DA is STRUCT or not - if(!tda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) { - return Optional.of(doLinkedToDa); + if (!tda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) { + dataAttribute.addDaVal(tda.getVal()); + dataAttribute.setBType(tda.getBType()); + dataAttribute.setType(tda.getType()); + dataAttribute.setValImport(tda.isValImport()); + return Optional.of(new DoLinkedToDa(dataObject, dataAttribute)); } // Search first DaType from DOType (from last DOType where DA is STRUCT) return getDATypeByDaName(dtt, lastDoType, tda.getName()) @@ -122,24 +131,46 @@ public Optional findDoLinkedToDa(TDataTypeTemplates dtt, String lN && tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT), dataRefList); // last DAType should contain BDA not STRUCT - if(dataRefList.size() != 1) return Optional.empty(); + if (dataRefList.size() != 1) return Optional.empty(); String lastBdaName = dataRefList.getFirst(); return bdaService.findBDA(lastDAType, tbda -> tbda.getName().equals(lastBdaName) && !tbda.getBType().equals(TPredefinedBasicTypeEnum.STRUCT)) - .flatMap(tbda -> Optional.of(doLinkedToDa)); + .flatMap(tbda -> { + dataAttribute.getBdaNames().addAll(doLinkedToDaFilter.bdaNames()); + dataAttribute.setBType(tbda.getBType()); + dataAttribute.setType(tbda.getType()); + dataAttribute.setValImport(tbda.isValImport()); + dataAttribute.addDaVal(tbda.getVal()); + return Optional.of(new DoLinkedToDa(dataObject, dataAttribute)); + }); }); }); }) )); } + @Override + public Stream getEnumValues(TDataTypeTemplates dataTypeTemplates, String lnType, DoLinkedToDaFilter doLinkedToDaFilter) { + return findDoLinkedToDa(dataTypeTemplates, lnType, doLinkedToDaFilter) + .map(DoLinkedToDa::dataAttribute) + .filter(dataAttribute -> TPredefinedBasicTypeEnum.ENUM.equals(dataAttribute.getBType())) + .map(DataAttribute::getType) + .flatMap(enumId -> + dataTypeTemplates.getEnumType().stream() + .filter(tEnumType -> tEnumType.getId().equals(enumId)) + .findFirst()) + .stream() + .flatMap(tEnumType -> tEnumType.getEnumVal().stream()) + .map(TEnumVal::getValue); + } + private Optional getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoType, String daName) { return sdoOrDAService.findDA(tdoType, tda -> tda.getName().equals(daName)) .flatMap(tda -> daTypeService.findDaType(dtt, tda.getType())); } private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, List sdoNames) { - if(sdoNames.isEmpty()) return tdoType; + if (sdoNames.isEmpty()) return tdoType; return sdoOrDAService.findSDO(tdoType, tsdo -> tsdo.getName().equals(sdoNames.getFirst())) .flatMap(tsdo -> doTypeService.findDoType(dtt, tdoType2 -> tdoType2.getId().equals(tsdo.getType()))) .map(tdoType2 -> { @@ -149,7 +180,7 @@ private TDOType findDOTypeBySdoName(TDataTypeTemplates dtt, TDOType tdoType, Lis } private TDAType findDATypeByBdaName(TDataTypeTemplates dtt, TDAType tdaType, Predicate tbdaPredicate, List bdaNames) { - if(bdaNames.isEmpty()) return tdaType; + if (bdaNames.isEmpty()) return tdaType; return bdaService.getFilteredBDAs(tdaType, tbdaPredicate) .findFirst() .flatMap(tbda -> daTypeService.findDaType(dtt, tbda.getType())) diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java index 17cf62278..5b53aa546 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java @@ -16,9 +16,9 @@ public class DoTypeService { - final DaTypeService daTypeService = new DaTypeService(); - final SDOOrDAService sdoOrDAService = new SDOOrDAService(); - final BDAService bdaService = new BDAService(); + final DaTypeService daTypeService = new DaTypeService(); + final SDOOrDAService sdoOrDAService = new SDOOrDAService(); + final BDAService bdaService = new BDAService(); public Stream getDoTypes(TDataTypeTemplates tDataTypeTemplates) { return tDataTypeTemplates.getDOType().stream(); @@ -37,53 +37,54 @@ public List getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType td // DA -> BDA -> BDA.. sdoOrDAService.getDAs(tdoType).forEach(tda -> { DoLinkedToDa doLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); - doLinkedToDa.getDataAttribute().setDaName(tda.getName()); - if(tda.isSetFc()) { - doLinkedToDa.getDataAttribute().setFc(tda.getFc()); + doLinkedToDa.dataAttribute().setDaName(tda.getName()); + if (tda.isSetFc()) { + doLinkedToDa.dataAttribute().setFc(tda.getFc()); } // STRUCT type (BType=STRUCT) refer to BDA, otherwise it is DA - if(TPredefinedBasicTypeEnum.STRUCT.equals(tda.getBType())) { + if (TPredefinedBasicTypeEnum.STRUCT.equals(tda.getBType())) { daTypeService.findDaType(dtt, tda.getType()) .ifPresent(nextDaType -> result.addAll(getDaLinkedToBDA(dtt, nextDaType, doLinkedToDa).toList())); } else { - doLinkedToDa.setDataAttribute(updateDataAttributeFromDaOrBda(tda, doLinkedToDa.getDataAttribute())); - result.add(doLinkedToDa); + DataAttribute dataAttribute = updateDataAttributeFromDaOrBda(tda, doLinkedToDa.dataAttribute()); + result.add(new DoLinkedToDa(doLinkedToDa.dataObject(), dataAttribute)); } }); // SDO -> SDO -> SDO.. sdoOrDAService.getSDOs(tdoType) .forEach(tsdo -> { - if(tsdo.isSetType()){ - findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType())) - .ifPresent(nextDoType -> { - DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); - newDoLinkedToDa.getDataObject().getSdoNames().add(tsdo.getName()); - if(nextDoType.isSetCdc()) { - newDoLinkedToDa.getDataObject().setCdc(nextDoType.getCdc()); - } - result.addAll(getAllSDOLinkedToDa(dtt, nextDoType, newDoLinkedToDa)); - }); + if (tsdo.isSetType()) { + findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType())) + .ifPresent(nextDoType -> { + DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); + newDoLinkedToDa.dataObject().getSdoNames().add(tsdo.getName()); + if (nextDoType.isSetCdc()) { + newDoLinkedToDa.dataObject().setCdc(nextDoType.getCdc()); + } + result.addAll(getAllSDOLinkedToDa(dtt, nextDoType, newDoLinkedToDa)); + }); } }); return result; } + private Stream getDaLinkedToBDA(TDataTypeTemplates dtt, TDAType tdaType1, DoLinkedToDa doLinkedToDaTemplate) { // BDA -> BDA -> BDA.. return bdaService.getBDAs(tdaType1) .flatMap(tbda -> { DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); - newDoLinkedToDa.getDataAttribute().getBdaNames().add(tbda.getName()); + newDoLinkedToDa.dataAttribute().getBdaNames().add(tbda.getName()); // STRUCT type (BType=STRUCT) refer to complex BDA object, otherwise it is kind of DA object - if(TPredefinedBasicTypeEnum.STRUCT.equals(tbda.getBType())){ - return daTypeService.findDaType(dtt, tbda.getType()) + if (TPredefinedBasicTypeEnum.STRUCT.equals(tbda.getBType())) { + return daTypeService.findDaType(dtt, tbda.getType()) .stream().flatMap(nextDaType -> getDaLinkedToBDA(dtt, nextDaType, newDoLinkedToDa)); } else { - newDoLinkedToDa.setDataAttribute(updateDataAttributeFromDaOrBda(tbda, newDoLinkedToDa.getDataAttribute())); - return Stream.of(newDoLinkedToDa); + DataAttribute dataAttribute = updateDataAttributeFromDaOrBda(tbda, newDoLinkedToDa.dataAttribute()); + return Stream.of(new DoLinkedToDa(newDoLinkedToDa.dataObject(), dataAttribute)); } - }); + }); } private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOrBda, DataAttribute dataAttribute) { @@ -94,4 +95,4 @@ private DataAttribute updateDataAttributeFromDaOrBda(TAbstractDataAttribute daOr return dataAttribute; } -} \ No newline at end of file +} diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefEditorService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefEditorService.java index 221b133f5..94593fdd7 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefEditorService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefEditorService.java @@ -23,7 +23,10 @@ import org.lfenergy.compas.sct.commons.util.PrivateUtils; import org.lfenergy.compas.sct.commons.util.Utils; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; import static org.apache.commons.lang3.StringUtils.*; import static org.lfenergy.compas.sct.commons.util.CommonConstants.*; @@ -271,7 +274,7 @@ public List manageBindingForLDEPF(SCL scd, EPF epf) { .findFirst().ifPresent(channel -> { List iedSources = getIedSources(sclRootAdapter, extRefBayRef.compasBay(), channel); if (iedSources.size() == 1) { - updateLDEPFExtRefBinding(extRefBayRef.extRef(), iedSources.get(0), channel); + updateLDEPFExtRefBinding(extRefBayRef.extRef(), iedSources.getFirst(), channel); LDeviceAdapter lDeviceAdapter = new LDeviceAdapter(new IEDAdapter(sclRootAdapter, tied.getName()), tlDevice); sclReportItems.addAll(updateLDEPFDos(lDeviceAdapter, extRefBayRef.extRef(), channel)); } else { @@ -307,15 +310,12 @@ public void epfPostProcessing(SCL scd) { && (purPoseDAI.get().getVal().getFirst().getValue().startsWith("DYN_LDEPF_DIGITAL CHANNEL") || purPoseDAI.get().getVal().getFirst().getValue().startsWith("DYN_LDEPF_ANALOG CHANNEL")); if(isSetSrcRefExistAndEmpty && isPurposeExistAndMatchChannel) { - - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName(tdoi.getName()); - doLinkedToDa.setDataObject(dataObject); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName(SETSRCREF_DA_NAME); dataAttribute.setDaiValues(List.of(new DaVal(null, tied.getName()+tlDevice.getInst()+"/LPHD0.Proxy"))); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); lnEditor.updateOrCreateDOAndDAInstances(tlDevice.getLN0(), doLinkedToDa); } }))); diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java index 2ccad6508..ba06e5f7e 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java @@ -129,10 +129,10 @@ public Optional getDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDaFilter doLi @Override public void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedToDa) { - createDoiSdiDaiChainIfNotExists(tAnyLN, doLinkedToDa.getDataObject(), doLinkedToDa.getDataAttribute()) + createDoiSdiDaiChainIfNotExists(tAnyLN, doLinkedToDa.dataObject(), doLinkedToDa.dataAttribute()) .ifPresent(tdai -> { - List daiVals = doLinkedToDa.getDataAttribute().getDaiValues(); - if(!hasSettingGroup(tdai) && daiVals.size() == 1 && daiVals.getFirst().settingGroup() == null) { + List daiVals = doLinkedToDa.dataAttribute().getDaiValues(); + if (!hasSettingGroup(tdai) && daiVals.size() == 1 && daiVals.getFirst().settingGroup() == null) { String value = daiVals.getFirst().val(); tdai.getVal().stream().findFirst() .ifPresentOrElse(tVal -> tVal.setValue(value), @@ -152,11 +152,11 @@ public void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedT public void completeFromDAInstance(TIED tied, String ldInst, TAnyLN anyLN, DoLinkedToDa doLinkedToDa) { getDOAndDAInstances(anyLN, doLinkedToDa.toFilter()) .ifPresent(tdai -> { - if(tdai.isSetVal()) { - doLinkedToDa.getDataAttribute().addDaVal(tdai.getVal()); + if (tdai.isSetVal()) { + doLinkedToDa.dataAttribute().addDaVal(tdai.getVal()); } - if(doLinkedToDa.getDataAttribute().getFc() == TFCEnum.SG || doLinkedToDa.getDataAttribute().getFc() == TFCEnum.SE) { - if(hasSettingGroup(tdai)) { + if (doLinkedToDa.dataAttribute().getFc() == TFCEnum.SG || doLinkedToDa.dataAttribute().getFc() == TFCEnum.SE) { + if (hasSettingGroup(tdai)) { boolean isIedHasConfSG = tied.isSetAccessPoint() && tied.getAccessPoint().stream() .filter(tAccessPoint -> tAccessPoint.getServer() != null @@ -166,13 +166,13 @@ public void completeFromDAInstance(TIED tied, String ldInst, TAnyLN anyLN, DoLin && tAccessPoint.getServices() != null && tAccessPoint.getServices().getSettingGroups() != null && tAccessPoint.getServices().getSettingGroups().getConfSG() != null); - doLinkedToDa.getDataAttribute().setValImport((!tdai.isSetValImport() || tdai.isValImport()) && isIedHasConfSG); + doLinkedToDa.dataAttribute().setValImport((!tdai.isSetValImport() || tdai.isValImport()) && isIedHasConfSG); } else { - log.warn(String.format("Inconsistency in the SCD file - DAI= %s with fc= %s must have a sGroup attribute", tdai.getName(), doLinkedToDa.getDataAttribute().getFc())); - doLinkedToDa.getDataAttribute().setValImport(false); - } - } else if(tdai.isSetValImport()) { - doLinkedToDa.getDataAttribute().setValImport(tdai.isValImport()); + log.warn(String.format("Inconsistency in the SCD file - DAI= %s with fc= %s must have a sGroup attribute", tdai.getName(), doLinkedToDa.dataAttribute().getFc())); + doLinkedToDa.dataAttribute().setValImport(false); + } + } else if (tdai.isSetValImport()) { + doLinkedToDa.dataAttribute().setValImport(tdai.isValImport()); } }); } diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java index 63640ec7f..c50434f1a 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java @@ -19,6 +19,7 @@ public interface DataTypeTemplateReader { Stream getFilteredDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter); - Optional findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDa doLinkedToDa); + Optional findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter); + Stream getEnumValues(TDataTypeTemplates dataTypeTemplates, String lnType, DoLinkedToDaFilter doLinkedToDaFilter); } diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java index e8119345b..33a5e53e0 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java @@ -4,7 +4,9 @@ package org.lfenergy.compas.sct.commons.domain; -import lombok.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.lfenergy.compas.scl2007b4.model.TPredefinedCDCEnum; @@ -13,18 +15,21 @@ @Getter @Setter +@NoArgsConstructor public class DataObject { private String doName; private TPredefinedCDCEnum cdc; private List sdoNames = new ArrayList<>(); + public DataObject(String doName, TPredefinedCDCEnum cdc, List sdoNames) { + this.doName = doName; + this.cdc = cdc; + this.sdoNames.addAll(sdoNames); + } + public static DataObject copyFrom(DataObject dataObject) { - DataObject dataObject1 = new DataObject(); - dataObject1.setDoName(dataObject.getDoName()); - dataObject1.setCdc(dataObject.getCdc()); - dataObject1.getSdoNames().addAll(dataObject.getSdoNames()); - return dataObject1; + return new DataObject(dataObject.getDoName(), dataObject.getCdc(), dataObject.getSdoNames()); } @Override diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java index 7a1d86a48..92e34de9f 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java @@ -5,25 +5,16 @@ package org.lfenergy.compas.sct.commons.domain; -import lombok.Getter; -import lombok.Setter; - import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME; import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL_DA_NAME; -@Getter -@Setter -public class DoLinkedToDa { - - private DataObject dataObject; - private DataAttribute dataAttribute; +public record DoLinkedToDa(DataObject dataObject, DataAttribute dataAttribute) { public static DoLinkedToDa copyFrom(DoLinkedToDa doLinkedToDa) { - DoLinkedToDa newDoLinkedToDa = new DoLinkedToDa(); - newDoLinkedToDa.setDataObject(DataObject.copyFrom(doLinkedToDa.getDataObject())); - newDoLinkedToDa.setDataAttribute(DataAttribute.copyFrom(doLinkedToDa.getDataAttribute())); - return newDoLinkedToDa; + return new DoLinkedToDa( + DataObject.copyFrom(doLinkedToDa.dataObject()), + DataAttribute.copyFrom(doLinkedToDa.dataAttribute())); } public String getDoRef() { diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaFilter.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaFilter.java index dbbe8fc1a..04cdfd247 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaFilter.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaFilter.java @@ -19,32 +19,33 @@ public DoLinkedToDaFilter(String doName, List sdoNames, String daName, L this.daName = StringUtils.isBlank(daName) ? null : daName; this.bdaNames = bdaNames == null ? Collections.emptyList() : List.copyOf(bdaNames); } - public DoLinkedToDaFilter(){ - this(null,null,null,null); - } public static DoLinkedToDaFilter from(String doNames, String daNames) { String doName = null; List sdoNames = null; String daName = null; List bdaNames = null; - if (StringUtils.isNotBlank(doNames)){ + if (StringUtils.isNotBlank(doNames)) { doName = doNames.split("\\.")[0]; sdoNames = Arrays.stream(doNames.split("\\.")).skip(1).toList(); } - if (StringUtils.isNotBlank(daNames)){ + if (StringUtils.isNotBlank(daNames)) { daName = daNames.split("\\.")[0]; bdaNames = Arrays.stream(daNames.split("\\.")).skip(1).toList(); } return new DoLinkedToDaFilter(doName, sdoNames, daName, bdaNames); } -public String getDoRef() { - return doName + (sdoNames().isEmpty() ? StringUtils.EMPTY : "." + String.join(".", sdoNames())); -} + public String getDoRef() { + return doName + (sdoNames().isEmpty() ? StringUtils.EMPTY : "." + String.join(".", sdoNames())); + } -public String getDaRef() { - return daName + (bdaNames().isEmpty() ? StringUtils.EMPTY : "." + String.join(".", bdaNames())); -} + public String getDaRef() { + return daName + (bdaNames().isEmpty() ? StringUtils.EMPTY : "." + String.join(".", bdaNames())); + } + @Override + public String toString() { + return getDoRef() + "." + getDaRef(); + } } diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesServiceTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesServiceTest.java index f9d5898d1..32bb50f2d 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesServiceTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesServiceTest.java @@ -4,6 +4,7 @@ package org.lfenergy.compas.sct.commons; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.lfenergy.compas.scl2007b4.model.*; import org.lfenergy.compas.sct.commons.domain.DataAttribute; @@ -17,17 +18,24 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.tuple; -import static org.lfenergy.compas.sct.commons.scl.dtt.DataTypeTemplateTestUtils.*; +import static org.lfenergy.compas.sct.commons.scl.dtt.DataTypeTemplateTestUtils.initDttFromFile; +import static org.lfenergy.compas.sct.commons.util.SclConstructorHelper.newVal; class DataTypeTemplatesServiceTest { + private DataTypeTemplatesService dataTypeTemplatesService; + + @BeforeEach + void setUp() { + dataTypeTemplatesService = new DataTypeTemplatesService(); + } + @Test void isDoModAndDaStValExist_when_LNodeType_not_exist_should_return_false() { //Given TDataTypeTemplates dtt = new TDataTypeTemplates(); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isFalse(); @@ -42,7 +50,6 @@ void isDoModAndDaStValExist_when_Do_not_exist_should_return_false() { tlNodeType.setId("lnodeTypeId"); dtt.getLNodeType().add(tlNodeType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isFalse(); @@ -60,7 +67,6 @@ void isDoModAndDaStValExist_when_DoType_not_exist_should_return_false() { tlNodeType.getDO().add(tdo); dtt.getLNodeType().add(tlNodeType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isFalse(); @@ -82,7 +88,6 @@ void isDoModAndDaStValExist_when_Da_Mod_not_exist_should_return_false() { tdoType.setId("doTypeId"); dtt.getDOType().add(tdoType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isFalse(); @@ -107,7 +112,6 @@ void isDoModAndDaStValExist_when_Da_stVal_not_found_should_return_false() { tdoType.getSDOOrDA().add(tda); dtt.getDOType().add(tdoType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isFalse(); @@ -132,7 +136,6 @@ void isDoModAndDaStValExist_when_DO_Mod_And_DA_stVal_exist_return_true() { tdoType.getSDOOrDA().add(tda); dtt.getDOType().add(tdoType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); boolean result = dataTypeTemplatesService.isDoModAndDaStValExist(dtt, "lnodeTypeId"); //Then assertThat(result).isTrue(); @@ -144,19 +147,18 @@ void getFilteredDoLinkedToDa_should_return_expected_items() { TDataTypeTemplates dtt = initDttFromFile("/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_test.xml"); String lNodeTypeId = "LNodeType0"; - DoLinkedToDaFilter doLinkedToDaFilter = new DoLinkedToDaFilter(); + DoLinkedToDaFilter doLinkedToDaFilter = new DoLinkedToDaFilter(null, null, null, null); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getFilteredDoLinkedToDa(dtt, lNodeTypeId, doLinkedToDaFilter).toList(); //Then assertThat(result).hasSize(9) - .extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + .extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder( tuple("FirstDoName", List.of(), "sampleDaName1", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null), @@ -188,15 +190,14 @@ void getFilteredDOAndDA_when_given_DoName_should_return_expected_dataReference() DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("SecondDoName", ""); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getFilteredDoLinkedToDa(dtt, lNodeTypeId, doLinkedToDaFilter).toList(); //Then - assertThat(result).hasSize(1).extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + assertThat(result).hasSize(1).extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactly(tuple("SecondDoName", List.of(), "sampleDaName41", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null)); } @@ -209,15 +210,14 @@ void getFilteredDOAndDA_when_given_DO_with_one_structName_should_return_expected DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("FirstDoName.sdoName1", ""); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getFilteredDoLinkedToDa(dtt, lNodeTypeId, doLinkedToDaFilter).toList(); //Then - assertThat(result).hasSize(3).extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + assertThat(result).hasSize(3).extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder(tuple("FirstDoName", List.of("sdoName1"), "sampleDaName21", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null), tuple("FirstDoName", List.of("sdoName1", "sdoName21"), "sampleDaName31", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null), tuple("FirstDoName", List.of("sdoName1", "sdoName21", "sdoName31"), "sampleDaName41", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null)); @@ -231,15 +231,14 @@ void getFilteredDOAndDA_when_given_DO_with_many_structName_should_return_expecte DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("FirstDoName.sdoName1.sdoName21", ""); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getFilteredDoLinkedToDa(dtt, lNodeTypeId, doLinkedToDaFilter).toList(); //Then - assertThat(result).hasSize(2).extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + assertThat(result).hasSize(2).extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder(tuple("FirstDoName", List.of("sdoName1", "sdoName21"), "sampleDaName31", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null), tuple("FirstDoName", List.of("sdoName1", "sdoName21", "sdoName31"), "sampleDaName41", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null)); } @@ -253,15 +252,14 @@ void getFilteredDOAndDA_when_given_DO_and_DA_with_structNames_should_return_expe DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("FirstDoName.sdoName2", "structDaName1.structBdaName1.enumBdaName22"); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getFilteredDoLinkedToDa(dtt, lNodeTypeId, doLinkedToDaFilter).toList(); //Then - assertThat(result).hasSize(1).extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + assertThat(result).hasSize(1).extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder(tuple("FirstDoName", List.of("sdoName2"), "structDaName1", List.of("structBdaName1", "enumBdaName22"), TPredefinedBasicTypeEnum.ENUM, "EnumType1")); } @@ -270,58 +268,63 @@ void findDoLinkedToDa_should_find_DO_SDO_DA_and_all_BDA() { // Given SCL scd = SclTestMarshaller.getSCLFromFile("/ied-test-schema-conf/ied_unit_test.xml"); TDataTypeTemplates dtt = scd.getDataTypeTemplates(); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("Do"); dataObject.setSdoNames(List.of("sdo1", "d")); - doLinkedToDa.setDataObject(dataObject); + dataObject.setCdc(TPredefinedCDCEnum.WYE); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("antRef"); dataAttribute.setBdaNames(List.of("bda1", "bda2", "bda3")); - doLinkedToDa.setDataAttribute(dataAttribute); + dataAttribute.setFc(TFCEnum.ST); + dataAttribute.setBType(TPredefinedBasicTypeEnum.ENUM); + dataAttribute.setType("RecCycModKind"); + dataAttribute.setValImport(true); + dataAttribute.addDaVal(List.of(newVal("myValue"))); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); + DoLinkedToDaFilter doLinkedToDaFilter = new DoLinkedToDaFilter("Do", List.of("sdo1", "d"), "antRef", List.of("bda1", "bda2", "bda3")); // When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LNO1", doLinkedToDa); + Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LNO1", doLinkedToDaFilter); // Then - assertThat(result).contains(doLinkedToDa); + assertThat(result).get().usingRecursiveComparison().isEqualTo(doLinkedToDa); } @Test void findDoLinkedToDa_should_find_DO_SDO_DA_and_partial_BDA_list() { // Given TDataTypeTemplates dtt = initDttFromFile("/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda.xml"); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("Do1"); + dataObject.setCdc(TPredefinedCDCEnum.WYE); dataObject.setSdoNames(List.of("sdo1", "sdo2")); - doLinkedToDa.setDataObject(dataObject); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("da2"); + dataAttribute.setFc(TFCEnum.ST); dataAttribute.setBdaNames(List.of("bda1", "bda2")); - doLinkedToDa.setDataAttribute(dataAttribute); + dataAttribute.setBType(TPredefinedBasicTypeEnum.ENUM); + dataAttribute.setType("EnumType1"); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LN1", doLinkedToDa); + Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LN1", new DoLinkedToDaFilter("Do1", List.of("sdo1", "sdo2"), "da2", List.of("bda1", "bda2"))); // Then - assertThat(result).contains(doLinkedToDa); + assertThat(result).get().usingRecursiveComparison().isEqualTo(doLinkedToDa); } @Test void findDoLinkedToDa_should_find_DO_DA() { // Given TDataTypeTemplates dtt = initDttFromFile("/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda.xml"); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("Do1"); - doLinkedToDa.setDataObject(dataObject); + dataObject.setCdc(TPredefinedCDCEnum.WYE); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("da1"); - doLinkedToDa.setDataAttribute(dataAttribute); + dataAttribute.setBType(TPredefinedBasicTypeEnum.BOOLEAN); + dataAttribute.setFc(TFCEnum.ST); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LN1", doLinkedToDa); + Optional result = dataTypeTemplatesService.findDoLinkedToDa(dtt, "LN1", new DoLinkedToDaFilter("Do1", List.of(), "da1", List.of())); // Then - assertThat(result).contains(doLinkedToDa); + assertThat(result).get().usingRecursiveComparison().isEqualTo(doLinkedToDa); } @Test @@ -329,7 +332,6 @@ void getAllDOAndDA_when_LNodeType_not_exist_should_return_empty_list() { //Given TDataTypeTemplates dtt = new TDataTypeTemplates(); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); //Then assertThat(result).isEmpty(); @@ -343,8 +345,7 @@ void getAllDOAndDA_when_DO_not_exist_should_return_empty_list() { tlNodeType.setId("lnodeTypeId"); dtt.getLNodeType().add(tlNodeType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); + List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); //Then assertThat(result).isEmpty(); } @@ -361,8 +362,7 @@ void getAllDOAndDA_when_DoType_not_exist_should_return_empty_list() { tlNodeType.getDO().add(tdo); dtt.getLNodeType().add(tlNodeType); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); + List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); //Then assertThat(result).isEmpty(); } @@ -384,8 +384,7 @@ void getAllDOAndDA_when_DA_not_exist_should_return_empty_list() { dtt.getDOType().add(tdoType); scl.setDataTypeTemplates(dtt); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); + List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); //Then assertThat(result).isEmpty(); } @@ -410,15 +409,14 @@ void getAllDOAndDA_when_1DO_linked_to_1DA_should_return_expectedItems() { dtt.getDOType().add(tdoType); scl.setDataTypeTemplates(dtt); //When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); + List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); //Then assertThat(result).hasSize(1); assertThat(result.getFirst()) - .extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames()) + .extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames()) .containsExactly("doName", List.of(), "daName", List.of()); } @@ -428,16 +426,15 @@ void getAllDOAndDA_should_return_all_dataReference() { // File contain all combinations that can be made TDataTypeTemplates dtt = initDttFromFile("/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml"); // When - DataTypeTemplatesService dataTypeTemplatesService = new DataTypeTemplatesService(); - List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); + List result = dataTypeTemplatesService.getAllDoLinkedToDa(dtt).toList(); // Then assertThat(result).hasSize(34) - .extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + .extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder( // -> Do11 tuple("Do11", List.of(), "sampleDa11", List.of(), TPredefinedBasicTypeEnum.ENUM, "RecCycModKind"), @@ -529,4 +526,14 @@ void getAllDOAndDA_should_return_all_dataReference() { ); } + @Test + void getEnumValues_should_succeed() { + // Given + TDataTypeTemplates dtt = initDttFromFile("/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml"); + // When + List enumValues = dataTypeTemplatesService.getEnumValues(dtt, "LN1", DoLinkedToDaFilter.from("Do11", "sampleDa11")).toList(); + // Then + assertThat(enumValues).containsExactly("REB", "RVB", "RVL", "RVB+L"); + } + } diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DoTypeServiceTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DoTypeServiceTest.java index df023a117..348418743 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DoTypeServiceTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/DoTypeServiceTest.java @@ -11,16 +11,13 @@ import org.lfenergy.compas.sct.commons.domain.DataAttribute; import org.lfenergy.compas.sct.commons.domain.DataObject; import org.lfenergy.compas.sct.commons.domain.DoLinkedToDa; -import org.lfenergy.compas.sct.commons.dto.DaTypeName; -import org.lfenergy.compas.sct.commons.dto.DataAttributeRef; -import org.lfenergy.compas.sct.commons.dto.DoTypeName; import org.lfenergy.compas.sct.commons.testhelpers.SclTestMarshaller; import java.util.List; import static org.assertj.core.api.Assertions.tuple; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -import static org.lfenergy.compas.sct.commons.scl.dtt.DataTypeTemplateTestUtils.*; +import static org.lfenergy.compas.sct.commons.scl.dtt.DataTypeTemplateTestUtils.initDttFromFile; class DoTypeServiceTest { @@ -85,23 +82,20 @@ void getAllSDOLinkedToDa_should_return_expected_dataReference() { TDOType tdoType = doTypeService.findDoType(dtt, tdoType1 -> tdoType1.getId() .equals("DOType0")).orElseThrow(); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("FirstDoName"); - doLinkedToDa.setDataObject(dataObject); DataAttribute dataAttribute = new DataAttribute(); - doLinkedToDa.setDataAttribute(dataAttribute); - + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When List result = doTypeService.getAllSDOLinkedToDa(dtt, tdoType, doLinkedToDa); //Then assertThat(result).hasSize(8) - .extracting(doLinkedToDa1 -> doLinkedToDa1.getDataObject().getDoName(), - doLinkedToDa1 -> doLinkedToDa1.getDataObject().getSdoNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getDaName(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBdaNames(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getBType(), - doLinkedToDa1 -> doLinkedToDa1.getDataAttribute().getType()) + .extracting(doLinkedToDa1 -> doLinkedToDa1.dataObject().getDoName(), + doLinkedToDa1 -> doLinkedToDa1.dataObject().getSdoNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getDaName(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBdaNames(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getBType(), + doLinkedToDa1 -> doLinkedToDa1.dataAttribute().getType()) .containsExactlyInAnyOrder( tuple("FirstDoName", List.of(), "sampleDaName1", List.of(), TPredefinedBasicTypeEnum.BOOLEAN, null), @@ -131,22 +125,20 @@ void getAllSDOLinkedToDa_should_return_all_dai() { DoTypeService doTypeService = new DoTypeService(); TDOType tdoType = doTypeService.findDoType(dtt, tdoType1 -> tdoType1.getId() .equals("DO11")).orElseThrow(); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("firstDONAME"); - doLinkedToDa.setDataObject(dataObject); DataAttribute dataAttribute = new DataAttribute(); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When List list = doTypeService.getAllSDOLinkedToDa(dtt, tdoType, doLinkedToDa); // Then assertThat(list) .hasSize(811) - .allMatch(dataAttributeRef -> StringUtils.startsWith(dataAttributeRef.getDataObject().getDoName(), "firstDONAME")) - .areExactly(1, new Condition<>(dataAttributeRef -> dataAttributeRef.getDataAttribute().getDaName().equals("da1"), "Il n'y a que certaines réponses contenant da1")) - .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.getDataAttribute().getDaName().equals("da11"), "Il n'y a que certaines réponses contenant da11")) - .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.getDataAttribute().getDaName().equals("da22"), "Il n'y a que certaines réponses contenant da22")) - .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.getDataAttribute().getDaName().equals("da32"), "Il n'y a que certaines réponses contenant da32")); + .allMatch(dataAttributeRef -> StringUtils.startsWith(dataAttributeRef.dataObject().getDoName(), "firstDONAME")) + .areExactly(1, new Condition<>(dataAttributeRef -> dataAttributeRef.dataAttribute().getDaName().equals("da1"), "Il n'y a que certaines réponses contenant da1")) + .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.dataAttribute().getDaName().equals("da11"), "Il n'y a que certaines réponses contenant da11")) + .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.dataAttribute().getDaName().equals("da22"), "Il n'y a que certaines réponses contenant da22")) + .areExactly(270, new Condition<>(dataAttributeRef -> dataAttributeRef.dataAttribute().getDaName().equals("da32"), "Il n'y a que certaines réponses contenant da32")); } } diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java index 8daa222d7..24d3a3ebc 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java @@ -212,9 +212,7 @@ void completeFromDataAttributeInstance_should_complete_when_valImport_set_or_not dataObject.setDoName("Do"); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("Da"); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); @@ -272,15 +270,13 @@ void completeFromDataAttributeInstance_should_complete_when_settingGroup_set_or_ dataAttribute.setDaName("Da"); dataAttribute.setFc(givenFc); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.getDataAttribute().isValImport()).isEqualTo(expectedValImport); + assertThat(doLinkedToDa.dataAttribute().isValImport()).isEqualTo(expectedValImport); } @@ -294,14 +290,12 @@ void completeFromDataAttributeInstance__should_not_complete_when_not_found() { DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("Da"); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.getDataAttribute().isValImport()).isFalse();//initialValue + assertThat(doLinkedToDa.dataAttribute().isValImport()).isFalse();//initialValue } @ParameterizedTest @@ -321,15 +315,13 @@ void completeFromDataAttributeInstance_should_complete_when_struct(Boolean input dataAttribute.setDaName("antRef"); dataAttribute.setBdaNames(List.of("bda1","bda2","bda3")); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.getDataAttribute().isValImport()).isEqualTo(expected); + assertThat(doLinkedToDa.dataAttribute().isValImport()).isEqualTo(expected); } @Test @@ -343,9 +335,7 @@ void updateOrCreateDOAndDAInstance_should_create_given_DO_and_DA_instances_when_ dataAttribute.setDaName("stVal"); dataAttribute.getDaiValues().add(new DaVal(1L, "new value")); dataAttribute.getDaiValues().add(new DaVal(2L, "new value 2")); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); lnService.updateOrCreateDOAndDAInstances(tAnyLN, doLinkedToDa); @@ -375,9 +365,7 @@ void updateOrCreateDOAndDAInstance_should_create_given_DO_and_DA_instances_when_ dataAttribute.setDaName("antRef"); dataAttribute.setBdaNames(List.of("bda1")); dataAttribute.getDaiValues().add(new DaVal(null, "new value")); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); @@ -440,9 +428,7 @@ void updateOrCreateDOAndDAInstance_should_complete_DO_and_DA_instances_modificat dataAttribute.setBdaNames(List.of("BdaName1")); dataAttribute.getDaiValues().add(new DaVal(null, "new dai value")); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When LnService lnService = new LnService(); @@ -529,7 +515,7 @@ private TAnyLN initDOAndDAInstances(LinkedList doInstances, TSDI lastSDI = createSDIByStructName(firstSDI, structInstances); if(structInstances.size() == 1){ TDAI dai = new TDAI(); - dai.setName(daInstances.get(daInstances.size() - 1)); + dai.setName(daInstances.getLast()); TVal tVal = new TVal(); tVal.setValue(daiVal); dai.getVal().add(tVal); @@ -539,7 +525,7 @@ private TAnyLN initDOAndDAInstances(LinkedList doInstances, } else if(structInstances.size() == 1){ TDAI dai = new TDAI(); - dai.setName(daInstances.get(daInstances.size() - 1)); + dai.setName(daInstances.getLast()); TVal tVal = new TVal(); tVal.setValue(daiVal); dai.getVal().add(tVal); @@ -566,7 +552,7 @@ private TDAI initDOAndDAInstances(TAnyLN tAnyLN, TSDI firstSDI = createSDIFromDOI(tdoi, structInstances.getFirst()); TSDI lastSDI = createSDIByStructName(firstSDI, structInstances); if(structInstances.size() == 1){ - dai.setName(daInstances.get(daInstances.size() - 1)); + dai.setName(daInstances.getLast()); TVal tVal = new TVal(); dai.getVal().add(tVal); lastSDI.getSDIOrDAI().add(dai); @@ -574,7 +560,7 @@ private TDAI initDOAndDAInstances(TAnyLN tAnyLN, } } else if(structInstances.size() == 1){ - dai.setName(daInstances.get(daInstances.size() - 1)); + dai.setName(daInstances.getLast()); TVal tVal = new TVal(); dai.getVal().add(tVal); tdoi.getSDIOrDAI().add(dai); diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java index a3a6aaaaf..dc44cbad7 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java @@ -11,32 +11,30 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertAll; class DoLinkedToDaTest { @Test void test_copyFrom() { // Given - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); DataObject dataObject = new DataObject(); dataObject.setDoName("doName"); dataObject.setSdoNames(List.of("sdoName1")); dataObject.setCdc(TPredefinedCDCEnum.CST); - doLinkedToDa.setDataObject(dataObject); DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("daName"); dataAttribute.setBdaNames(List.of("bdaName1")); dataAttribute.setFc(TFCEnum.BL); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDa); // Then assertAll("Copy From", - () -> assertThat(newDoLinkedToDa.getDataObject().getCdc()).isEqualTo(doLinkedToDa.getDataObject().getCdc()), - () -> assertThat(newDoLinkedToDa.getDataAttribute().getBType()).isEqualTo(doLinkedToDa.getDataAttribute().getBType()), - () -> assertThat(newDoLinkedToDa.getDataAttribute().getType()).isEqualTo(doLinkedToDa.getDataAttribute().getType()), - () -> assertThat(newDoLinkedToDa.getDataAttribute().getFc()).isEqualTo(doLinkedToDa.getDataAttribute().getFc()), + () -> assertThat(newDoLinkedToDa.dataObject().getCdc()).isEqualTo(doLinkedToDa.dataObject().getCdc()), + () -> assertThat(newDoLinkedToDa.dataAttribute().getBType()).isEqualTo(doLinkedToDa.dataAttribute().getBType()), + () -> assertThat(newDoLinkedToDa.dataAttribute().getType()).isEqualTo(doLinkedToDa.dataAttribute().getType()), + () -> assertThat(newDoLinkedToDa.dataAttribute().getFc()).isEqualTo(doLinkedToDa.dataAttribute().getFc()), () -> assertThat(newDoLinkedToDa.getDoRef()).isEqualTo(doLinkedToDa.getDoRef()), () -> assertThat(newDoLinkedToDa.getDaRef()).isEqualTo(doLinkedToDa.getDaRef())); } @@ -49,8 +47,7 @@ void test_getDoRef() { dataObject.setSdoNames(List.of("sdoName1")); dataObject.setCdc(TPredefinedCDCEnum.CST); // When Then - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, new DataAttribute()); assertThat(doLinkedToDa.getDoRef()).isEqualTo("doName.sdoName1"); } @@ -61,9 +58,10 @@ void test_getDaRef() { dataAttribute.setDaName("daName"); dataAttribute.setBdaNames(List.of("bdaName1")); dataAttribute.setFc(TFCEnum.BL); - // When Then - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataAttribute(dataAttribute); + // When + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(new DataObject(), dataAttribute); + + // Then assertThat(doLinkedToDa.getDaRef()).isEqualTo("daName.bdaName1"); } @@ -75,9 +73,7 @@ void isUpdatable_should_return_true_whenIsDOModDAstVal() { DataAttribute dataAttribute = new DataAttribute(); dataAttribute.setDaName("stVal"); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When Then assertThat(doLinkedToDa.isUpdatable()).isTrue(); } @@ -94,9 +90,7 @@ void isUpdatable_should_return_true_whenValImportIsTrue() { dataAttribute.setValImport(true); dataAttribute.setFc(TFCEnum.SE); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When Then assertThat(doLinkedToDa.isUpdatable()).isTrue(); } @@ -113,11 +107,9 @@ void isUpdatable_should_return_false_whenValImportIsFalse() { dataAttribute.setValImport(false); dataAttribute.setFc(TFCEnum.SE); - DoLinkedToDa doLinkedToDa = new DoLinkedToDa(); - doLinkedToDa.setDataObject(dataObject); - doLinkedToDa.setDataAttribute(dataAttribute); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When Then assertThat(doLinkedToDa.isUpdatable()).isFalse(); } -} \ No newline at end of file +} diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/LNodeDTOTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/LNodeDTOTest.java index 72f2c5dbc..be6d40995 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/LNodeDTOTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/LNodeDTOTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import org.lfenergy.compas.scl2007b4.model.TExtRef; +import org.lfenergy.compas.scl2007b4.model.*; import org.lfenergy.compas.sct.commons.scl.dtt.DataTypeTemplateAdapter; import org.lfenergy.compas.sct.commons.scl.dtt.LNodeTypeAdapter; import org.lfenergy.compas.sct.commons.scl.ied.IEDAdapter; @@ -24,7 +24,7 @@ class LNodeDTOTest { @Test @Tag("issue-321") - void testConstructor(){ + void testConstructor() { // When LNodeDTO lNodeDTO = new LNodeDTO(); lNodeDTO.setNodeClass(DTO.HOLDER_LN_CLASS); @@ -33,14 +33,14 @@ void testConstructor(){ lNodeDTO.setNodeType(DTO.LN_TYPE); // Then assertAll("LNODE", - ()-> assertThat(lNodeDTO.getGooseControlBlocks()).isEmpty(), - ()-> assertThat(lNodeDTO.getDataAttributeRefs()).isEmpty(), - ()-> assertThat(lNodeDTO.getDatSets()).isEmpty(), - ()-> assertThat(lNodeDTO.getExtRefs()).isEmpty(), - ()-> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), - ()-> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), - ()-> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), - ()-> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX) + () -> assertThat(lNodeDTO.getGooseControlBlocks()).isEmpty(), + () -> assertThat(lNodeDTO.getDataAttributeRefs()).isEmpty(), + () -> assertThat(lNodeDTO.getDatSets()).isEmpty(), + () -> assertThat(lNodeDTO.getExtRefs()).isEmpty(), + () -> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), + () -> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), + () -> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), + () -> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX) ); // When lNodeDTO.addDataAttributeRef(DataAttributeRef.builder().daName(new DaTypeName("da1")).build()); @@ -67,7 +67,7 @@ void testConstructor(){ } @Test - void from_whenCalledWithLNAdapter_shouldFillValues(){ + void from_whenCalledWithLNAdapter_shouldFillValues() { // When IEDAdapter iedAdapter = mock(IEDAdapter.class); LDeviceAdapter lDeviceAdapter = mock(LDeviceAdapter.class); @@ -93,14 +93,14 @@ void from_whenCalledWithLNAdapter_shouldFillValues(){ // When LNodeDTO lNodeDTO = LNodeDTO.from(lnAdapter, - new LogicalNodeOptions(true,true,false,false)); + new LogicalNodeOptions(true, true, false, false)); // Then assertThat(lNodeDTO).isNotNull(); assertAll("LNODE", - ()-> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), - ()-> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), - ()-> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), - ()-> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX), + () -> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), + () -> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), + () -> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), + () -> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX), () -> assertThat(lNodeDTO.getExtRefs()).hasSize(1) ); ExtRefInfo extRefInfo = lNodeDTO.getExtRefs().iterator().next(); @@ -112,7 +112,64 @@ void from_whenCalledWithLNAdapter_shouldFillValues(){ } @Test - void extractExtRefInfo_whenCalledWithLNAdapter_shouldFillValues(){ + void from_whenCalledWithTAnyLn_shouldFillValues() { + // When + TExtRef extRef = DTO.createExtRef(); + TLN tAnyLN = new TLN(); + tAnyLN.getLnClass().add(DTO.HOLDER_LN_CLASS); + tAnyLN.setInst(DTO.HOLDER_LN_INST); + tAnyLN.setPrefix(DTO.HOLDER_LN_PREFIX); + tAnyLN.setLnType(DTO.LN_TYPE); + tAnyLN.setInputs(new TInputs()); + tAnyLN.getInputs().getExtRef().add(extRef); + + SCL scl = new SCL(); + scl.setHeader(new THeader()); + TDataTypeTemplates dataTypeTemplates = new TDataTypeTemplates(); + TLNodeType tlNodeType = new TLNodeType(); + tlNodeType.setId(DTO.LN_TYPE); + TDO tdo = new TDO(); + tdo.setName("Do1"); + tdo.setType("DO1"); + tlNodeType.getDO().add(tdo); + TDOType tdoType = new TDOType(); + tdoType.setId("DO1"); + TDA tda = new TDA(); + tda.setName("Da1"); + tda.setBType(TPredefinedBasicTypeEnum.BOOLEAN); + tdoType.getSDOOrDA().add(tda); + dataTypeTemplates.getDOType().add(tdoType); + dataTypeTemplates.getLNodeType().add(tlNodeType); + scl.setDataTypeTemplates(dataTypeTemplates); + + // When + LNodeDTO lNodeDTO = LNodeDTO.from(tAnyLN, new LogicalNodeOptions(true, true, false, true), DTO.HOLDER_IED_NAME, DTO.HOLDER_LD_INST, scl); + // Then + assertThat(lNodeDTO).isNotNull(); + assertAll("LNODE", + () -> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), + () -> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), + () -> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), + () -> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX), + () -> assertThat(lNodeDTO.getExtRefs()).hasSize(1), + () -> assertThat(lNodeDTO.getDataAttributeRefs()).hasSize(1) + ); + ExtRefInfo extRefInfo = lNodeDTO.getExtRefs().iterator().next(); + assertThat(extRefInfo.getHolderIEDName()).isEqualTo(DTO.HOLDER_IED_NAME); + assertThat(extRefInfo.getHolderLDInst()).isEqualTo(DTO.HOLDER_LD_INST); + assertThat(extRefInfo.getHolderLnClass()).isEqualTo(DTO.HOLDER_LN_CLASS); + assertThat(extRefInfo.getHolderLnInst()).isEqualTo(DTO.HOLDER_LN_INST); + assertThat(extRefInfo.getHolderLnPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX); + + DaTypeName daTypeName = new DaTypeName("Da1"); + daTypeName.setBType(TPredefinedBasicTypeEnum.BOOLEAN); + DoTypeName doTypeName = new DoTypeName("Do1"); + assertThat(lNodeDTO.getDataAttributeRefs().iterator().next()) + .isEqualTo(DataAttributeRef.builder().lnType(DTO.LN_TYPE).lnClass(DTO.HOLDER_LN_CLASS).lnInst(DTO.HOLDER_LN_INST).prefix(DTO.HOLDER_LN_PREFIX).daName(daTypeName).doName(doTypeName).build()); + } + + @Test + void extractExtRefInfo_whenCalledWithLNAdapter_shouldFillValues() { // Given LNAdapter lnAdapter = mock(LNAdapter.class); when(lnAdapter.getLNClass()).thenReturn(DTO.HOLDER_LN_CLASS); @@ -128,10 +185,10 @@ void extractExtRefInfo_whenCalledWithLNAdapter_shouldFillValues(){ // Then assertThat(lNodeDTO).isNotNull(); assertAll("LNODE", - ()-> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), - ()-> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), - ()-> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), - ()-> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX), + () -> assertThat(lNodeDTO.getInst()).isEqualTo(DTO.HOLDER_LN_INST), + () -> assertThat(lNodeDTO.getNodeClass()).isEqualTo(DTO.HOLDER_LN_CLASS), + () -> assertThat(lNodeDTO.getNodeType()).isEqualTo(DTO.LN_TYPE), + () -> assertThat(lNodeDTO.getPrefix()).isEqualTo(DTO.HOLDER_LN_PREFIX), () -> assertThat(lNodeDTO.getExtRefs()).hasSize(1) ); } diff --git a/sct-commons/src/test/resources/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml b/sct-commons/src/test/resources/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml index 7afa8fad6..b99fdb787 100644 --- a/sct-commons/src/test/resources/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml +++ b/sct-commons/src/test/resources/dtt-test-schema-conf/scd_dtt_do_sdo_da_bda_tests.xml @@ -37,7 +37,10 @@ - Completed-diff + REB + RVB + RVL + RVB+L diff --git a/sct-commons/src/test/resources/ied-test-schema-conf/ied_unit_test.xml b/sct-commons/src/test/resources/ied-test-schema-conf/ied_unit_test.xml index 212d76299..c15f75606 100644 --- a/sct-commons/src/test/resources/ied-test-schema-conf/ied_unit_test.xml +++ b/sct-commons/src/test/resources/ied-test-schema-conf/ied_unit_test.xml @@ -113,7 +113,9 @@ - + + myValue +