Skip to content

Commit 0d18721

Browse files
authored
Merge pull request #468 from com-pas/develop
Release 0.2.35
2 parents 07e37cf + 19c0efb commit 0d18721

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+452
-3235
lines changed

sct-app/src/test/java/org.lfenergy.compas.sct.app/SclAutomationServiceIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class SclAutomationServiceIntegrationTest {
3232
private SclAutomationService sclAutomationService ;
3333
private static final SclEditor sclEditor = new SclService() ;
3434
private static final SubstationEditor substationEditor = new SubstationService(new VoltageLevelService()) ;
35-
private static final ControlBlockEditor controlBlockEditor = new ControlBlockEditorService(new ControlService(), new LdeviceService()) ;
35+
private static final ControlBlockEditor controlBlockEditor = new ControlBlockEditorService(new ControlService(), new LdeviceService(new LnService()));
3636

3737
private HeaderDTO headerDTO;
3838

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DataTypeTemplatesService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,21 @@ public Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lN
149149
));
150150
}
151151

152+
@Override
153+
public Stream<String> getEnumValues(TDataTypeTemplates dataTypeTemplates, String lnType, DoLinkedToDaFilter doLinkedToDaFilter) {
154+
return findDoLinkedToDa(dataTypeTemplates, lnType, doLinkedToDaFilter)
155+
.map(DoLinkedToDa::dataAttribute)
156+
.filter(dataAttribute -> TPredefinedBasicTypeEnum.ENUM.equals(dataAttribute.getBType()))
157+
.map(DataAttribute::getType)
158+
.flatMap(enumId ->
159+
dataTypeTemplates.getEnumType().stream()
160+
.filter(tEnumType -> tEnumType.getId().equals(enumId))
161+
.findFirst())
162+
.stream()
163+
.flatMap(tEnumType -> tEnumType.getEnumVal().stream())
164+
.map(TEnumVal::getValue);
165+
}
166+
152167
private Optional<TDAType> getDATypeByDaName(TDataTypeTemplates dtt, TDOType tdoType, String daName) {
153168
return sdoOrDAService.findDA(tdoType, tda -> tda.getName().equals(daName))
154169
.flatMap(tda -> daTypeService.findDaType(dtt, tda.getType()));

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/ExtRefEditorService.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@
2323
import org.lfenergy.compas.sct.commons.util.PrivateUtils;
2424
import org.lfenergy.compas.sct.commons.util.Utils;
2525

26-
import java.util.*;
26+
import java.util.ArrayList;
27+
import java.util.Collections;
28+
import java.util.List;
29+
import java.util.Optional;
2730

2831
import static org.apache.commons.lang3.StringUtils.*;
2932
import static org.lfenergy.compas.sct.commons.util.CommonConstants.*;
@@ -51,7 +54,7 @@ public class ExtRefEditorService implements ExtRefEditor {
5154
* @param channel TChannel represent parameters
5255
* @return the IED sources matching the LDEPF parameters
5356
*/
54-
private static List<TIED> getIedSources(SclRootAdapter sclRootAdapter, TCompasBay compasBay, TChannel channel) {
57+
private List<TIED> getIedSources(SclRootAdapter sclRootAdapter, TCompasBay compasBay, TChannel channel) {
5558
return sclRootAdapter.streamIEDAdapters()
5659
.filter(iedAdapter -> (channel.getBayScope().equals(TCBScopeType.BAY_EXTERNAL)
5760
&& iedAdapter.getPrivateCompasBay().stream().noneMatch(bay -> bay.getUUID().equals(compasBay.getUUID())))
@@ -140,8 +143,7 @@ private static boolean doesIcdHeaderMatchLDEPFChannel(IEDAdapter iedAdapter, TCh
140143
* @param channel TChannel
141144
* @return LDeviceAdapter object that matches the EPF channel
142145
*/
143-
private static Optional<LDeviceAdapter> getActiveSourceLDeviceByLDEPFChannel(IEDAdapter iedAdapter, TChannel channel) {
144-
LdeviceService ldeviceService = new LdeviceService();
146+
private Optional<LDeviceAdapter> getActiveSourceLDeviceByLDEPFChannel(IEDAdapter iedAdapter, TChannel channel) {
145147
return ldeviceService.findLdevice(iedAdapter.getCurrentElem(), tlDevice -> tlDevice.getInst().equals(channel.getLDInst()))
146148
.filter(tlDevice -> ldeviceService.getLdeviceStatus(tlDevice).map(ActiveStatus.ON::equals).orElse(false))
147149
.map(tlDevice -> new LDeviceAdapter(iedAdapter, tlDevice));
@@ -271,7 +273,7 @@ public List<SclReportItem> manageBindingForLDEPF(SCL scd, EPF epf) {
271273
.findFirst().ifPresent(channel -> {
272274
List<TIED> iedSources = getIedSources(sclRootAdapter, extRefBayRef.compasBay(), channel);
273275
if (iedSources.size() == 1) {
274-
updateLDEPFExtRefBinding(extRefBayRef.extRef(), iedSources.get(0), channel);
276+
updateLDEPFExtRefBinding(extRefBayRef.extRef(), iedSources.getFirst(), channel);
275277
LDeviceAdapter lDeviceAdapter = new LDeviceAdapter(new IEDAdapter(sclRootAdapter, tied.getName()), tlDevice);
276278
sclReportItems.addAll(updateLDEPFDos(lDeviceAdapter, extRefBayRef.extRef(), channel));
277279
} else {

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LNodeStatusService.java

Lines changed: 0 additions & 103 deletions
This file was deleted.

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LdeviceService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,23 @@
44

55
package org.lfenergy.compas.sct.commons;
66

7-
import org.lfenergy.compas.scl2007b4.model.*;
7+
import lombok.RequiredArgsConstructor;
8+
import org.lfenergy.compas.scl2007b4.model.TAccessPoint;
9+
import org.lfenergy.compas.scl2007b4.model.TIED;
10+
import org.lfenergy.compas.scl2007b4.model.TLDevice;
11+
import org.lfenergy.compas.scl2007b4.model.TServer;
812
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
913

1014
import java.util.Objects;
1115
import java.util.Optional;
1216
import java.util.function.Predicate;
1317
import java.util.stream.Stream;
1418

19+
@RequiredArgsConstructor
1520
public class LdeviceService {
1621

22+
private final LnService lnService;
23+
1724
public Stream<TLDevice> getLdevices(TIED tied) {
1825
if (!tied.isSetAccessPoint()) {
1926
return Stream.empty();
@@ -40,7 +47,6 @@ public Optional<TLDevice> findLdevice(TIED tied, Predicate<TLDevice> ldevicePred
4047
}
4148

4249
public Optional<ActiveStatus> getLdeviceStatus(TLDevice tlDevice) {
43-
LnService lnService = new LnService();
4450
return lnService.getDaiModStValValue(tlDevice.getLN0());
4551
}
4652
}

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
@Slf4j
2525
public class LnService implements LnEditor {
2626

27+
private static final DoLinkedToDaFilter DAI_FILTER_MOD_STVAL = DoLinkedToDaFilter.from(MOD_DO_NAME, STVAL_DA_NAME);
28+
2729
public Stream<TAnyLN> getAnylns(TLDevice tlDevice) {
2830
return Stream.concat(Stream.of(tlDevice.getLN0()), tlDevice.getLN().stream());
2931
}
@@ -73,15 +75,7 @@ public Optional<ActiveStatus> getDaiModStValValue(TAnyLN tAnyLN) {
7375
}
7476

7577
public Optional<TDAI> getDaiModStVal(TAnyLN tAnyLN) {
76-
return tAnyLN
77-
.getDOI()
78-
.stream()
79-
.filter(tdoi -> MOD_DO_NAME.equals(tdoi.getName()))
80-
.flatMap(tdoi -> tdoi.getSDIOrDAI().stream())
81-
.filter(TDAI.class::isInstance)
82-
.map(TDAI.class::cast)
83-
.filter(tdai -> STVAL_DA_NAME.equals(tdai.getName()))
84-
.findFirst();
78+
return getDOAndDAInstances(tAnyLN, DAI_FILTER_MOD_STVAL);
8579
}
8680

8781
public Stream<TAnyLN> getActiveLns(TLDevice tlDevice) {

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/SclService.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import lombok.NonNull;
88
import lombok.extern.slf4j.Slf4j;
9-
import org.apache.commons.lang3.tuple.Pair;
109
import org.lfenergy.compas.scl2007b4.model.*;
1110
import org.lfenergy.compas.sct.commons.api.SclEditor;
1211
import org.lfenergy.compas.sct.commons.dto.*;
@@ -24,7 +23,6 @@
2423
import org.lfenergy.compas.sct.commons.scl.ldevice.LDeviceAdapter;
2524
import org.lfenergy.compas.sct.commons.scl.ln.AbstractLNAdapter;
2625
import org.lfenergy.compas.sct.commons.scl.ln.LN0Adapter;
27-
import org.lfenergy.compas.sct.commons.scl.sstation.SubstationAdapter;
2826
import org.lfenergy.compas.sct.commons.util.PrivateUtils;
2927
import org.lfenergy.compas.sct.commons.util.Utils;
3028

@@ -187,19 +185,6 @@ public void importSTDElementsInSCD(SCL scd, List<SCL> stds) throws ScdException
187185
});
188186
}
189187

190-
@Override
191-
public List<SclReportItem> updateLDeviceStatus(SCL scd) {
192-
SclRootAdapter sclRootAdapter = new SclRootAdapter(scd);
193-
SubstationAdapter substationAdapter = sclRootAdapter.getSubstationAdapter();
194-
final List<Pair<String, String>> iedNameLdInstList = substationAdapter.getIedAndLDeviceNamesForLN0FromLNode();
195-
return sclRootAdapter.streamIEDAdapters()
196-
.flatMap(IEDAdapter::streamLDeviceAdapters)
197-
.map(LDeviceAdapter::getLN0Adapter)
198-
.map(ln0Adapter -> ln0Adapter.updateLDeviceStatus(iedNameLdInstList))
199-
.flatMap(Optional::stream)
200-
.toList();
201-
}
202-
203188
@Override
204189
public List<SclReportItem> updateDoInRef(SCL scd) {
205190
SclRootAdapter sclRootAdapter = new SclRootAdapter(scd);

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/DataTypeTemplateReader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ public interface DataTypeTemplateReader {
2121

2222
Optional<DoLinkedToDa> findDoLinkedToDa(TDataTypeTemplates dtt, String lNodeTypeId, DoLinkedToDaFilter doLinkedToDaFilter);
2323

24+
Stream<String> getEnumValues(TDataTypeTemplates dataTypeTemplates, String lnType, DoLinkedToDaFilter doLinkedToDaFilter);
2425
}

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/LnEditor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@
88
import org.lfenergy.compas.scl2007b4.model.TDAI;
99
import org.lfenergy.compas.sct.commons.domain.DoLinkedToDa;
1010
import org.lfenergy.compas.sct.commons.domain.DoLinkedToDaFilter;
11+
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
1112

1213
import java.util.Optional;
1314

1415
public interface LnEditor {
1516

17+
Optional<ActiveStatus> getDaiModStValValue(TAnyLN tAnyLN);
18+
19+
Optional<TDAI> getDaiModStVal(TAnyLN tAnyLN);
20+
1621
Optional<TDAI> getDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDaFilter doLinkedToDaFilter);
1722

1823
void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedToDa);

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/SclEditor.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
import lombok.NonNull;
88
import org.lfenergy.compas.scl2007b4.model.SCL;
9-
import org.lfenergy.compas.scl2007b4.model.TLNode;
109
import org.lfenergy.compas.sct.commons.dto.*;
1110
import org.lfenergy.compas.sct.commons.exception.ScdException;
1211

@@ -137,14 +136,6 @@ public interface SclEditor {
137136
*/
138137
void importSTDElementsInSCD(SCL scd, List<SCL> stds) throws ScdException;
139138

140-
/**
141-
* Activate used LDevice and Deactivate unused LDevice in {@link TLNode <em><b>TLNode </b></em>}
142-
*
143-
* @param scd SCL file for which LDevice should be activated or deactivated
144-
* @return list of encountered errors
145-
*/
146-
List<SclReportItem> updateLDeviceStatus(SCL scd);
147-
148139
/**
149140
* Update DAIs of DO InRef in all LN0 of the SCD using matching ExtRef information.
150141
*

0 commit comments

Comments
 (0)