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
+