@@ -112,41 +112,50 @@ public List<SclReportItem> updateAllExtRefIedNames(SCL scd) {
112112 }
113113
114114 @ Override
115- public List <SclReportItem > createDataSetAndControlBlocks (SCL scd ) {
115+ public List <SclReportItem > createDataSetAndControlBlocks (SCL scd , Set <FcdaForDataSetsCreation > allowedFcdas ) {
116+ checkFcdaInitDataPresence (allowedFcdas );
116117 SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
117118 Stream <LDeviceAdapter > lDeviceAdapters = sclRootAdapter .streamIEDAdapters ().flatMap (IEDAdapter ::streamLDeviceAdapters );
118- return createDataSetAndControlBlocks (lDeviceAdapters );
119+ return createDataSetAndControlBlocks (lDeviceAdapters , allowedFcdas );
119120 }
120121
121122 @ Override
122- public List <SclReportItem > createDataSetAndControlBlocks (SCL scd , String targetIedName ) {
123+ public List <SclReportItem > createDataSetAndControlBlocks (SCL scd , String targetIedName , Set <FcdaForDataSetsCreation > allowedFcdas ) {
124+ checkFcdaInitDataPresence (allowedFcdas );
123125 SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
124126 IEDAdapter iedAdapter = sclRootAdapter .getIEDAdapterByName (targetIedName );
125- return createDataSetAndControlBlocks (iedAdapter .streamLDeviceAdapters ());
127+ return createDataSetAndControlBlocks (iedAdapter .streamLDeviceAdapters (), allowedFcdas );
126128
127129 }
128130
129131 @ Override
130- public List <SclReportItem > createDataSetAndControlBlocks (SCL scd , String targetIedName , String targetLDeviceInst ) {
132+ public List <SclReportItem > createDataSetAndControlBlocks (SCL scd , String targetIedName , String targetLDeviceInst , Set < FcdaForDataSetsCreation > allowedFcdas ) {
131133 if (StringUtils .isBlank (targetIedName )) {
132134 throw new ScdException ("IED.name parameter is missing" );
133135 }
136+ checkFcdaInitDataPresence (allowedFcdas );
134137 SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
135138 IEDAdapter iedAdapter = sclRootAdapter .getIEDAdapterByName (targetIedName );
136139 LDeviceAdapter lDeviceAdapter = iedAdapter .getLDeviceAdapterByLdInst (targetLDeviceInst );
137- return createDataSetAndControlBlocks (Stream .of (lDeviceAdapter ));
140+ return createDataSetAndControlBlocks (Stream .of (lDeviceAdapter ), allowedFcdas );
138141 }
139142
140- private List <SclReportItem > createDataSetAndControlBlocks (Stream <LDeviceAdapter > lDeviceAdapters ) {
143+ private void checkFcdaInitDataPresence (Set <FcdaForDataSetsCreation > allowedFcdas ) {
144+ if (allowedFcdas == null || allowedFcdas .isEmpty ()) {
145+ throw new ScdException ("Accepted FCDAs list is empty, you should initialize allowed FCDA lists with CsvHelper class before" );
146+ }
147+ }
148+
149+ private List <SclReportItem > createDataSetAndControlBlocks (Stream <LDeviceAdapter > lDeviceAdapters , Set <FcdaForDataSetsCreation > allowedFcdas ) {
141150 return lDeviceAdapters
142- .map (LDeviceAdapter :: createDataSetAndControlBlocks )
151+ .map (lDeviceAdapter -> lDeviceAdapter . createDataSetAndControlBlocks ( allowedFcdas ) )
143152 .flatMap (List ::stream )
144153 .toList ();
145154 }
146155
147156 @ Override
148157 public List <SclReportItem > configureNetworkForAllControlBlocks (SCL scd , ControlBlockNetworkSettings controlBlockNetworkSettings ,
149- RangesPerCbType rangesPerCbType ) {
158+ RangesPerCbType rangesPerCbType ) {
150159 List <SclReportItem > sclReportItems = new ArrayList <>();
151160 sclReportItems .addAll (configureNetworkForControlBlocks (scd , controlBlockNetworkSettings , rangesPerCbType .gse (), ControlBlockEnum .GSE ));
152161 sclReportItems .addAll (configureNetworkForControlBlocks (scd , controlBlockNetworkSettings , rangesPerCbType .sampledValue (), ControlBlockEnum .SAMPLED_VALUE ));
0 commit comments