2 * This file is part of yosql. It is subject to the license terms in the LICENSE file found in the top-level
3 * directory of this distribution and at https://creativecommons.org/publicdomain/zero/1.0/. No part of yosql,
4 * including this file, may be copied, modified, propagated, or distributed except according to the terms contained
8 package wtf
.metio
.yosql
.dao
.jdbc
;
10 import ch
.qos
.cal10n
.MessageConveyor
;
11 import org
.slf4j
.cal10n
.LocLoggerFactory
;
12 import wtf
.metio
.yosql
.codegen
.api
.*;
13 import wtf
.metio
.yosql
.codegen
.blocks
.GenericRepositoryGenerator
;
14 import wtf
.metio
.yosql
.internals
.jdk
.SupportedLocales
;
15 import wtf
.metio
.yosql
.models
.constants
.api
.PersistenceApis
;
16 import wtf
.metio
.yosql
.models
.immutables
.ImmutableRuntimeConfiguration
;
17 import wtf
.metio
.yosql
.models
.immutables
.JavaConfiguration
;
18 import wtf
.metio
.yosql
.testing
.codegen
.Blocks
;
19 import wtf
.metio
.yosql
.testing
.configs
.*;
20 import wtf
.metio
.yosql
.testing
.logging
.LoggingObjectMother
;
23 * Object mother for JDBC related classes.
25 * @see <a href="https://martinfowler.com/bliki/ObjectMother.html">Martin Fowler's article on ObjectMothers</a>
27 public final class JdbcObjectMother
{
29 public static JdbcMethods
jdbcMethods() {
30 final var names
= NamesConfigurations
.defaults();
31 return new DefaultJdbcMethods(
32 new DefaultJdbcDataSourceMethods(names
),
33 new DefaultJdbcConnectionMethods(names
),
34 new DefaultJdbcDatabaseMetaDataMethods(names
),
35 new DefaultJdbcResultSetMethods(names
),
36 new DefaultJdbcResultSetMetaDataMethods(names
),
37 new DefaultJdbcStatementMethods(names
));
40 public static FieldsGenerator
fieldsGenerator(final JavaConfiguration java
) {
41 return new JdbcFieldsGenerator(
42 ConverterConfigurations
.withResultRowConverter(),
43 NamesConfigurations
.defaults(),
44 LoggingObjectMother
.loggingGenerator(),
49 public static ConstructorGenerator
constructorGenerator(final JavaConfiguration java
) {
50 return new JdbcConstructorGenerator(
51 Blocks
.genericBlocks(),
53 NamesConfigurations
.defaults(),
55 RepositoriesConfigurations
.defaults());
58 private static DefaultJdbcParameters
jdbcParameter() {
59 return new DefaultJdbcParameters(Blocks
.parameters(), NamesConfigurations
.defaults());
62 public static JdbcBlocks
jdbcBlocks() {
63 return jdbcBlocks(JavaConfigurations
.defaults());
66 public static JdbcBlocks
jdbcBlocks(final JavaConfiguration java
) {
67 return new DefaultJdbcBlocks(
69 Blocks
.genericBlocks(),
70 Blocks
.controlFlows(java
),
71 Blocks
.variables(java
),
74 LoggingObjectMother
.loggingGenerator());
77 public static ImmutableRuntimeConfiguration
runtimeConfig() {
78 return ImmutableRuntimeConfiguration
.copyOf(RuntimeConfigurations
.defaults())
79 .withApi(ApiConfigurations
.jul())
80 .withFiles(FilesConfigurations
.maven())
81 .withConverter(ConverterConfigurations
.withResultRowConverter());
84 public static BlockingMethodGenerator
blockingMethodGenerator(final JavaConfiguration java
) {
85 return new JdbcBlockingMethodGenerator(
86 Blocks
.controlFlows(java
),
88 Blocks
.parameters(java
),
89 LoggingObjectMother
.loggingGenerator(),
92 ConverterConfigurations
.withResultRowConverter());
95 public static BatchMethodGenerator
batchMethodGenerator(final JavaConfiguration java
) {
96 return new JdbcBatchMethodGenerator(
97 Blocks
.controlFlows(java
),
99 Blocks
.parameters(java
),
100 LoggingObjectMother
.loggingGenerator(),
105 public static Java8StreamMethodGenerator
java8StreamMethodGenerator(final JavaConfiguration java
) {
106 return new JdbcJava8StreamMethodGenerator(
107 ConverterConfigurations
.withResultRowConverter(),
108 Blocks
.genericBlocks(),
109 Blocks
.controlFlows(java
),
110 NamesConfigurations
.defaults(),
111 Blocks
.methods(java
),
112 Blocks
.parameters(java
),
113 LoggingObjectMother
.loggingGenerator(),
118 public static RxJavaMethodGenerator
rxJavaMethodGenerator(final JavaConfiguration java
) {
119 return new JdbcRxJavaMethodGenerator(
120 ConverterConfigurations
.withResultRowConverter(),
121 Blocks
.methods(java
),
122 Blocks
.parameters(java
),
124 Blocks
.controlFlows(java
),
125 LoggingObjectMother
.loggingGenerator(),
129 public static ReactorMethodGenerator
reactorMethodGenerator(final JavaConfiguration java
) {
130 return new JdbcReactorMethodGenerator(
131 ConverterConfigurations
.withResultRowConverter(),
132 Blocks
.methods(java
),
133 Blocks
.parameters(java
),
135 Blocks
.controlFlows(java
),
136 LoggingObjectMother
.loggingGenerator(),
140 public static MutinyMethodGenerator
mutinyMethodGenerator(final JavaConfiguration java
) {
141 return new JdbcMutinyMethodGenerator(
142 ConverterConfigurations
.withResultRowConverter(),
143 Blocks
.methods(java
),
144 Blocks
.parameters(java
),
146 Blocks
.controlFlows(java
),
147 LoggingObjectMother
.loggingGenerator(),
151 public static DefaultJdbcTransformer
jdbcTransformer() {
152 return new DefaultJdbcTransformer();
155 public static DelegatingMethodsGenerator
delegatingMethodsGenerator(final JavaConfiguration java
) {
156 return new DelegatingMethodsGenerator(
157 constructorGenerator(java
),
158 blockingMethodGenerator(java
),
159 batchMethodGenerator(java
),
160 java8StreamMethodGenerator(java
),
161 rxJavaMethodGenerator(java
),
162 reactorMethodGenerator(java
),
163 mutinyMethodGenerator(java
));
166 public static GenericRepositoryGenerator
genericRepositoryGenerator(final JavaConfiguration java
) {
167 return new GenericRepositoryGenerator(
168 new LocLoggerFactory(new MessageConveyor(SupportedLocales
.ENGLISH
)).getLocLogger("yosql.test"),
169 Blocks
.annotationGenerator(),
170 Blocks
.classes(java
),
172 JdbcObjectMother
.fieldsGenerator(java
),
173 JdbcObjectMother
.delegatingMethodsGenerator(java
),
174 PersistenceApis
.JDBC
);
177 private JdbcObjectMother() {