fix build
[yosql.git] / yosql-dao / yosql-dao-jdbc / src / test / java / wtf / metio / yosql / dao / jdbc / JdbcObjectMother.java
blob6d0f80b724113ddc3718473db04772c1e0f4179d
1 /*
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
5 * in the LICENSE file.
6 */
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;
22 /**
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(),
45 Blocks.javadoc(),
46 Blocks.fields(java));
49 public static ConstructorGenerator constructorGenerator(final JavaConfiguration java) {
50 return new JdbcConstructorGenerator(
51 Blocks.genericBlocks(),
52 Blocks.methods(java),
53 NamesConfigurations.defaults(),
54 jdbcParameter(),
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(
68 runtimeConfig(),
69 Blocks.genericBlocks(),
70 Blocks.controlFlows(java),
71 Blocks.variables(java),
72 Blocks.fields(java),
73 jdbcMethods(),
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),
87 Blocks.methods(java),
88 Blocks.parameters(java),
89 LoggingObjectMother.loggingGenerator(),
90 jdbcBlocks(java),
91 jdbcTransformer(),
92 ConverterConfigurations.withResultRowConverter());
95 public static BatchMethodGenerator batchMethodGenerator(final JavaConfiguration java) {
96 return new JdbcBatchMethodGenerator(
97 Blocks.controlFlows(java),
98 Blocks.methods(java),
99 Blocks.parameters(java),
100 LoggingObjectMother.loggingGenerator(),
101 jdbcBlocks(java),
102 jdbcTransformer());
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(),
114 jdbcBlocks(java),
115 jdbcTransformer());
118 public static RxJavaMethodGenerator rxJavaMethodGenerator(final JavaConfiguration java) {
119 return new JdbcRxJavaMethodGenerator(
120 ConverterConfigurations.withResultRowConverter(),
121 Blocks.methods(java),
122 Blocks.parameters(java),
123 jdbcTransformer(),
124 Blocks.controlFlows(java),
125 LoggingObjectMother.loggingGenerator(),
126 jdbcBlocks(java));
129 public static ReactorMethodGenerator reactorMethodGenerator(final JavaConfiguration java) {
130 return new JdbcReactorMethodGenerator(
131 ConverterConfigurations.withResultRowConverter(),
132 Blocks.methods(java),
133 Blocks.parameters(java),
134 jdbcTransformer(),
135 Blocks.controlFlows(java),
136 LoggingObjectMother.loggingGenerator(),
137 jdbcBlocks(java));
140 public static MutinyMethodGenerator mutinyMethodGenerator(final JavaConfiguration java) {
141 return new JdbcMutinyMethodGenerator(
142 ConverterConfigurations.withResultRowConverter(),
143 Blocks.methods(java),
144 Blocks.parameters(java),
145 jdbcTransformer(),
146 Blocks.controlFlows(java),
147 LoggingObjectMother.loggingGenerator(),
148 jdbcBlocks(java));
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),
171 Blocks.javadoc(),
172 JdbcObjectMother.fieldsGenerator(java),
173 JdbcObjectMother.delegatingMethodsGenerator(java),
174 PersistenceApis.JDBC);
177 private JdbcObjectMother() {
178 // factory class