@@ -43,23 +43,12 @@ private CriterionRenderer(Builder<T> builder) {
4343 }
4444
4545 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-
5646 RenderedCriterion rc ;
57- if (initialCondition == null ) {
58- rc = renderWithoutInitialCondition ( subCriteria );
47+ if (sqlCriterion . condition (). shouldRender () ) {
48+ rc = renderWithInitialCondition ( renderCondition (), renderSubCriteria () );
5949 } else {
60- rc = renderWithInitialCondition ( initialCondition , subCriteria );
50+ rc = renderWithoutInitialCondition ( renderSubCriteria () );
6151 }
62-
6352 return Optional .ofNullable (rc );
6453 }
6554
@@ -73,6 +62,13 @@ private FragmentAndParameters renderCondition() {
7362 return sqlCriterion .condition ().accept (visitor );
7463 }
7564
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+
7672 private <S > Optional <RenderedCriterion > renderSubCriterion (SqlCriterion <S > subCriterion ) {
7773 return CriterionRenderer .withCriterion (subCriterion )
7874 .withSequence (sequence )
@@ -94,19 +90,14 @@ private RenderedCriterion renderWithoutInitialCondition(List<RenderedCriterion>
9490 private RenderedCriterion renderWithInitialCondition (FragmentAndParameters initialCondition ,
9591 List <RenderedCriterion > subCriteria ) {
9692 if (subCriteria .isEmpty ()) {
97- return fromFragmentAndParameters (initialCondition );
93+ return calculateRenderedCriterion (initialCondition );
9894 }
9995
10096 return calculateRenderedCriterion (initialCondition , subCriteria );
10197 }
10298
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 );
110101 }
111102
112103 private RenderedCriterion calculateRenderedCriterion (List <RenderedCriterion > subCriteria ) {
@@ -118,8 +109,7 @@ private RenderedCriterion calculateRenderedCriterion(FragmentAndParameters initi
118109 FragmentCollector fc = subCriteria .stream ()
119110 .map (RenderedCriterion ::fragmentAndParametersWithConnector )
120111 .collect (FragmentCollector .collect (initialCondition ));
121- String fragment = calculateFragment (fc );
122- return fromFragmentAndParameters (FragmentAndParameters .withFragment (fragment )
112+ return fromFragmentAndParameters (FragmentAndParameters .withFragment (calculateFragment (fc ))
123113 .withParameters (fc .parameters ())
124114 .build ());
125115 }
@@ -133,6 +123,15 @@ private String calculateFragment(FragmentCollector collector) {
133123 }
134124 }
135125
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+
136135 public static <T > Builder <T > withCriterion (SqlCriterion <T > sqlCriterion ) {
137136 return new Builder <T >().withCriterion (sqlCriterion );
138137 }
0 commit comments