@@ -43,23 +43,12 @@ private CriterionRenderer(Builder<T> builder) {
43
43
}
44
44
45
45
public Optional <RenderedCriterion > render () {
46
- FragmentAndParameters initialCondition = null ;
47
- if (sqlCriterion .condition ().shouldRender ()) {
48
- initialCondition = renderCondition ();
49
- }
50
-
51
- List <RenderedCriterion > subCriteria = sqlCriterion .mapSubCriteria (this ::renderSubCriterion )
52
- .filter (Optional ::isPresent )
53
- .map (Optional ::get )
54
- .collect (Collectors .toList ());
55
-
56
46
RenderedCriterion rc ;
57
- if (initialCondition == null ) {
58
- rc = renderWithoutInitialCondition ( subCriteria );
47
+ if (sqlCriterion . condition (). shouldRender () ) {
48
+ rc = renderWithInitialCondition ( renderCondition (), renderSubCriteria () );
59
49
} else {
60
- rc = renderWithInitialCondition ( initialCondition , subCriteria );
50
+ rc = renderWithoutInitialCondition ( renderSubCriteria () );
61
51
}
62
-
63
52
return Optional .ofNullable (rc );
64
53
}
65
54
@@ -73,6 +62,13 @@ private FragmentAndParameters renderCondition() {
73
62
return sqlCriterion .condition ().accept (visitor );
74
63
}
75
64
65
+ private List <RenderedCriterion > renderSubCriteria () {
66
+ return sqlCriterion .mapSubCriteria (this ::renderSubCriterion )
67
+ .filter (Optional ::isPresent )
68
+ .map (Optional ::get )
69
+ .collect (Collectors .toList ());
70
+ }
71
+
76
72
private <S > Optional <RenderedCriterion > renderSubCriterion (SqlCriterion <S > subCriterion ) {
77
73
return CriterionRenderer .withCriterion (subCriterion )
78
74
.withSequence (sequence )
@@ -94,19 +90,14 @@ private RenderedCriterion renderWithoutInitialCondition(List<RenderedCriterion>
94
90
private RenderedCriterion renderWithInitialCondition (FragmentAndParameters initialCondition ,
95
91
List <RenderedCriterion > subCriteria ) {
96
92
if (subCriteria .isEmpty ()) {
97
- return fromFragmentAndParameters (initialCondition );
93
+ return calculateRenderedCriterion (initialCondition );
98
94
}
99
95
100
96
return calculateRenderedCriterion (initialCondition , subCriteria );
101
97
}
102
98
103
- private RenderedCriterion fromFragmentAndParameters (FragmentAndParameters fragmentAndParameters ) {
104
- RenderedCriterion .Builder builder = new RenderedCriterion .Builder ()
105
- .withFragmentAndParameters (fragmentAndParameters );
106
-
107
- sqlCriterion .connector ().ifPresent (builder ::withConnector );
108
-
109
- return builder .build ();
99
+ private RenderedCriterion calculateRenderedCriterion (FragmentAndParameters initialCondition ) {
100
+ return fromFragmentAndParameters (initialCondition );
110
101
}
111
102
112
103
private RenderedCriterion calculateRenderedCriterion (List <RenderedCriterion > subCriteria ) {
@@ -118,8 +109,7 @@ private RenderedCriterion calculateRenderedCriterion(FragmentAndParameters initi
118
109
FragmentCollector fc = subCriteria .stream ()
119
110
.map (RenderedCriterion ::fragmentAndParametersWithConnector )
120
111
.collect (FragmentCollector .collect (initialCondition ));
121
- String fragment = calculateFragment (fc );
122
- return fromFragmentAndParameters (FragmentAndParameters .withFragment (fragment )
112
+ return fromFragmentAndParameters (FragmentAndParameters .withFragment (calculateFragment (fc ))
123
113
.withParameters (fc .parameters ())
124
114
.build ());
125
115
}
@@ -133,6 +123,15 @@ private String calculateFragment(FragmentCollector collector) {
133
123
}
134
124
}
135
125
126
+ private RenderedCriterion fromFragmentAndParameters (FragmentAndParameters fragmentAndParameters ) {
127
+ RenderedCriterion .Builder builder = new RenderedCriterion .Builder ()
128
+ .withFragmentAndParameters (fragmentAndParameters );
129
+
130
+ sqlCriterion .connector ().ifPresent (builder ::withConnector );
131
+
132
+ return builder .build ();
133
+ }
134
+
136
135
public static <T > Builder <T > withCriterion (SqlCriterion <T > sqlCriterion ) {
137
136
return new Builder <T >().withCriterion (sqlCriterion );
138
137
}
0 commit comments