1919import org .lfenergy .compas .sct .commons .scl .ied .LDeviceAdapter ;
2020import org .lfenergy .compas .sct .commons .scl .ied .LN0Adapter ;
2121import org .lfenergy .compas .sct .commons .util .ControlBlockEnum ;
22- import org .lfenergy .compas .sct .commons .util .ControlBlockNetworkSettingsCsvHelper ;
2322import org .lfenergy .compas .sct .commons .util .PrivateEnum ;
2423import org .lfenergy .compas .sct .commons .util .Utils ;
2524
26- import java .io .Reader ;
2725import java .util .*;
2826import java .util .function .Function ;
2927import java .util .stream .Collectors ;
3028import java .util .stream .Stream ;
3129
30+ import static org .lfenergy .compas .sct .commons .dto .ControlBlockNetworkSettings .NetworkRanges ;
31+ import static org .lfenergy .compas .sct .commons .dto .ControlBlockNetworkSettings .RangesPerCbType ;
32+
3233@ UtilityClass
3334public class ExtRefService {
3435
@@ -159,27 +160,6 @@ private static SclReport createDataSetAndControlBlocks(SclRootAdapter sclRootAda
159160 return new SclReport (sclRootAdapter , sclReportItems );
160161 }
161162
162- /**
163- * Shortcut for {@link ExtRefService#configureNetworkForAllControlBlocks(SCL, ControlBlockNetworkSettings, long, long, String, String, ControlBlockEnum)}
164- * using a CSV file to provide ControlBlockNetworkSettings.
165- *
166- * @param scd input SCD object. The object will be modified with the new DataGSESet and SMV elements
167- * @param csvSource a Reader for the CSV file, as specified in {@link ControlBlockNetworkSettingsCsvHelper}.
168- * @param appIdMin range start for APPID (inclusive)
169- * @param appIdMax range end for APPID (inclusive)
170- * @param macAddressMin range start for MAC-Addresses (inclusive). Ex: "01-0C-CD-01-00-00"
171- * @param macAddressMax range end for MAC-Addresses (inclusive). Ex: "01-0C-CD-01-01-FF"
172- * @return a report with all the errors encountered
173- * @see ControlBlockNetworkSettingsCsvHelper
174- * @see ControlBlockNetworkSettings
175- * @see ExtRefService#configureNetworkForAllControlBlocks(SCL, ControlBlockNetworkSettings, long, long, String, String, ControlBlockEnum)
176- */
177- public static SclReport configureNetworkForAllControlBlocks (SCL scd , Reader csvSource ,
178- long appIdMin , long appIdMax , String macAddressMin , String macAddressMax , ControlBlockEnum controlBlockEnum ) {
179- ControlBlockNetworkSettings controlBlockNetworkSettings = new ControlBlockNetworkSettingsCsvHelper (csvSource );
180- return configureNetworkForAllControlBlocks (scd , controlBlockNetworkSettings , appIdMin , appIdMax , macAddressMin , macAddressMax , controlBlockEnum );
181- }
182-
183163 /**
184164 * Configure the network for all the ControlBlocks.
185165 * Create (or update if already existing) these elements
@@ -188,31 +168,37 @@ public static SclReport configureNetworkForAllControlBlocks(SCL scd, Reader csvS
188168 *
189169 * @param scd input SCD object. The object will be modified with the new DataGSESet and SMV elements
190170 * @param controlBlockNetworkSettings a method tha gives the network configuration information for a given ControlBlock
191- * @param appIdMin range start for APPID (inclusive)
192- * @param appIdMax range end for APPID (inclusive)
193- * @param macAddressMin range start for MAC-Addresses (inclusive). Ex: "01-0C-CD-01-00-00"
194- * @param macAddressMax range end for MAC-Addresses (inclusive). Ex: "01-0C-CD-01-01-FF"
171+ * @param rangesPerCbType provide NetworkRanges for GSEControl and SampledValueControl. NetworkRanges contains :
172+ * start-end app APPID range (long value), start-end MAC-Addresses (Mac-Addresses values: Ex: "01-0C-CD-01-01-FF")
195173 * @return a report with all the errors encountered
196174 * @see Utils#macAddressToLong(String) for the expected MAC address format
197175 * @see ControlBlockNetworkSettings
176+ * @see ControlBlockNetworkSettings.RangesPerCbType
177+ * @see ControlBlockNetworkSettings.NetworkRanges
198178 */
199179 public static SclReport configureNetworkForAllControlBlocks (SCL scd , ControlBlockNetworkSettings controlBlockNetworkSettings ,
200- long appIdMin , long appIdMax , String macAddressMin , String macAddressMax , ControlBlockEnum controlBlockEnum ) {
201- PrimitiveIterator .OfLong appIdIterator = Utils .sequence (appIdMin , appIdMax );
202- Iterator <String > macAddressIterator = Utils .macAddressSequence (macAddressMin , macAddressMax );
180+ RangesPerCbType rangesPerCbType ) {
181+ List <SclReportItem > sclReportItems = new ArrayList <>();
182+ sclReportItems .addAll (configureNetworkForControlBlocks (scd , controlBlockNetworkSettings , rangesPerCbType .gse (), ControlBlockEnum .GSE ));
183+ sclReportItems .addAll (configureNetworkForControlBlocks (scd , controlBlockNetworkSettings , rangesPerCbType .sampledValue (), ControlBlockEnum .SAMPLED_VALUE ));
184+ return new SclReport (new SclRootAdapter (scd ), sclReportItems );
185+ }
186+
187+ private static List <SclReportItem > configureNetworkForControlBlocks (SCL scd , ControlBlockNetworkSettings controlBlockNetworkSettings ,
188+ NetworkRanges networkRanges , ControlBlockEnum controlBlockEnum ) {
189+ PrimitiveIterator .OfLong appIdIterator = Utils .sequence (networkRanges .appIdStart (), networkRanges .appIdEnd ());
190+ Iterator <String > macAddressIterator = Utils .macAddressSequence (networkRanges .macAddressStart (), networkRanges .macAddressEnd ());
203191
204192 SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
205- List <SclReportItem > sclReportItems =
206- sclRootAdapter .streamIEDAdapters ()
207- .flatMap (iedAdapter ->
208- iedAdapter .streamLDeviceAdapters ()
209- .filter (LDeviceAdapter ::hasLN0 )
210- .map (LDeviceAdapter ::getLN0Adapter )
211- .flatMap (ln0Adapter -> ln0Adapter .streamControlBlocks (controlBlockEnum ))
212- .map (controlBlockAdapter -> configureControlBlockNetwork (controlBlockNetworkSettings , appIdIterator , macAddressIterator , controlBlockAdapter )))
213- .flatMap (Optional ::stream )
214- .toList ();
215- return new SclReport (sclRootAdapter , sclReportItems );
193+ return sclRootAdapter .streamIEDAdapters ()
194+ .flatMap (iedAdapter ->
195+ iedAdapter .streamLDeviceAdapters ()
196+ .filter (LDeviceAdapter ::hasLN0 )
197+ .map (LDeviceAdapter ::getLN0Adapter )
198+ .flatMap (ln0Adapter -> ln0Adapter .streamControlBlocks (controlBlockEnum ))
199+ .map (controlBlockAdapter -> configureControlBlockNetwork (controlBlockNetworkSettings , appIdIterator , macAddressIterator , controlBlockAdapter )))
200+ .flatMap (Optional ::stream )
201+ .toList ();
216202 }
217203
218204 private static Optional <SclReportItem > configureControlBlockNetwork (ControlBlockNetworkSettings controlBlockNetworkSettings , PrimitiveIterator .OfLong appIdIterator , Iterator <String > macAddressIterator , ControlBlockAdapter controlBlockAdapter ) {
0 commit comments