Skip to content

Commit bd5eeee

Browse files
authored
Merge pull request #520 from com-pas/feat/519_rsr-1248-default-value-for-reportcontrol_rptenabled_max
feat(#519): RSR-1248 change default value for ReportControl RptEnabled max
2 parents 83c7198 + 90aff2b commit bd5eeee

File tree

4 files changed

+89
-45
lines changed

4 files changed

+89
-45
lines changed

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/dto/ReportControlBlock.java

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,73 @@
4040
@Getter
4141
@Setter
4242
public class ReportControlBlock extends ControlBlock {
43+
public static final long RPT_ENABLED_MAX_DEFAULT = 4L;
44+
4345
//TODO this is a DTO object; it's meant to be used for carry information; he must be created be the one responsible for carying the info
44-
private TReportControl.OptFields optFields = newDefaultOptFields();
45-
protected TTrgOps trgOps = newDefaultTrgOps();
46-
protected long intgPd = 60000L;
47-
private Long rptEnabledMax = 1L;
46+
private TReportControl.OptFields optFields;
47+
protected TTrgOps trgOps;
48+
protected long intgPd;
49+
private Long rptEnabledMax;
4850
private String rptEnabledDesc;
49-
private boolean buffered = true;
50-
private long bufTime = 0;
51-
private boolean indexed = true;
51+
private boolean buffered;
52+
private long bufTime;
53+
private boolean indexed;
5254

5355
/**
56+
* Constructor.
5457
* Create ReportControlBlock with default values
5558
*
5659
* @param name name of the ReportControlBlock
5760
* @param id rptId of the ReportControlBlock
5861
* @param dataSetRef datSet of the ReportControlBlock
5962
*/
6063
public ReportControlBlock(String name, String id, String dataSetRef) {
61-
confRev = 1L;
6264
this.name = name;
6365
this.dataSetRef = dataSetRef;
6466
this.id = id;
67+
68+
// Default value
69+
this.confRev = 1L;
70+
this.optFields = newDefaultOptFields();
71+
this.trgOps = newDefaultTrgOps();
72+
this.intgPd = 60000L;
73+
this.rptEnabledMax = RPT_ENABLED_MAX_DEFAULT;
74+
this.buffered = true;
75+
this.bufTime = 0;
76+
this.indexed = true;
77+
}
78+
79+
/**
80+
* Constructor.
81+
* Create ReportControlBlock from TReportControl
82+
*
83+
* @param reportControl input
84+
*/
85+
public ReportControlBlock(TReportControl reportControl) {
86+
super();
87+
id = reportControl.getRptID();
88+
desc = reportControl.getDesc();
89+
name = reportControl.getName();
90+
if (reportControl.isSetConfRev()) {
91+
confRev = reportControl.getConfRev();
92+
}
93+
dataSetRef = reportControl.getDatSet();
94+
indexed = reportControl.isIndexed();
95+
intgPd = reportControl.getIntgPd();
96+
buffered = reportControl.isBuffered();
97+
bufTime = reportControl.getBufTime();
98+
optFields = copyOptFields(reportControl.getOptFields());
99+
trgOps = copyTTrgOps(reportControl.getTrgOps());
100+
if (reportControl.isSetRptEnabled()) {
101+
rptEnabledMax = reportControl.getRptEnabled().getMax();
102+
rptEnabledDesc = reportControl.getRptEnabled().getDesc();
103+
targets = reportControl.getRptEnabled().getClientLN().stream().map(ControlBlockTarget::from).collect(Collectors.toCollection(ArrayList::new));
104+
}
65105
}
66106

67107
/**
68108
* Create a new TTrgOps with default values
109+
*
69110
* @return new instance of TTrgOps
70111
*/
71112
private static TTrgOps newDefaultTrgOps() {
@@ -80,6 +121,7 @@ private static TTrgOps newDefaultTrgOps() {
80121

81122
/**
82123
* Create a new TReportControl.OptFields with default values
124+
*
83125
* @return new instance of TReportControl.OptFields
84126
*/
85127
private static TReportControl.OptFields newDefaultOptFields() {
@@ -95,32 +137,6 @@ private static TReportControl.OptFields newDefaultOptFields() {
95137
return newDefaultOptFields;
96138
}
97139

98-
/**
99-
* Constructor
100-
* @param reportControl input
101-
*/
102-
public ReportControlBlock(TReportControl reportControl) {
103-
super();
104-
id = reportControl.getRptID();
105-
desc = reportControl.getDesc();
106-
name = reportControl.getName();
107-
if(reportControl.isSetConfRev()) {
108-
confRev = reportControl.getConfRev();
109-
}
110-
dataSetRef = reportControl.getDatSet();
111-
indexed = reportControl.isIndexed();
112-
intgPd = reportControl.getIntgPd();
113-
buffered = reportControl.isBuffered();
114-
bufTime = reportControl.getBufTime();
115-
optFields = copyOptFields(reportControl.getOptFields());
116-
trgOps = copyTTrgOps(reportControl.getTrgOps());
117-
if (reportControl.isSetRptEnabled()){
118-
rptEnabledMax = reportControl.getRptEnabled().getMax();
119-
rptEnabledDesc = reportControl.getRptEnabled().getDesc();
120-
targets = reportControl.getRptEnabled().getClientLN().stream().map(ControlBlockTarget::from).collect(Collectors.toCollection(ArrayList::new));
121-
}
122-
}
123-
124140
@Override
125141
public ControlBlockEnum getControlBlockEnum() {
126142
return ControlBlockEnum.REPORT;
@@ -129,6 +145,7 @@ public ControlBlockEnum getControlBlockEnum() {
129145
/**
130146
* Implementation is required by superclass but ReportControl blocks has no SecurityEnabled attributes.
131147
* This implementation does nothing.
148+
*
132149
* @param tServices Service object
133150
* @throws ScdException never (this is just to comply with superclass)
134151
*/
@@ -139,6 +156,7 @@ protected void validateSecurityEnabledValue(TServices tServices) throws ScdExcep
139156

140157
/**
141158
* Creates Report Control Block
159+
*
142160
* @return TReportControl object
143161
*/
144162
@Override
@@ -168,13 +186,14 @@ public TReportControl toTControl() {
168186

169187
/**
170188
* Validates Report Control Block
189+
*
171190
* @throws ScdException when required fields are missing
172191
*/
173192
@Override
174193
public void validateCB() throws ScdException {
175194
super.validateCB();
176195

177-
if(dataSetRef != null && dataSetRef.isBlank()){
196+
if (dataSetRef != null && dataSetRef.isBlank()) {
178197
throw new ScdException("A required field is missing: datSet");
179198
}
180199
}
@@ -187,7 +206,7 @@ public TReportControl addToLN(TAnyLN tAnyLN) {
187206
}
188207

189208
private static TReportControl.OptFields copyOptFields(TReportControl.OptFields optFields) {
190-
if (optFields == null){
209+
if (optFields == null) {
191210
return null;
192211
}
193212
TReportControl.OptFields newOptFields = new TReportControl.OptFields();
@@ -203,7 +222,7 @@ private static TReportControl.OptFields copyOptFields(TReportControl.OptFields o
203222
}
204223

205224
private static TTrgOps copyTTrgOps(TTrgOps tTrgOps) {
206-
if (tTrgOps == null){
225+
if (tTrgOps == null) {
207226
return null;
208227
}
209228
TTrgOps newTTrgOps = new TTrgOps();

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/scl/ied/ControlBlockAdapter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.lfenergy.compas.scl2007b4.model.*;
99
import org.lfenergy.compas.sct.commons.dto.ControlBlockTarget;
10+
import org.lfenergy.compas.sct.commons.dto.ReportControlBlock;
1011
import org.lfenergy.compas.sct.commons.scl.SclElementAdapter;
1112
import org.lfenergy.compas.sct.commons.scl.ln.AbstractLNAdapter;
1213
import org.lfenergy.compas.sct.commons.util.ControlBlockEnum;
@@ -40,8 +41,6 @@
4041
*/
4142
public class ControlBlockAdapter extends SclElementAdapter<AbstractLNAdapter<? extends TAnyLN>, TControl> {
4243

43-
private static final long RPT_ENABLED_MAX_DEFAULT = 1L;
44-
4544
public ControlBlockAdapter(AbstractLNAdapter<? extends TAnyLN> parentAdapter, TControl tControl) {
4645
super(parentAdapter, tControl);
4746
}
@@ -103,7 +102,7 @@ public void addTargetIfNotExists(AbstractLNAdapter<?> targetLn) {
103102
} else if (currentElem instanceof TReportControl tReportControl) {
104103
if (!tReportControl.isSetRptEnabled()) {
105104
tReportControl.setRptEnabled(new TRptEnabled());
106-
tReportControl.getRptEnabled().setMax(RPT_ENABLED_MAX_DEFAULT);
105+
tReportControl.getRptEnabled().setMax(ReportControlBlock.RPT_ENABLED_MAX_DEFAULT);
107106
}
108107
if (tReportControl.getRptEnabled().getClientLN().stream().noneMatch(controlBlockTarget::equalsTClientLn)) {
109108
tReportControl.getRptEnabled().getClientLN().add(controlBlockTarget.toTClientLn());

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/ControlBlockEditorServiceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ void createDataSetAndControlBlocks_should_create_ControlBlocks() {
184184
.extracting(TTrgOps::isDchg, TTrgOps::isQchg, TTrgOps::isDupd, TTrgOps::isPeriod, TTrgOps::isGi)
185185
.containsExactly(false, false, false, true, true);
186186

187-
assertThat(tReportControl.getRptEnabled().getMax()).isEqualTo(1L);
187+
assertThat(tReportControl.getRptEnabled().getMax()).isEqualTo(4L);
188188
assertThat(tReportControl.getRptEnabled().getClientLN().stream().map(ControlBlockTarget::from))
189189
.containsExactly(
190190
new ControlBlockTarget("AP_NAME", "IED_NAME1", "LD_INST11", "", "LLN0", "", ""));

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/scl/ied/ControlBlockAdapterTest.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@
66

77
import org.junit.jupiter.api.Tag;
88
import org.junit.jupiter.api.Test;
9-
import org.lfenergy.compas.scl2007b4.model.SCL;
10-
import org.lfenergy.compas.scl2007b4.model.TControl;
11-
import org.lfenergy.compas.scl2007b4.model.TControlWithIEDName;
12-
import org.lfenergy.compas.scl2007b4.model.TGSEControl;
9+
import org.lfenergy.compas.scl2007b4.model.*;
1310
import org.lfenergy.compas.sct.commons.scl.ln.LN0Adapter;
1411
import org.lfenergy.compas.sct.commons.scl.ln.LNAdapter;
1512
import org.lfenergy.compas.sct.commons.testhelpers.SclTestMarshaller;
@@ -61,4 +58,33 @@ void addTargetIfNotExists_should_add_target(){
6158
.containsExactly("AP_NAME", "IED_NAME2", "LD_INST21", "1", List.of("ANCR"), "prefix");
6259
}
6360

61+
@Test
62+
void addTargetIfNotExists_should_create_rptEnabled_of_reportControl() {
63+
// Given
64+
SCL scd = SclTestMarshaller.getSCLFromFile("/scl-ln-adapter/scd_with_ln.xml");
65+
LN0Adapter ln0 = findLn0(scd, "IED_NAME1", "LD_INST11");
66+
TDataSet newDataSet = new TDataSet();
67+
newDataSet.setName("datSet");
68+
ln0.getCurrentElem().getDataSet().add(newDataSet);
69+
TReportControl tReportControl = new TReportControl();
70+
tReportControl.setRptID("rptId");
71+
tReportControl.setName("cbName");
72+
tReportControl.setDatSet("datSet");
73+
ln0.getCurrentElem().getReportControl().add(tReportControl);
74+
ControlBlockAdapter controlBlockAdapter = new ControlBlockAdapter(ln0, tReportControl);
75+
LNAdapter targetLn = findLn(scd, "IED_NAME2", "LD_INST21", "ANCR", "1", "prefix");
76+
// When
77+
controlBlockAdapter.addTargetIfNotExists(targetLn);
78+
// Then
79+
TControl tControl = controlBlockAdapter.getCurrentElem();
80+
assertThat(tControl).isInstanceOf(TReportControl.class);
81+
assertThat(((TReportControl) tControl).getRptEnabled())
82+
.extracting(TRptEnabled::getMax)
83+
.isEqualTo(4L);
84+
assertThat(((TReportControl) tControl).getRptEnabled().getClientLN())
85+
.singleElement()
86+
.extracting(TClientLN::getApRef, TClientLN::getIedName, TClientLN::getLdInst, TClientLN::getLnClass, TClientLN::getLnInst, TClientLN::getPrefix, TClientLN::getDesc)
87+
.containsExactly("AP_NAME", "IED_NAME2", "LD_INST21", List.of("ANCR"), "1", "prefix", "");
88+
}
89+
6490
}

0 commit comments

Comments
 (0)