|
21 | 21 |
|
22 | 22 | import java.io.File; |
23 | 23 | import java.net.URI; |
24 | | -import java.util.ArrayList; |
25 | 24 | import java.util.Arrays; |
26 | 25 | import java.util.Collections; |
27 | 26 | import java.util.HashSet; |
28 | 27 | import java.util.List; |
29 | 28 | import java.util.Optional; |
30 | 29 | import java.util.Set; |
31 | | -import java.util.function.BiFunction; |
32 | 30 | import javax.lang.model.element.AnnotationMirror; |
33 | 31 | import javax.lang.model.element.AnnotationValue; |
34 | 32 | import javax.lang.model.element.ExecutableElement; |
|
92 | 90 |
|
93 | 91 | public class DaoMetaFactory implements TypeElementMetaFactory<DaoMeta> { |
94 | 92 |
|
95 | | - private final RoundContext ctx; |
| 93 | + private static final List<QueryMetaFactorySupplier> suppliers = |
| 94 | + List.of( |
| 95 | + SqlFileSelectQueryMetaFactory::new, |
| 96 | + AutoModifyQueryMetaFactory::new, |
| 97 | + AutoMultiInsertQueryMetaFactory::new, |
| 98 | + AutoBatchModifyQueryMetaFactory::new, |
| 99 | + AutoFunctionQueryMetaFactory::new, |
| 100 | + AutoProcedureQueryMetaFactory::new, |
| 101 | + SqlFileModifyQueryMetaFactory::new, |
| 102 | + SqlFileBatchModifyQueryMetaFactory::new, |
| 103 | + SqlFileScriptQueryMetaFactory::new, |
| 104 | + DefaultQueryMetaFactory::new, |
| 105 | + ArrayCreateQueryMetaFactory::new, |
| 106 | + BlobCreateQueryMetaFactory::new, |
| 107 | + ClobCreateQueryMetaFactory::new, |
| 108 | + NClobCreateQueryMetaFactory::new, |
| 109 | + SQLXMLCreateQueryMetaFactory::new, |
| 110 | + SqlProcessorQueryMetaFactory::new); |
96 | 111 |
|
97 | | - private final List<BiFunction<TypeElement, ExecutableElement, QueryMetaFactory>> providers = |
98 | | - new ArrayList<>(15); |
| 112 | + private final RoundContext ctx; |
99 | 113 |
|
100 | 114 | public DaoMetaFactory(RoundContext ctx) { |
101 | 115 | assertNotNull(ctx); |
102 | 116 | this.ctx = ctx; |
103 | | - providers.add((dao, method) -> new SqlFileSelectQueryMetaFactory(ctx, dao, method)); |
104 | | - providers.add((dao, method) -> new AutoModifyQueryMetaFactory(ctx, dao, method)); |
105 | | - providers.add((dao, method) -> new AutoMultiInsertQueryMetaFactory(ctx, dao, method)); |
106 | | - providers.add((dao, method) -> new AutoBatchModifyQueryMetaFactory(ctx, dao, method)); |
107 | | - providers.add((dao, method) -> new AutoFunctionQueryMetaFactory(ctx, dao, method)); |
108 | | - providers.add((dao, method) -> new AutoProcedureQueryMetaFactory(ctx, dao, method)); |
109 | | - providers.add((dao, method) -> new SqlFileModifyQueryMetaFactory(ctx, dao, method)); |
110 | | - providers.add((dao, method) -> new SqlFileBatchModifyQueryMetaFactory(ctx, dao, method)); |
111 | | - providers.add((dao, method) -> new SqlFileScriptQueryMetaFactory(ctx, dao, method)); |
112 | | - providers.add((dao, method) -> new DefaultQueryMetaFactory(ctx, dao, method)); |
113 | | - providers.add((dao, method) -> new ArrayCreateQueryMetaFactory(ctx, dao, method)); |
114 | | - providers.add((dao, method) -> new BlobCreateQueryMetaFactory(ctx, dao, method)); |
115 | | - providers.add((dao, method) -> new ClobCreateQueryMetaFactory(ctx, dao, method)); |
116 | | - providers.add((dao, method) -> new NClobCreateQueryMetaFactory(ctx, dao, method)); |
117 | | - providers.add((dao, method) -> new SQLXMLCreateQueryMetaFactory(ctx, dao, method)); |
118 | | - providers.add((dao, method) -> new SqlProcessorQueryMetaFactory(ctx, dao, method)); |
119 | 117 | } |
120 | 118 |
|
121 | 119 | @Override |
@@ -282,8 +280,8 @@ private void validateMethod(TypeElement interfaceElement, ExecutableElement meth |
282 | 280 | } |
283 | 281 |
|
284 | 282 | private QueryMeta createQueryMeta(DaoMeta daoMeta, ExecutableElement methodElement) { |
285 | | - for (BiFunction<TypeElement, ExecutableElement, QueryMetaFactory> provider : providers) { |
286 | | - QueryMetaFactory factory = provider.apply(daoMeta.getTypeElement(), methodElement); |
| 283 | + for (QueryMetaFactorySupplier supplier : suppliers) { |
| 284 | + QueryMetaFactory factory = supplier.get(ctx, daoMeta.getTypeElement(), methodElement); |
287 | 285 | QueryMeta queryMeta = factory.createQueryMeta(); |
288 | 286 | if (queryMeta != null) { |
289 | 287 | return queryMeta; |
@@ -499,4 +497,8 @@ public Void visitAutoBatchModifyQueryMeta(AutoBatchModifyQueryMeta m) { |
499 | 497 | return null; |
500 | 498 | } |
501 | 499 | } |
| 500 | + |
| 501 | + interface QueryMetaFactorySupplier { |
| 502 | + QueryMetaFactory get(RoundContext ctx, TypeElement daoElement, ExecutableElement methodElement); |
| 503 | + } |
502 | 504 | } |
0 commit comments