7
7
8
8
package org .gridsuite .shortcircuit .server .repositories .specifications ;
9
9
10
+ import com .powsybl .ws .commons .computation .dto .ResourceFilterDTO ;
11
+ import com .powsybl .ws .commons .computation .specification .AbstractCommonSpecificationBuilder ;
12
+ import com .powsybl .ws .commons .computation .utils .SpecificationUtils ;
10
13
import jakarta .persistence .criteria .Path ;
11
14
import jakarta .persistence .criteria .Root ;
12
- import org .gridsuite .shortcircuit .server .dto .ResourceFilter ;
13
15
import org .gridsuite .shortcircuit .server .entities .FaultResultEntity ;
14
16
import org .gridsuite .shortcircuit .server .entities .FeederResultEntity ;
15
17
import org .gridsuite .shortcircuit .server .entities .ShortCircuitAnalysisResultEntity ;
16
18
import org .springframework .data .jpa .domain .Specification ;
19
+ import org .springframework .stereotype .Service ;
17
20
18
21
import java .util .List ;
19
22
import java .util .UUID ;
20
23
21
24
/**
22
25
* @author Florent MILLOT <[email protected] >
23
26
*/
24
- public final class FaultResultSpecificationBuilder {
27
+ @ Service
28
+ public final class FaultResultSpecificationBuilder extends AbstractCommonSpecificationBuilder <FaultResultEntity > {
25
29
26
- // Utility class, so no constructor
27
- private FaultResultSpecificationBuilder () { }
28
-
29
- public static boolean isNotParentFilter (ResourceFilter filter ) {
30
+ @ Override
31
+ public boolean isNotParentFilter (ResourceFilterDTO filter ) {
30
32
return filter .column ().contains (FeederResultEntity .Fields .connectableId );
31
33
}
32
34
33
- public static Specification <FaultResultEntity > uuidIn (List <UUID > uuids ) {
34
- return (root , cq , cb ) -> root .get (getIdFieldName ()).in (uuids );
35
- }
36
-
37
- public static Specification <FaultResultEntity > resultUuidEquals (UUID value ) {
38
- return (root , cq , cb ) -> cb .equal (getResultIdPath (root ), value );
39
- }
40
-
41
- public static String getIdFieldName () {
35
+ public String getIdFieldName () {
42
36
return FaultResultEntity .Fields .faultResultUuid ;
43
37
}
44
38
45
- public static Path <UUID > getResultIdPath (Root <FaultResultEntity > root ) {
39
+ public Path <UUID > getResultIdPath (Root <FaultResultEntity > root ) {
46
40
return root .get (FaultResultEntity .Fields .result ).get (ShortCircuitAnalysisResultEntity .Fields .resultUuid );
47
41
}
48
42
49
- public static Specification <FaultResultEntity > appendWithLimitViolationsToSpecification (Specification <FaultResultEntity > specification ) {
43
+ public Specification <FaultResultEntity > appendWithLimitViolationsToSpecification (Specification <FaultResultEntity > specification ) {
50
44
return specification .and (SpecificationUtils .isNotEmpty (FaultResultEntity .Fields .limitViolations ));
51
45
}
52
46
53
- public static Specification <FaultResultEntity > buildSpecification (UUID resultUuid , List <ResourceFilter > resourceFilters ) {
47
+ @ Override
48
+ public Specification <FaultResultEntity > buildSpecification (UUID resultUuid , List <ResourceFilterDTO > resourceFilters ) {
54
49
// since sql joins generates duplicate results, we need to use distinct here
55
50
Specification <FaultResultEntity > specification = SpecificationUtils .distinct ();
56
51
// filter by resultUuid
@@ -59,8 +54,8 @@ public static Specification<FaultResultEntity> buildSpecification(UUID resultUui
59
54
return SpecificationUtils .appendFiltersToSpecification (specification , resourceFilters );
60
55
}
61
56
62
- public static Specification <FaultResultEntity > buildFeedersSpecification (List <UUID > uuids , List <ResourceFilter > resourceFilters ) {
63
- List <ResourceFilter > childrenResourceFilter = resourceFilters .stream ().filter (FaultResultSpecificationBuilder ::isNotParentFilter )
57
+ public Specification <FaultResultEntity > buildFeedersSpecification (List <UUID > uuids , List <ResourceFilterDTO > resourceFilters ) {
58
+ List <ResourceFilterDTO > childrenResourceFilter = resourceFilters .stream ().filter (this ::isNotParentFilter )
64
59
.toList ();
65
60
Specification <FaultResultEntity > specification = Specification .where (uuidIn (uuids ));
66
61
0 commit comments