@@ -34,16 +34,15 @@ public abstract class AbstractWhereDSL<T extends AbstractWhereDSL<T>> {
3434 private final List <CriteriaGroupWithConnector > subCriteria = new ArrayList <>();
3535
3636 @ NotNull
37- public <S > T where (BindableColumn <S > column , VisitableCondition <S > condition , CriteriaGroupWithConnector ...subCriteria ) {
37+ public <S > T where (BindableColumn <S > column , VisitableCondition <S > condition ,
38+ CriteriaGroupWithConnector ...subCriteria ) {
3839 return where (column , condition , Arrays .asList (subCriteria ));
3940 }
4041
4142 @ NotNull
42- public <S > T where (BindableColumn <S > column , VisitableCondition <S > condition , List <CriteriaGroupWithConnector > subCriteria ) {
43- initialCriterion = ColumnAndConditionCriterion .withColumn (column )
44- .withCondition (condition )
45- .withSubCriteria (subCriteria )
46- .build ();
43+ public <S > T where (BindableColumn <S > column , VisitableCondition <S > condition ,
44+ List <CriteriaGroupWithConnector > subCriteria ) {
45+ initialCriterion = buildCriterion (column , condition , subCriteria );
4746 return getThis ();
4847 }
4948
@@ -54,10 +53,7 @@ public T where(ExistsPredicate existsPredicate, CriteriaGroupWithConnector...sub
5453
5554 @ NotNull
5655 public T where (ExistsPredicate existsPredicate , List <CriteriaGroupWithConnector > subCriteria ) {
57- initialCriterion = new ExistsCriterion .Builder ()
58- .withExistsPredicate (existsPredicate )
59- .withSubCriteria (subCriteria )
60- .build ();
56+ initialCriterion = buildCriterion (existsPredicate , subCriteria );
6157 return getThis ();
6258 }
6359
@@ -68,10 +64,7 @@ public T where(CriteriaGroup criterion, CriteriaGroupWithConnector...subCriteria
6864
6965 @ NotNull
7066 public T where (CriteriaGroup criterion , List <CriteriaGroupWithConnector > subCriteria ) {
71- initialCriterion = new CriteriaGroup .Builder ()
72- .withInitialCriterion (criterion )
73- .withSubCriteria (subCriteria )
74- .build ();
67+ initialCriterion = buildCriterion (criterion , subCriteria );
7568 return getThis ();
7669 }
7770
@@ -82,17 +75,15 @@ public T applyWhere(WhereApplier whereApplier) {
8275 }
8376
8477 @ NotNull
85- public <S > T and (BindableColumn <S > column , VisitableCondition <S > condition , CriteriaGroupWithConnector ...subCriteria ) {
78+ public <S > T and (BindableColumn <S > column , VisitableCondition <S > condition ,
79+ CriteriaGroupWithConnector ...subCriteria ) {
8680 return and (column , condition , Arrays .asList (subCriteria ));
8781 }
8882
8983 @ NotNull
90- public <S > T and (BindableColumn <S > column , VisitableCondition <S > condition , List <CriteriaGroupWithConnector > subCriteria ) {
91- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
92- .withInitialCriterion (ColumnAndConditionCriterion .withColumn (column ).withCondition (condition ).build ())
93- .withConnector ("and" ) //$NON-NLS-1$
94- .withSubCriteria (subCriteria )
95- .build ());
84+ public <S > T and (BindableColumn <S > column , VisitableCondition <S > condition ,
85+ List <CriteriaGroupWithConnector > subCriteria ) {
86+ addCriteriaGroup ("and" , buildCriterion (column , condition ), subCriteria );
9687 return getThis ();
9788 }
9889
@@ -103,11 +94,7 @@ public T and(ExistsPredicate existsPredicate, CriteriaGroupWithConnector...subCr
10394
10495 @ NotNull
10596 public T and (ExistsPredicate existsPredicate , List <CriteriaGroupWithConnector > subCriteria ) {
106- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
107- .withInitialCriterion (new ExistsCriterion .Builder ().withExistsPredicate (existsPredicate ).build ())
108- .withConnector ("and" ) //$NON-NLS-1$
109- .withSubCriteria (subCriteria )
110- .build ());
97+ addCriteriaGroup ("and" , buildCriterion (existsPredicate ), subCriteria );
11198 return getThis ();
11299 }
113100
@@ -118,26 +105,20 @@ public T and(CriteriaGroup criteriaGroup, CriteriaGroupWithConnector...subCriter
118105
119106 @ NotNull
120107 public T and (CriteriaGroup criteriaGroup , List <CriteriaGroupWithConnector > subCriteria ) {
121- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
122- .withInitialCriterion (new CriteriaGroup .Builder ().withInitialCriterion (criteriaGroup ).build ())
123- .withConnector ("and" ) //$NON-NLS-1$
124- .withSubCriteria (subCriteria )
125- .build ());
108+ addCriteriaGroup ("and" , buildCriterion (criteriaGroup ), subCriteria );
126109 return getThis ();
127110 }
128111
129112 @ NotNull
130- public <S > T or (BindableColumn <S > column , VisitableCondition <S > condition , CriteriaGroupWithConnector ...subCriteria ) {
113+ public <S > T or (BindableColumn <S > column , VisitableCondition <S > condition ,
114+ CriteriaGroupWithConnector ...subCriteria ) {
131115 return or (column , condition , Arrays .asList (subCriteria ));
132116 }
133117
134118 @ NotNull
135- public <S > T or (BindableColumn <S > column , VisitableCondition <S > condition , List <CriteriaGroupWithConnector > subCriteria ) {
136- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
137- .withInitialCriterion (ColumnAndConditionCriterion .withColumn (column ).withCondition (condition ).build ())
138- .withConnector ("or" ) //$NON-NLS-1$
139- .withSubCriteria (subCriteria )
140- .build ());
119+ public <S > T or (BindableColumn <S > column , VisitableCondition <S > condition ,
120+ List <CriteriaGroupWithConnector > subCriteria ) {
121+ addCriteriaGroup ("or" , buildCriterion (column , condition ), subCriteria );
141122 return getThis ();
142123 }
143124
@@ -148,11 +129,7 @@ public T or(ExistsPredicate existsPredicate, CriteriaGroupWithConnector...subCri
148129
149130 @ NotNull
150131 public T or (ExistsPredicate existsPredicate , List <CriteriaGroupWithConnector > subCriteria ) {
151- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
152- .withInitialCriterion (new ExistsCriterion .Builder ().withExistsPredicate (existsPredicate ).build ())
153- .withConnector ("or" ) //$NON-NLS-1$
154- .withSubCriteria (subCriteria )
155- .build ());
132+ addCriteriaGroup ("or" , buildCriterion (existsPredicate ), subCriteria );
156133 return getThis ();
157134 }
158135
@@ -163,17 +140,52 @@ public T or(CriteriaGroup criteriaGroup, CriteriaGroupWithConnector...subCriteri
163140
164141 @ NotNull
165142 public T or (CriteriaGroup criteriaGroup , List <CriteriaGroupWithConnector > subCriteria ) {
166- this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
167- .withInitialCriterion (new CriteriaGroup .Builder ().withInitialCriterion (criteriaGroup ).build ())
168- .withConnector ("or" ) //$NON-NLS-1$
169- .withSubCriteria (subCriteria )
170- .build ());
143+ addCriteriaGroup ("or" , buildCriterion (criteriaGroup ), subCriteria );
171144 return getThis ();
172145 }
173146
174147 protected WhereModel internalBuild () {
175148 return new WhereModel (initialCriterion , subCriteria );
176149 }
177150
151+ private <R > ColumnAndConditionCriterion <R > buildCriterion (BindableColumn <R > column ,
152+ VisitableCondition <R > condition ) {
153+ return ColumnAndConditionCriterion .withColumn (column ).withCondition (condition ).build ();
154+ }
155+
156+ private <R > ColumnAndConditionCriterion <R > buildCriterion (BindableColumn <R > column , VisitableCondition <R > condition ,
157+ List <CriteriaGroupWithConnector > subCriteria ) {
158+ return ColumnAndConditionCriterion .withColumn (column )
159+ .withCondition (condition )
160+ .withSubCriteria (subCriteria )
161+ .build ();
162+ }
163+
164+ private ExistsCriterion buildCriterion (ExistsPredicate existsPredicate ) {
165+ return new ExistsCriterion .Builder ().withExistsPredicate (existsPredicate ).build ();
166+ }
167+
168+ private ExistsCriterion buildCriterion (ExistsPredicate existsPredicate ,
169+ List <CriteriaGroupWithConnector > subCriteria ) {
170+ return new ExistsCriterion .Builder ().withExistsPredicate (existsPredicate ).withSubCriteria (subCriteria ).build ();
171+ }
172+
173+ private CriteriaGroup buildCriterion (CriteriaGroup criteriaGroup ) {
174+ return new CriteriaGroup .Builder ().withInitialCriterion (criteriaGroup ).build ();
175+ }
176+
177+ private CriteriaGroup buildCriterion (CriteriaGroup criteriaGroup , List <CriteriaGroupWithConnector > subCriteria ) {
178+ return new CriteriaGroup .Builder ().withInitialCriterion (criteriaGroup ).withSubCriteria (subCriteria ).build ();
179+ }
180+
181+ private void addCriteriaGroup (String connector , SqlCriterion initialCriterion ,
182+ List <CriteriaGroupWithConnector > subCriteria ) {
183+ this .subCriteria .add (new CriteriaGroupWithConnector .Builder ()
184+ .withInitialCriterion (initialCriterion )
185+ .withConnector (connector )
186+ .withSubCriteria (subCriteria )
187+ .build ());
188+ }
189+
178190 protected abstract T getThis ();
179191}
0 commit comments